å
責äºé
ãã®èšäºã§ã¯ãéå»ã®çµéšããããžã§ã¯ãã®éçºäžã«ééããæµ
ç¬ã«é¢ä¿ãªããæ
£ã芪ããã ãã®ããã¹ãŠçµäºããŠCouchbaseã®äœ¿çšã«åãæ¿ããããšããå§ãããŸããã ãã®èšäºã¯ãCouchbase ServerãPHPãªã©ãšçµã¿åãããŠäœ¿çšââããæè¡ã®ç°¡åãªèª¬æã«ãããŸããã ãããããããã¯å¯èœæ§ã®èª¬æãšããŠããŸãããããèŠéãã«å¯Ÿããè©äŸ¡ã®èгç¹ãšããŠãè峿·±ãã§ãããã
ããã¯äœã§ãäœãé£ã¹ãŸãã
Couchbaseã¯ãCouchbaseãIncã«ãã£ãŠéçºãããNoSQLããŒã¿ããŒã¹ã®æ¬¡ã®ã©ã€ã³ã§ããã芪ã§ããCouchDBã®äŒçµ±ãšåé¡ã®çŽæ¥ã®åå«ã§ãã ããã¯ããã¥ã¡ã³ãæåã®ããŒã¿ããŒã¹ã§ãããåã
ã®ã¬ã³ãŒããããã¥ã¡ã³ããšããŠä¿åããããšãæå³ããŸãããããã¯å³å¯ãªã«ãŒã«ã§ã¯ãªããå€ïŒBLOBè¡ãŸã§ïŒã¯ã¬ã³ãŒããšããŠæ©èœããŸããããã®ïŒããã³ä»ã®ããŒã¿ããŒã¹ãïŒã®é
åã¯ããã¥ã¡ã³ãããŒã¹ã®ããŒã¿ä¿åæ¹æ³ã
ããã¥ã¡ã³ãããŒã¹ã®ããŒã¿ä¿åæ¹æ³ã¯ããã¹ãŠã®ããŒã¿ãããããããã¥ã¡ã³ãã®åœ¢åŒã§ä¿åãããããšãæå³ããŸãã ã¬ã³ãŒãã«ååšããåžžèãšäžè¬çãªè«çã®ååã«é¢ããææžã«ãŸãšãããããã£ãŒã«ãã®ã»ããã ãã®ãããªã¬ã³ãŒãã®äŸãšããŠã¯ãããšãã°ããã°ã€ã³ããã¹ã¯ãŒããé»åã¡ãŒã«ãªã©ã®ãã£ãŒã«ãã®ãªã¹ããæã€ãŠãŒã¶ãŒãããã¡ã€ã«ããããŸãã ãã®å Žåãããã¥ã¡ã³ãã¹ãã¬ãŒãžã®æšæºã¯JSONæåå圢åŒã®ããã¥ã¡ã³ã圢åŒã§ãã ãã®åœ¢åŒã¯ãéåžžã«äººæ°ããããç°¡åã«è§£éã§ãã人éãèªãã圢åŒã§ãããããäœæè
ãæ
éã«éžæããŸããã ãããããã€ã³ãã§ã¯ãããŸããã ææžãšã¯äœããããŒã¿ããŒã¹å
ã§ã©ã®ããã«èŠããããææ¡ããŠããããšãéèŠã§ãã
ä»äºã«å¿
èŠãªã³ã³ããŒãã³ã
PHPã䜿çšããŠCouchbaseãæäœããã«ã¯ãããã€ãã®ãœãããŠã§ã¢ãå¿
èŠã§ãã
ããããã¹ãŠãæ£åžžã«ã€ã³ã¹ããŒã«ããŠæ£åžžã«èµ·åããåŸã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 $couchbase = new Couchbase(array('localhost'), 'couchbase_user', 'couchbase_password', 'users_bucket', TRUE); $document = array( 'login' => 'megausername', 'password' => 'my secured password!', 'email' => 'email@example.com' ); $userId = $couchbase->increment('counter::users', 1, TRUE); try { $couchbase->add("profile::{$userId}", json_encode($document)); } catch(\CouchbaseException $e)
ã芧ã®ãšãããäžèšã®äŸã§ã¯ããŠãŒã¶ãŒIDã®çæãé€ããŠããŸã£ããåé¡ã¯ãããŸããã å°é£ã¯ãæ€çŽ¢ãéå§ããå¿
èŠãããçŽåŸã«å§ãŸããŸãã
ãã¥ãŒãšã¯äœã§ããïŒ
CouchbaseãµãŒããŒã®ã³ã³ãããŒã«ããã«ã«ã¢ã¯ã»ã¹ãããšãViewsãšããçŽ æŽããããã®ã«æ°ä»ãã§ãããã ãéçºãã¥ãŒããšãçç£ãã¥ãŒããšãã2ã€ã®ãµãã¢ã€ãã ããããŸãã ãã£ã¹ãã¬ã€ãæšæž¬ããããšã¯é£ãããããŸããïŒCouchbaseã®ã³ã³ããã¹ãã§ã¯ãéžæã§ãïŒã 空ããããŸããããããå°ç¡ãã«ããæ¹æ³ãèŠã€ããŸãã
ãã¥ãŒã¯åºæ¬çã«ã€ã³ããã¯ã¹ã§ãããJavaScriptã§èšè¿°ã§ããäœæã®ã«ãŒã«ã§ãã ã¯ããã¯ãã ããã§ã®ã€ã³ããã¯ã¹ã¯ããŠãŒã¶ãŒãèšè¿°ããããžãã¯ã«åºã¥ããŠäœæãããåæé¢æ°ã ãã§ãªããããã€ãã®ã»ãã³ãã£ãã¯é¢æ°ãä¿æããŸãã ããšãã°ãé»åã¡ãŒã«ãnæåããé·ããŠãŒã¶ãŒãã€ã³ããã¯ã¹ã«å«ããããšããç¹å®ã®ãã£ãŒã«ãã®ã¿ã衚瀺ããããšãã§ããŸãã ã€ã³ããã¯ã¹ãæäœããã«ã¯ãJavaScriptãããããŸããããããã§ååã§ãã ã€ã³ããã¯ã¹ã¯ããªã³ããã³ãïŒããŒã¿ã®èŠæ±æïŒã§æŽæ°ãããããããŒã¿ããŒã¹ã®æçåãç¹å®ã®å²åïŒãã±ããèšå®ã§æå®ïŒã«éãããšèªåçã«æŽæ°ãããŸãã ãã®ç¹ãéçºæã«èæ
®ããå¿
èŠããããŸãã
ãã¥ãŒãäœæããã«ã¯2ã€ã®æ¹æ³ããããŸãã 1ã€ç®ã¯ãéçºã»ã¯ã·ã§ã³ã®ã³ã³ãããŒã«ããã«ã«JavaScriptã«ãŒã«ãçŽæ¥èšè¿°ããŠãããã¯ã·ã§ã³ã«è»¢éããããPHPããçŽæ¥ãããã¯ã·ã§ã³ã»ã¯ã·ã§ã³ã«ç§»åããã¹ã¯ãªããã®èª¬æã䜿çšããŠsetDesignDocã¡ãœããããã«ããããšã§ãã
æåã«ãã¹ã¯ãªãããšãã®æ§æèŠçŽ ãæ€èšããŸãã ã¹ã¯ãªããã¯ãããã¥ã¡ã³ããšãã®ã³ã³ãã³ãã®ã¡ã¿æ
å ±ã®èª¬æãå
¥åããã颿°ã§ãã ãŠãŒã¶ãŒã®ãã°ã€ã³ã«åºã¥ããŠã€ã³ããã¯ã¹ãäœæããŠã¿ãŸãããã
function (doc, meta) {
äžèšã®JavaScriptã¡ãœããã®ãããã§ãã€ã³ããã¯ã¹ïŒemitã¡ãœããã䜿çšããŠçæãããïŒã«ã¯ãã°ã€ã³ãã£ãŒã«ããæã€ãšã³ããªã®ã¿ãå«ãŸããããšãçè§£ã§ããŸãã ã芧ã®ãšãããJavaScript颿°ã¯ã³ãŒã«ããã¯é¢æ°ã®åœ¢åŒã§äœæããããã®ãã±ããã«ããåã¬ã³ãŒãã«é©çšãããŸãã ãã¥ãŒã¯ããã±ããã©ã€ããµã€ã¯ã«ã®ååšäžãã€ã§ãäœæã§ããããšã«æ³šæããŠãã ããã ã€ãŸã æ°ããæ©èœã远å ããå¿
èŠãããå Žåã¯ãæ°ãããã¥ãŒãç°¡åã«è¿œå ããŠãå¿
èŠã«å¿ããŠãã®ãŸãŸäœ¿çšã§ããŸãã
ãªã©ã 圌ã®ãã°ã€ã³ããããããªãå Žåã«ããŠãŒã¶ãŒIDãèŠã€ããæ¹æ³ãçè§£ããŸãã ãããè¡ãã«ã¯ãæ°ããã€ã³ããã¯ã¹ãäœæãïŒPHPã³ãŒãããããã«äœæããŸãïŒããããåŒã³åºãå¿
èŠããããŸãã
$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ã³ãŒããããæ¬¡ã®ã¯ãšãªã§éžæãååŸã§ããŸãã
çãã¯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ããã®ä»ã®è峿·±ãããšãæŽçããæ¹æ³ãæ€èšããããã¥ã¡ã³ãæåããŒã¿ããŒã¹ã®æé©åãšèšèšã®åé¡ãããæ·±ãæ€èšããŸãã