
æè¿ãããŸããŸãªNoSQLããŒã¿ããŒã¹ã人æ°ãéããŠããŸãã ãã®èšäºã¯ã
ã°ã©ãã¡ã€ãã°ã©ãããŒã¿ããŒã¹Neo4jã®æ©èœã®ç 究ãšããŠå§ãŸããŸããã ããããæ
å ±ãéžæããéçšã§ãç¹ã«NoSQLãœãªã¥ãŒã·ã§ã³ãšã°ã©ãããŒã¿ããŒã¹ã«é¢ããæ
å ±ãäœç³»åããããšèããŸããã
ãã®å°èŠæš¡ãªç 究ã®éçšã§ã詳现ãªæ€èšã®ããã«ãWebã«æ£åžžã«å±éãããDBMSãéžæãããŸããã ãŸããã¿ã°ã«ãPHPããå«ãŸããŠããããããã®èšèªã§æ¢ã«äœ¿çšã§ããDBMSãéžæããŸããã
ãã®èšäºã¯ãããã²ãŒã·ã§ã³ã®äŸ¿å®äžãç®æ¬¡ã䜿çšããããšããå§ãããŸãã
- NoSQLãã¥ãŒ
- ããŒããªã¥ãŒã¹ãã¢
- ããã°ããŒãã«åº
- ã°ã©ãã¹ãã¢
- ããã¥ã¡ã³ãã¹ãã¢
- ããã€ãã®çµè«
NoSQLãã¥ãŒ
ãã¹ãŠã®NoSQL DBMSã¯ãããã€ãã®ã«ããŽãªã«åé¡ãããŸãã
- ããŒããªã¥ãŒã¹ãã¢
- åãã¡ããªãŒïŒBigtableïŒã¹ãã¢/ã¹ã±ãŒã©ãã«ãªåæ£ã¹ãã¬ãŒãž
- ã°ã©ãã¹ãã¢/ã°ã©ãDBMS
- ããã¥ã¡ã³ãã¹ãã¢/ããã¥ã¡ã³ãæåããŒã¿ããŒã¹ç®¡çã·ã¹ãã
以äžã®å³ã¯ããããã®NoSQLãã¥ãŒã§äœ¿çšãããããŒã¿ã®éãšãã®ããŒã¿ã®è€éããæŠç¥çã«ç€ºããŠããŸãã
åã»ã¯ã·ã§ã³ã§ã¯ãæ©èœãå¢å ããé ã«DBMSãé
眮ããããšããŸããã ããããããã¯ãã䞻芳çã§ããããšãå€æããã
OrientDBãªã©ãããã€ãã®ã«ããŽãªãçµã¿åãããããŒã¿ããŒã¹ããããŸãã äžèšã®ãªã³ã¯ã®å
¬åŒèª¬æã«ãããšãããã¯ã°ã©ãã£ã«ã«ã§ææžæåã§ãã å Žåã«ãã£ãŠã¯ãKey-Valueã¹ãã¢ããã³Column Familyã¹ãã¢ã«èµ·å ããããšããããŸãã 詳现ã«ã€ããŠã¯ãã°ã©ãã®DBMSã»ã¯ã·ã§ã³ã§èª¬æããŸãã
åã«ããŽãªã詳ããèŠãŠã¿ãŸãããã
ããŒããªã¥ãŒã¹ãã¢
ããŒããªã¥ãŒã¹ãã¢ã¯ãNoSQLãœãªã¥ãŒã·ã§ã³ãSQLã«å¯Ÿããåªäœæ§ã瀺ãæ¹åã§ãã
ãããŠå€ãã®äººã¯ããã®æ¹åãçæçããã³é·æçã«æãèŠæ±ããããšèããŠããŸãã
ããšãã° ããªãŒãã³MySQL DBMSã®ãªãªãžãã«ããŒãžã§ã³ã®äœæè
ã§ããMichael Wideniusã¯ããèããŠããŸãã
Key-Value NoSQLã¯éåžžã«äººæ°ãããããã®æ°ãå€ã競äºãæ¿ããããã«ãè¿
éãã€é 調ã«éçºãããŠããŸãã ãã®èšäºã®å·çäžã«èª¿æ»ãããNoSQLããŒã¿ããŒã¹ã®æ倧æ°ã¯ãããŒããªã¥ãŒã¹ãã¢ã«é¢é£ããŠããŸããã
PHPã®ããŒãšå€ã®ã¹ãã¬ãŒãžã«é¢ãã
ããã«é¢ããèšäºããããŸããããã¹ãŠã«åæãããã®ã§ã¯ãããŸããã ããã«æ瀺ãããŠãããªããžããªïŒVoldemortãScalalarisãMemcacheDBãThruDBãCouchDBïŒã®äžè¬çãªéžæã¯ããã®èšäºã®çºè¡ããã»ãŒ5幎ãçµéããåŸãããŸãé¢ä¿ããªãããã«æãããŸããã ãŸããCouchDBã¯ãããŒãšå€ã®ã¹ãã¬ãŒãžã¯ãŸã£ãããªããããã¥ã¡ã³ãæåã®DBMSã«ã€ããŠ
説æããŠããŸã ïŒ
ããã¥ã¡ã³ãæåã®DBMSã«é¢ããã»ã¯ã·ã§ã³ãåç
§ïŒã
Memcachedb
説æ ïŒåãmemcachedã§ãBerkeleyDBã®åœ¢åŒã®èæ¯ã®ã¿ã
ããã©ãŒãã³ã¹ ïŒéçºè
ã¯ã1ã€ã®ã¹ããªãŒã ã®å¹³åããã©ãŒãã³ã¹ã18868 w / sïŒ1ç§ãããã®æžã蟌ã¿æäœïŒããã³44444 r / sïŒ1ç§ãããã®èªã¿åãæäœïŒã§ãã
ãã¹ãçµæãæ瀺ããŸããã Dell 2950IIIãµãŒããŒã§ãã¹ãããŸãããããã¯ãæã匱ãæ§æã§ãã£ãŠããŸãšããª
ããã€ã¹ã§ãã
ã€ã³ã¹ããŒã« ïŒãã¹ãŠ
ããœãŒã¹ãã
åéãããŸãã PHPã§ã¯ãPECLã®éåžžã®Memcachedã䜿çšããŸãã
ã©ã€ã»ã³ã¹ ïŒ
BSDã©ã€ã¯ã©ã€ã»ã³ã¹ -åçšããã³éåçšãããžã§ã¯ãã§ç¡æã§äœ¿çšã§ããŸãã
ã¬ãã£ã¹
説æ ïŒ
ãã©ãã¯ãžã£ãã¯ã®ãã³ãããŒã¯ãšãªã³ã¯ãå«ã
ããã«é¢ãã
玹ä»èšäºããããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ïŒ
ãããã«é¢ããhabrostaty ïŒãšã¬ããªã±ãŒã·ã§ã³ããããŸãã ã¢ãããŒãããŒãžã§ã³3.0ã§ã¯ãRedis-Clusterã衚瀺ãããããã©ãŒãã³ã¹ã倧å¹
ã«åäžããŸãã çŽ æµãªã€ã³ã¿ã©ã¯ãã£ããª
ãã¥ãŒããªã¢ã«ããããŸãã
çç£æ§ ïŒã110.000 w / sãå¹³åéã§ã81.000 r / s
ã€ã³ã¹ããŒã« ïŒRedisèªäœãšPHPã®ã¯ã©ã€ã¢ã³ãã¯ããœãŒã¹ãããã«ãããããšããå§ãããŸãã å€ãã®ã¯ã©ã€ã¢ã³ãïŒ
list ïŒããããŸãããæ¢åã®Redisæ©èœã®ãã¹ãŠïŒãŸãã¯ã»ãšãã©ãã¹ãŠïŒã®èª¬æãšãµããŒãã
åŸãã«ã¯
ãphpredisã
èªåã§ãå§ãããŸãã
ã©ã€ã»ã³ã¹ ïŒ
BSDã©ã€ã»ã³ã¹ -ãã¹ãŠã¯ç¡æã§ãããäœããå£ããŠããéçºè
ãžã®èŠæ
ã¯ãããŸããã
ã¿ã©ã³ããŒã«
説æ ïŒã€ã³ã¡ã¢ãªã¹ãã¬ãŒãžã éçºè
ã«ãããšãRedisã¯ããã¹ãŠã®ããŒã¿ãã¡ã¢ãªå
ã«ãããšããäºå®ã«ãããé床ãåäžãããšããç¹ã§å察ã§ãã çµã¿èŸŒã¿ã®ãã¥ãŒã¡ã«ããºã ããããŸãã äž»ãªæ©èœ
ã«ã€ããŠèª¬æããè¯ã
èšäºããããŸãã
ã€ã³ã¹ããŒã« ïŒUbuntuã§ã¯ãapt-getãšå°ãã®éæ³ïŒ
å
¬åŒããŒãž ïŒã䜿çšããŠã€ã³ã¹ããŒã«ãããPHPã®ã¯ã©ã€ã¢ã³ãã¯ãœãŒã¹ïŒ
github ïŒããã¢ã»ã³ãã«ãããŸãã
ããã©ãŒãã³ã¹ ïŒRedisã®ã¬ãã«ã§ã¯ããã¹ãçµæã¯ççŸããŸã
ãTarantoolã¯ãéçºè
ã®Redisãããé«éã§ã
ãTarantool㯠ãäžè¬ã®äººã®Redisã®ã¬ãã«ã§ ã¯é«éã§ããã©ã€ã»ã³ã¹ ïŒ
ç°¡æBSD-ãã¹ãŠç¡æã
ãªã¢ã¯
説æ ïŒãã©ãŒã«ããã¬ã©ã³ã¹ãšé
åžã«éç¹ã眮ããããŒã¿ããŒã¹ã ãã®éç¹ã¯éåžžã«åŒ·åã§ãããããéçºäŒç€Ÿã¯ãRiakã®æ©èœãè©äŸ¡ã§ããããã«ãå°ãªããšã5å°ã®ãµãŒããŒãRiakã«å²ãåœãŠãããšãæšå¥šããŠããŸãã äžèŠãããã¯ããŒãšå€ã®ã¹ãã¬ãŒãžã§ããããã¹ãŠã®ãã£ãŒã«ããã»ã«ã³ããªããŒãMapReduceã®æ€çŽ¢ãå«ãŸããŠããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ãªãã 詳现ããã³è©³çŽ°ãª
habrostatya ã
ã€ã³ã¹ããŒã« ïŒDebian / Ubuntuã®ããã±ãŒãžããã€ã³ã¹ããŒã«
ãããŸã§ã®
ããŸããŸãªæ¹æ³ ã PHPã«ã¯ãPECLããã±ãŒãžãšå
¬åŒã®
PHP-clientããããŸã ã
çç£æ§ ïŒæãéèŠãªå Žæã§ã¯ãããŸãããã1ç§éã«2,500åã®æäœãè¡ãããŠ
ããŸã ã
ã©ã€ã»ã³ã¹ ïŒ
Apache 2ã©ã€ã»ã³ã¹ã¯æ®éã®äººã«ã¯ç¡æã§ãããåçšå©çšã®å ŽåãRiak Enterpriseã®1ã³ããŒã®äŸ¡æ Œã¯å¹Žé2,800ãã«ããã§ãã
ãšã¢ãã¹ãã€ã¯
説æ ïŒæå°éã®ã¬ã€ãã³ã·ã§å€§éã®ããŒã¿ãä¿åã§ããã¹ã±ãŒã©ãã«ãªã¹ãã¬ãŒãžã ããã©ã«ãã§ã¯ãACIDãµããŒãã«ã¯åå¥ã®
ããŒãžããããŸã ã ããŒãžã§ã³3ã§ã¯ãã»ã«ã³ããªã€ã³ããã¯ã¹ãå°å
¥ãããŸããã ã¹ã±ãŒãªã³ã°ãã¬ããªã±ãŒã·ã§ã³ãã¯ã©ã¹ã¿ãªã³ã°ïŒ
ãªã³ã¯ ïŒã®ããã®å°è±¡çãªéã®ç¬èªæè¡ã ç§èªèº«ã¯ããã®ã·ã¹ãã ã匷åãªç£æ¥çšMemcachedãšããŠæãåºããŸããã
ã€ã³ã¹ããŒã« ïŒAerospikeã¯é
åžããããã
ã€ã³ã¹ããŒã«ãããŸããPHPã®
å
¬åŒã¯ã©ã€ã¢ã³ãã¯Aerospike2ã«ã®ã¿ååšãããœãŒã¹ããçµã¿ç«ãŠãããŸãã
ããã©ãŒãã³ã¹ ïŒãã€ã¯ãç§åäœã®é
延ïŒ
ãœãŒã¹ ïŒã§ã1ç§ããã180,000ãã400,000æäœã®é床ã䞻匵ããŸããã
ã©ã€ã»ã³ã¹ ïŒ
- ã³ãã¥ããã£ãšãã£ã·ã§ã³ -å¶éä»ãã®ç¡æããŒãžã§ã³ïŒå200GBã®ããŒã¿ãå«ãæ倧2å°ã®ãµãŒããŒã
- Enterprise Edition -30æ¥éãã©ã€ã¢ã«ãå¶éãªãã åã«ãããš ãã³ã¹ãã¯ããŒã¿ã»ã³ã¿ãŒããã50,000ãã«ããã§ãã
Foundationdb
説æ ïŒå
æ¬çã§æãç°¡åãªã€ã³ã¹ããŒã«ããã³æ§æãœãªã¥ãŒã·ã§ã³ãšããŠäœçœ®ä»ããããŠããŸãã ç°¡åãªæ¡åŒµæ§ãç°¡åãªç®¡çããã£ããããããŒã¯ãŒãã§ãã ãŠãŒã¶ãŒã«ã¯ã劥åã®ãªãACIDãã©ã³ã¶ã¯ã·ã§ã³ããæäŸãããŸãã ããŸããŸãªããŒã¿ã¢ãã«ã䜿çšããæ©èœ-ããŒ/å€ãããã¥ã¡ã³ããããã«ã¯SQLã ãã®DBMSã¯ããã®ããã©ãŒãã³ã¹ã«ã€ããŠèªãã ãšããç¹ã«èå³æ·±ãããã«æããŸããã
çç£æ§ ïŒ
3,750,000 r / s * ã
* RAMïŒãã£ãã·ã¥ïŒããã®ã©ã³ãã ãšã³ããªã®èªã¿åãã
ããã©ãŒãã³ã¹ã»ã¯ã·ã§ã³ã®å
¬åŒWebãµã€ãã«ã¯ãå€ãã®èå³æ·±ããã¹ãããããŸãããæãé
ãããã¹ãã§ã¯ã1ç§ããã
ã235,000æäœïŒ50/50ã®èªã¿åãããã³æžã蟌ã¿æäœïŒã®çµæã瀺ãããŠããŸãã èªã¿åãé
延ã¯2ããªç§æªæºãã³ãããé
延ã¯15ããªç§æªæºã§ãã çµæã¯ããããã16Gb RAMã2x200Gb SSDãåãã24å°ã®ãã·ã³ã®ã¯ã©ã¹ã¿ãŒã§åŸãããŸããããã¹ãããŒã¹ã¯200äžã®ããŒããªã¥ãŒã¬ã³ãŒãã§æ§æããããã¹ãŠã®æäœã¯ãã©ã³ã¶ã¯ã·ã§ã³ã§ãããæ倧ã®åé¢ãšããªãã«ã¬ããªã±ãŒã·ã§ã³ãåããŠããŸããã
ã€ã³ã¹ããŒã« ïŒãã¹ãŠãç°¡åã§ãïŒUbuntuã®DEBããã±ãŒãžãPHPã®PEARããã±ãŒãžã
ã©ã€ã»ã³ã¹ ïŒ
- ã³ãã¥ããã£ã©ã€ã»ã³ã¹ -ç¡æ䜿çšã éçºãšãã¹ãã®éã«å¶éã¯ãããŸããããå®çšŒåç°å¢ã§æ倧6ã€ã®å®è¡ããã»ã¹ãã€ãŸã 6ã€ã®ãµãŒããŒã§1ã€ã®ããã»ã¹ã3ã€ã§2ã€ã®ãµãŒããŒãªã©ã
- ãšã³ã¿ãŒãã©ã€ãºã©ã€ã»ã³ã¹ -ãµããŒãã®è³ªã«å¿ããŠã99ãã«ãã199ãã«ãŸã§ç¡å¶éã
PHPã®ãµããŒããäžè¶³ããŠãããããããã€ãã®èå³æ·±ããããžã§ã¯ãã¯ãã®ãªã¹ãã«å«ãŸããŠããŸããã ãŸãã
ãŽã©ã«ãã¢ãŒã ã
ã¹ã«ã©ãªã¹ ã
ThruDBã®ãããžã§ã¯ãã¯å«ãŸããŠããŸããã ããã©ãŒãã³ã¹ã®äœäžãããã¥ã¡ã³ãã®äžè¶³ããããŠ2009幎以éãäœãæ¹åãããŠããªããšããäºå®ã«ãããŸãã
åãã¡ããªãŒïŒBigtableïŒã¹ãã¢/ã¹ã±ãŒã©ãã«ãªåæ£ã¹ãã¬ãŒãž
ãã®ã»ã¯ã·ã§ã³ã§çŽ¹ä»ãããªããžããªã¯ãäž»ã«å
ã®Google Bigtableã®èšèšã«åºã¥ããŠèšèšãããŠããŸãã
ãããã®NoSQLã®äž»ãªæ©èœã¯ããã©ãã€ãåäœã§æž¬å®ãããããŒã¿ãæ±ãããšã§ãã
ããã§ã¯ãã€ã³ã¹ã¿ã³ãã¢ã¯ã»ã¹ã®é床ã¯ããã»ã©éèŠã§ã¯ãããŸãããé
ä¿¡ããã©ãŒã«ããã¬ã©ã³ã¹ãããã³èšå€§ãªéã®æ
å ±ãåŠçããèœåã«éç¹ã眮ãããŠããŸãã
Hbase
説æ ïŒApacheã®ãªãªãžãã«ã®Google Bigtableãã¶ã€ã³ã«åºã¥ããªãŒãã³ãœãŒã¹éçºã Hadoopãããžã§ã¯ãã®äžéšãšããŠéçºãããŸããã Facebookèªäœãã¡ãã»ãŒãžã³ã°ãµãŒãã¹ã®åºç€ãšããŠäœ¿çšããŸãã HBaseã¯ãã€ã³ããã¯ã¹ä»ããã£ãŒã«ãã1ã€éžæããŸãã ACIDã«ã¯éšåçãªãµããŒãããã
ãŸãã ã
ãã©ã³ã¶ã¯ã·ã§ã³æ§ãååšããããã§ãã ãæãæçœãªæ¹æ³ã§ã¯ãµããŒããããŠããŸããã
ã€ã³ã¹ããŒã« ïŒThriftãšåŒã°ããéæ³ã®è¬ã䜿çšããŠã€ã³ã¹ããŒã«ãã
ãŸã ãã€ã³ã¹ããŒã«ããã³äœ¿çšããã»ã¹ã¯ã
ãã®çæ¯å°ã§è©³ãã説æãã
ãŠããŸã ã
ããã©ãŒãã³ã¹ ïŒç°åžžãªããã©ãŒãã³ã¹æž¬å®ææ³ã䜿çšãã
ãã£ãŒã«ããã¹ã ïŒ7ãµãŒããŒïŒ16Gb RAMã8xã³ã¢CPUãHDDïŒã®ã¯ã©ã¹ã¿ãŒã§ã30åã¬ã³ãŒãã®ããŒãã«ã§æäœãå®è¡ãããŸããã èªã¿åã/æžã蟌ã¿ã®300ããã»ã¹ãåæã«éå§ãããæäœã«è²»ããããæéã枬å®ãããŸããã ãã®çµæãå¹³åé²é³æéã¯
10ããªç§ ãèªã¿åãå€ã¯
18ããªç§ã§ãã ã
ã©ã€ã»ã³ã¹ ïŒ
Apache License 2.0-ããããç®çã§ç¡æã§äœ¿çšã§ããŸãã
ãã€ããŒããŒãã«
説æ ïŒHBaseã«äŒŒãèå³æ·±ãéçºã å°ãããã©ãŒãã³ã¹ãé«ããHQLã¯ãšãªæ§æã«ã¯ããã«ç²ŸéããŠããŸãã ãªã¯ãšã¹ãã®äŸïŒ
select * from QueryLogByUserID where row =^ '003269359' AND "2008-11-13 05:00:00" <= TIMESTAMP < "2008-11-13 06:00:00"
ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããŸãããããã¯ãå
¬åŒWebãµã€ãã®ããã¥ã¡ã³ãã®æåã®è¡ã«æèšãããŠããŸãã
ã€ã³ã¹ããŒã« ïŒThriftãšå
¬åŒã®ThriftClientïŒ
github ïŒã䜿çšããŠPHPã«æ¥ç¶ããŸãã
ããã©ãŒãã³ã¹ ïŒå
¬åŒãŠã§ããµã€ãã®
ããã€ãã®ã°ã©ã ã äžèšã®ããã«ãããã©ãŒãã³ã¹ã¯HBaseã«äŒŒãŠããŸãã
ã©ã€ã»ã³ã¹ ïŒ
GNU General Public LicenseããŒãžã§ã³3ã-ä»»æã®ç®çã§ç¡æã§äœ¿çšã§ããŸãã è¿œå æéã§24æéãµããŒããå©çšã§ããŸã
ã«ãµã³ãã©
説æ ïŒããšããšFacebookã§éçºãããåæ£ã¹ãã¬ãŒãžã¯ããã®åŸApacheã«è»¢éãããŸããã äžèšãšã¯ç°ãªããCassandraã¯åæ£ååæ£ããã·ã¥ããŒãã«ïŒDHTïŒã§ãããAmazonã®Dynamoã«åºã¥ããŠããŸãã SQLã«éåžžã«ãã䌌ãCQLã¯ãšãªèšèªããããããã€ãã®å¶éããããŸãã è€æ°ã®åã§ãµã³ããªã³ã°ã䜿çšããŠã¯ãšãªãäœæããã»ã«ã³ããªã€ã³ããã¯ã¹ãè¿œå ããããšãã§ããŸãã ããŒãžã§ã³2.0ã§ã¯ããæ¯èŒãšäº€æãã®åçã§åäœããããã©ã³ã¶ã¯ã·ã§ã³ããç»å ŽããŸããã
ãã©ã³ã¶ã¯ã·ã§ã³ãªã¯ãšã¹ãã®æ§æã¯æ¬¡ã®ããã«ãªããŸãã
- ã¬ã³ãŒããè¿œå
INSERT INTO users (login, email, name, login_count) values ('jbellis', 'jbellis@datastax.com', 'Jonathan Ellis', 1) IF NOT EXISTS
- ã¬ã³ãŒãæŽæ°
UPDATE users SET reset_token = null, password = 'newpassword' WHERE login = 'jbellis' IF reset_token = 'some-generated-reset-token'
ã€ã³ã¹ããŒã« ïŒPHPãšCassandraã®çžäºäœçšã確ç«ããæ¹æ³ãããã€ããããŸãïŒåãTriftãCassandra-PHP-Client-Libraryã
cassandra-pdo ïŒã æåŸã®éžæè¢ã¯ç§ã«ãšã£ãŠæã楜ããããã«æããŸããã
ããã©ãŒãã³ã¹ ïŒã°ã©ããšã®è¯å¥œãª
æ¯èŒãã¹ãããã®çµæã«ãããšã50/50ã®èªã¿åã/æžã蟌ã¿æäœã®æ¯çãæã€8å°ã®ãµãŒããŒã§ãCassandraã¯æ¯ç§çŽ9,000æäœãå®è¡ããŸãã HBaseã¯åãæ¡ä»¶äžã§çŽ2,500ã補é ããŸãã
ã©ã€ã»ã³ã¹ ïŒ
Apache License 2.0-ããããç®çã§ç¡æã§äœ¿çšã§ããŸãã
Stratosphere ã
HPCC ã
Cloudera ã
Cloudataãªã©ãä»ã®BigTableãœãªã¥ãŒã·ã§ã³ããããŸãã ããšãã°ãPHPãµããŒãã®æ¬ åŠãæ®åçã®äœããããã¥ã¡ã³ãã®è³ªã®äœããªã©ãããŸããŸãªçç±ã§è©³çŽ°ã«èæ
®ãããŠããŸããã
ã°ã©ãã¹ãã¢/ã°ã©ãDBMS
ãã®èšäºãèæ¡ãããã®ã¯åœŒãã®ããã§ããã æè¿ãããŒã¿ã¹ãã¬ãŒãžæ§é ã®æ°ããããŒãžã§ã³ãšããŠã°ã©ãã£ã«ã«ãªNoSQLãçºèŠããå€ãã®ãããžã§ã¯ãã§ã°ã©ãDBMSã®åºæ¬æ©èœãæãåçŽãªMySQLã¯ãšãªã䜿çšããŠå®è£
ããå¿
èŠããã£ããããåãã§ããŸãã
ã°ã©ãã£ã«ã«DBMSã§ã¯ãä¿åãããããŒã¿ã®æ§é ã¯æ¬¡ã®ããã«ãªããŸãã
ãã¹ãŠã®æ ç»ãã°ã©ãã£ã«ã«ãªDBMSã«å
¥ããäž»æŒããå俳åªãšé¢é£ä»ãããšãç°¡åã«èŠã€ããããšãã§ããŸã
, , - "", " "
Neo4j
説æ ïŒã°ã©ãDBMSã®åéã§æãæåãã人æ°ã®ããéçºã ACIDãå®å
šã«ãµããŒãããŠããŸãã ã€ã³ã¹ããŒã«ã¯ç°¡åã§ãç°¡åã«æ¡åŒµã§ããŸãã 圌女ã¯ãã§ã«éçºãããã³ãã¥ããã£ã圢æããŠããŸããçºçããã»ãšãã©ã®è³ªåã«ã€ããŠã¯ãããã«çããèŠã€ããããšãã§ããŸãã ãã®
èšäºã§ã¯ ãPHPãšãšãã«ãã®æ©èœã«ã€ããŠèªãããšãã§ããŸãã
ã€ã³ã¹ããŒã« ïŒãªããžããªããé
眮ãã
Neo4jPHPã¯ã©ã€ã¢ã³ããPHPã«äœ¿çšããŸã
ããã©ãŒãã³ã¹ ïŒä»æ§ã«ãããç¹å®ã®èªã¿åã/æžã蟌ã¿é床ã€ã³ãžã±ãŒã¿ãŒã衚瀺ããã®ã¯å¥åŠã«æããŸããã è€éãªé¢é£ããŒã¿ãéžæã§ãããªã¬ãŒã·ã§ãã«DBMSãããäœåãé«éã«å®è¡ã§ããŸãã
ã©ã€ã»ã³ã¹ ïŒ
- Community Edition -GPLã©ã€ã»ã³ã¹ã®ãªãŒãã³ãœãŒã¹ãç¡æ䜿çš
- åçšãµãã¹ã¯ãªãã·ã§ã³ -é«æ§èœãã£ãã·ã¥ãæ°Žå¹³ã¹ã±ãŒãªã³ã°ã®é«åºŠãªæ©èœããµããŒããããã³ãã®ä»ã®å©ç¹ããããŸãã ã³ã¹ãã®ç¯å²ã¯ã0ãã«ïŒå¹Žéãããžã§ã¯ãã¿ãŒã³ãªãŒããŒã100,000ãã«æªæºã®3人ã®ã¹ã¿ãŒãã¢ããã®å ŽåïŒããç¡éïŒéåžžã«å€§äŒæ¥ã®å ŽåïŒãŸã§ã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãDBMSã1ã€ã ã説æããŸãããæãèå³æ·±ãã©ã€ãã«ã§ããOrientDBã¯ä»¥äžã«ãããŸãã çµå±ã®ãšãããWebçšãç¹ã«PHPçšã®éåžžã«å€ãã®ã°ã©ãã£ã«ã«DBMSããããŸãã
ãŸããHBaseãBerkleyDBããŸãã¯Cassandraãããã¯ãšã³ããšããŠäœ¿çšãã
TitanããããŸãã 圌ã®å¥è·¡ã«é¢ããå€ãã®æ
å ±ã¯ãããŸãã; PHPãšåéã«ãªãæ¹æ³ã«é¢ããæ
å ±ã¯ããã«å°ãªãã§ãã
ThirtããŒã¹ã®ã¯ã©ã€ã¢ã³ãã䜿çšããŠphpã«æ¥ç¶ã§ããTwitterã®
FlockDBãæãåºããŠ
ãã ãã ã ãããããã®DBMSã«ã€ããŠã®æ
å ±éãå°ãªããããå®å
šã§å®¢èŠ³çãªæèŠãå®åŒåããããšã¯å°é£ã§ãã
ããã¥ã¡ã³ãã¹ãã¢/ããã¥ã¡ã³ãæåã¹ãã¬ãŒãž
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãããã¥ã¡ã³ãæåã®ã¹ãã¬ãŒãžïŒéå±€ããŒã¿æ§é çšã®DBMSïŒã«ã€ããŠæ€èšããŸãã ãããã®ã¹ãã¬ãŒãžã¯æ®éçã§ããèªã¿åã/æžã蟌ã¿é床ãé«ããæ ŒçŽããŒã¿ã®ãã©ãŒãããã«æè»ã«å¯Ÿå¿ããéæ§é åããŒã¿ãç°¡åã«æäœããååãªã¹ã±ãŒãªã³ã°ã®æ©äŒãæäŸããŸãã
ã¢ã³ãŽãã
説æ ïŒããããæã人æ°ã®ããããã¥ã¡ã³ãæåã®NoSQL DBMSã ããŒã¿ã¯JSON / BSON圢åŒã§ä¿åãããŸãã åªããã¹ã±ãŒãªã³ã°ãã¬ããªã±ãŒã·ã§ã³ãã€ã³ããã¯ã¹ãMap-Reduceã ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãæ¯èŒãšã¹ã¯ãããšããŠè¡šç€ºãããŸãã
ã€ã³ã¹ããŒã« ïŒãªããžããªã®MongoDBãPECLã®php-clientã
ããã©ãŒãã³ã¹ ïŒ
æ¯èŒãã¹ãããããã«é«ããMongoDBã§çµæããããŸããã
ã©ã€ã»ã³ã¹ ïŒ
GNU AGPL-ãªãŒãã³ãœãŒã¹ãç¡æ䜿çšã
Couchdb
説æ ïŒApacheããã®éçºã MongoDBã«ã»ãŒäŒŒãŠããŸãã ããã¯ãèªã¿åãæäœäžã®ããããã³ã°ããªãããšãããã³æ§æãããå°é£ãªã·ã£ãŒãã£ã³ã°ãã¯ãããžãŒã«ãã£ãŠåºå¥ãããŸãã
ã€ã³ã¹ããŒã« ïŒãªããžããªããã®CouchDBãphpã¯ã©ã€ã¢ã³ãã«ã¯ãããã€ãã®ãªãã·ã§ã³ããããŸãïŒPHPillowãPHP Object FreezerãPHP-on-CouchãPECLã®æ¡åŒµæ©èœïŒã
ããã©ãŒãã³ã¹ ïŒ
1ã€ã®ãã¹ãã®çµæã«ãããšãMongoDBãããæããã«é
ã
ã©ã€ã»ã³ã¹ ïŒ
Apache 2.0-ç¡æã§äœ¿çšã
ãã®åéã«ã¯ããã«å€ãã®éçºããããŸãããç§ã«ã¯éåžžã«å調ã«æããŸããã ãããããç§ã¯ããããååã«æ·±ãç 究ããŠããŸããã§ããã
ãªãªãšã³ã
説æ ïŒããã¥ã¡ã³ãæåã§ãããšåæã«ã°ã©ãã£ã«ã«ãªDBMSã
ææžæåã®ç«¶åãšããŠæãè¿ãã®ã¯MongoDBã§ãã
å¥ã®ããŒãžããã®æ¯èŒå°çšã§ãã
OrientDBã®äž»ãªå©ç¹ïŒ
- ACIDã®å®å
šãµããŒã
- ææžã§å€éšããŒã䜿çšããæ©èœïŒãªã¬ãŒã·ã§ãã«DBMSãšåãïŒ
- MongoDBã§äœ¿çšããã3çš®é¡ã®ã€ã³ããã¯ã¹ïŒSBããªãŒãããã·ã¥ãMVRBããªãŒïŒãšBããªãŒ
- é«ãããã©ãŒãã³ã¹ïŒOrientDBã¯éåžžã®ããŒããŠã§ã¢ã§150,000 w / sãå®è¡ããŸãïŒ
- SQLã«äŒŒãåçŽãªã¯ãšãªèšèª
ãããšã¯å¥ã«ãã¯ãšãªèšèªã«æ³šæããåäžã®æŽæ°èŠæ±ãã©ã®ããã«èŠããããæ¯èŒããŸãã
- ã¢ã³ãŽãã
db.product.update( { âstock.qtyâ: { $gt: 2 } }, { $set: { price: 9.99 } } )
- ãªãªãšã³ã
UPDATE product SET price = 9.99 WHERE stock.qty > 2
ã°ã©ããšããŠã®äž»ãªç«¶åçžæã¯Neo4jã§ãã ãããŠãOrientDBã§ã®ã°ã©ãæ©èœã®ç¿åŸã¯ãNeo4jãããã¯ããã«é£ãããšèšããªããã°ãªããŸããã ããã«é¢ããæåã®ã¢ã€ãã¢ã¯ã
ãã®èšäºã§å
¥æã§ããŸãã
ã€ã³ã¹ããŒã« ïŒ
ã€ã³ã¹ããŒã«ã«ã€ããŠå°ãéæ³ããããå¿
èŠããããŸãã
ããã¯éåžžã«
å®çšçãªããã¥ã¢ã«ã§ãã
ãã®ã©ã€ãã©ãªã¯PHPã¯ã©ã€ã¢ã³ããšããŠæšå¥šãããŸãã
ããã©ãŒãã³ã¹ ïŒ
150.000 w / sãçŽæã
ãã°ã©ãDBMSã®æ¯èŒã
ãããŸãã©ã€ã»ã³ã¹ ïŒ
- Community Edition -Apache 2ã©ã€ã»ã³ã¹ã®ãªãŒãã³ãœãŒã¹ãåçšãå«ãããããç®çã§ã®ç¡æ䜿çš
- Enterprise Edition-æ¡åŒµãµããŒããšãã¯ãšãªãããã¡ã€ã©ãŒãã¡ããªãã¯ã¹èšé²ãæåã®ãµãŒããŒã§Â£1,000ãåŸç¶ã®åãµãŒããŒã§Â£500ã®æ§æå¯èœãªã¢ã©ãŒããåããã©ã€ãã¢ãã¿ãŒãªã©ã®å©ç¹ã ã¹ã¿ãŒãã¢ããã«ãšã£ãŠã¯ãäŸ¡æ Œã®ååã
ããã€ãã®çµè«
èšäºã®å·çäžã«ãç§ã¯å€ãã®èå³æ·±ãæçãªæ
å ±ãèŠã€ããŸããããããŠãããããããã¹ã¯åžæ°ãšå
±æã§ããŠããããã§ãã
FoundationDBãNeo4jãOrientDBãªã©ã®ãœãªã¥ãŒã·ã§ã³ãæ¬åœã«æ°ã«å
¥ããŸããã ããããã«åå¥ã®èšäºãæ§ããããšæããŸãã
çµè«ãšããŠããããžã§ã¯ãã®NoSQLãœãªã¥ãŒã·ã§ã³ããã°ããéžæããã®ã«åœ¹ç«ã€æ¥œããåçãå
±æããããšæããŸãã
4dmonsterã®ã³ã¡ã³ãã§ãã®åçãèŠãŸããã圌ã«æè¬ããŸãã