å 責äºé
ãã®èšäºã§ã¯ãéå»ã®çµéšããããžã§ã¯ãã®éçºäžã«ééããæµ ç¬ã«é¢ä¿ãªããæ £ã芪ããã ãã®ããã¹ãŠçµäºããŠCouchbaseã®äœ¿çšã«åãæ¿ããããšããå§ãããŸããã ãã®èšäºã¯ãCouchbase ServerãPHPãªã©ãšçµã¿åãããŠäœ¿çšââããæè¡ã®ç°¡åãªèª¬æã«ãããŸããã ãããããããã¯å¯èœæ§ã®èª¬æãšããŠããŸãããããèŠéãã«å¯Ÿããè©äŸ¡ã®èŠ³ç¹ãšããŠãèå³æ·±ãã§ãããã
ããã¯äœã§ãäœãé£ã¹ãŸãã
Couchbaseã¯ãCouchbaseãIncã«ãã£ãŠéçºãããNoSQLããŒã¿ããŒã¹ã®æ¬¡ã®ã©ã€ã³ã§ããã芪ã§ããCouchDBã®äŒçµ±ãšåé¡ã®çŽæ¥ã®åå«ã§ãã ããã¯ããã¥ã¡ã³ãæåã®ããŒã¿ããŒã¹ã§ãããåã ã®ã¬ã³ãŒããããã¥ã¡ã³ããšããŠä¿åããããšãæå³ããŸãããããã¯å³å¯ãªã«ãŒã«ã§ã¯ãªããå€ïŒBLOBè¡ãŸã§ïŒã¯ã¬ã³ãŒããšããŠæ©èœããŸããããã®ïŒããã³ä»ã®ããŒã¿ããŒã¹ãïŒã®é åã¯ããã¥ã¡ã³ãããŒã¹ã®ããŒã¿ä¿åæ¹æ³ã
ããã¥ã¡ã³ãããŒã¹ã®ããŒã¿ä¿åæ¹æ³ã¯ããã¹ãŠã®ããŒã¿ãããããããã¥ã¡ã³ãã®åœ¢åŒã§ä¿åãããããšãæå³ããŸãã ã¬ã³ãŒãã«ååšããåžžèãšäžè¬çãªè«çã®ååã«é¢ããææžã«ãŸãšãããããã£ãŒã«ãã®ã»ããã ãã®ãããªã¬ã³ãŒãã®äŸãšããŠã¯ãããšãã°ããã°ã€ã³ããã¹ã¯ãŒããé»åã¡ãŒã«ãªã©ã®ãã£ãŒã«ãã®ãªã¹ããæã€ãŠãŒã¶ãŒãããã¡ã€ã«ããããŸãã ãã®å Žåãããã¥ã¡ã³ãã¹ãã¬ãŒãžã®æšæºã¯JSONæåå圢åŒã®ããã¥ã¡ã³ã圢åŒã§ãã ãã®åœ¢åŒã¯ãéåžžã«äººæ°ããããç°¡åã«è§£éã§ãã人éãèªãã圢åŒã§ãããããäœæè ãæ éã«éžæããŸããã ãããããã€ã³ãã§ã¯ãããŸããã ææžãšã¯äœããããŒã¿ããŒã¹å ã§ã©ã®ããã«èŠããããææ¡ããŠããããšãéèŠã§ãã
ä»äºã«å¿ èŠãªã³ã³ããŒãã³ã
PHPã䜿çšããŠCouchbaseãæäœããã«ã¯ãããã€ãã®ãœãããŠã§ã¢ãå¿ èŠã§ãã
- Couchbase Server-ããŒã¿ããŒã¹ãµãŒããŒèªäœ
- Libcouchbaseã¯ã©ã€ã¢ã³ãã©ã€ãã©ãª ïŒã¢ã€ãã çªå·1ïŒ
- PHP couchbase.soã®ã¢ãžã¥ãŒã«
ããããã¹ãŠãæ£åžžã«ã€ã³ã¹ããŒã«ããŠæ£åžžã«èµ·åããåŸãCouchbaseãšåŒã°ããã¯ã©ã¹ã䜿çšããæ©äŒããããŸãããã®èª¬æã¯Couchbaseã®å ¬åŒGitãªããžããªã«ãããŸã ã ããã«äœ¿ããããããããã«ããæ°ã«å ¥ãã®IDeãèªåèšå®ãæ£åžžã«ç²åŸã§ããããã«ããããžã§ã¯ãã«è¿œå ããããšããå§ãããŸãã
ããã«ã䟿å©ãªäœæ¥ã®ããã«ãCouchbaseèªäœã«åå¥ã®ãã±ããïŒããŒã¿ããŒã¹ã®ã¢ããã°ïŒãäœæããå¿ èŠããããŸããããã«ãããäžè¬çãªããã©ã«ããæãªãå¿ èŠããªããªããŸãã ããã¯ã localhostã¢ãã¬ã¹8091 / index.htmlïŒsec = bucketsã«ç§»åãããCreate new bucketããã¿ã³ãã¯ãªãã¯ããŠè¡ããŸãã
ã³ãŒãã£ã³ã°ãéå§
æœè±¡çãªãã®ãã³ãŒãã£ã³ã°ããã®ã¯çã«ããªã£ãŠããªãã®ã§ãäžèšã®éåžžã«å ·äœçãªäŸãã€ãŸããŠãŒã¶ãŒãããã¡ã€ã«ãèŠãŠã¿ãŸãããã ãŠãŒã¶ãŒãããã€ãã®ãã£ãŒã«ããæã£ãŠãããšããŸãããïŒãã°ã€ã³ããã¹ã¯ãŒããé»åã¡ãŒã«ãæé»ã®ãã¡ã«-ããã¯æŽæ°åã®èå¥åã§ãã JSONè¡šçŸã§ã¯ãçµæã®ããã¥ã¡ã³ãã¯æ¬¡ã®ããã«ãªããŸãã
{ "login": "megausername", "password": "my secured password!", "email": "email@example.com" }
ãŸãããã®ããžãã¹ãããŒã¿ããŒã¹ã«ä¿åããæ¹æ³ãšãããããããŒã¿ãååŸããæ¹æ³ãèŠã€ããå¿ èŠããããŸãã ããã¯éåžžã«ç°¡åã«è¡ããã次ã®äŸã§ã¯ã£ãããšããããŸãã
<?php /** * Couchabse , * . , , * Couchbase , master-master * , Couchbase Server. , Bucket * , , , * . */ $couchbase = new Couchbase(array('localhost'), 'couchbase_user', 'couchbase_password', 'users_bucket', TRUE); /** * PHP */ $document = array( 'login' => 'megausername', 'password' => 'my secured password!', 'email' => 'email@example.com' ); /** * . ID , * Couchbase , .. * autoincrement . * . , , . */ $userId = $couchbase->increment('counter::users', 1, TRUE); /** * . * . - add, , , * , . - set, , * , . - , * add */ try { $couchbase->add("profile::{$userId}", json_encode($document)); } catch(\CouchbaseException $e) // , Exception { // , . error_log(" Couchbase: {$e->getMessage()}"); exit(1); } /** * . get. * , , , JSON , * . */ try { $userData = json_decode($couchbase->get("profile::{$userId}")); } catch(\CouchbaseException $e) // , Exception { // , . error_log(" Couchbase: {$e->getMessage()}"); exit(1); }
ã芧ã®ãšãããäžèšã®äŸã§ã¯ããŠãŒã¶ãŒIDã®çæãé€ããŠããŸã£ããåé¡ã¯ãããŸããã å°é£ã¯ãæ€çŽ¢ãéå§ããå¿ èŠãããçŽåŸã«å§ãŸããŸãã
ãã¥ãŒãšã¯äœã§ããïŒ
CouchbaseãµãŒããŒã®ã³ã³ãããŒã«ããã«ã«ã¢ã¯ã»ã¹ãããšãViewsãšããçŽ æŽããããã®ã«æ°ä»ãã§ãããã ãéçºãã¥ãŒããšãçç£ãã¥ãŒããšãã2ã€ã®ãµãã¢ã€ãã ããããŸãã ãã£ã¹ãã¬ã€ãæšæž¬ããããšã¯é£ãããããŸããïŒCouchbaseã®ã³ã³ããã¹ãã§ã¯ãéžæã§ãïŒã 空ããããŸããããããå°ç¡ãã«ããæ¹æ³ãèŠã€ããŸãã
ãã¥ãŒã¯åºæ¬çã«ã€ã³ããã¯ã¹ã§ãããJavaScriptã§èšè¿°ã§ããäœæã®ã«ãŒã«ã§ãã ã¯ããã¯ãã ããã§ã®ã€ã³ããã¯ã¹ã¯ããŠãŒã¶ãŒãèšè¿°ããããžãã¯ã«åºã¥ããŠäœæãããåæé¢æ°ã ãã§ãªããããã€ãã®ã»ãã³ãã£ãã¯é¢æ°ãä¿æããŸãã ããšãã°ãé»åã¡ãŒã«ãnæåããé·ããŠãŒã¶ãŒãã€ã³ããã¯ã¹ã«å«ããããšããç¹å®ã®ãã£ãŒã«ãã®ã¿ã衚瀺ããããšãã§ããŸãã ã€ã³ããã¯ã¹ãæäœããã«ã¯ãJavaScriptãããããŸããããããã§ååã§ãã ã€ã³ããã¯ã¹ã¯ããªã³ããã³ãïŒããŒã¿ã®èŠæ±æïŒã§æŽæ°ãããããããŒã¿ããŒã¹ã®æçåãç¹å®ã®å²åïŒãã±ããèšå®ã§æå®ïŒã«éãããšèªåçã«æŽæ°ãããŸãã ãã®ç¹ãéçºæã«èæ ®ããå¿ èŠããããŸãã
ãã¥ãŒãäœæããã«ã¯2ã€ã®æ¹æ³ããããŸãã 1ã€ç®ã¯ãéçºã»ã¯ã·ã§ã³ã®ã³ã³ãããŒã«ããã«ã«JavaScriptã«ãŒã«ãçŽæ¥èšè¿°ããŠãããã¯ã·ã§ã³ã«è»¢éããããPHPããçŽæ¥ãããã¯ã·ã§ã³ã»ã¯ã·ã§ã³ã«ç§»åããã¹ã¯ãªããã®èª¬æã䜿çšããŠsetDesignDocã¡ãœããããã«ããããšã§ãã
æåã«ãã¹ã¯ãªãããšãã®æ§æèŠçŽ ãæ€èšããŸãã ã¹ã¯ãªããã¯ãããã¥ã¡ã³ããšãã®ã³ã³ãã³ãã®ã¡ã¿æ å ±ã®èª¬æãå ¥åãããé¢æ°ã§ãã ãŠãŒã¶ãŒã®ãã°ã€ã³ã«åºã¥ããŠã€ã³ããã¯ã¹ãäœæããŠã¿ãŸãããã
function (doc, meta) { // JSON login if (meta.type == "json" && doc.login) { // userId ( ) var userid = meta.id.split("::"); // / emit(doc.login, parseInt(userid[1])); } }
äžèšã®JavaScriptã¡ãœããã®ãããã§ãã€ã³ããã¯ã¹ïŒemitã¡ãœããã䜿çšããŠçæãããïŒã«ã¯ãã°ã€ã³ãã£ãŒã«ããæã€ãšã³ããªã®ã¿ãå«ãŸããããšãç解ã§ããŸãã ã芧ã®ãšãããJavaScripté¢æ°ã¯ã³ãŒã«ããã¯é¢æ°ã®åœ¢åŒã§äœæããããã®ãã±ããã«ããåã¬ã³ãŒãã«é©çšãããŸãã ãã¥ãŒã¯ããã±ããã©ã€ããµã€ã¯ã«ã®ååšäžãã€ã§ãäœæã§ããããšã«æ³šæããŠãã ããã ã€ãŸã æ°ããæ©èœãè¿œå ããå¿ èŠãããå Žåã¯ãæ°ãããã¥ãŒãç°¡åã«è¿œå ããŠãå¿ èŠã«å¿ããŠãã®ãŸãŸäœ¿çšã§ããŸãã
ãªã©ã 圌ã®ãã°ã€ã³ããããããªãå Žåã«ããŠãŒã¶ãŒIDãèŠã€ããæ¹æ³ãç解ããŸãã ãããè¡ãã«ã¯ãæ°ããã€ã³ããã¯ã¹ãäœæãïŒPHPã³ãŒãããããã«äœæããŸãïŒããããåŒã³åºãå¿ èŠããããŸãã
/** * view */ $designedDocument = array( 'language' => 'javascript', 'views' =>array( 'login' => array( 'map' => 'function (doc, meta) {if (meta.type == "json" && doc.login) {var userid = meta.id.split("::"); emit(doc.login, parseInt(userid[1]));}}' ) ), ); /** * */ $couchbase->setDesignDoc('userFields', json_encode($designedDocument));
ãã®ã³ãŒããå®è¡ããçŽåŸã«Couchbaseã³ã³ãããŒã«ããã«ã«ç§»åãããšãïŒå€§å®¹éã§ïŒã€ã³ããã¯ã¹ã®äœæã®é²è¡ç¶æ³ãå³äžã«è¡šç€ºãããŸãã å®äºããããã³ã³ãããŒã«ããã«ã§éããŠ[çµæã衚瀺]ãã¿ã³ãã¯ãªãã¯ããŠãåäœã確èªã§ããŸãã çãã§ã¯ãJavaScriptã³ãŒã«ããã¯ã¡ãœããã«ãã£ãŠçæãããããŒãšå€ã®ãã¢ã衚瀺ãããŸãã
PHPã³ãŒãããã次ã®ã¯ãšãªã§éžæãååŸã§ããŸãã
// JSON , $result = $couchbase->view('userFields', "login");
çãã¯2ã€ã®èŠçŽ ã®é åã§ãïŒtotal_rows-ãã®ã€ã³ããã¯ã¹ã®ã¬ã³ãŒãã®åèšæ°ãå«ãŸããå Žæãšrowsãã£ãŒã«ã-ãµã³ãã«ããã®é åã®é åãååšããå ŽæïŒarrayïŒ 'id' => 'profile :: 0'ã 'key '=>' megausername 'ã' value '=> 0ïŒã ãã®ãã£ãŒã«ãã®é åå ïŒ_idã¯ãéžæã«è©²åœããããã¥ã¡ã³ãã®èå¥åã§ãã ããŒã¯ã€ã³ããã¯ã¹ã®åœ¢æäžã«æå®ãããããŒã§ãããå€ã¯çæããå€ã§ãã
ãã ãããã®æ¹æ³ã§ã€ã³ããã¯ã¹å šäœãååŸãããšããäºå®ãèæ ®ããå¿ èŠããããŸãããããã¯æ€çŽ¢ã«ã¯ããŸãé©ããŠããŸããã ãããŠãèå¥åã®ã¿ãèŠã€ããå¿ èŠãããå Žåã¯ã©ãã§ããããïŒ ã€ã³ããã¯ã¹å šäœãæåã§å埩ããªãã§ãã ããã ãã¡ããéããŸãã ãã®ããã衚瀺ããåãªã¯ãšã¹ãäžã«ãè¿œå ã®ãã©ã¡ãŒã¿ãŒãæå®ã§ããŸãã ããšãã°ããã°ã€ã³ã§æå®ããããŠãŒã¶ãŒã®èå¥åã®ã¿ãç¥ãããå Žåã衚瀺ãããªã¯ãšã¹ãã§ç¹å®ã®ããŒãæå®ããå¿ èŠããããŸãã ããã¯æ¬¡ã®ããã«è¡ãããŸãã
$result = $couchbase->view('userFields', "login", array('key'=>'megausername'));
ããã¯ãçµæãšããŠããmegausernameãã«çããããŒãæã€ã¬ã³ãŒãã®ã¿ãæã€å¹žããªç¬éã§ãã äžç·ã«ä»äºãããŠå¹žãã«ãªããŸãã èœãšãç©Žã¯1ã€ã ãã§ãã äžèšã®ããã«ãæå®ããããã±ããã«ã¬ã³ãŒããè¿œå ãŸãã¯å€æŽãããšãã§ã¯ãªãããã±ããã®æçåã®ç¹å®ã®å²åã«éãããšãã«ã®ã¿ãã€ã³ããã¯ã¹ãåæ§ç¯ãããŸãã
æäœãå®è¡ããåã«ããŠãŒã¶ãŒåã®äžææ§ã確èªããå¿ èŠããããšããŸãã ããšãã°ããŠãŒã¶ãŒãç»é²ãããšãã åœç¶ããã®ãã¥ãŒã®èŠæ±ãæºãããããŒã¿ããŒã¹ã®å¿çãåæããŸãã ãã ããåãååã®ãŠãŒã¶ãŒãç»é²ãããã°ããã§ãã€ã³ããã¯ã¹ãåæ§ç¯ããæéããŸã ãªãå¯èœæ§ããããŸãã åœç¶ãã€ã³ããã¯ã¹ã«ãã®ãããªã¬ã³ãŒããååšããªããšããæ å ±ãå±ãã競åãçºçããŸãã ãã®ãããªç¶æ³ãåé¿ããããã«ããã¥ãŒã€ã³ããã¯ã¹ãåŒã³åºããšãã«ãã€ã³ããã¯ã¹ãåæ§ç¯ããå¿ èŠæ§ã圌ã«ç€ºãããšãã§ããŸãã ã€ãŸã ãã®ã€ã³ããã¯ã¹ã§å®è¡ãããªãã£ããã¹ãŠã®æäœãæåã«å®äºãããã®åŸã¯ãšãªãå®äºããŠçµæãè¿ãããŸãã ãããè¡ãã«ã¯ãå€ãFALSEã®å€ããªãã·ã§ã³ãè¿œå ããŸãã ããã¯æ¬¡ã®ããã«è¡ãããŸãã
$result = $couchbase->view('userFields', "login", array('key'=>'megausername', 'stale'=>FALSE));
ãã®ãªã¯ãšã¹ãã®çµæãã€ã³ããã¯ã¹ã®æäœã«é¢é£ãããã¹ãŠã®æäœãå®äºããããŒã¿ããŒã¹ã«ããå®éã®çµæãåŸãããŸãã ãã®ãããªç¹å®ã®ããŒã¿ãæ±ããšãã¯ããã®ç¹ãèæ ®ããããšãéèŠã§ãã
ãããã«
ã芧ã®ãšãããCouchbase Serverã§ã®äœæ¥ã¯ããã»ã©é£ãããããŸãããäœæ¥ãéå§ããåã«ããã¥ã¡ã³ãã培åºçã«ç 究ããè¡åãèããŠåæããããšãå¿ããªãããšãéèŠã§ãã 誰ããCouchbaseã«åãæ¿ããããã«åæºããããšã¯ãããŸããããå人çã«ã¯ãæ°ãããã£ãŒã«ããè¿œå ãããšãã«æ§é ãæ ¹æ¬çã«å€æŽããããšãªãããŒã¿ããŒã¹ãæäœã§ããããšã¯ãäžèšã®ã·ã¹ãã ã®éçºã«ãããŠéåžžã«ããããããèŠçŽ ã§ããã ããããå³ããçŸå®ã¯ãã¹ãŠããã®å Žæã«æ»ããŸãã ç§ã®ç¹å®ã®ã±ãŒã¹ã§ã¯ãåã ã®ãã£ãŒã«ãã®çµ±èšããªã¢ã«ã¿ã€ã ã§çæããMSSQLãšã³ãžã³ã§å®è¡ãããŠããçµ±èšã®ä¿å/åæã·ã¹ãã ãšå¯Ÿè©±ããããšã«é¢ããŠçåãçããŸããã ãã®äºå®ã¯ãDBAéçºè ã®äŸ¿å©ãªäœæ¥ã®ããã®ãã¯ã©ã³ããã®ç·šæã«ã€ãªããããã®çµæãSQL圢åŒã®ãã£ãŒã«ã管çã·ã¹ãã ã®éè€ãçããŸããã ãããžã§ã¯ãã§NoSQLããŒã¿ããŒã¹ãšã³ãžã³ã䜿çšããå Žåã¯ãå éšã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢é£ä»ããããŠããªãã¹ã¿ã³ãã¢ãã³ãââããžã§ã¯ãããéå§ããããšããå§ãããŸãã ç°¡åã«çµ±åããããšã¯ã§ããŸããã
ã質åãããå Žåã¯ã www.couchbase.com / documentationã«ããããã¥ã¡ã³ããã芧ã«ãªãããšããå§ãããŸãã
ãã®ãããã¯ã«åŒãç¶ãèå³ãããå Žåã¯ãå°ãè€éãªã¬ãã«ã§æããã«ããããšãã§ããŸãã 以äžã®èšäºã«èšèŒãããŠãããSQLã®èãæ¹ããNoSQLã«ç§»è¡ããæ¹æ³ãæ€èšããŠãã ããã Couchbaseã§GROUP BYãORDERããã®ä»ã®èå³æ·±ãããšãæŽçããæ¹æ³ãæ€èšããããã¥ã¡ã³ãæåããŒã¿ããŒã¹ã®æé©åãšèšèšã®åé¡ãããæ·±ãæ€èšããŸãã