ãã®ãããã¯ã§ã¯ã cassandraãã©ã®ããã«é 眮ãããŠããããã€ãŸããåæ£åã§ãã©ãŒã«ããã¬ã©ã³ãã§ä¿¡é Œæ§ã®é«ãããŒå€ããŒã¿ããŒã¹ã«ã€ããŠèª¬æããŸãã ã¹ãã¬ãŒãžèªäœãã åäžéå®³ç¹ ããµãŒããŒé害ãããã³ã¯ã©ã¹ã¿ãŒããŒãéã®ããŒã¿åæ£ã®åé¡ãåŠçããŸã ã ããã«ããµãŒããŒã1ã€ã®ããŒã¿ã»ã³ã¿ãŒ ïŒ data center ïŒã«é 眮ããå Žåãšãè·é¢ãšããã«å¿ããŠãããã¯ãŒã¯é 延ã§åºåãããå€ãã®ããŒã¿ã»ã³ã¿ãŒãåããæ§æã®äž¡æ¹ã®å Žåã ä¿¡é Œæ§ãšã¯ãããŒã¿ã®æçµçãªäžè²« æ§ãšãåãªã¯ãšã¹ãã®èª¿æŽã®äžè²«æ§ãèšå®ããæ©èœãæããŸãã
NoSQLããŒã¿ããŒã¹ã§ã¯ãäžè¬ã«SQLãããå éšæ§é ãããæ·±ãç解ããå¿ èŠããããŸã ã ãã®èšäºã§ã¯åºæ¬çãªæ§é ã«ã€ããŠèª¬æããŸããã次ã®èšäºã§ã¯æ€èšããããšãã§ããŸããCQLãšããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã èšèšããã³æé©åææ³ã å€ãã®ããŒã¿ã»ã³ã¿ãŒã«ããã¯ã©ã¹ã¿ãŒã®æ©èœã
ããŒã¿ã¢ãã«
cassandraã®çšèªã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ããŒã¹ããŒã¹ã§åäœããŸããããã¯ããªã¬ãŒã·ã§ãã«ã¢ãã«ã®ããŒã¿ããŒã¹ã¹ããŒãã®æŠå¿µã«å¯Ÿå¿ããŠã ãŸã ã ãã®ããŒã¹ããŒã¹ã«ã¯ããªã¬ãŒã·ã§ãã«ããŒãã«ã®æŠå¿µã«å¯Ÿå¿ããããã€ãã®åãã¡ããªãå«ããããšãã§ããŸãã åæ§ã«ãåãã¡ããªã«ã¯å ïŒ column ïŒãå«ãŸãããããã¯ã¬ã³ãŒã ïŒ row ïŒå ã®ããŒ ïŒ row key ïŒã䜿çšããŠçµåãããŸãã åã¯ã åå ïŒ åå ïŒã ã¿ã€ã ã¹ã¿ã³ã ïŒ ã¿ã€ã ã¹ã¿ã³ã ïŒã å€ ïŒ å€ ïŒã®3ã€ã®éšåã§æ§æãããŸã ã ã¬ã³ãŒãå ã®åã¯é åºä»ããããŠããŸãã ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãšã¯ç°ãªããã¬ã³ãŒãïŒããã³ããŒã¿ããŒã¹ã«é¢ããŠã¯ãããã®è¡ïŒãä»ã®ã¬ã³ãŒããšåãååã®åãå«ããšããäºå®ã«å¶éã¯ãããŸãã-ãããã åãã¡ããªã«ã¯ããã€ãã®çš®é¡ããããŸããããã®èšäºã§ã¯ãã®è©³çŽ°ãçç¥ããŸãã ãŸããcassandraã®ææ°ããŒãžã§ã³ã§ã¯ã CQLèšèªã䜿çšããŠããŒã¿å®çŸ©ãšå€æŽèŠæ± ïŒ DDL ã DML ïŒãå®è¡ãã ã»ã«ã³ããªã€ã³ããã¯ã¹ãäœæããããšãå¯èœã«ãªããŸããã
cassandraã«ä¿åãããŠããç¹å®ã®å€ãèå¥ãããŸãã
- ããŒã¹ããŒã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ïŒãã¡ã€ã³ïŒãžã®ãã€ã³ãã§ãã 1ã€ã®ã¯ã©ã¹ã¿ãŒã«ç°ãªãã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ãé
眮ã§ããŸãã
- åãã¡ããª-ããã¯ãªã¯ãšã¹ããžã®ãã€ã³ãã§ãã
- ããŒã¯ã¯ã©ã¹ã¿ãŒããŒãã«ãã€ã³ããããŠããŸãã ä¿åãããåãã©ã®ããŒãã«å
¥ããã¯ããŒã«äŸåããŸãã
- ååã¯ãã¬ã³ãŒãå
ã®å±æ§ãžã®ãã€ã³ãã§ãã 1ã€ã®ã¬ã³ãŒãã«è€æ°ã®å€ãä¿åã§ããŸãã
åå€ã¯ã¿ã€ã ã¹ã¿ã³ãã«é¢é£ä»ããããŸã-èšé²äžã®ç«¶åã解決ããããã«äœ¿çšããããŠãŒã¶ãŒå®çŸ©ã®æ°å€ïŒæ°å€ã倧ããã»ã©åãæ°ãããªããæ¯èŒãããšå€ãåãã°ã©ã€ã³ããããŸãã
ããŒã¿ã¿ã€ãå¥ïŒããŒã¹ããŒã¹ãšåãã¡ããªã¯æååïŒååïŒã§ãã ã¿ã€ã ã¹ã¿ã³ãã¯64ãããã®æ°å€ã§ãã ããŒãååãåå€ã¯ãã€ãã®é åã§ãã Cassandraã«ã¯ã ããŒã¿åã®æŠå¿µããããŸã ã ãããã®ã¿ã€ãã¯ãåãã¡ããªãäœæãããšãã«éçºè ããªãã·ã§ã³ã§æå®ã§ããŸãã ååã®å Žåãããã¯ã³ã³ãã¬ãŒã¿ãšåŒã°ããå€ãšããŒã®å Žåã ããªããŒã¿ãŒãšåŒã°ããŸãã 1ã€ç®ã¯ãååã«æå¹ãªãã€ãå€ãšãã®é 眮æ¹æ³ã決å®ããŸãã 2çªç®ã¯ãåãšããŒã®å€ã«æå¹ãªãã€ãå€ã§ãã ãããã®ããŒã¿ã¿ã€ããæå®ãããŠããªãå Žåãcassandraã¯å€ãæ ŒçŽããå®éã«ã¯å éšçã«æ ŒçŽãããŠããããã ãã€ãæåå ïŒ BytesType ïŒãšããŠæ¯èŒããŸãã
ããŒã¿åã¯æ¬¡ã®ãšããã§ãã
- BytesTypeïŒä»»æã®ãã€ãæååïŒæ€èšŒãªãïŒ
- AsciiTypeïŒASCIIæåå
- UTF8TypeïŒUTF-8æåå
- IntegerTypeïŒä»»æã®ãµã€ãºã®æ°å
- Int32TypeïŒ4ãã€ãã®æ°å€
- LongTypeïŒ8ãã€ãæ°
- UUIDTypeïŒç¬¬1ãŸãã¯ç¬¬4ã¿ã€ãã®UUID
- TimeUUIDTypeïŒã¿ã€ã1 UUID
- DateTypeïŒ8ãã€ãã®ã¿ã€ã ã¹ã¿ã³ãå€
- BooleanTypeïŒ2ã€ã®å€ïŒtrue = 1ãŸãã¯false = 0
- FloatTypeïŒ4ãã€ãã®æµ®åå°æ°ç¹æ°
- DoubleTypeïŒ8ãã€ãã®æµ®åå°æ°ç¹æ°
- DecimalTypeïŒä»»æã®ãµã€ãºãšæµ®åå°æ°ç¹æ°
- CounterColumnTypeïŒ8ãã€ãã®ã«ãŠã³ã¿ãŒ
cassandraã§ã¯ããã¹ãŠã®ããŒã¿æžã蟌ã¿æäœã¯åžžã«æžãæãæäœã§ããã€ãŸããåãããŒãšåãååã®åããã§ã«ååšããã¿ã€ã ã¹ã¿ã³ããåãã¡ããªãŒã«ä¿åãããŠããåããã倧ããå Žåãå€ã¯äžæžããããŸãã èšé²ãããå€ã¯å€æŽããããæ°ããå€ãæã€æ°ããåã®ã¿ã衚瀺ãããŸãã
cassandraãžã®æžã蟌ã¿ã¯ãèªã¿åããããéãåäœããŸãã ããã«ãããèšèšã§äœ¿çšãããã¢ãããŒããå€ãããŸãã ããŒã¿ã¢ãã«ã®èšèšã®èŠ³ç¹ããcassandraãæ€èšããå Žåãã«ã©ã ãã¡ããªãŒãããŒãã«ãšããŠã§ã¯ãªãã ãããªã¢ã©ã€ãºããã¥ãŒãšããŠæ³åããæ¹ãç°¡åã§ããããã¯ãè€éãªã¯ãšãªã®ããŒã¿ãè¡šãããã£ã¹ã¯ã«æ ŒçŽããæ§é ã§ãã äœããã®æ¹æ³ã§ã¯ãšãªã䜿çšããŠããŒã¿ãäœæããããšãã代ããã«ããã®ã¯ãšãªã«å¿ èŠãªãã¹ãŠã®ãã®ãæçµçãªãã¡ããªã«ä¿åããããšããå§ãããŸãã ã€ãŸãããšã³ãã£ãã£éã®é¢ä¿ããªããžã§ã¯ãéã®é¢ä¿ã®åŽé¢ããã§ã¯ãªããã¯ãšãªã®åŽé¢ããã¢ãããŒãããå¿ èŠããããŸããã©ã®ãã£ãŒã«ããéžæããå¿ èŠããããã èšé²ã¯ã©ã®é çªã§è¡ãã¹ãã; äž»èŠãªããŒã¿ã«é¢é£ããããŒã¿ãå ±åã§èŠæ±ããå¿ èŠããããŸã-ãããã¯ãã¹ãŠåãã¡ããªã«æ¢ã«ä¿åãããŠããå¿ èŠããããŸãã ã¬ã³ãŒãå ã®åã®æ°ã¯ãçè«çã«ã¯20åã«å¶éãããŠããŸãã ããã¯ç°¡åãªäœè«ã§ããã詳现ã¯ãèšèšãšæé©åã®ææ³ã«é¢ããèšäºã«èšèŒãããŠããŸãã ããã§ã¯ãcassandraã«ããŒã¿ãä¿åããŠèªã¿åãããã»ã¹ã詳ããèŠãŠãããŸãããã
ããŒã¿é
ä¿¡
ã¯ã©ã¹ã¿ããŒãéã®ããŒã«å¿ããŠããŒã¿ãã©ã®ããã«åæ£ãããããæ€èšããŸã ã Cassandraã§ã¯ãããŒã¿é åžæŠç¥ãå®çŸ©ã§ããŸãã æåã®ãã®ãããªæŠç¥ã¯ãmd5ããŒå€ã«å¿ããŠããŒã¿ãé åžããŸã- ã©ã³ãã ããŒãã£ã·ã§ããŒ ïŒ random partitioner ïŒã 2çªç®ã¯ãããŒèªäœã®ãããè¡šçŸ- é åºããŒã¯ã¢ãã ïŒ ãã€ãé ããŒãã£ã·ã§ã㌠ïŒãèæ ®ã«å ¥ããŸãã ã»ãšãã©ã®å Žåãæåã®æŠç¥ã¯ããå€ãã®å©ç¹ãæäŸããŸãããµãŒããŒéã§ã®ããŒã¿ã®åçãªåæ£ãåæ§ã®åé¡ãå¿é ããå¿ èŠããªãããã§ãã 2çªç®ã®æŠç¥ã¯ããŸãã«ãããšãã°ç¯å²ã¹ãã£ã³ãå¿ èŠãªå Žåã«äœ¿çšãããŸãã ãã®æŠç¥ã®éžæã¯ã¯ã©ã¹ã¿ãŒãäœæããåã«è¡ãããå®éã«ã¯å®å šãªããŒã¿ã®åèªã¿èŸŒã¿ãªãã§ã¯å€æŽã§ããªãããšã«æ³šæããããšãéèŠã§ãã
Cassanderã¯ã äžè²«æ§ã®ããããã·ã¥ãšåŒã°ããææ³ã䜿çšããŠããŒã¿ãé åžããŸãã ãã®ã¢ãããŒãã«ãããããŒãéã§ããŒã¿ãåæ£ããæ°ããããŒããè¿œå ããã³åé€ãããšãã«éä¿¡ãããããŒã¿ã®éãå°ãªããªãããã«ããããšãã§ããŸãã ãããè¡ãã«ã¯ãåããŒãã«ã©ãã« ïŒ token ïŒãå²ãåœãŠãããŸããããã«ããããã¹ãŠã®md5ããŒå€ã®ã»ããã现ååãããŸãã ã»ãšãã©ã®å ŽåãRandomPartitionerã䜿çšããããããèæ ®ããŠãã ããã åè¿°ããããã«ãRandomPartitionerã¯åããŒã«å¯ŸããŠ128ãããã®md5ãèšç®ããŸãã ããŒã¿ãä¿åããããŒãã決å®ããããã«ãããŒãã®ãã¹ãŠã®ã©ãã«ãæå°ããæ倧ã«äžŠã¹æ¿ããããã©ãã«å€ãããŒã®md5å€ãã倧ãããªããšããã®ããŒããšããã«ç¶ãããã€ãã®ããŒãïŒã©ãã«ã®é åºã§ïŒãä¿åçšã«éžæãããŸãã éžæããããŒãã®ç·æ°ã¯ã è€è£œä¿æ°ãšçãããªããã°ãªããŸããã ã¬ããªã±ãŒã·ã§ã³ã¬ãã«ã¯ããŒã¹ããŒã¹ããšã«èšå®ããã ããŒã¿ã®åé·æ§ã調æŽã§ããŸã ã
ã¯ã©ã¹ã¿ãŒã«ããŒããè¿œå ããåã«ãããŒãã®ã©ãã«ãèšå®ããå¿ èŠããããŸãã ãã®ã©ãã«ãšæ¬¡ã®ã©ãã«ã®éã®ã®ã£ãããã«ããŒããããŒã®å²åã¯ãããŒãã«ä¿åãããããŒã¿ã®éã«ãã£ãŠç°ãªããŸãã ã¯ã©ã¹ã¿ã®ã©ãã«ã®ã»ããå šäœããªã³ã°ãšåŒã³ãŸãã
ããã¯ã nodetoolãŠãŒãã£ãªãã£ã䜿çšããŠåçã«åæ£ãããã©ãã«ãæã€6ã€ã®ããŒãã®ã¯ã©ã¹ã¿ãŒãªã³ã°ã瀺ãå³ã§ãã
ããŒã¿ã®äžè²«æ§
cassandraã¯ã©ã¹ã¿ãŒã®ããŒãã¯åçã§ãããã¯ã©ã€ã¢ã³ãã¯æžã蟌ã¿ãšèªã¿åãã®äž¡æ¹ã®ããã«ãããã®ããããã«æ¥ç¶ã§ããŸãã èŠæ±ã¯èª¿æŽæ®µéãééããŸãããã®æ®µéã§ãããŒãšã¹ã¯ã©ã€ãã®å©ããåããŠãããŒã¿ãé 眮ããããŒããèŠã€ãããµãŒããŒã¯ãããã®ããŒãã«èŠæ±ãéä¿¡ããŸãã 調æŽãå®è¡ããããŒããã³ãŒãã£ããŒã¿ãŒãšåŒã³ããã®ããŒã§ã¬ã³ãŒããä¿åããããã«éžæãããããŒãã¯ã¬ããªã«ããŒãã§ãã ç©ççã«ã¯ãã¬ããªã«ããŒãã®1ã€ãã³ãŒãã£ããŒã¿ãŒã«ãªãããšãã§ããŸããããã¯ãããŒãããŒã¯ã¢ãããã©ãã«ã®ã¿ã«äŸåããŸãã
èªã¿åããšæžã蟌ã¿ã®äž¡æ¹ã®ãªã¯ãšã¹ãããšã«ãããŒã¿ã®äžè²«æ§ã®ã¬ãã«ãèšå®ã§ããŸãã
èšé²ã®å Žåããã®ã¬ãã«ã¯ããŠãŒã¶ãŒã«å¶åŸ¡ãæ»ãåã«ãæ£åžžãªæäœã®ç¢ºèªãæåŸ ãããïŒããŒã¿ãèšé²ãããŠããïŒã¬ããªã«ããŒãã®æ°ã«åœ±é¿ããŸãã èšé²ã«ã¯ã次ã®ãããªäžè²«æ§ã®ã¬ãã«ããããŸãã
- ONE-ã³ãŒãã£ããŒã¿ãŒã¯ãã¹ãŠã®ã¬ããªã«ããŒãã«èŠæ±ãéä¿¡ããŸãããæåã®ããŒãããã®ç¢ºèªãåŸ
ã£ãåŸããŠãŒã¶ãŒã«å¶åŸ¡ãè¿ããŸãã
- TWOãåãã§ãããã³ãŒãã£ããŒã¿ãŒã¯æåã®2ã€ã®ããŒãããã®ç¢ºèªãåŸ
ã£ãŠããå¶åŸ¡ãè¿ããŸãã
- THREE-åæ§ã«ãã³ãŒãã£ããŒã¿ãŒã¯æåã®3ã€ã®ããŒãããã®ç¢ºèªãåŸ
ã£ãŠããå¶åŸ¡ãè¿ããŸãã
- QUORUM-ã¯ã©ãŒã©ã ãåéãããŠããŸããã³ãŒãã£ããŒã¿ãŒã¯ãã¬ããªã«ããŒãã®åå以äžãã€ãŸãã©ãŠã³ãïŒN / 2ïŒ+ 1ããã®ã¬ã³ãŒãã®ç¢ºèªãåŸ
æ©ããŠããŸããNã¯ã¬ããªã±ãŒã·ã§ã³ã®ã¬ãã«ã§ãã
- LOCAL_QUORUM-ã³ãŒãã£ããŒã¿ãŒã¯ãã³ãŒãã£ããŒã¿ãŒãé
眮ãããŠããåãããŒã¿ã»ã³ã¿ãŒå
ã®ã¬ããªã«ããŒãã®åå以äžããã®ç¢ºèªãåŸ
æ©ããŠããŸãïŒåãªã¯ãšã¹ãã«å¯ŸããŠïŒã ä»ã®ããŒã¿ã»ã³ã¿ãŒãžã®ããŒã¿éä¿¡ã«é¢é£ããé
延ãåãé€ãããšãã§ããŸãã ãã®èšäºã§ã¯ãå€ãã®ããŒã¿ã»ã³ã¿ãŒã§äœæ¥ããéã®åé¡ã«ã€ããŠèª¬æããŠããŸãã
- EACH_QUORUM-ã³ãŒãã£ããŒã¿ãŒã¯ãåããŒã¿ã»ã³ã¿ãŒã®ã¬ããªã«ããŒãã®åæ°ä»¥äžããã®ç¢ºèªãåå¥ã«åŸ
æ©ããŠããŸãã
- ALL-ã³ãŒãã£ããŒã¿ãŒã¯ããã¹ãŠã®ã¬ããªã«ããŒãããã®ç¢ºèªãåŸ
ã£ãŠããŸãã
- ANY-ãã¹ãŠã®ã¬ããªã«ããŒããå¿çããªãå Žåã§ããããŒã¿ãæžã蟌ãããšãã§ããŸãã ã³ãŒãã£ããŒã¿ãŒã¯ãã¬ããªã«ããŒãã®1ã€ããã®æåã®å¿çãåŸ
ã€ããã³ãŒãã£ããŒã¿ãŒã®ãã³ãä»ããã³ããªãã䜿çšããŠããŒã¿ãä¿åããããšåŸ
æ©ããŸãã
èªã¿åãã®å Žåãäžè²«æ§ã®ã¬ãã«ã¯ãèªã¿åãããã¬ããªã«ããŒãã®æ°ã«åœ±é¿ããŸãã èªãããã«ããã®ãããªäžè²«æ§ã®ã¬ãã«ããããŸãïŒ
- ONE-ã³ãŒãã£ããŒã¿ãŒã¯ãæãè¿ãã¬ããªã«ããŒãã«ãªã¯ãšã¹ããéä¿¡ããŸãã æ®ãã®ã¬ããªã«ããcassandraæ§æã§æå®ããã確çã§èªã¿åã修埩ã®ããã«èªã¿åãããŸãã
- TWOãåãã§ãããã³ãŒãã£ããŒã¿ãŒã¯ãªã¯ãšã¹ããæãè¿ã2ã€ã®ããŒãã«éä¿¡ããŸãã 倧ããªã¿ã€ã ã¹ã¿ã³ããæã€å€ãéžæãããŸãã
- THREE-åã®ãªãã·ã§ã³ã«äŒŒãŠããŸããã3ã€ã®ããŒãããããŸãã
- QUORUM-ã¯ã©ãŒã©ã ãåéãããŠããŸããã€ãŸããã³ãŒãã£ããŒã¿ãŒã¯ã¬ããªã«ããŒãã®åå以äžãã€ãŸãã©ãŠã³ãïŒN / 2ïŒ+ 1ã«èŠæ±ãéä¿¡ããŸããNã¯ã¬ããªã±ãŒã·ã§ã³ã®ã¬ãã«ã§ãã
- LOCAL_QUORUM-ã¯ã©ãŒã©ã ã¯ã調æŽãè¡ãããããŒã¿ã»ã³ã¿ãŒã§åéãããæåŸã®ã¿ã€ã ã¹ã¿ã³ããæã€ããŒã¿ãè¿ãããŸãã
- EACH_QUORUM-ã³ãŒãã£ããŒã¿ãŒã¯ãåããŒã¿ã»ã³ã¿ãŒã§ã®å®è¶³æ°äŒè°ã®åŸãããŒã¿ãè¿ããŸãã
- ALL-ã³ãŒãã£ããŒã¿ãŒã¯ããã¹ãŠã®ã¬ããªã«ããŒãããèªã¿åã£ãåŸã«ããŒã¿ãè¿ããŸãã
ãããã£ãŠãèªã¿åããæžã蟌ã¿æäœã®é 延æéã調æŽãã æŽåæ§ãèª¿æŽ ïŒ æŽåæ§ãèª¿æŽ ïŒããã ãã§ãªããåã¿ã€ãã®æäœã®å¯çšæ§ ïŒ å¯çšæ§ ïŒã調æŽããããšãã§ããŸã ã å®éãã¢ã¯ã»ã·ããªãã£ã¯ãèªã¿æžãæäœã®äžè²«æ§ã®ã¬ãã«ã«çŽæ¥äŸåããŸããããã¯ãé害ãçºçããå¯èœæ§ã®ããã¬ããªã«ããŒãã®æ°ã決å®ããåæã«ãããã®æäœã確èªãããããã§ãã
èªã¿åã確èªãè¡ãããããŒãã®æ°ãšåãããŠæžã蟌ã¿ç¢ºèªãåä¿¡ãããããŒãã®æ°ãã¬ããªã±ãŒã·ã§ã³ã¬ãã«ããã倧ããå Žåãæžã蟌ã¿åŸã«æ°ããå€ãåžžã«èªã¿åããããšããä¿èšŒããããããã¯å³å¯ãªæŽåæ§ ïŒ strongäžè²«æ§ ïŒã å³å¯ãªäžè²«æ§ããªãå Žåãèªã¿åãæäœã§å€ãããŒã¿ãè¿ãããå¯èœæ§ããããŸãã
ãããã«ãããå€ã¯æçµçã«ã¬ããªã«éã§åºãããŸããã調æŽåŸ æ©ãçµäºããåŸã«ã®ã¿ã§ãã ãã®ååžã¯ã çµææŽåæ§ãšåŒã°ããŸãã èšé²äžã«ãã¹ãŠã®ã¬ããªã«ããŒãã䜿çšã§ããªãå Žåãé ããæ©ãããèªã¿åã修埩ãã¢ã³ããšã³ããããŒããŒã修埩ãªã©ã®å埩ããŒã«ã䜿çšãããŸãã ããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
ãããã£ãŠãQUORUMã®èªã¿åãããã³æžã蟌ã¿ã®äžè²«æ§ã¬ãã«ã§ã¯ãå³å¯ãªäžè²«æ§ãåžžã«ç¶æãããŸããããã¯ãèªã¿åãæäœãšæžã蟌ã¿æäœã®é 延ã®äžçš®ã®ãã©ã³ã¹ã«ãªããŸãã ALLãæžã蟌ããšãã1ã€ãèªã¿åããªãããå³å¯ãªäžè²«æ§ããããèªã¿åãæäœã¯ããéããããã¢ã¯ã»ã¹ãããããªããŸããã€ãŸããèªã¿åãããŸã å®è¡ãããé害ããŒãã®æ°ã¯ãQUORUMãããå€ããªããŸãã æžã蟌ã¿æäœã«ã¯ããã¹ãŠã®ã¬ããªã«äœæ¥ããŒããå¿ èŠã§ãã ONEãæžã蟌ã¿ãALLãèªã¿åãå Žåããå³å¯ãªäžè²«æ§ããããæžã蟌ã¿æäœãé«éã«ãªããæžã蟌ã¿ã¢ã¯ã»ã·ããªãã£ã倧ãããªããŸããããã¯ãå°ãªããšã1ã€ã®ãµãŒããŒã§æžã蟌ã¿æäœããã¹ããããšã確èªããã ãã§ååã§ãããèªã¿åããé ããªãããã¹ãŠã®ã¬ããªã«ããŒããå¿ èŠã«ãªãããã§ãã ã¢ããªã±ãŒã·ã§ã³ãå³å¯ãªäžè²«æ§ãå¿ èŠãšããªãå Žåãèªã¿åãããã³æžã蟌ã¿ã®äž¡æ¹ã®æäœãé«éåããäžè²«æ§ãäœãèšå®ããããšã§ã¢ã¯ã»ã·ããªãã£ãåäžãããããšãå¯èœã«ãªããŸãã
ããŒã¿åŸ©æ§
Cassandraã¯ã3ã€ã®ããŒã¿å埩ã¡ã«ããºã ããµããŒãããŠããŸãã
- èªã¿åã修埩 -ãã¹ãŠã®ã¬ããªã«ããããŒã¿ã®èªã¿åããèŠæ±ããã調æŽãå®äºããåŸã«æ¯èŒãããŸãã ææ°ã®ã¿ã€ã ã¹ã¿ã³ããæã€åã¯ãã©ãã«ãå€ãããŒãã«æ¡åŒµãããŸãã
- æ¹åéä¿¡ ïŒ ãã³ãä»ããã³ããªã ïŒ-ããããã®ããŒãã§ã®èšé²ã倱æããå Žåã«ãã³ãŒãã£ããŒã¿ãŒã§ã®æžã蟌ã¿æäœã«é¢ããæ
å ±ãä¿åã§ããŸãã åŸã§ãå¯èœã§ããã°ãèšé²ãç¹°ãè¿ãããŸãã ã¯ã©ã¹ã¿ãŒå
ã«ããŒããçæçã«ååšããªãå Žåã«ãããŒã¿å埩ãè¿
éã«å®è¡ã§ããŸãã ããã«ãäžè²«æ§ã®ã¬ãã«ã§ã¯ãANYã¯ãã¹ãŠã®ã¬ããªã«ããŒãã䜿çšäžå¯ã«ãªããæžã蟌ã¿æäœã確èªãããããŒã¿ãã³ãŒãã£ããŒã¿ãŒããŒãã«ä¿åããããšãã«ã 絶察æžã蟌ã¿å¯çšæ§ãèæ
®ããŸãã
- ã¢ã³ã ãšã³ããããŒããŒã修埩ã¯ããã¹ãŠã®ã¬ããªã«ãå埩ããç¹å®ã®ããã»ã¹ã§ããããnodetool repairãã³ãã³ãã䜿çšããŠå®æçã«æåã§éå§ããå¿
èŠããããæåã®2ã€ã®æ¹æ³ã§åŸ©å
ãããªãã£ããã¹ãŠã®ããŒã¿ã®ã¬ããªã«ã®æ°ãç¶æã§ããŸããå¿
èŠãªè€è£œã¬ãã«ã
ãã£ã¹ã¯ãžã®æžã蟌ã¿
æžã蟌ã¿ã®ããã«ããŒãã«çŽæ¥èª¿æŽããåŸãããŒã¿ãå°çãããšã ã¡ã¢ãªå ã®ããŒãã« ïŒ memtable ïŒãšã³ããããã°ã® 2ã€ã®ããŒã¿æ§é ã«åé¡ãããŸã ã ã«ã©ã ãã¡ããªããšã«ã¡ã¢ãªããŒãã«ãååšããå€ãããã«èŠããããšãã§ããŸãã æè¡çã«ã¯ã skip listãšåŒã°ããããŒã¿æ§é ã«åºã¥ããåæã¢ã¯ã»ã¹ã䌎ãããã·ã¥ãããã§ãã ãã³ãã°ã¯ãããŒã¹ããŒã¹å šäœã«å¯Ÿãããã®ã§ããããã£ã¹ã¯ã«ä¿åãããŸãã ãžã£ãŒãã«ã¯äžé£ã®å€æŽæäœã§ãã ãŸããç¹å®ã®ãµã€ãºã«éãããšæçã«ãªããŸãã
ãã®ãããªæ§æã«ãããããŒããã£ã¹ã¯ãžã®ã·ãŒã±ã³ã·ã£ã«æžã蟌ã¿é床ã«ãã£ãŠèšé²é床ãå¶éãããšåæã«ã ããŒã¿ã®èä¹ æ§ãä¿èšŒã§ããŸã ã ããŒãã®ç·æ¥åæ¢ã®å Žåãpinãã°ã¯cassandraãµãŒãã¹ã®éå§æã«èªã¿åãããã¡ã¢ãªå ã®ãã¹ãŠã®ããŒãã«ã埩å ããŸãã ãã£ã¹ã¯ãžã®é 次èšé²äžã¯é床ãåæ¢ããææ°ã®ããŒããã©ã€ãã®å Žåã¯çŽ100MB /ç§ã§ãã ãã®ããããã³ãã°ã¯å¥ã®ãã£ã¹ã¯ãã©ã€ãã«é 眮ããããšããå§ãããŸãã
é ããæ©ãããã¡ã¢ãªããã£ã±ãã«ãªãå¯èœæ§ãããããšã¯æããã§ãã ãããã£ãŠãã¡ã¢ãªå ã®ããŒãã«ããã£ã¹ã¯ã«ä¿åããå¿ èŠããããŸãã ä¿åã®ç¬éã決å®ããããã«ã ã¡ã¢ãªå ã®å æããŒãã«ã®ãµã€ãº ïŒ memtable_total_spacein_mb ïŒã«ã¯å¶éããããŸããããã©ã«ãã§ã¯ã JavaããŒã ïŒ Java ããŒã ã¹ããŒã¹ ïŒã®æ倧ãµã€ãºã§ãã ãã®å¶éãè¶ ããã¡ã¢ãªã§ããŒãã«ãåãããšãcassandraã¯æ°ããããŒãã«ãäœæããã¡ã¢ãªå ã®å€ãããŒãã«ãä¿åãããããŒãã« ïŒ SSTable ïŒãšããŠãã£ã¹ã¯ã«æžã蟌ã¿ãŸã ã äœæåŸã«ä¿åãããããŒãã«ã¯å€æŽãããŸããïŒ äžå€ã§ã ïŒã ãã£ã¹ã¯ãžã®ä¿åãçºçãããšããã³ãã°ã®äžéšã空ããšããŠããŒã¯ãããããããžã£ãŒãã«ãå æãããã£ã¹ã¯é åã解æŸãããŸãã ãã°ã¯ããŒã¹ããŒã¹ã®ç°ãªãåãã¡ããªãŒã®ããŒã¿ããç¹ã亀ããããæ§é ãæã¡ãäžéšã®é åã¯ã¡ã¢ãªå ã®ããŒãã«ã«ããä»ã®ããŒã¿ã«å¯Ÿå¿ãããããäžéšã解æŸãããªãå¯èœæ§ãããããšãèæ ®ããå¿ èŠããããŸãã
ãã®çµæãååãã¡ããªã¯ã¡ã¢ãªå ã®1ã€ã®ããŒãã«ãšäžå®æ°ã®ä¿åãããããŒãã«ã«å¯Ÿå¿ããŸãã ããŒãã¯èªã¿åãèŠæ±ãåŠçããŠããããããããã®æ§é ããã¹ãŠèŠæ±ããææ°ã®ã¿ã€ã ã¹ã¿ã³ãå€ãéžæããå¿ èŠããããŸãã ãã®ããã»ã¹ãé«éåããã«ã¯ã ãã«ãŒã ãã£ã«ã¿ãŒ ã ããŒãã£ãã·ã¥ã ã¬ã³ãŒããã£ãã·ã¥ã® 3ã€ã®ã¡ã«ããºã ããããŸãã
- ãã«ãŒã ãã£ã«ã¿ãŒã¯ãã»ãšãã©ã¹ããŒã¹ããšããªãããŒã¿æ§é ã§ããã質åã«çããããšãã§ããŸããå«ãŸããŠããèŠçŽ ã§ããããã®å Žåã¯ãã»ããå
ã®ããŒã§ãããã©ããã§ãã ããã«ãçãããããããã®å Žåãããã¯100ïŒ
ã§ãããçãããã¯ããã®å Žåãããã¯ããããåœéœæ§ã®çãã§ãã ããã«ãããä¿åãããããŒãã«ããã®èªã¿åãå€ã®æ°ãæžããããšãã§ããŸãã
- ããŒãã£ãã·ã¥ã¯åããŒã®èšé²ãã£ã¹ã¯äžã®äœçœ®ãç¶æãããããä¿åãããããŒãã«ã®æ€çŽ¢äžã«ã·ãŒã¯æäœã®åæ°ãæžããŸãã
- æžã蟌ã¿ãã£ãã·ã¥ã¯èšé²å
šäœãä¿åããããããã£ã¹ã¯ã®èªã¿åãæäœãå®å
šã«åãé€ãããšãã§ããŸãã
ã·ãŒã«
ç¹å®ã®æç¹ã§ãåãã¡ããªã®ããŒã¿ã¯äžæžããããŸããåãååãšããŒãæã€åãæ¥ãŸãã ã€ãŸããå€ãããŒã¿ãšæ°ããããŒã¿ããä¿åãããŠããå€ãããŒãã«ãšæ°ããããŒãã«ã«å«ãŸããç¶æ³ãçºçããŸãã æŽåæ§ãä¿èšŒããããã«ãcassandraã¯ããããã¹ãŠã®ä¿åãããããŒãã«ãèªã¿åããææ°ã®ã¿ã€ã ã¹ã¿ã³ããæã€ããŒã¿ãéžæããå¿ èŠããããŸãã èªã¿åãæã«ããŒããã©ã€ããé 眮ããæäœã®æ°ã¯ãä¿åãããŠããããŒãã«ã®æ°ã«æ¯äŸããããšãããããŸããã ãããã£ãŠãäžæžããããããŒã¿ã解æŸããæ ŒçŽãããããŒãã«ã®æ°ãæžããããã«ã å§çž®ããã»ã¹ããããŸã ã ããã€ãã®ä¿åãããããŒãã«ãé çªã«èªã¿åããã¿ã€ã ã¹ã¿ã³ãã«ãã£ãŠããŒã¿ãçµåããæ°ããä¿åãããããŒãã«ãæžã蟌ã¿ãŸãã ããŒãã«ãå®å šã«èšé²ããã䜿çšããããšãcassandraã¯ãœãŒã¹ããŒãã«ãïŒããŒãã«ã圢æããããŒãã«ã«ãã£ãŠïŒè§£æŸã§ããŸãã ãããã£ãŠãããŒãã«ã«äžæžãããŒã¿ãå«ãŸããŠããå Žåããã®åé·æ§ã¯æé€ãããŸãã ãã®ãããªæäœã®éãåé·æ§ã®éãå¢å ããããšã¯æããã§ããæ°ããä¿åãããããŒãã«ããœãŒã¹ããŒãã«ãšå ±ã«ãã£ã¹ã¯äžã«ååšããŸããã€ãŸãããã£ã¹ã¯é åã®éã¯åžžã«å§çž®ã§ããçšåºŠã§ãªããã°ãªããŸããã
Kassandraã§ã¯ãå§çž®ãå®è¡ããããã®2ã€ã®æŠç¥ã®ãããããéžæã§ããŸãã
- ãµã€ãºã«ãã£ãŠãªã³ã¯ãããæ ŒçŽããŒãã«ãèŠçŽããããã®æŠç¥ïŒ ãµã€ãºéå±€å§çž® ïŒ-ãã®æŠç¥ã¯ãéžæããã2ã€ã®ããŒãã«ãç¹å®ã®æ¹æ³ã§å§çž®ããŸãã ããã¯ã°ã©ãŠã³ãã³ã³ãã¯ã·ã§ã³ ïŒ ãã€ããŒã³ã³ãã¯ã·ã§ã³ ïŒã®åœ¢åŒã§ãããã³å®å
šã³ã³ãã¯ã·ã§ã³ ïŒ ã¡ãžã£ãŒã³ã³ãã¯ã·ã§ã³ ïŒã®ããã«æåã¢ãŒãã§èªåçã«é©çšãããŸãã ããã«ãããå€ãã®ããŒãã«ã§ããŒãèŠã€ããããšãã§ããããããã®ãããªããŒãã«ããšã«æ€çŽ¢æäœãå¿
èŠã«ãªããŸãã
- ã¬ãã«å§çž®æŠç¥ -æåã¯å°ããäœæãããä¿åæžã¿ããŒãã«ãå§çž®ããŸã-5 MBãã¬ãã«ã«ã°ã«ãŒãåããŸãã åã¬ãã«ã¯ãåã®ã¬ãã«ã®10åã§ãã ããã«ããã®ãããªä¿èšŒããããŸãïŒèªã¿åãèŠæ±ã®90ïŒ
ã1ã€ã®ä¿åãããããŒãã«ã«å¯ŸããŠçºçãããã£ã¹ã¯é åã®10ïŒ
ã®ã¿ãå€ãããŒã¿ã«äœ¿çšãããŸãã ãã®å ŽåãäžæããŒãã«ã®äžã§å§çž®ãå®è¡ããã«ã¯ãããŒãã«ã®ãµã€ãºã®10åãã€ãŸã50 MBã§ååã§ãã 詳ããã¯ããã®èšäºãã芧ãã ããã
åé€æäœ
å éšæ§é ã®èŠ³ç¹ããèŠããšãååé€æäœã¯ç¹å¥ãªå€- å»æ£ïŒtombstoneïŒãæžã蟌ãæäœã§ãã èªã¿åãã®çµæãšããŠãã®ãããªå€ãååŸããããšããã®ãããªå€ã¯ååšããªããã®ããã«ã¹ããããããŸãã å§çž®ã®çµæãšããŠããã®ãããªå€ã¯ãå€ãå®éã®å€ãåŸã ã«çœ®ãæããå Žåã«ãã£ãŠã¯å®å šã«æ¶ããŸãã å®éã®ããŒã¿ãæã€åãããã«æ°ããã¿ã€ã ã¹ã¿ã³ãã§è¡šç€ºãããå Žåããããã¯æçµçã«ãããã®äžæžããããå€ãç²ç ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³
Cassandraã¯ã1ã€ã®ã¬ã³ãŒãã®ã¬ãã«ãã€ãŸã1ã€ã®ããŒãæã€åã®ã»ããã§ãã©ã³ã¶ã¯ã·ã§ã³æ§ããµããŒãããŸãã 4ã€ã®ACIDèŠä»¶ãæºããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- ååæ§-1ã€ã®æäœã§1ã€ã®ã¬ã³ãŒãã®ãã¹ãŠã®åãèšé²ããããã©ããã
- äžè²«æ§ ïŒ äžè²«æ§ ïŒ-æ¢ã«äžèšã§è¿°ã¹ãããã«ãå¯çšæ§ã®ä»£ããã«å³å¯ãªäžè²«æ§ãæã€èŠæ±ã䜿çšããããšãå¯èœã§ãããããã«ãããã®èŠä»¶ãæºãããŸãã
- åé¢ -cassandraããŒãžã§ã³1.1以éã1ã€ã®ã¬ã³ãŒãã®åã®èšé²äžã«åãã¬ã³ãŒããèªã¿åãå¥ã®ãŠãŒã¶ãŒããã¬ã³ãŒãã®å®å
šã«å€ãããŒãžã§ã³ããŸãã¯æäœãå®äºããåŸãäžéšã§ã¯ãªãæ°ããããŒãžã§ã³ãèŠããšãåé¢ã®ãµããŒããçŸããŸãã1çªç®ã®åãš2çªç®ã®åã
- å®çãžã£ãŒãã«ãååšããããšã«ããã èä¹
æ§ã確ä¿ãããŸããå®çãžã£ãŒãã«ã¯ãé害ãçºçããå Žåã«ããŒããæãŸããç¶æ
ã«è€è£œããã³åŸ©å
ããŸãã
ããšãã
ããã§ãåºæ¬çãªæäœãã©ã®ããã«é 眮ãããŠãããã調ã¹ãŸãã-cassandraãžã®å€ã®èªã¿åããšæžã蟌ã¿ã
ããã«ãç§ã®æèŠã§ã¯ãéèŠãªãªã³ã¯ã¯æ¬¡ã®ãšããã§ãã
- apache.orgã®ããŒãžcassandra.apache.org
- datastax.comã®ããã¥ã¡ã³ãwww.datastax.com/docs/1.1/index#apache-cassandra-1-1-documentation
- BigTableã«ã€ããŠresearch.google.com/archive/bigtable.html
- Amazon Dynamo Pro www.allthingsdistributed.com/2007/10/amazons_dynamo.html
- ããŒã¿ã¢ãã«maxgrinev.com/2010/07/09/a-quick-introduction-to-the-cassandra-data-modelã«é¢ããããã°ã®1ã€
ãªã¯ãšã¹ãïŒã¹ãã«ã«é¢ããã³ã¡ã³ããšèšäºãæ¹åããããã®ã¢ã€ãã¢ãå人çãªã¡ãã»ãŒãžã§è¡šçŸããŸãã