èšäºã®ç¿»èš³ã¯ã³ãŒã¹éå§åå€ã«æºåãããŸãã
ãã€ã©ã€ãïŒ
- MongoDB ã§ã¯ã¹ããŒãã¯ãªãã·ã§ã³ã§ãããã¹ããŒããéçºããããšã¯éåžžã«éèŠã§ãã
- åæ§ã«ãã€ã³ããã¯ã¹ã¯ã¹ããŒããšã¢ã¯ã»ã¹ ãã¿ãŒã³ã«äžèŽããå¿ èŠããããŸãã
- 倧ããªãªããžã§ã¯ãã倧ããªé åã®äœ¿çšã¯é¿ããŠãã ããã
- ç¹ã«ã»ãã¥ãªãã£ãšä¿¡é Œæ§ã«é¢ããŠã¯ãMongoDB ã®èšå®ã«ã¯æ³šæããŠãã ããã
- MongoDB ã«ã¯ã¯ãšãª ãªããã£ãã€ã¶ãŒããªããããã¯ãšãªæäœãå®è¡ãããšãã¯æ³šæãå¿ èŠã§ãã
ç§ã¯é·ãéããŒã¿ããŒã¹ãæ±ã£ãŠããŸããããMongoDB ãç¥ã£ãã®ã¯ã€ãæè¿ã§ãã äœæ¥ãå§ããåã«ç¥ã£ãŠããããã£ãããšãããã€ããããŸãã ãã§ã«ç¹å®ã®åéã§ã®çµéšããã人ã¯ãããŒã¿ããŒã¹ãšã¯äœãããŸããã®æ©èœã«ã€ããŠå
å
¥èŠ³ãæã£ãŠããŸãã ä»ã®äººãç解ãããããªãããã«ãããããééãã®ãªã¹ãã瀺ããŸãã
èªèšŒãªã㧠MongoDB ãµãŒããŒãäœæãã
æ®å¿µãªãããMongoDB ã¯ããã©ã«ãã§ã¯èªèšŒãªãã§ã€ã³ã¹ããŒã«ãããŸãã ããŒã«ã«ã«ã¢ã¯ã»ã¹ãããã¯ãŒã¯ã¹ããŒã·ã§ã³ã®å Žåãããã¯éåžžã®åäœã§ãã ãã ããMongoDB ã¯å€§éã®ã¡ã¢ãªã䜿çšãããã«ããŠãŒã¶ãŒ ã·ã¹ãã ã§ãããããéçºã®ã¿ã«äœ¿çšããå Žåã§ããã§ããã ãå€ãã® RAM ãåãããµãŒããŒã«é
眮ããæ¹ãè¯ãã§ãããã ããã©ã«ãã®ããŒããä»ããŠãµãŒããŒã«ã€ã³ã¹ããŒã«ãããšãç¹ã«ãªã¯ãšã¹ãå
㧠JavaScript ã³ãŒããå®è¡ãããå¯èœæ§ãããå Žå (ããšãã°ã $where
ã®ã¢ã€ãã¢ãšããŠ
èªèšŒæ¹æ³ã¯ããã€ããããŸãããæãç°¡åãªã®ã¯ãŠãŒã¶ãŒID/ãã¹ã¯ãŒããèšå®ããæ¹æ³ã§ãã ã«åºã¥ããé«åºŠãªèªèšŒã«ã€ããŠèãããšãã«ããã®ã¢ã€ãã¢ã䜿çšããŠãã ããã
æ»æ察象é åã MongoDB ã«ãã€ã³ãããããšãå¿ããªãã§ãã ãã
,
ãŸãã¯
ã æšæºã® MongoDB ã§ã¯ããŒã¿ ãã¡ã€ã«ã¯æå·åãããªããããMongoDB ãå®è¡ããã®ã¯çã«ããªã£ãŠããŸãã
åè·¯éçºäžã«ãšã©ãŒãçºçããŸãã
MongoDB ã¯ã¹ããŒãã䜿çšããŸããã ããããããã¯ãã®å¶åºŠãå¿
èŠãªããšããæå³ã§ã¯ãããŸããã äžè²«ãããã¿ãŒã³ãæããã«ããã¥ã¡ã³ããä¿åãããã ãã®å Žåãä¿åããããšã¯è¿
éãã€ç°¡åã§ãããåŸã§æ€çŽ¢ããã®ã¯å°é£ã«ãªãå¯èœæ§ããããŸãã
å€å
žçãªèšäºã
䞊ã¹æ¿ãé åºãå¿ããªãã§ãã ãã
䞊ã¹æ¿ãé åºãå¿ãããšãä»ã®ééã£ãæ§æãããã€ã©ã€ã©ãå¢ããããå€ãã®æéãç¡é§ã«ããå¯èœæ§ããããŸãã ããã©ã«ãã§ã¯ãMongoBD ã¯
倧ããªããã¥ã¡ã³ããå«ãã³ã¬ã¯ã·ã§ã³ãäœæãã
MongoDB ã¯ãã³ã¬ã¯ã·ã§ã³å
ã§æ倧 16 MB ã®å€§ããªããã¥ã¡ã³ããåãã§ãã¹ãããŸãã
倧èŠæš¡ãªé åãå«ãããã¥ã¡ã³ãã®äœæ
ããã¥ã¡ã³ãã«ã¯é
åãå«ããããšãã§ããŸãã é
åå
ã®èŠçŽ ã®æ°ã XNUMX æ¡ã®æ°å€ããé ãé¢ããŠããå Žåãæé©ã§ãã èŠçŽ ãé »ç¹ã«é
åã«è¿œå ããããšããããå«ãããã¥ã¡ã³ãã®ãµã€ãºãè¶
ããŠããŸããããèŠçŽ ãé
åã«è¿œå ããå¿
èŠããããŸãã
MongoDB ã«ã¯ä»¥äžã®ãã®ããããŸãã
é
åã®ã€ã³ããã¯ã¹ä»ããªãã§ãã§ãããšæããããããŸããã æ®å¿µãªãããã€ã³ããã¯ã¹ããªããšä»ã®åé¡ãçºçããå¯èœæ§ããããŸãã ããã¥ã¡ã³ãã¯æåããæåŸãŸã§ã¹ãã£ã³ããããããé
åã®æ«å°Ÿã®èŠçŽ ã®æ€çŽ¢ã«æéããããããã®ãããªããã¥ã¡ã³ãã«é¢é£ããã»ãšãã©ã®æäœã¯
éçŽå ã®ã¹ããŒãžã®é åºãéèŠã§ããããšãå¿ããªãã§ãã ãã
ã¯ãšãª ãªããã£ãã€ã¶ãŒãåããããŒã¿ããŒã¹ ã·ã¹ãã ã§ã¯ãäœæããã¯ãšãªã¯ãäœãååŸãããã§ã¯ãªããäœãååŸãããã説æãããã®ã§ãã ãã®ã¡ã«ããºã ã¯ãã¬ã¹ãã©ã³ã§ã®æ³šæãšåæ§ã«æ©èœããŸããéåžžããŠãŒã¶ãŒã¯æçã泚æããã ãã§ã調ç人ã«è©³çŽ°ãªæ瀺ãäžããããšã¯ãããŸããã
MongoDB ã§ã¯ãã¯ãã¯ã«æ瀺ããŸãã ããšãã°ãããŒã¿ã確å®ã«ééããããã«ããå¿
èŠããããŸãã reduce
ãã€ãã©ã€ã³ã®ã§ããã ãæ©ã段éã§äœ¿çšããŠã $match
О $project
ã䞊ã¹æ¿ãã¯ãã®åŸã«ã®ã¿è¡ãããŸãã reduce
ãæ€çŽ¢ãåžæã©ããã®é åºã§è¡ãããããšã確èªããŸãã äžå¿
èŠãªäœæ¥ãæé€ããã¹ããããæé©ã«é åºä»ãããçµåã¿ã€ããéžæããã¯ãšãª ãªããã£ãã€ã¶ãŒã䜿çšãããšãç¡é§ã«ãªãå¯èœæ§ããããŸãã MongoDB ã䜿çšãããšãå©äŸ¿æ§ãç ç²ã«ããŠããã«å¶åŸ¡ã§ããããã«ãªããŸãã
ã®ãããªããŒã«
ã¯ã€ãã¯é²é³ã䜿çšãã
MongoDB ã®æžã蟌ã¿ãªãã·ã§ã³ãé«éã§ã¯ãããä¿¡é Œæ§ãäœãããã«èšå®ããªãã§ãã ããã ãã®ã¢ãŒã ããã¡ã€ã«ããŠå¿ããã æžã蟌ã¿ãè¡ãããåã«ã³ãã³ããè¿ããããããé«éã«èŠããŸãã ããŒã¿ããã£ã¹ã¯ã«æžã蟌ãŸããåã«ã·ã¹ãã ãã¯ã©ãã·ã¥ãããšãããŒã¿ã¯å€±ãããäžæŽåãªç¶æ ã«ãªããŸãã 幞ããªããšã«ã64 ããã MongoDB ã§ã¯ãã°èšé²ãæå¹ã«ãªã£ãŠããŸãã
MMAPv1 ããã³ WiredTiger ã¹ãã¬ãŒãž ãšã³ãžã³ã¯ãããé²ãããã«ãã°ã䜿çšããŸãããWiredTiger ã¯æåŸã«äžè²«ããç¶æ
ã«åŸ©å
ã§ããŸãã
ãžã£ãŒããªã³ã°ã«ããããªã«ããªåŸã«ããŒã¿ããŒã¹ãäžè²«ããç¶æ
ã«ãªãããšãä¿èšŒããããžã£ãŒãã«ã«æžã蟌ãŸãããŸã§ãã¹ãŠã®ããŒã¿ãä¿æãããŸãã é²é³ã®é »åºŠã¯ãã©ã¡ãŒã¿ã䜿çšããŠèšå®ãããŸãã
.
ãšã³ããªã確èªããã«ã¯ãæ§æãã¡ã€ã«ã§ãã°ãæå¹ã«ãªã£ãŠããããšã確èªããŠãã ããã
ãèšé²ã®é »åºŠã¯ãæ倱ããŠã蚱容ã§ããæ
å ±éã«å¯Ÿå¿ããŸãã
ã€ã³ããã¯ã¹ã䜿çšããªã䞊ã¹æ¿ã
æ€çŽ¢ãéèšãè¡ãå Žåãå€ãã®å ŽåãããŒã¿ã䞊ã¹æ¿ããå¿
èŠããããŸãã ãœãŒããããããŒã¿ã®éãæžããããã«çµæããã£ã«ã¿ãªã³ã°ããåŸããããæçµæ®µéã® XNUMX ã€ã§è¡ãããããšãæã¿ãŸãã ãã®å Žåã§ãã䞊ã¹æ¿ãã«ã¯å¿
èŠã«ãªããŸã
é©åãªã€ã³ããã¯ã¹ããªãå ŽåãMongoDB ã¯ã€ã³ããã¯ã¹ãªãã§ãåé¡ãããŸããã ãã¹ãŠã®ããã¥ã¡ã³ãã®åèšãµã€ãºã«ã¯ 32 MB ã®ã¡ã¢ãªå¶éããããŸãã
ã€ã³ããã¯ã¹ããµããŒãããªãæ€çŽ¢
æ€çŽ¢ã¯ãšãªã¯ãSQL ã® JOIN æäœãšåæ§ã®æ©èœãå®è¡ããŸãã æé©ã«æ©èœããã«ã¯ãå€éšããŒãšããŠäœ¿çšãããããŒã®å€ã®ã€ã³ããã¯ã¹ãå¿
èŠã§ãã 䜿çšæ³ãåæ ãããŠããªããããããã¯æããã§ã¯ãããŸããã explain()
ã ãã®ãããªã€ã³ããã¯ã¹ã¯ãã«æžãããã€ã³ããã¯ã¹ã«è¿œå ãããŸãã explain()
ããã€ãã©ã€ã³ ãªãã¬ãŒã¿ãŒã«ãã£ãŠäœ¿çšãããŸãã $match
О $sort
ããã€ãã©ã€ã³ã®å
é ã§åºäŒããšãã ã€ã³ããã¯ã¹ã§ãããã段éãã«ããŒã§ããããã«ãªããŸãã
è€æ°ã®ã¢ããããŒãã®äœ¿çšããªããã¢ãŠããã
æ¹æ³
æå®ãããã©ã¡ãŒã¿ã«å¿ããŠãæ¢åã®ããã¥ã¡ã³ãã®äžéšãŸãã¯ããã¥ã¡ã³ãå
šäœãå€æŽããå®å
šã«çœ®ãæããå Žåã«äœ¿çšããŸãã
ã ããã»ã©æçœã§ã¯ãªãã®ã¯ããªãã·ã§ã³ãèšå®ããªãéããã³ã¬ã¯ã·ã§ã³å
ã®ãã¹ãŠã®ããã¥ã¡ã³ããåŠçãããããã§ã¯ãªããšããããšã§ãã
ãªã¯ãšã¹ãåºæºãæºãããã¹ãŠã®ããã¥ã¡ã³ããæŽæ°ããŸãã
ããã·ã¥ ããŒãã«å ã®ããŒã®é åºã®éèŠæ§ãå¿ããªãã§ãã ããã
JSON ã§ã¯ããªããžã§ã¯ãã¯ããµã€ãºã XNUMX å以äžã®ååãšå€ã®ãã¢ã®é åºãªãã®ã³ã¬ã¯ã·ã§ã³ã§æ§æãããŸããååã¯æååãå€ã¯æååãæ°å€ãããŒã«å€ãnullããªããžã§ã¯ãããŸãã¯é åã§ãã
æ®å¿µãªãããBSON ã¯æ€çŽ¢æã«é åºãéåžžã«éèŠããŸãã MongoDB ã§ã¯ãçµã¿èŸŒã¿ãªããžã§ã¯ãå
ã®ããŒã®é åº { firstname: "Phil", surname: "factor" }
- ããã¯åãã§ã¯ãããŸãã { { surname: "factor", firstname: "Phil" }
ã ã€ãŸããååãšå€ã®ãã¢ã確å®ã«èŠã€ãããå Žåã¯ããã®é åºãããã¥ã¡ã³ãã«ä¿åããå¿
èŠããããŸãã
æ··åããªãã§ãã ãã "ãã«" О "æªå®çŸ©"
å€ "æªå®çŸ©" ã«ãããšãJSONã§ã¯æ±ºããŠæå¹ã§ã¯ãããŸããã§ãã $null
ãããã¯åžžã«è¯ã解決çã§ãããšã¯éããŸããã
äœ¿çš $limit()
без $sort()
MongoDB ã§éçºããŠããå Žåãã¯ãšãªãŸãã¯éèšããè¿ãããçµæã®ãµã³ãã«ã確èªããã ãã§åœ¹ç«ã€ããšããããããŸãã ãã®ã¿ã¹ã¯ã«ã¯å¿
èŠãªãã®ããããŸã $limit()
ãã ããäºåã«äœ¿çšããªãéããæçµã³ãŒãã«ã¯å«ããã¹ãã§ã¯ãããŸããã $sort
ã ãã®ã¡ã«ããºã ãå¿
èŠãªã®ã¯ãããããªããšçµæã®é åºãä¿èšŒã§ãããããŒã¿ã確å®ã«è¡šç€ºã§ããªãããã§ãã çµæã®äžéšã«ã¯ã䞊ã¹æ¿ãã«å¿ããŠç°ãªããšã³ããªã衚瀺ãããŸãã 確å®ã«åäœããã«ã¯ãã¯ãšãªãšéèšã決å®çã§ããå¿
èŠããããŸããã€ãŸããå®è¡ããããã³ã«åãçµæãçæãããå¿
èŠããããŸãã ãå«ãã³ãŒã $limit()
ãããããããã $sort
ã決å®è«çã§ã¯ãªãããã远跡ãå°é£ãªãšã©ãŒãçºçããå¯èœæ§ããããŸãã
ãŸãšã
MongoDB ã«å€±æããå¯äžã®æ¹æ³ã¯ãMongoDB ã DBMS ãªã©ã®å¥ã®çš®é¡ã®ããŒã¿ããŒã¹ãšçŽæ¥æ¯èŒããããç¹å®ã®æåŸ ã«åºã¥ããŠäœ¿çšããããã«ãªããã§ãã ãªã¬ã³ãžãšãã©ãŒã¯ãæ¯èŒãããããªãã®ã§ãã ããŒã¿ããŒã¹ ã·ã¹ãã ã¯ç¹å®ã®ç®çã«åœ¹ç«ã¡ãŸãã ãããã®éããèªåèªèº«ã§ç解ããè©äŸ¡ããããšãæåã§ãã MongoDB éçºè ã« DBMS ã®éã匷å¶ãããããªå§åããããã®ã¯æ®å¿µãªããšã§ãã ããŒã¿ã®æŽåæ§ã確ä¿ããé害ãæªæã®ããæ»æã«åŒ·ãããŒã¿ ã·ã¹ãã ãäœæãããªã©ãå€ãåé¡ã解決ããæ°ãããŠèå³æ·±ãæ¹æ³ãç¥ããããšèããŠããŸãã
MongoDB ã®ããŒãžã§ã³ 4.0 ã§ã® ACID ãã©ã³ã¶ã¯ã·ã§ã³æ§ã®å°å ¥ã¯ãé©æ°çãªæ¹æ³ã§éèŠãªæ¹åãå°å ¥ããè¯ãäŸã§ãã è€æ°ã®ããã¥ã¡ã³ããšè€æ°ã®ã¹ããŒãã¡ã³ãã®ãã©ã³ã¶ã¯ã·ã§ã³ãã¢ãããã¯ã«ãªããŸããã ããã¯ã®ååŸãã¹ã¿ãã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã®çµäºã«å¿ èŠãªæéã調æŽããããåé¢ã¬ãã«ãå€æŽãããããããšãã§ããŸãã
ç¶ããèªãïŒ
åºæïŒ habr.com