NoSQL ãšã¯
æè»ãªããŒã¿ã¢ãã«ãåãã髿§èœã®éãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹
NoSQL ããŒã¿ããŒã¹ãšã¯
NoSQL ããŒã¿ããŒã¹ã¯ãç¹å®ã®ããŒã¿ã¢ãã«å°çšã«èšèšãããŠãããææ°ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æè»ãªã¹ããŒããåããŠããŸããNoSQL ããŒã¿ããŒã¹ã¯ãéçºãæ©èœæ§ãããã³ããã©ãŒãã³ã¹ãå€§èŠæš¡ãã€å®¹æã«å®çŸã§ãããšããç¹ã§åºãè©äŸ¡ãããŠããŸããããã¥ã¡ã³ããã°ã©ããããŒå€ãã€ã³ã¡ã¢ãªãæ€çŽ¢ãªã©ãããŸããŸãªããŒã¿ã¢ãã«ã䜿çšãããŸãããã®ããŒãžã«ã¯ãNoSQL ããŒã¿ããŒã¹ãçè§£ããŠäœ¿çšããããã®åèè³æãå«ãŸããŠããŸãã
äœå幎ãã®éãã¢ããªã±ãŒã·ã§ã³éçºã«äœ¿çšããäž»ãªããŒã¿ã¢ãã«ã¯ãOracleãDB2ãSQL ServerãMySQLãPostgreSQL ãªã©ã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§äœ¿çšãããªã¬ãŒã·ã§ãã«ããŒã¿ã¢ãã«ã§ãããä»ã®ããŒã¿ã¢ãã«ãåºãæ¡çšããå§ããã®ã¯ã2000 幎代åã°ããåŸåã«ãããŠã§ãããããã®æ°ããã¯ã©ã¹ã®ããŒã¿ããŒã¹ãšããŒã¿ã¢ãã«ãåºå¥ããåé¡ããããã« âNoSQLâ ãšããçšèªãç»å ŽããŸãããå€ãã®å ŽåãâNoSQLâ ãšããçšèªã¯ãéãªã¬ãŒã·ã§ãã«ããšåãæå³ã§ãã
NoSQL (éãªã¬ãŒã·ã§ãã«) ããŒã¿ããŒã¹ã®ä»çµã¿
NoSQL ããŒã¿ããŒã¹ã§ã¯ãããã¥ã¡ã³ããã°ã©ããããŒå€ãã€ã³ã¡ã¢ãªãæ€çŽ¢ãªã©ã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ãšç®¡çã®ããã«ããŸããŸãªããŒã¿ã¢ãã«ã䜿çšããŸãããã®ãããªã¿ã€ãã®ããŒã¿ããŒã¹ã¯ãä»ã®ããŒã¿ããŒã¹ã®ããŒã¿äžè²«æ§ã®å¶éã®äžéšãç·©åããããšã§éæãããã倧容éã®ããŒã¿ããªã¥ãŒã ãäœã¬ã€ãã³ã·ãŒãæè»ãªããŒã¿ã¢ãã«ãå¿ èŠãšããã¢ããªã±ãŒã·ã§ã³åãã«æé©åãããŠããŸãã
åçŽãªæžç±ããŒã¿ããŒã¹ã®ã¹ããŒããã¢ããªã³ã°ããäŸãèããŠã¿ãŸãããã
- ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ã¯ãæžç±ã¬ã³ãŒãã¯ãã°ãã°åè§£ (ãæ£èŠåã) ãããŠå¥ã
ã®ããŒãã«ã«æ ŒçŽããããããã®é¢ä¿ããã©ã€ããªããŒãšå€éšããŒã®å¶çŽã«ãã£ãŠå®çŸ©ãããŸãããã®äŸã§ã¯ãBooks ããŒãã«ã«ã¯ ISBNãBook TitleãEdition Number ã®åããããAuthor ããŒãã«ã«ã¯ AuthorID ãš Author Name ã®åããããæåŸã« Author-ISBN ããŒãã«ã« AuthorID ãš ISBN ã®åããããŸãããªã¬ãŒã·ã§ãã«ã¢ãã«ã¯ãããŒã¿ããŒã¹å
ã®ããŒãã«éã§åç
§æŽåæ§ãç¶æããæ£èŠåããŠåé·æ§ãæžãããå
šè¬çã«ã¹ãã¬ãŒãžãæé©åã§ããããã«èšèšãããŠããŸãã
- NoSQL ããŒã¿ããŒã¹ã§ã¯ãæžç±ã¬ã³ãŒãã¯éåžžãJSON ããã¥ã¡ã³ããšããŠä¿åãããŸããæžç±ããšã«ãISBNãBook TitleãEdition NumberãAuthor NameãAuthorID ã®åé
ç®ãã屿§ãšããŠåäžã®ããã¥ã¡ã³ãå
ã«æ ŒçŽãããŸãããã®ã¢ãã«ã§ã¯ãããŒã¿ããçŽæçãªéçºãšæ°Žå¹³ã¹ã±ãŒã©ããªãã£ã®ããã«æé©åãããŠããŸãã
NoSQL ããŒã¿ããŒã¹ã䜿çšããå¿ èŠãããçç±
NoSQL ããŒã¿ããŒã¹ã¯ãæè»ã§ã¹ã±ãŒã©ãã«ã髿§èœãã€é«æ©èœãªããŒã¿ããŒã¹ãå¿ èŠãšããã¢ãã€ã«ããŠã§ããã²ãŒã ãªã©ã®ææ°ã®ã¢ããªã±ãŒã·ã§ã³ã«æé©ã§ãåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸãã
- æè»æ§: NoSQL ããŒã¿ããŒã¹ã¯ãäžè¬çã«ãããè¿ éã§å埩çãªéçºãå¯èœã«ããæè»ãªã¹ããŒããæäŸããŸããNoSQL ããŒã¿ããŒã¹ã®æè»ãªããŒã¿ã¢ãã«ã¯ãåæ§é åããŒã¿ããã³éæ§é åããŒã¿ã«æé©ã§ãã
- ã¹ã±ãŒã©ããªãã£: NoSQL ããŒã¿ããŒã¹ã¯éåžžãé«äŸ¡ã§å ç¢ãªãµãŒããŒã远å ããããšã«ãã£ãŠã¹ã±ãŒã«ã¢ããããã®ã§ã¯ãªãã忣ããããŒããŠã§ã¢ã¯ã©ã¹ã¿ãŒã䜿çšããŠã¹ã±ãŒã«ã¢ãŠãããããã«èšèšãããŠããŸããäžéšã®ã¯ã©ãŠããããã€ããŒã¯ããããã®æäœãå®å šãããŒãžãåãµãŒãã¹ãšããŠããã¯ã°ã©ãŠã³ãã§åŠçããŸãã
- 髿§èœ: NoSQL ããŒã¿ããŒã¹ã¯ãããã¥ã¡ã³ããããŒå€ãã°ã©ããªã©ã®ç¹å®ã®ããŒã¿ã¢ãã«ãšããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãšåæ§ã®æ©èœãå®çŸããããšãããããé«ãããã©ãŒãã³ã¹ãå®çŸã§ããã¢ã¯ã»ã¹ãã¿ãŒã³ã«æé©åãããŠããŸãã
- 髿©èœ: NoSQL ããŒã¿ããŒã¹ã¯ãããããã®ããŒã¿ã¢ãã«ããšã«å°çšã«èšèšãããæ©èœæ§ã«åªãã API ãšããŒã¿åãæäŸããŸãã
NoSQL ããŒã¿ããŒã¹ã®ã¿ã€ã
ããŒå€: ããŒå€ããŒã¿ããŒã¹ã¯é«åºŠãªããŒãã£ã·ã§ã³åã«å¯Ÿå¿ããŠãããä»ã®ã¿ã€ãã®ããŒã¿ããŒã¹ã§ã¯éæã§ããªãå€§èŠæš¡ãªæ°Žå¹³ã¹ã±ãŒãªã³ã°ãå¯èœã§ããã²ãŒã ãåºåæè¡ãIoT ãªã©ã®ãŠãŒã¹ã±ãŒã¹ã¯ãããŒå€ããŒã¿ã¢ãã«ã«ç¹ã«é©ããŠããŸããAmazon DynamoDB ã¯ãããããèŠæš¡ã®ã¯ãŒã¯ããŒãã§ã¬ã€ãã³ã·ãŒã 10 ããªç§æªæºã«ç¶æããããã«èšèšãããŠããŸãããã®äžè²«ããããã©ãŒãã³ã¹ã¯ãSnapchat ã®æå€§ã®ã¹ãã¬ãŒãžæžã蟌ã¿ã¯ãŒã¯ããŒããå«ã Snapchat Stories æ©èœã DynamoDB ã«ç§»è¡ãã倧ããªçç±ã«ãªã£ãŠããŸãã
ããã¥ã¡ã³ã: ããŒã¿ã¢ãã«ãè€éãªè¡ãåã®èгç¹ããèããªãéçºè
ãããŸããéåžžãã¢ããªã±ãŒã·ã§ã³å±€ã§ã¯ãããŒã¿ã¯ JSON ããã¥ã¡ã³ããšããŠè¡šãããŸããããã¯ãéçºè
ã«ãšã£ãŠãããŒã¿ã¢ãã«ãããã¥ã¡ã³ããšããŠèããæ¹ãçŽæçã§ããããã§ããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§äœ¿çšããã®ãšåãããã¥ã¡ã³ãã¢ãã«åœ¢åŒã䜿çšããŠããŒã¿ãããŒã¿ããŒã¹ã«ä¿æã§ãããããããã¥ã¡ã³ãããŒã¿ããŒã¹ã®äººæ°ãé«ãŸã£ãŠããŸããDynamoDB ãš MongoDB ã¯ãæè»ã§ä¿æãªéçºã®ããã®åŒ·åã§çŽæç㪠API ãæäŸããäžè¬çãªããã¥ã¡ã³ãããŒã¿ããŒã¹ã§ãã
ã°ã©ã: ã°ã©ãããŒã¿ããŒã¹ã®ç®çã¯ãç·å¯ãªã€ãªããã®ããããŒã¿ã»ãããæ±ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãšå®è¡ã容æã«ããããšã§ããã°ã©ãããŒã¿ããŒã¹ã®äžè¬çãªãŠãŒã¹ã±ãŒã¹ã¯ããœãŒã·ã£ã«ãããã¯ãŒãã³ã°ãæšå¥šãšã³ãžã³ãè©æ¬ºæ€åºãç¥èã°ã©ããªã©ã§ããAmazon Neptune ã¯å®å
šãããŒãžãåã®ã°ã©ãããŒã¿ããŒã¹ãµãŒãã¹ã§ããNeptune ã¯ãProperty Graph ã¢ãã«ãš Resource Description Framework (RDF) ã®äž¡æ¹ããµããŒãããTinkerPop ãš RDF/SPARQL ãšãã 2 ã€ã®ã°ã©ã API ã®éžæè¢ãæäŸããŠããŸããäžè¬çãªã°ã©ãããŒã¿ããŒã¹ã«ã¯ Neo4j ãš Giraph ããããŸãã
ã€ã³ã¡ã¢ãª: ã²ãŒã ãåºåæè¡ã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã€ã¯ãç§ã®å¿çæéãå¿
èŠãªãªãŒããŒããŒããã»ãã·ã§ã³ã¹ãã¢ããªã¢ã«ã¿ã€ã åæãªã©ã®ãŠãŒã¹ã±ãŒã¹ãããããã€ã§ããã©ãã£ãã¯ãæ¥å¢ããå¯èœæ§ããããŸããAmazon ElastiCache 㯠Memcached ãš Redis ããµããŒããããã£ã¹ã¯ããŒã¹ã®ããŒã¿ã¹ãã¢ã§ã¯åŠçã§ããªãäœã¬ã€ãã³ã·ãŒãé«ã¹ã«ãŒãããã®ã¯ãŒã¯ããŒã (McDonald's ãªã©) ã«é©åããŸããAmazon DynamoDB Accelerator (DAX) ã¯ãå°çšã®ããŒã¿ã¹ãã¢ã®å¥ã®äŸã§ããDAX ã䜿çšãããšãDynamoDB ã®èªã¿èŸŒã¿ã 1 æ¡éããªããŸãã
æ€çŽ¢: å€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãéçºè
ãåé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããã®ã«åœ¹ç«ã€ããã«ãã°ãåºåããŸããAmazon Elasticsearch Service (Amazon ES) ã¯ãåæ§é åããããã°ããã³ææšã®ã€ã³ããã¯ã¹äœæãéçŽãæ€çŽ¢ã«ãããæ©æ¢°ãçæããããŒã¿ãã»ãŒãªã¢ã«ã¿ã€ã ã§å¯èŠåããåæã§ããããã«ããå°çšãµãŒãã¹ã§ããAmazon ES ã¯ããã«ããã¹ãæ€çŽ¢ãŠãŒã¹ã±ãŒã¹åãã®åŒ·åã§é«æ§èœãªæ€çŽ¢ãšã³ãžã³ã§ããExpedia ã§ã¯ãéçšç£èŠãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ãã忣ã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯ã®ãã¬ãŒã¹ãšäŸ¡æ Œã®æé©åã«è³ããŸã§ãããã·ã§ã³ã¯ãªãã£ã«ã«ãªããŸããŸãªãŠãŒã¹ã±ãŒã¹ã« 150 以äžã® Amazon ES ãã¡ã€ã³ã30 TB ã®ããŒã¿ã300 åã®ããã¥ã¡ã³ãã䜿çšããŠããŸãã
SQL (ãªã¬ãŒã·ã§ãã«) ãš NoSQL (éãªã¬ãŒã·ã§ãã«) ããŒã¿ããŒã¹ã®æ¯èŒ
ããŸããŸãªæ©èœãæã€å€ãã®ã¿ã€ãã® NoSQL ããŒã¿ããŒã¹ããããŸãããæ¬¡ã®è¡šã¯ãSQL ããŒã¿ããŒã¹ãš NoSQL ããŒã¿ããŒã¹ã®éãã®ããã€ãã瀺ããŠããŸãã
| ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ | NoSQL ããŒã¿ããŒã¹ | |
|---|---|---|
æé©ãªã¯ãŒã¯ããŒã |
ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã¯ããã©ã³ã¶ã¯ã·ã§ãã«ã§åŒ·åºãªäžè²«æ§ãæã€ãªã³ã©ã€ã³ãã©ã³ã¶ã¯ã·ã§ã³åŠç (OLTP) ã¢ããªã±ãŒã·ã§ã³çšã«èšèšãããŠããããªã³ã©ã€ã³åæåŠç (OLAP) ã«é©ããŠããŸãã | NoSQL ã®ããŒå€ãããã¥ã¡ã³ããã°ã©ããããã³ã€ã³ã¡ã¢ãªã®ããŒã¿ããŒã¹ã¯ãäœã¬ã€ãã³ã·ãŒã¢ããªã±ãŒã·ã§ã³ãå«ã倿°ã®ããŒã¿ã¢ã¯ã»ã¹ãã¿ãŒã³ã® OLTP çšã«èšèšãããŠããŸããNoSQL æ€çŽ¢ããŒã¿ããŒã¹ã¯ãåæ§é åããŒã¿ã®åæçšã«èšèšãããŠããŸãã |
| ããŒã¿ã¢ãã« | ãªã¬ãŒã·ã§ãã«ã¢ãã«ã§ã¯ãããŒã¿ãè¡ãšåã§æ§æãããããŒãã«ã«æ£èŠåããŸããããŒãã«ãè¡ãåãã€ã³ããã¯ã¹ãããŒãã«éã®é¢ä¿ãªã©ã®ããŒã¿ããŒã¹èŠçŽ ã¯ãã¹ããŒãã«ãã£ãŠå³å¯ã«å®çŸ©ãããŸããããŒãã«éã®é¢ä¿ã«ãã£ãŠããŒã¿ããŒã¹ã®åç §æŽåæ§ãç¶æãããŸãã |
NoSQL ããŒã¿ããŒã¹ã¯ãããã¥ã¡ã³ããã°ã©ããããŒå€ãã€ã³ã¡ã¢ãªãããã³æ€çŽ¢ãå«ãããŸããŸãªããŒã¿ã¢ãã«ãæäŸããŸãã |
| ACID ç¹æ§ | ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«ã¯ãã¢ãããã¯æ§ãäžè²«æ§ãå颿§ãããã³èä¹ æ§ (ACID) ã®ç¹æ§ããããŸãã
|
NoSQL ããŒã¿ããŒã¹ã§ã¯ãå€ãã®å Žåããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã® ACID ç¹æ§ã®äžéšãç·©åããããšãšåŒãæãã«ãæ°Žå¹³æ¹åã«æ¡åŒµã§ãããã£ãšæè»ãªããŒã¿ã¢ãã«ãå®çŸããŠããŸããããã«ãã£ãŠãNoSQL ããŒã¿ããŒã¹ã¯ãåäžã€ã³ã¹ã¿ã³ã¹ã®å¶éãè¶ ããŠæ°Žå¹³æ¹åã«æ¡åŒµããå¿ èŠã®ãããé«ã¹ã«ãŒããããäœã¬ã€ãã³ã·ãŒãŠãŒã¹ã±ãŒã¹ã®åªããéžæè¢ã«ãªã£ãŠããŸãã |
| ããã©ãŒãã³ã¹ | ããã©ãŒãã³ã¹ã¯éåžžããã£ã¹ã¯ãµãã·ã¹ãã ã«å·Šå³ãããŸããæåã®ããã©ãŒãã³ã¹ãå®çŸããã«ã¯ãå€ãã®å Žåãã¯ãšãªãã€ã³ããã¯ã¹ãããŒãã«æ§é ã®æé©åãå¿ èŠã§ãã | ããã©ãŒãã³ã¹ã¯éåžžãåºç€ãšãªãããŒããŠã§ã¢ã¯ã©ã¹ã¿ãŒã®ãµã€ãºããããã¯ãŒã¯ã¬ã€ãã³ã·ãŒãåŒã³åºãã¢ããªã±ãŒã·ã§ã³ã«äŸåããŸãã |
| æ¡åŒµæ§ | ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ã¯éåžžãããŒããŠã§ã¢ã®æŒç®æ©èœãå¢åŒ·ããŠã¹ã±ãŒã«ã¢ããããããèªã¿åãå°çšã¯ãŒã¯ããŒãã®ã¬ããªã«ã远å ããŠã¹ã±ãŒã«ã¢ãŠãããŸãã | NoSQL ããŒã¿ããŒã¹ã§ã¯éåžžã忣åã¢ãŒããã¯ãã£ã䜿çšããããŒå€ã¢ã¯ã»ã¹ãã¿ãŒã³ã®ã¹ã±ãŒã«ã¢ãŠãã«åºã¥ãããŒãã£ã·ã§ã³åãå¯èœã§ãããã«ãããã»ãŒç¡éã®èŠæš¡ã§ã¹ã«ãŒããããé«ããäžè²«ããããã©ãŒãã³ã¹ãç¶æããããšãã§ããŸãã |
| API | ããŒã¿ã®ä¿åããã³ååŸã®ãªã¯ãšã¹ãã¯ãæ§é åã¯ãšãªèšèª (SQL) æºæ ã®ã¯ãšãªã䜿çšããŠäŒããããŸãããããã®ã¯ãšãªã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«ãã£ãŠè§£æãããŠå®è¡ãããŸãã | ã¢ããªã±ãŒã·ã§ã³éçºè ã¯ããªããžã§ã¯ãããŒã¹ã® API ã䜿çšããŠãã¡ã¢ãªå ã®ããŒã¿æ§é ã®ä¿åããã³ååŸãç°¡åã«è¡ãããšãã§ããŸããã¢ããªã±ãŒã·ã§ã³ã¯ããŒãã£ã·ã§ã³ããŒã«ãã£ãŠãããŒãšå€ã®ãã¢ãåã»ããããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ã·ãªã¢ã©ã€ãºããããªããžã§ã¯ãã屿§ãå«ãåæ§é åããã¥ã¡ã³ãã調ã¹ãŸãã |
SQL ãš NoSQL ã®çšèª
次ã®è¡šã¯ãSQL ããŒã¿ããŒã¹ã«ãã£ãŠäœ¿çšãããçšèªãšäž»èŠãª NoSQL ããŒã¿ããŒã¹ã§äœ¿çšãããçšèªãæ¯èŒãããã®ã§ãã
| SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
|---|---|---|---|---|
| ããŒãã« | ã³ã¬ã¯ã·ã§ã³ | ããŒãã« | ããŒãã« | ããŒã¿ãã±ãã |
| è¡ | ããã¥ã¡ã³ã | é ç® | è¡ | ããã¥ã¡ã³ã |
| å | ãã£ãŒã«ã | 屿§ | å | ãã£ãŒã«ã |
| ãã©ã€ããªã㌠| ObjectId | ãã©ã€ããªã㌠|
ãã©ã€ããªã㌠| ããã¥ã¡ã³ã ID |
| ã€ã³ããã¯ã¹ | ã€ã³ããã¯ã¹ | ã»ã«ã³ããªã€ã³ããã¯ã¹ | ã€ã³ããã¯ã¹ | ã€ã³ããã¯ã¹ |
| ãã¥ãŒ | ãã¥ãŒ | ã°ããŒãã«ã»ã«ã³ããªã€ã³ããã¯ã¹ | ãããªã¢ã©ã€ãºããã¥ãŒ | ãã¥ãŒ |
| ãã¹ããããããŒãã«ãŸãã¯ãªããžã§ã¯ã | åã蟌ãŸããããã¥ã¡ã³ã | ããã | ããã | ããã |
| é å | é å | ãªã¹ã | ãªã¹ã | ãªã¹ã |
| ãªã¹ã |
| ãªã¹ã |
| ãã©ã€ããªã㌠|
DynamoDB ã®éå§æ¹æ³
DynamoDB ã®äœ¿çšãéå§ããã®ã¯ç°¡åã§ããDynamoDB å ¥éã¬ã€ãã®ãŠã§ãããŒãžãåç §ããŠãæ°åã®ã¯ãªãã¯ã§æåã®ããŒãã«ãäœæã§ããŸããAWS ã®ãã¯ã€ãããŒããŒãããŠã³ããŒãããŠãã¯ãŒã¯ããŒãããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ç®¡çã·ã¹ãã (RDBMS) ãã DynamoDB ã«ç§»è¡ããããã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠåŠã¶ããšãã§ããŸãã

