æè¿ãããŸããŸãª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ã©ã€ã¯ã©ã€ã»ã³ã¹ -åçšããã³éåçšãããžã§ã¯ãã§ç¡æã§äœ¿çšã§ããŸãã
ã¬ãã£ã¹
説æ ïŒ
çç£æ§ ïŒã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ã®ã³ã¡ã³ãã§ãã®åçãèŠãŸããã圌ã«æè¬ããŸãã