çªç¶MongoDBãä¿è·ããŠãããšæãããå Žåã¯ãèšäºã®æåŸã«ããå 責äºé ããèªã¿ãã ããã
æ°ãããã¬ã³ã
ç§ã¯ãœãããŠã§ã¢æ¥çã«ãã¡ããšè©±ãã®ã«ååãªæé以äžåããŠããŸããããããã§ãç§ãã¡ã®æ¥çã襲ã£ããã¬ã³ãã®ããäžéšãã説æã§ããŸããã§ããã 4GLãAOPãã¢ãžã£ã€ã«ãSOAãWeb 2.0ãAJAXããããã¯ãã§ãŒã³ã®æé·ãç®ã®åœããã«ããŸãã...ãªã¹ãã¯ç¡éã§ãã æ¯å¹Žæ°ãããã¬ã³ããçŸããŸãã ããã«æ¶ããŠããŸããã®ãããã°ããœãããŠã§ã¢ã®éçºæ¹æ³ãæ ¹æ¬çã«å€ãããã®ããããŸãã
ãã¹ãŠã®æ°ãããã¬ã³ãã®åšãã«ãç¹å®ã®äžè¬çãªè奮ãçãŸããŸãã人ã ã¯ããŒãã«é£ã³èŸŒãããä»ã®äººãçæãããã€ãºãèŠãŠã矀è¡ã远ããŸãã ãã®ããã»ã¹ã¯ãã¬ãŒãããŒã«ãã£ãŠèªå€§åºåãµã€ã¯ã«ã§äœç³»åãããŠããŸã ã è°è«ã®äœå°ã¯ãããŸããããã®ã°ã©ãã¯ãæçµçã«äœ¿çšå¯èœã«ãªãåã«ãã¯ãããžãŒã«äœãèµ·ãããã倧ãŸãã«èª¬æããŠããŸãã
ãããããã£ã1ã€ã®ç¹å®ã®å®è£ ã«ãã£ãŠé§åãããæ°ããæè¡é©æ°ãç»å Žããå ŽåããããŸãïŒãŸãã¯ããã®å Žåã®ããã«åç»å ŽãçºçããŸãïŒã NoSQLã®å Žåãèªå€§åºåã¯MongoDBã®åºçŸãšæ¥éãªäžæã«ãã£ãŠå€§ããæšé²ãããŸããã MongoDBã¯ãã®åŸåãéå§ããŸããã§ãããå®éãå€§èŠæš¡ãªã€ã³ã¿ãŒãããäŒæ¥ã¯å€§éã®ããŒã¿ã®åŠçã«åé¡ãæ±ãå§ããéãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã埩掻ããŸããã äžè¬çãªåãã¯ãGoogleã®BigtableãFacebookã®Cassandraãªã©ã®ãããžã§ã¯ãã§å§ãŸããŸããããã»ãšãã©ã®éçºè ãã¢ã¯ã»ã¹ã§ããNoSQLããŒã¿ããŒã¹ã®æãæåã§æé ãªå®è£ ãšãªã£ãã®ã¯MongoDBã§ããã
æ³šïŒææžããŒã¿ããŒã¹ãšåããŒã¿ããŒã¹ãããŒ/å€ã¹ãã¢ããŸãã¯NoSQLã®äžè¬çãªå®çŸ©ã«è©²åœããä»ã®å€ãã®çš®é¡ã®ããŒã¿ã¹ãã¢ã®ãããããšæ··åããŠãããšæããããããããŸããã ãããŠããªãã¯æ£ããã ããããåœæã¯æ··ä¹±ãæ¯é ããŠããŸããã 誰ããNoSQLã«å€¢äžã«ãªã£ãŠããã誰ãã絶察ã«ãããå¿ èŠãšããŠããŸããããå€ãã®äººã¯ç°ãªãæè¡ã®éããèŠãŠããŸããã§ããã å€ãã®å ŽåãMongoDBã¯NoSQLãšå矩èªã«ãªããŸããã
ãããŠãéçºè ã¯åœŒå¥³ãæ»æããŸããã ããã¯ãåé¡ã解決ããããã«éæ³ã®ããã«æ¡åŒµããã¹ããŒãã®ãªãããŒã¿ããŒã¹ã«ãšã£ãŠéåžžã«é åçãªã¢ã€ãã¢ã§ããã 2014幎é ãMySQLãPostgresãSQL Serverãªã©ã1幎åã«ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã䜿çšãããŠãããã¹ãŠã®å Žæã§ãMongoDBããŒã¿ããŒã¹ãå±éããå§ããããã§ãã ãªãããšãã質åã«å¯ŸããŠããããã¯Webã®èŠæš¡ã§ãããšããèãããããç§ã®ããŒã¿ã¯éåžžã«æ§é ãæªããã¹ããŒã ãªãã§ããŒã¿ããŒã¹ã«ããŸãåãŸãããšããçããåŸãããšãã§ããŸãã
MongoDBãšããã¥ã¡ã³ãããŒã¿ããŒã¹ã¯ãéåžžãåŸæ¥ã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«é¢ããå€ãã®åé¡ã解決ããããšãèŠããŠããããšãéèŠã§ãã
- å³å¯ãªã¹ããŒã ïŒãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ã¯ãåçã«çæãããããŒã¿ãããå Žåãã©ã³ãã ãªãç°ãªããããŒã¿åã®æãäœæããããããã«ããŒã¿BLOBãããã·ã¥ãããã EAVæ§æã䜿çšããå¿
èŠããããŸã...ããã«ã¯éå€§ãªæ¬ ç¹ããããŸãã
- ã¹ã±ãŒãªã³ã°ã®é£ãã ïŒ1ã€ã®ãµãŒããŒã«åãŸããªãã»ã©å€ãã®ããŒã¿ãããå ŽåãMongoDBã¯è€æ°ã®ãã·ã³ã§ããããã¹ã±ãŒãªã³ã°ããã¡ã«ããºã ãæäŸããŸããã
- æŽç·Žãããåè·¯å€æŽ ïŒç§»è¡ãªãïŒ ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ã¯ãããŒã¿ããŒã¹ã®æ§é ã倿Žããããšã¯å€§ããªåé¡ã«ãªãå¯èœæ§ããããŸãïŒç¹ã«å€§éã®ããŒã¿ãããå ŽåïŒã MongoDBã¯ããã»ã¹ã倧å¹
ã«ç°¡çŽ åããããšãã§ããŸããã ãããŠãéåžžã«ç°¡åã«ãªã£ããããå€åºå
ã§åè·¯ãæŽæ°ããŠããã«ç§»åã§ããŸãã
- ããã©ãŒãã³ã¹ã®èšé² ïŒMongoDBã®ããã©ãŒãã³ã¹ã¯è¯å¥œã§ãç¹ã«é©åã«èª¿æŽãããŠããŸããã ãã°ãã°æ¹å€ãããããšãå€ããããã«äœ¿çšã§ããMongoDBæ§æã§ãããããã€ãã®å°è±¡çãªããã©ãŒãã³ã¹ã¡ããªãã¯ã瀺ããŸããã
ãã¹ãŠã®ãªã¹ã¯ã¯ããªãã«ãããŸãã
MongoDBã®æœåšçãªå©ç¹ã¯ãç¹ã«ç¹å®ã®ã¯ã©ã¹ã®åé¡ã«ãšã£ãŠã¯å€§ããªãã®ã§ããã ã³ã³ããã¹ããçè§£ãããçµéšã®ãªãäžèšã®ãªã¹ããèªãã å ŽåãMongoDBã¯çã«é©åœçãªDBMSã§ãããšããå°è±¡ãåãããããããŸããã å¯äžã®åé¡ã¯ãäžèšã®å©ç¹ã«ããã€ãã®äºçŽã䌎ãããšã§ããããã®äžéšã以äžã«ç€ºããŸãã
å ¬å¹³ã«èšãã°ã10gen / MongoDB Inc.ã«ã¯èª°ãããŸãã 圌ã¯ä»¥äžãçå®ã§ã¯ãªããšèšãããšã¯ãããŸããïŒããã¯ãã ã®åŠ¥åã§ãã
- ãã©ã³ã¶ã¯ã·ã§ã³ã®æå€± ïŒãã©ã³ã¶ã¯ã·ã§ã³ã¯ãå€ãã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®äž»èŠãªæ©èœã§ãïŒãã¹ãŠã§ã¯ãªããã»ãšãã©ïŒã ãã©ã³ã¶ã¯ã·ã§ã³ãšã¯ãè€æ°ã®æäœãã¢ãããã¯ã«å®è¡ã§ããããŒã¿ã®äžè²«æ§ãç¶æã§ããããšãæå³ããŸãã ãã¡ãããNoSQLããŒã¿ããŒã¹ã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³æ§ã¯åãããã¥ã¡ã³ãå
ã«ããå ŽåããããŸãããŸãã¯ã2ãã§ãŒãºã³ãããã䜿çšããŠãã©ã³ã¶ã¯ã·ã§ã³ã®ã»ãã³ãã£ã¯ã¹ãååŸããããšãã§ããŸãã ãããããã®æ©èœãèªåã§å®è£
ããå¿
èŠããããŸã...ããã¯ãè€éã§æéã®ãããã¿ã¹ã¯ã«ãªãå¯èœæ§ããããŸãã å€ãã®å Žåãæäœã®ååæ§ãä¿èšŒããããšã¯äžå¯èœã§ãããããããŒã¿ããŒã¹å
ã®ããŒã¿ã蚱容ã§ããªãç¶æ
ã«ãªããŸã§ãåé¡ãèªèããŠããŸããã æ³šïŒå€ãã®äººããæšå¹ŽMongoDB 4.0ã«ãã©ã³ã¶ã¯ã·ã§ã³ãç»å Žããããããã€ãã®å¶éããããšèšã£ãŠããŸããã ãã®èšäºã®çµè«ã¯å€ãããŸããããã¯ãããžãŒãã©ã®ããã«ããŒãºãæºãããŠããããè©äŸ¡ããŠãã ããã
- é¢ä¿ã®æŽåæ§ã®æå€±ïŒå€éšããŒïŒ ïŒããŒã¿ã«é¢ä¿ãããå Žåãã¢ããªã±ãŒã·ã§ã³ã«é©çšããå¿
èŠããããŸãã ãããã®é¢ä¿ã«æºæ ããããŒã¿ããŒã¹ãæã€ããšã«ãããã¢ããªã±ãŒã·ã§ã³ããããããã£ãŠããã°ã©ãããäœæ¥ã®å€§éšåãåé€ãããŸãã
- ããŒã¿æ§é ãé©çšããèœåã®æ¬ åŠ ïŒå³å¯ãªã¹ããŒã ã¯å€§ããªåé¡ã«ãªãããšããããŸãããæ£ãã䜿çšãããå ŽåãåªããããŒã¿æ§é åã®ããã®åŒ·åãªã¡ã«ããºã ã§ããããŸãã MongoDBãªã©ã®ããã¥ã¡ã³ãããŒã¿ããŒã¹ã¯ãéåžžã«æè»ãªã¹ããŒããæäŸããŸããããã®æè»æ§ã«ãããããŒã¿ãã¯ãªãŒã³ã«ä¿ã€è²¬ä»»ããªããªããŸãã ãããã®äžè©±ãããªãå Žåã¯ãæçµçã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã«å€§éã®ã³ãŒããèšè¿°ããŠãæåŸ
ãããã©ãŒã ã«ä¿åãããŠããªãããŒã¿ãèæ
®ããå¿
èŠããããŸãã åœç€Ÿãããèšãããã«ãSimple Thread ...ãã€ãã¯ã¢ããªã±ãŒã·ã§ã³ãæžãæããããããŒã¿ã¯æ°žä¹
ã«åç¶ããŸãã æ³šïŒMongoDBã¯ã¹ããŒãæ€èšŒããµããŒãããŠããŸããããã¯äŸ¿å©ã§ããããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãšåãä¿èšŒã¯æäŸããŸããã ãŸããã¹ããŒããã§ãã¯ã远å ãŸãã¯å€æŽããŠããã³ã¬ã¯ã·ã§ã³å
ã®æ¢åã®ããŒã¿ã«ã¯åœ±é¿ããŸããã æ°ããã¹ããŒã ã«åŸã£ãŠããŒã¿ãæŽæ°ããããšã確èªããå¿
èŠããããŸãã ããã§ããŒãºã«ååãã©ãããèªåã§å€æããŸãã
- ãã€ãã£ãã¯ãšãªèšèª/ããŒã«ã®ãšã³ã·ã¹ãã ã®åªå€± ïŒSQLã®åºçŸã¯çµ¶å¯Ÿçãªé©åœãšãªãããã以æ¥äœãå€ãã£ãŠããŸããã éåžžã«åŒ·åãªèšèªã§ãããéåžžã«è€éã§ãã JSONãã©ã°ã¡ã³ãã§æ§æãããæ°ããèšèªã§ããŒã¿ããŒã¹ã¯ãšãªãèšèšããå¿ èŠæ§ã¯ãSQLã®çµéšããã人ã ã«ãã£ãŠå€§ããåŸéãããšèŠãªãããŠããŸãã IDEããã¬ããŒãäœæããŒã«ãŸã§ãSQLããŒã¿ããŒã¹ãšå¯Ÿè©±ããããŒã«ã®å šäœããããŸãã SQLããµããŒãããŠããªãããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ãããšããããšã¯ããããã®ããŒã«ã®ã»ãšãã©ã䜿çšã§ããªããã䜿çšããããã«ããŒã¿ãSQLã«å€æããå¿ èŠãããããšãæå³ããŸãã
MongoDBã«ç®ãåããå€ãã®éçºè ã¯ããã¬ãŒããªããå®éã«çè§£ããŠãããããã°ãã°çã£åããé£ã³èŸŒãã§ããã©ã€ããªããŒã¿ã¹ãã¢ãšããŠèšå®ããŸããã ãã®åŸãæ»ãããšã¯éåžžã«å°é£ã§ããã
å¥ã«äœãã§ããã§ããããïŒ
誰ããæåã«é ãè·³ããŠåºãæã£ãããã§ã¯ãªãã ããããå€ãã®ãããžã§ã¯ããMongoDBããŒã¹ãã€ã³ã¹ããŒã«ããŸãããããããåãŸããããªãå Žæã§ããããããŠãããã«äœå¹Žãããã«äœãŸãªããã°ãªããŸããã ãããã®çµç¹ãããçšåºŠã®æéãè²»ããããã¯ãããžãŒã®éžæã系統çã«æ€èšããå Žåãå€ãã®çµç¹ãå¥ã®éžæãè¡ã£ãŠããã§ãããã
é©åãªãã¯ãããžãŒãéžæããæ¹æ³ã¯ïŒ ãæè¡ããœãããŠã§ã¢çµç¹ã«å°å ¥ããããã®ãã¬ãŒã ã¯ãŒã¯ããããœãããŠã§ã¢æè¡ãè©äŸ¡ãã ããã®ãã¬ãŒã ã¯ãŒã¯ããªã©ãæè¡ãè©äŸ¡ããããã®äœç³»çãªãã¬ãŒã ã¯ãŒã¯ãäœæããããšãã詊ã¿ãããã€ããããŸããããããã¯äžå¿ èŠãªè€éãã®ããã§ãã
å€ãã®ãã¯ãããžãŒã¯ã2ã€ã®åºæ¬çãªè³ªåãããã ãã§åççã«è©äŸ¡ã§ããŸãã åé¡ã¯ã責任ãæã£ãŠåçã§ãã人ãèŠã€ããããšã§ãããåçãæ¢ãã®ã«æéãè²»ãããåãããªãããšã§ãã
åé¡ãçºçããªãå Žåãæ°ããããŒã«ã¯å¿ èŠãããŸããã ãã€ã³ãã
質å1ïŒã©ã®ãããªåé¡ã解決ããããšããŠããŸããïŒ
åé¡ãçºçããªãå Žåãæ°ããããŒã«ã¯å¿ èŠãããŸããã ãã€ã³ãã 解決çãæ¢ããŠåé¡ãæãã€ãå¿ èŠã¯ãããŸããã æ°ãããã¯ãããžãŒã§ã¯æ¢åã®ãã¯ãããžãŒãããã¯ããã«åªãã解決çãåŸãããªããšããåé¡ãçºçããŠããªãå Žåã¯ãè°è«ããããšã¯ãããŸããã ä»ã®äººãã©ã®ããã«äœ¿çšããŠããã®ããèŠãããã«ãã®ãã¯ãããžãŒã®äœ¿çšãæ€èšããŠããå Žåã¯ã圌ããçŽé¢ããŠããåé¡ãæ€èšãããã®ãããªåé¡ããããã©ãããå°ããŠãã ããã ä»ã®äººã䜿çšããŠããããããã®æè¡ãåãå ¥ããã®ã¯ç°¡åã§ããåãåé¡ã«çŽé¢ããŠãããã©ãããçè§£ããããšã¯å°é£ã§ãã
質å2ïŒäœã倱ã£ãŠããŸããïŒ
ãã¡ãããããã¯ããé£ãã質åã§ããå€ãæè¡ãšæ°ããæè¡ã®äž¡æ¹ãæãäžããŠçè§£ããå¿ èŠãããããã§ãã æ°ãããã®ãå®éã«çè§£ããããšãã§ããªãå ŽåããããŸããããã䜿çšããŠäœããæ§ç¯ãããããã®ãããªçµéšãæã€åŸæ¥å¡ãããªãå Žåã§ãã
ã©ã¡ããæã£ãŠããªãå Žåã¯ããã®ããŒã«ã®äŸ¡å€ã倿ããããã«å¯èœãªæå°ã®æè³ã«ã€ããŠèããã®ãçã«ããªã£ãŠããŸãã ãŸããæè³ãè¡ãå Žåãæ±ºå®ãèŠãããšã¯ã©ãã»ã©é£ããã§ããããïŒ
人ã ã¯åžžã«ãã¹ãŠãå°ç¡ãã«ããŸã
ãããã®è³ªåã«å¯èœãªéãå ¬å¹³ã«çããããšãããšã1ã€ã®ããšãèŠããŠãããŠãã ããã人éã®æ¬æ§ãšæ Œéããªããã°ãªããŸããã æè¡ã广çã«è©äŸ¡ããããã«å æããªããã°ãªããªãå€ãã®èªç¥ãã€ã¢ã¹ããããŸãã ã»ãã®äžéšã次ã«ç€ºããŸãã
- 倧倿°ã«åå ããããšã®å¹æã¯ã誰ããããã«ã€ããŠç¥ã£ãŠããããšã§ããããããšæŠãããšã¯ãŸã å°é£ã§ãã ãã¯ãããžãŒãå®éã®ããŒãºã«æ¬åœã«åã£ãŠããããšã確èªããŠãã ããã
- ããã«ãã£ã®å¹æ -å€ãã®éçºè
ã¯ãé·ãé䜿çšããŠãããã¯ãããžãŒãéå°è©äŸ¡ããæ°ãããã¯ãããžãŒã®å©ç¹ãé倧è©äŸ¡ããåŸåããããŸãã ããã°ã©ããŒã ãã§ãªãã誰ãããã®èªç¥çæªã¿ã®åœ±é¿ãåããŸãã
- è¯å®çãªç¹æ§ã®å¹æ -ç§ãã¡ã¯äœãèŠããã®ããæ¬ ããŠãããã®ãèŠå€±ãåŸåããããŸãã ããã¯ãæ°ããæè¡ãé倧è©äŸ¡ããã ãã§ãªãããã®æ¬ ç¹ãç¡èŠãããããããã«ãã£å¹æãšçµã¿åãããŠæ··ä¹±ãæãå¯èœæ§ããããŸãã
客芳çãªè©äŸ¡ã¯ç°¡åã§ã¯ãããŸããããåºæ¬çãªèªç¥ãã€ã¢ã¹ãçè§£ããããšã¯ãããåççãªæ±ºå®ãäžãã®ã«åœ¹ç«ã¡ãŸãã
ãŸãšã
ç¹å®ã®æè¡é©æ°ãçŸãããšã2ã€ã®è³ªåã«çްå¿ã®æ³šæãæã£ãŠçããå¿ èŠããããŸãã
- ãã®ããŒã«ã¯å®éã®åé¡ã解決ããŸããïŒ
- 劥åç¹ãããçè§£ããŠããŸããïŒ
ããã2ã€ã®è³ªåã«èªä¿¡ãæã£ãŠçããããšãã§ããªãå Žåã¯ãããã€ãã®æé ãèžãã§èãçŽããŠãã ããã
ããã§ã¯ãMongoDBã¯äžè¬çã«æ£ããéžæã§ãããïŒ ãã¡ãããã¯ãã ã»ãšãã©ã®ãšã³ãžãã¢ãªã³ã°æè¡ãšåæ§ã«ãããã¯å€ãã®èŠå ã«äŸåããŸãã ãããã®2ã€ã®è³ªåã«çãã人ã®å€ãã¯ãMongoDBããæ©æµãåããŠãããåŒãç¶ãMongoDBããæ©æµãåããŠããŸãã ãããããªãã£ã人ã¯èª°ã§ããèªå€§åºåãµã€ã¯ã«ã«æ²¿ã£ãåãã«ã€ããŠã®è²Žéã§çããªãã¬ãã¹ã³ãåãããšæããŸãã
å 責äºé
ç§ã¯ãMongoDBã«å¯Ÿããæãæãã¿ããªãããšãæç¢ºã«ããããšæããŸãã MongoDBãæé©ãªåé¡ããªãã£ããšããã ãã§ãã 10gen / MongoDB Inc. æåã圌女ã¯éåžžã«å€§èã«è¡åããå®å šã§ãªãããã©ã«ãå€ãèšå®ããMongoDBãããããå ŽæïŒç¹ã«ããã«ãœã³ã§ïŒã§ããããããŒã¿ãæ±ãããã®æ®éçãªãœãªã¥ãŒã·ã§ã³ãšããŠå®£äŒããŸããã ããã¯ããããæªãæ±ºæã§ããã ãã ããããã§èª¬æããã¢ãããŒãã¯ç¢ºèªãããŠããŸãããããã®åé¡ã¯ã衚é¢çãªæè¡è©äŸ¡ã§ãéåžžã«è¿ éã«æ€åºã§ããŸãã