MongoDBã®ããã©ãŒãã³ã¹ãæå€§éã«åŒãåºãããã®ç·åã¬ã€ããã€ã³ããã¯ã¹äœæãã¹ããŒãèšèšãã¯ãšãªæé©åãããŒããŠã§ã¢ã®èæ ®äºé ãéçšäžã®ãã¹ããã©ã¯ãã£ã¹ãªã©ãäžå¯æ¬ ãªæé©åæè¡ãåŠã³ãŸãããã
MongoDBããã©ãŒãã³ã¹æé©åïŒã°ããŒãã«éçºè åãç·åã¬ã€ã
人æ°ã®NoSQLããã¥ã¡ã³ãããŒã¿ããŒã¹ã§ããMongoDBã¯ãææ°ã®ã¢ããªã±ãŒã·ã§ã³ã«æè»æ§ãšã¹ã±ãŒã©ããªãã£ãæäŸããŸããããããä»ã®ããŒã¿ããŒã¹ã·ã¹ãã ãšåæ§ã«ãæé©ãªããã©ãŒãã³ã¹ãéæããã«ã¯ãæ éãªèšç»ãå®è£ ãç¶ç¶çãªç£èŠãå¿ èŠã§ãããã®ã¬ã€ãã§ã¯ãäžçäžã®éçºè ãããŒã¿ããŒã¹ç®¡çè ã«é©çšå¯èœãªMongoDBã®ããã©ãŒãã³ã¹æé©åæè¡ã®å æ¬çãªæŠèŠãæäŸããŸãã
1. MongoDBã®ããã©ãŒãã³ã¹ããã«ããã¯ãçè§£ãã
æé©åæŠç¥ã«é£ã³èŸŒãåã«ãMongoDBã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããæœåšçãªããã«ããã¯ãç¹å®ããããšãéèŠã§ããäžè¬çãªããã«ããã¯ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- é ãã¯ãšãªïŒéå¹çã«æžãããã¯ãšãªãã€ã³ããã¯ã¹ã®æ¬ èœã¯ãããŒã¿ååŸãå€§å¹ ã«é ãããå¯èœæ§ããããŸãã
- ããŒããŠã§ã¢ãªãœãŒã¹ã®äžè¶³ïŒCPUãã¡ã¢ãªããã£ã¹ã¯I/Oã®å¶éã¯ãç¹ã«é«è² è·æã«ããã«ããã¯ã«ãªãå¯èœæ§ããããŸãã
- äžé©åãªã¹ããŒãèšèšïŒäžé©åã«èšèšãããã¹ããŒãã¯ãéå¹çãªããŒã¿ä¿åãšååŸã«ã€ãªããå¯èœæ§ããããŸãã
- ãããã¯ãŒã¯é å»¶ïŒãããã¯ãŒã¯ã®é å»¶ã¯ãç¹ã«åæ£å±éãå°ççã«é¢ããå ŽæããMongoDBã«ã¢ã¯ã»ã¹ããå Žåã«ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãããã³ã°ã®åé¡ïŒéå°ãªãããã³ã°ã¯ç«¶åãåŒãèµ·ãããæžãèŸŒã¿æäœãé ãããå¯èœæ§ããããŸãã
2. ã€ã³ããã¯ã¹æŠç¥ïŒããã©ãŒãã³ã¹ã®åºç€
ã€ã³ããã¯ã¹ã¯ãMongoDBã§ã®ã¯ãšãªããã©ãŒãã³ã¹ãå éããããã«äžå¯æ¬ ã§ããé©åãªã€ã³ããã¯ã¹ããªãå ŽåãMongoDBã¯ã³ã¬ã¯ã·ã§ã³ã¹ãã£ã³ïŒã³ã¬ã¯ã·ã§ã³å ã®ãã¹ãŠã®ããã¥ã¡ã³ããã¹ãã£ã³ããïŒãå®è¡ããå¿ èŠããããããã¯ç¹ã«å€§èŠæš¡ãªããŒã¿ã»ããã«å¯ŸããŠéåžžã«éå¹çã§ãã
2.1. é©åãªã€ã³ããã¯ã¹ã®éžæ
ã¢ããªã±ãŒã·ã§ã³ã®ã¯ãšãªãã¿ãŒã³ã«åºã¥ããŠãæ éã«ã€ã³ããã¯ã¹ãéžæããŠãã ããã以äžã®èŠçŽ ãèæ ®ããŠãã ããïŒ
- ã¯ãšãªã®éžææ§ïŒã€ã³ããã¯ã¹äœæã«ã¯ãéžææ§ã®é«ãïŒå€ãã®ç°ãªãå€ãæã€ïŒãã£ãŒã«ããéžæããŸããå€ã2ã€ïŒtrue/falseïŒãããªãããŒã«å€ãã£ãŒã«ãã«ã€ã³ããã¯ã¹ãäœæããŠããéåžžã¯ã»ãšãã©ã¡ãªããããããŸããã
- ã¯ãšãªã®ãœãŒãé ïŒã¯ãšãªã®ãœãŒãé ã«äžèŽããã€ã³ããã¯ã¹ãäœæããŸããäŸãã°ãçµæãæ¥ä»ã®éé ã§é »ç¹ã«ãœãŒãããå Žåã¯ãæ¥ä»ãã£ãŒã«ãã«éé ã®ã€ã³ããã¯ã¹ãäœæããŸãã
- è€åã€ã³ããã¯ã¹ïŒè€åã€ã³ããã¯ã¹ã¯ãè€æ°ã®ãã£ãŒã«ãã§ãã£ã«ã¿ãªã³ã°ããã³ãœãŒãããã¯ãšãªã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸããè€åã€ã³ããã¯ã¹å ã®ãã£ãŒã«ãã®é åºã¯éèŠã§ããéåžžãæãéžææ§ã®é«ããã£ãŒã«ããæåã«é 眮ããå¿ èŠããããŸãã
- ããã¹ãã€ã³ããã¯ã¹ïŒå šææ€çŽ¢æ©èœã«ã¯ããã¹ãã€ã³ããã¯ã¹ã䜿çšããŸããMongoDBã¯ãæååãã£ãŒã«ãå ãæ€çŽ¢ããããã®ããã¹ãã€ã³ããã¯ã¹ããµããŒãããŠããŸãã
- å°ç空éã€ã³ããã¯ã¹ïŒå°ç空éã¯ãšãªã«ã¯ã2dãŸãã¯2dsphereã€ã³ããã¯ã¹ã䜿çšããŸãã
äŸïŒ`firstName`ã`lastName`ã`email`ã`city`ãªã©ã®ãã£ãŒã«ããæã€é¡§å®¢ããŒã¿ã®ã³ã¬ã¯ã·ã§ã³ãèããŸãã`city`ã§é¡§å®¢ãé »ç¹ã«ã¯ãšãªãã`lastName`ã§ãœãŒãããå Žåãè€åã€ã³ããã¯ã¹ãäœæããå¿ èŠããããŸãïŒ`db.customers.createIndex({ city: 1, lastName: 1 })`ã
2.2. ã€ã³ããã¯ã¹æé©åæè¡
- ã«ããŒãã¯ãšãªïŒã¯ãšãªã«å¿ èŠãªãã¹ãŠã®ãã£ãŒã«ããã€ã³ããã¯ã¹ã«ååšããã«ããŒãã¯ãšãªãäœæããããšãç®æããŸããããã«ãããããã¥ã¡ã³ãèªäœã«ã¢ã¯ã»ã¹ããå¿ èŠããªããªããå€§å¹ ãªããã©ãŒãã³ã¹åäžãåŸãããŸãã
- ã€ã³ããã¯ã¹ã®äº€å·®ïŒMongoDBã¯ãåäžã®ã¯ãšãªãæºããããã«è€æ°ã®ã€ã³ããã¯ã¹ã䜿çšã§ããŸããããããããã¯äžè¬çã«ãé©åã«èšèšãããåäžã®è€åã€ã³ããã¯ã¹ãããå¹çãäœããªããŸãã
- éšåã€ã³ããã¯ã¹ïŒéšåã€ã³ããã¯ã¹ã䜿çšãããšããã£ã«ã¿åŒã«åºã¥ããŠããã¥ã¡ã³ãã®ãµãã»ããã®ã¿ã«ã€ã³ããã¯ã¹ãäœæã§ããŸããããã«ãããã€ã³ããã¯ã¹ãµã€ãºãåæžããç¹å®ã®ã¯ãšãªãã¿ãŒã³ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ã¹ããŒã¹ã€ã³ããã¯ã¹ïŒã¹ããŒã¹ã€ã³ããã¯ã¹ã¯ãã€ã³ããã¯ã¹ä»ããã£ãŒã«ããå«ãããã¥ã¡ã³ãã®ã¿ã«ã€ã³ããã¯ã¹ãäœæããŸããããã¯ããã¹ãŠã®ããã¥ã¡ã³ãã«ååšããªããã£ãŒã«ãã«ã€ã³ããã¯ã¹ãäœæããå Žåã«äŸ¿å©ã§ãã
- ã€ã³ããã¯ã¹äœ¿çšç¶æ³ã®ç£èŠïŒå®æçã«`db.collection.aggregate([{$indexStats: {}}])`ã³ãã³ãã䜿çšããŠã€ã³ããã¯ã¹ã®äœ¿çšç¶æ³ãç£èŠããæªäœ¿çšãŸãã¯éå¹çãªã€ã³ããã¯ã¹ãç¹å®ããŸãã
2.3. äžè¬çãªã€ã³ããã¯ã¹äœæã®ééããé¿ãã
- ã€ã³ããã¯ã¹ã®éå°äœæïŒã€ã³ããã¯ã¹ãå€ãäœãããããšãæžãèŸŒã¿æäœããšã«MongoDBããã¹ãŠã®ã€ã³ããã¯ã¹ãæŽæ°ããå¿ èŠããããããæžã蟌ã¿ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- äžèŠãªãã£ãŒã«ãã®ã€ã³ããã¯ã¹äœæïŒã¯ãšãªã§ã»ãšãã©äœ¿çšãããªããã£ãŒã«ãã®ã€ã³ããã¯ã¹äœæã¯é¿ããŠãã ããã
- ã€ã³ããã¯ã¹ãµã€ãºãç¡èŠããïŒå€§ããªã€ã³ããã¯ã¹ã¯ã倧éã®ã¡ã¢ãªãšãã£ã¹ã¯ã¹ããŒã¹ãæ¶è²»ããå¯èœæ§ããããŸãã宿çã«ã€ã³ããã¯ã¹ãµã€ãºã確èªããæé©åããŠãã ããã
3. ã¹ããŒãèšèšã®ãã¹ããã©ã¯ãã£ã¹
é©åã«èšèšãããã¹ããŒãã¯ãMongoDBã®æé©ãªããã©ãŒãã³ã¹ã«ãšã£ãŠéåžžã«éèŠã§ãã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
3.1. åã蟌㿠vs. åç §
MongoDBã¯ãåã蟌ã¿ãšåç §ãšãã2ã€ã®äž»èŠãªã¹ããŒãèšèšãã¿ãŒã³ãæäŸããŸããåã蟌ã¿ã¯é¢é£ããŒã¿ãåäžã®ããã¥ã¡ã³ãå ã«ä¿åããããšãå«ã¿ãåç §ã¯é¢é£ããŒã¿ãå¥ã®ã³ã¬ã¯ã·ã§ã³ã«ä¿åããåç §ïŒäŸïŒObjectIdsïŒã䜿çšããŠãããããªã³ã¯ããããšãå«ã¿ãŸãã
- åã蟌ã¿ïŒåã蟌ã¿ã¯ãé¢é£ããŒã¿ãååŸããããã«è€æ°ã®ã¯ãšãªãå¿ èŠãšããªããããäžè¬çã«èªã¿åãæäœã§ããå¹ççã§ãããã ããåã蟌ã¿ã¯ããã¥ã¡ã³ããµã€ãºã倧ãããªãå¯èœæ§ããããããé »ç¹ãªããã¥ã¡ã³ãã®æŽæ°ãå¿ èŠã«ãªãå ŽåããããŸãã
- åç §ïŒåç §ã¯ããæè»ã§ãç¹ã«é »ç¹ã«æŽæ°ãããããŒã¿ãæ±ãå Žåã«æžãèŸŒã¿æäœã§ããå¹ççã§ãããã ããåç §ã¯é¢é£ããŒã¿ãååŸããããã«è€æ°ã®ã¯ãšãªãå¿ èŠãšãããããèªã¿åãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
åã蟌ã¿ãšåç §ã®éžæã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³èŠä»¶ã«äŸåããŸãããã®æ±ºå®ãäžãéã«ã¯ãèªã¿åã/æžãèŸŒã¿æ¯çãããŒã¿äžè²«æ§ã®èŠä»¶ãããã³ããŒã¿ã¢ã¯ã»ã¹ãã¿ãŒã³ãèæ ®ããŠãã ããã
äŸïŒãœãŒã·ã£ã«ã¡ãã£ã¢ã¢ããªã±ãŒã·ã§ã³ã®å ŽåããŠãŒã¶ãŒãããã¡ã€ã«æ å ±ïŒååãã¡ãŒã«ã¢ãã¬ã¹ããããã£ãŒã«åçïŒã¯éåžžäžç·ã«ã¢ã¯ã»ã¹ãããããããŠãŒã¶ãŒããã¥ã¡ã³ãå ã«åã蟌ãããšãã§ããŸãããããããŠãŒã¶ãŒã®æçš¿ã¯é »ç¹ã«æŽæ°ãããç¬ç«ããŠã¢ã¯ã»ã¹ããããããå¥ã®ã³ã¬ã¯ã·ã§ã³ã«ä¿åãããŠãŒã¶ãŒããã¥ã¡ã³ãããåç §ããå¿ èŠããããŸãã
3.2. ããã¥ã¡ã³ããµã€ãºã®å¶é
MongoDBã«ã¯æå€§ããã¥ã¡ã³ããµã€ãºå¶éïŒçŸåš16MBïŒããããŸãããã®å¶éãè¶ ãããšãšã©ãŒãçºçããŸããç»åãåç»ãªã©ã®å€§ããªãã¡ã€ã«ãä¿åããã«ã¯ãGridFSã®äœ¿çšãæ€èšããŠãã ããã
3.3. ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã®ããã®ããŒã¿ã¢ããªã³ã°
ã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«åãããŠã¹ããŒãèšèšã調æŽããŸããäŸãã°ãè€éãªéèšãå®è¡ããå¿ èŠãããå Žåã¯ãã³ã¹ãã®ãããçµåãé¿ããããã«ããŒã¿ã鿣èŠåããããšãæ€èšããŠãã ããã
3.4. ã¹ããŒãã®é²å
MongoDBã®ã¹ããŒãã¬ã¹ãªæ§è³ªã¯ãæè»ãªã¹ããŒãã®é²åãå¯èœã«ããŸããããããããŒã¿ã®äžæŽåãããã©ãŒãã³ã¹ã®åé¡ãé¿ããããã«ãã¹ããŒãã®å€æŽãæ éã«èšç»ããããšãéèŠã§ããããŒã¿æŽåæ§ã匷å¶ããããã«ã¹ããŒãæ€èšŒã®äœ¿çšãæ€èšããŠãã ããã
4. ã¯ãšãªæé©åæè¡
å¹ççãªã¯ãšãªãäœæããããšã¯ãã¯ãšãªå®è¡æéãæå°éã«æããããã«éèŠã§ãã以äžã®æè¡ãèæ ®ããŠãã ããïŒ
4.1. ãããžã§ã¯ã·ã§ã³ã®äœ¿çš
ãããžã§ã¯ã·ã§ã³ã䜿çšããŠãã¯ãšãªçµæã§è¿ããããã£ãŒã«ããå¶éããŸããããã«ããããããã¯ãŒã¯çµç±ã§è»¢éãããããŒã¿éãåæžãããã¯ãšãªã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããŸããã¢ããªã±ãŒã·ã§ã³ãå¿ èŠãšãããã£ãŒã«ãã®ã¿ãèŠæ±ããŠãã ããã
äŸïŒ`db.customers.find({ city: "London" })`ã®ä»£ããã«ã`db.customers.find({ city: "London" }, { firstName: 1, lastName: 1, _id: 0 })`ã䜿çšããŠ`firstName`ãš`lastName`ãã£ãŒã«ãã®ã¿ãè¿ããŸãã
4.2. $hintæŒç®åã®äœ¿çš
`$hint`æŒç®åã䜿çšãããšãMongoDBã«ç¹å®ã®ã€ã³ããã¯ã¹ãã¯ãšãªã«äœ¿çšããããã«åŒ·å¶ã§ããŸããããã¯ãMongoDBã®ã¯ãšãªãªããã£ãã€ã¶ãæé©ãªã€ã³ããã¯ã¹ãéžæããŠããªãå Žåã«äŸ¿å©ã§ãããã ãã`$hint`ã®äœ¿çšã¯æçµææ®µãšãã¹ãã§ãããMongoDBãããŒã¿ååžã®å€åã«èªåçã«é©å¿ããã®ã劚ããå¯èœæ§ããããŸãã
4.3. $explainæŒç®åã®äœ¿çš
`$explain`æŒç®åã¯ãMongoDBãã¯ãšãªãã©ã®ããã«å®è¡ãããã«ã€ããŠã®è©³çŽ°ãªæ å ±ãæäŸããŸããããã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããã¯ãšãªã®ããã©ãŒãã³ã¹ãæé©åããããã«éåžžã«è²Žéã§ããå®è¡èšç»ãåæããŠãã€ã³ããã¯ã¹ã广çã«äœ¿çšãããŠãããã©ããã倿ããæ¹åã®äœå°ãããé åãç¹å®ããŸãã
4.4. éèšãã€ãã©ã€ã³ã®æé©å
éèšãã€ãã©ã€ã³ã¯ãè€éãªããŒã¿å€æãå®è¡ããããã«äœ¿çšã§ããŸãããã ããäžé©åã«èšèšãããéèšãã€ãã©ã€ã³ã¯éå¹çã«ãªãå¯èœæ§ããããŸãã以äžã®æé©åæè¡ãæ€èšããŠãã ããïŒ
- ã€ã³ããã¯ã¹ã®äœ¿çšïŒéèšãã€ãã©ã€ã³ãã§ããã ãã€ã³ããã¯ã¹ã䜿çšããããã«ããŸãã`$match`ã¹ããŒãžã¯ãã°ãã°ã€ã³ããã¯ã¹ã®æ©æµãåããããšãã§ããŸãã
- ãã€ãã©ã€ã³ã®æ©ã段éã§`$project`ã¹ããŒãžã䜿çšããïŒãã€ãã©ã€ã³ã®æ©ã段éã§`$project`ã¹ããŒãžã䜿çšããŠãåŠçãããããã¥ã¡ã³ãã®ãµã€ãºãåæžããŸãã
- ãã€ãã©ã€ã³ã®æ©ã段éã§`$limit`ãš`$skip`ã¹ããŒãžã䜿çšããïŒãã€ãã©ã€ã³ã®æ©ã段éã§`$limit`ãš`$skip`ã¹ããŒãžã䜿çšããŠãåŠçãããããã¥ã¡ã³ãã®æ°ãåæžããŸãã
- `$lookup`ã¹ããŒãžãå¹ççã«äœ¿çšããïŒ`$lookup`ã¹ããŒãžã¯é«äŸ¡ã«ãªãå¯èœæ§ããããŸããå¯èœã§ããã°ã`$lookup`ã®äœ¿çšãé¿ããããã«ããŒã¿ã鿣èŠåããããšãæ€èšããŠãã ããã
4.5. çµææ°ã®å¶é
`limit()`ã¡ãœããã䜿çšããŠãã¯ãšãªã«ãã£ãŠè¿ãããçµæã®æ°ãå¶éããŸããããã¯ãããŒãžããŒã·ã§ã³ãããŒã¿ã®äžéšã®ã¿ãå¿ èŠãªå Žåã«äŸ¿å©ã§ãã
4.6. å¹ççãªæŒç®åã®äœ¿çš
ã¯ãšãªã«æãå¹ççãªæŒç®åãéžæããŸããäŸãã°ã倧ããªé åã§`$in`ã䜿çšãããšéå¹çã«ãªãå¯èœæ§ããããŸãã代ããã«`$or`ã䜿çšãããã`$in`ã®å¿ èŠæ§ãé¿ããããã«ããŒã¿ãåæ§ç¯ããããšãæ€èšããŠãã ããã
5. ããŒããŠã§ã¢ã«é¢ããèæ ®äºé
ååãªããŒããŠã§ã¢ãªãœãŒã¹ã¯ãMongoDBã®æé©ãªããã©ãŒãã³ã¹ã«äžå¯æ¬ ã§ãã以äžã®èŠçŽ ãèæ ®ããŠãã ããïŒ
5.1. CPU
MongoDBã¯CPUãéäžçã«äœ¿çšããã¢ããªã±ãŒã·ã§ã³ã§ãããµãŒããŒã«ã¯ãŒã¯ããŒããåŠçããã®ã«ååãªCPUã³ã¢ãããããšã確èªããŠãã ãããããã©ãŒãã³ã¹ãåäžãããããã«ããã«ãã³ã¢ããã»ããµã®äœ¿çšãæ€èšããŠãã ããã
5.2. ã¡ã¢ãªïŒRAMïŒ
MongoDBã¯ããŒã¿ãšã€ã³ããã¯ã¹ããã£ãã·ã¥ããããã«ã¡ã¢ãªã䜿çšããŸãããµãŒããŒã«ã¯ãŒãã³ã°ã»ããïŒé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãšã€ã³ããã¯ã¹ïŒãä¿æããã®ã«ååãªã¡ã¢ãªãããããšã確èªããŠãã ãããã¡ã¢ãªãäžè¶³ãããšãã£ã¹ã¯I/Oãçºçããããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããå¯èœæ§ããããŸãã
5.3. ã¹ãã¬ãŒãžïŒãã£ã¹ã¯I/OïŒ
ãã£ã¹ã¯I/Oã¯ãMongoDBã®ããã©ãŒãã³ã¹ã«ãããéèŠãªèŠçŽ ã§ãããã£ã¹ã¯I/Oã®é å»¶ãæå°éã«æããããã«ãSSDïŒãœãªããã¹ããŒããã©ã€ãïŒãªã©ã®é«æ§èœã¹ãã¬ãŒãžã䜿çšããŠãã ããããã£ã¹ã¯I/Oã®ã¹ã«ãŒããããšããŒã¿ã®åé·æ§ãåäžãããããã«ãRAIDïŒRedundant Array of Independent DisksïŒã®äœ¿çšãæ€èšããŠãã ããã
5.4. ãããã¯ãŒã¯
ãããã¯ãŒã¯é å»¶ã¯ãç¹ã«åæ£å±éã«ãããŠããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãããµãŒããŒãé«åž¯åå¹ ãäœé å»¶ã®ãããã¯ãŒã¯ã«æ¥ç¶ãããŠããããšã確èªããŠãã ãããç°ãªãå°åã®ãŠãŒã¶ãŒã®ãããã¯ãŒã¯é å»¶ãæå°éã«æããããã«ãå°ççã«åæ£ããå±éã®äœ¿çšãæ€èšããŠãã ããã
6. éçšäžã®ãã¹ããã©ã¯ãã£ã¹
éçšäžã®ãã¹ããã©ã¯ãã£ã¹ãå®è£ ããããšã¯ãé·æã«ããã£ãŠæé©ãªMongoDBã®ããã©ãŒãã³ã¹ãç¶æããããã«éèŠã§ãã以äžãèæ ®ããŠãã ããïŒ
6.1. ç£èŠãšã¢ã©ãŒã
CPU䜿çšçãã¡ã¢ãªäœ¿çšéããã£ã¹ã¯I/Oãã¯ãšãªå®è¡æéãã¬ããªã±ãŒã·ã§ã³ã©ã°ãªã©ã®äž»èŠãªããã©ãŒãã³ã¹ã¡ããªãã¯ã远跡ããããã®å æ¬çãªç£èŠãå®è£ ããŸããæœåšçãªããã©ãŒãã³ã¹ã®åé¡ããŠãŒã¶ãŒã«åœ±é¿ãäžããåã«éç¥ããã¢ã©ãŒããèšå®ããŸããç£èŠã«ã¯MongoDB Atlas MonitoringãPrometheusãGrafanaãªã©ã®ããŒã«ã䜿çšããŸãã
6.2. 宿çãªã¡ã³ããã³ã¹
以äžã®ãããªå®æçãªã¡ã³ããã³ã¹ã¿ã¹ã¯ãå®è¡ããŸãïŒ
- ã€ã³ããã¯ã¹ã®æé©åïŒå®æçã«ã€ã³ããã¯ã¹ã確èªããæé©åããŸãã
- ããŒã¿å§çž®ïŒããŒã¿ãã¡ã€ã«ãå§çž®ããŠãã£ã¹ã¯ã¹ããŒã¹ãåå©çšããããã©ãŒãã³ã¹ãåäžãããŸãã
- ãã°ããŒããŒã·ã§ã³ïŒãã°ãã¡ã€ã«ãéå°ãªãã£ã¹ã¯ã¹ããŒã¹ãæ¶è²»ããã®ãé²ãããã«ããã°ãã¡ã€ã«ãããŒããŒã·ã§ã³ããŸãã
- ããŒãžã§ã³ã¢ããã°ã¬ãŒãïŒMongoDBãµãŒããŒãææ°ããŒãžã§ã³ã«ä¿ã¡ãããã©ãŒãã³ã¹ã®åäžããã°ä¿®æ£ã®æ©æµãåããŸãã
6.3. ã¹ã±ãŒã©ããªãã£ã®ããã®ã·ã£ãŒãã£ã³ã°
ã·ã£ãŒãã£ã³ã°ã¯ãè€æ°ã®MongoDBãµãŒããŒã«ããŒã¿ãæ°Žå¹³ã«åå²ããæè¡ã§ããããã«ãããããŒã¿ããŒã¹ãã¹ã±ãŒãªã³ã°ããŠãå€§èŠæš¡ãªããŒã¿ã»ãããšé«ãã©ãã£ãã¯éã«å¯Ÿå¿ã§ããŸããã·ã£ãŒãã£ã³ã°ã§ã¯ãããŒã¿ããã£ã³ã¯ã«åå²ãããããã®ãã£ã³ã¯ãè€æ°ã®ã·ã£ãŒãã«åæ£ãããŸããã³ã³ãã£ã°ãµãŒããŒã¯ãã·ã£ãŒãã£ã³ã°ãããã¯ã©ã¹ã¿ã«é¢ããã¡ã¿ããŒã¿ãä¿åããŸãã
6.4. é«å¯çšæ§ã®ããã®ã¬ããªã±ãŒã·ã§ã³
ã¬ããªã±ãŒã·ã§ã³ã¯ãç°ãªãMongoDBãµãŒããŒäžã«ããŒã¿ã®è€æ°ã®ã³ããŒãäœæããããšãå«ã¿ãŸããããã«ãããé«å¯çšæ§ãšããŒã¿ã®åé·æ§ãæäŸãããŸãã1å°ã®ãµãŒããŒãæ éããå Žåãå¥ã®ãµãŒããŒãåŒãç¶ããã¢ããªã±ãŒã·ã§ã³ãå©çšå¯èœãªç¶æ ãç¶æããŸããã¬ããªã±ãŒã·ã§ã³ã¯éåžžãã¬ããªã«ã»ããã䜿çšããŠå®è£ ãããŸãã
6.5. ã³ãã¯ã·ã§ã³ããŒãªã³ã°
ã³ãã¯ã·ã§ã³ããŒãªã³ã°ã䜿çšããŠãããŒã¿ããŒã¹ãžã®æ°ããæ¥ç¶ã確ç«ãããªãŒããŒããããæå°éã«æããŸããã³ãã¯ã·ã§ã³ããŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãåå©çšã§ããã¢ã¯ãã£ããªæ¥ç¶ã®ããŒã«ãç¶æããŸããã»ãšãã©ã®MongoDBãã©ã€ãã¯ã³ãã¯ã·ã§ã³ããŒãªã³ã°ããµããŒãããŠããŸãã
7. ãããã¡ã€ãªã³ã°ãšç£æ»
MongoDBã¯ãåã ã®æäœã®å®è¡æéã远跡ã§ãããããã¡ã€ãªã³ã°ããŒã«ãæäŸããŸãããããã¡ã€ãªã³ã°ã䜿çšããŠãé ãã¯ãšãªããã®ä»ã®ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ã§ããŸããç£æ»ã«ããããã¹ãŠã®ããŒã¿ããŒã¹æäœã远跡ã§ããããã¯ã»ãã¥ãªãã£ãšã³ã³ãã©ã€ã¢ã³ã¹ã®ç®çã§åœ¹ç«ã¡ãŸãã
8. åœéçãªèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®ããã«MongoDBã®ããã©ãŒãã³ã¹ãæé©åããéã«ã¯ã以äžãèæ ®ããŠãã ããïŒ
- å°ççååžïŒç°ãªãå Žæã®ãŠãŒã¶ãŒã®é å»¶ãæå°éã«æããããã«ãè€æ°ã®å°ççå°åã«MongoDBãµãŒããŒãå±éããŸããMongoDB Atlasã®ã°ããŒãã«ã¯ã©ã¹ã¿æ©èœã®äœ¿çšãæ€èšããŠãã ããã
- ã¿ã€ã ãŸãŒã³ïŒæ¥æããŒã¿ãä¿åããã³ã¯ãšãªããéã«ã¯ãã¿ã€ã ãŸãŒã³ã«æ³šæããŠãã ãããæ¥æã®ä¿åã«ã¯UTCïŒåå®äžçæïŒã䜿çšããå¿ èŠã«å¿ããŠããŒã«ã«ã¿ã€ã ãŸãŒã³ã«å€æããŸãã
- ç §åé åºïŒæå忝èŒã®ã«ãŒã«ãæå®ããããã«ç §åé åºã䜿çšããŸããç §åé åºã¯ãç°ãªãèšèªãæåã»ããããµããŒãããããã«äœ¿çšã§ããŸãã
- é貚ïŒéè²šã®æžåŒèšå®ã«ã¯æ³šæããŠãã ãããã¢ããªã±ãŒã·ã§ã³ãç°ãªãé貚ããã±ãŒã«ãæ£ããåŠçããããšã確èªããŠãã ããã
9. çµè«
MongoDBã®ããã©ãŒãã³ã¹æé©åã¯ãæ éãªèšç»ãå®è£ ãç£èŠãå¿ èŠãšããç¶ç¶çãªããã»ã¹ã§ãããã®ã¬ã€ãã§æŠèª¬ãããæè¡ã«åŸãããšã§ãMongoDBã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããããŠãŒã¶ãŒã«ããè¯ãäœéšãæäŸã§ããŸããããŒã¿ããŒã¹ãæé©ã«åäœããŠããããšã確èªããããã«ãã¹ããŒããã€ã³ããã¯ã¹ãã¯ãšãªãããŒããŠã§ã¢ã宿çã«èŠçŽãããšãå¿ããªãã§ãã ãããããã«ããããã®æŠç¥ãã°ããŒãã«ãªãŠãŒã¶ãŒããŒã¹ã®ç¹å®ã®ããŒãºã課é¡ã«é©å¿ãããå Žæã«é¢ä¿ãªãã·ãŒã ã¬ã¹ãªäœéšãæäŸããŠãã ãããåœéåãšããŒã«ã©ã€ãŒãŒã·ã§ã³ã®ãã¥ã¢ã³ã¹ãçè§£ããããšã§ãæåãè¶ ããŠå ±æãåŒã¶ããã«MongoDBã®ã»ããã¢ããã埮調æŽããäžçäžã®ãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããšæºè¶³åºŠãé«ããããšãã§ããŸããç¶ç¶çãªæ¹åãåãå ¥ããã°ãããªãã®MongoDBããŒã¿ããŒã¹ã¯ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã®èŠæ±ã«å¯Ÿå¿ã§ããæ å¢ãæŽãã§ãããã