ãããããã«ã
ç§ã®ååã¯ããŒã·ã£ã»ãããªã¢ãã§ããã«ãµã³ãã©ã«ã€ããŠå°ã話ããããšæããŸãã ç§ã®è©±ã¯ãNoSQL ããŒã¿ããŒã¹ã«è§Šããããšããªã人ã«ãšã£ãŠåœ¹ç«ã€ã§ããããNoSQL ããŒã¿ããŒã¹ã«ã¯ãç¥ã£ãŠããã¹ãå®è£ æ©èœãšèœãšãç©ŽããããããããŸãã Oracle ããã®ä»ã®ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ä»¥å€ã®ãã®ãèŠãããšããªããã°ããããã®ããŒã¿ããŒã¹ãããªãã®åœãæã£ãŠãããã§ãããã
ã«ãµã³ãã©ã®äœããããªã«è¯ãã®ã§ããïŒ ããã¯ãåäžé害ç¹ããªããé©åã«æ¡åŒµã§ããããã«èšèšããã NoSQL ããŒã¿ããŒã¹ã§ãã ããŒã¿ããŒã¹ã«æ°ãã©ãã€ããè¿œå ããå¿ èŠãããå Žåã¯ããªã³ã°ã«ããŒããè¿œå ããã ãã§ãã å¥ã®ããŒã¿ã»ã³ã¿ãŒã«æ¡åŒµããŸãã? ã¯ã©ã¹ã¿ãŒã«ããŒããè¿œå ããŸãã åŠçããã RPS ãå¢å ããŸãã? ã¯ã©ã¹ã¿ãŒã«ããŒããè¿œå ããŸãã éæ¹åã«ãæ©èœããŸãã
圌女ãä»ã«åŸæãªããšã¯äœã§ãã? ããããã®ãªã¯ãšã¹ãã«å¯Ÿå¿ããããšã§ãã ã§ããããããã£ãŠã©ããããã§ããïŒ 10 ç§ããã 20ã30ã40ã100 ã®ãªã¯ãšã¹ãã¯ããã»ã©å€ããããŸããã é²ç»çšã®ãªã¯ãšã¹ãã 2 ç§ããã XNUMX äžä»¶ãããŸãã XNUMX ç§ããã XNUMX äžä»¶ã®ãªã¯ãšã¹ããä¿æããŠãããšããäŒæ¥ããããŸãã ãããã圌ãã¯ãããä¿¡ããªããã°ãªããªãã§ãããã
ãããŠååãšããŠãCassandra ã«ã¯ãªã¬ãŒã·ã§ãã« ããŒã¿ãšã®å€§ããªéãã XNUMX ã€ãããŸããããã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ãšã¯ãŸã£ãã䌌ãŠããŸããã ãããŠãããã¯èŠããŠããããšãéåžžã«éèŠã§ãã
åãããã«èŠãããã®ãã¹ãŠãåãããã«æ©èœããããã§ã¯ãªã
ãããšãååãç§ã®ãšããã«æ¥ãŠãããå°ããŸãããããã㯠CQL Cassandra ã¯ãšãªèšèªã§ããããã«ã¯ select ã¹ããŒãã¡ã³ããwhereãand ããããŸãã æçŽãæžããŠãããŸããããŸããã ãªãïŒ"ã Cassandra ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã®ããã«æ±ãããšã¯ãæŽåçèªæ®ºã«æé©ãªæ¹æ³ã§ãã ç§ã¯ããã宣äŒããŠããã®ã§ã¯ãªãããã·ã¢ã§ã¯çŠæ¢ãããŠããŸãã ééã£ããã®ãèšèšããŠããŸãã ãã§ãã
ããšãã°ããã顧客ãç§ãã¡ã«æ¥ãŠã次ã®ããã«èšããŸããããã¬ã ã·ãªãŒãºã®ããŒã¿ââããŒã¹ããŸãã¯ã¬ã·ã ãã£ã¬ã¯ããªã®ããŒã¿ããŒã¹ãæ§ç¯ããŸãããã ããã«ã¯æçããã¬ãã·ãªãŒãºãåºæŒè ã®ãªã¹ããæ²èŒãããäºå®ã§ããã ç§ãã¡ã¯åãã§ãè¡ããŸãããïŒããšèšããŸãã XNUMX ãã€ããšããã€ãã®çœ²åãéä¿¡ããã ãã§å®äºã§ãããã¹ãŠãéåžžã«è¿ éãã€ç¢ºå®ã«æ©èœããŸãã ãããŠã顧客ãæ¥ãŠã䞻婊ãéã®åé¡ã解決ããŠãããã€ãŸãååãªã¹ãããããã©ããªæçãäœãããã®ãç¥ããããšèšããŸã§ã¯ããã¹ãŠãããŸããããŸãã ããªããæ»ãã§ããã
ããã¯ãCassandra ããã€ããªãã ããŒã¿ããŒã¹ã§ããããã§ããããŒå€ãæäŸããåæã«å¹ ã®åºãåã«ããŒã¿ãä¿åããŸãã Java ãŸã㯠Kotlin ã§ã¯ã次ã®ããã«èšè¿°ã§ããŸãã
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
ã€ãŸãããœãŒããããããããå«ãŸãããããã§ãã ãã®ãããã®æåã®ããŒã¯è¡ããŒãŸãã¯ããŒãã£ã·ã§ã³ ããŒãã€ãŸãããŒãã£ã·ã§ã³ ããŒã§ãã XNUMX çªç®ã®ããŒã¯ããã§ã«ãœãŒãããããããã®ããŒã§ãããã¯ã©ã¹ã¿ãªã³ã° ããŒã§ãã
ããŒã¿ããŒã¹ã®åæ£ã説æããããã«ãXNUMX ã€ã®ããŒããæããŠã¿ãŸãããã 次ã«ãããŒã¿ãããŒãã«å解ããæ¹æ³ãç解ããå¿ èŠããããŸãã ãªããªãããã¹ãŠã XNUMX ã€ã«è©°ã蟌ãã å Žå (ã¡ãªã¿ã«ãXNUMXãXNUMXãXNUMX ã€ã¯å¥œããªã ããããŸã)ãããã¯å®éã«ã¯åæ£ã«é¢ãããã®ã§ã¯ãããŸããã ãããã£ãŠãæ°å€ãè¿ãæ°åŠé¢æ°ãå¿ èŠã§ãã ããç¯å²ã«åãŸãåãªãæ°å€ãlong int ã§ãã ãããŠãXNUMX ã€ã®ããŒãã XNUMX ã€ã®ç¯å²ãæ åœããXNUMX çªç®ã®ããŒãã XNUMX çªç®ã®ç¯å²ãæ åœããn çªç®ã®ããŒãã n çªç®ã®ç¯å²ãæ åœããŸãã
ãã®æ°å€ã¯ããã·ã¥é¢æ°ã䜿çšããŠååŸãããããŒãã£ã·ã§ã³ ããŒãšåŒã°ãããã®ã«é©çšãããŸãã ããã¯äž»ã㌠ãã£ã¬ã¯ãã£ãã§æå®ãããåã§ããããããã®æåã§æãåºæ¬çãªããŒãšãªãåã§ãã ã©ã®ããŒããã©ã®ããŒã¿ãåä¿¡ãããã決ãŸããŸãã Cassandra ã§ã¯ãSQL ãšã»ãŒåãæ§æã§ããŒãã«ãäœæãããŸãã
CREATE TABLE users (
user_id uu id,
name text,
year int,
salary float,
PRIMARY KEY(user_id)
)
ãã®å Žåã®äž»ããŒã¯ XNUMX ã€ã®åã§æ§æãããããŒãã£ã·ã§ã³åããŒã§ããããŸãã
ãŠãŒã¶ãŒã®ããã©ãŒãã³ã¹ã¯ã©ããªãã§ãããã? äžéšã¯ XNUMX ã€ã®ããŒãã«éä¿¡ãããäžéšã¯å¥ã®ããŒãã«éä¿¡ãããäžéšã¯ XNUMX çªç®ã®ããŒãã«éä¿¡ãããŸãã çµæã¯ãéåžžã®ããã·ã¥ ããŒãã« (ããããšãåŒã°ããPython ã§ã¯èŸæžãšãåŒã°ããŸã)ããŸãã¯ãã¹ãŠã®å€ãèªã¿åããããŒã«ãã£ãŠèªã¿æžãã§ããåçŽãªããŒå€æ§é ã«ãªããŸãã
éžæ: ãã£ã«ã¿ãªã³ã°ã®èš±å¯ããã«ã¹ãã£ã³ã«ãªãå ŽåããŸãã¯å®è¡ããªãããš
select ã¹ããŒãã¡ã³ããæžããŠã¿ãŸãããã select * from users where, userid =
ã Oracle ã®ããã«ãselect ãæžããæ¡ä»¶ãæå®ãããšãã¹ãŠãæ©èœãããŠãŒã¶ãŒã¯ãããç解ããŸãã ããããããšãã°ç¹å®ã®çãŸã幎ã®ãŠãŒã¶ãŒãéžæãããšãCassandra ã¯ãªã¯ãšã¹ããæºãããªããšäžå¹³ãèšããŸãã 圌女ã¯ãèªç幎ã«é¢ããããŒã¿ãã©ã®ããã«é
åžãããã«ã€ããŠãŸã£ããç¥ããªããããããŒãšããŠç€ºãããŠããå㯠XNUMX ã€ã ãã§ãã ãããšåœŒå¥³ã¯ããèšããŸããããããããŸããããã®ãªã¯ãšã¹ãã¯ãŸã ãå¿ãã§ããŸãã èš±å¯ãã£ã«ã¿ãªã³ã°ãè¿œå ããŸããã ãã£ã¬ã¯ãã£ããè¿œå ãããšããã¹ãŠãæ©èœããŸãã ãããŠãã®ç¬éãæãããããšãèµ·ãããŸãã
ãã¹ãããŒã¿ãå®è¡ãããšããã¹ãŠåé¡ãããŸããã ãããŠãããšãã° 4 äžä»¶ã®ã¬ã³ãŒããããéçšç°å¢ã§ã¯ãšãªãå®è¡ãããšããã¹ãŠãããŸããããŸããã ãã£ã«ã¿ãªã³ã°ã®èš±å¯ã¯ãCassandra ããã¹ãŠã®ããŒãããã¹ãŠã®ããŒã¿ã»ã³ã¿ãŒ (ãã®ã¯ã©ã¹ã¿ãŒã«å€æ°ã®ããŒã¿ã»ã³ã¿ãŒãããå Žå) ãããã®ããŒãã«ã®ãã¹ãŠã®ããŒã¿ãåéãããã®åŸã§ã®ã¿ãã£ã«ã¿ãŒåŠçã§ããããã«ãããã£ã¬ã¯ãã£ãã§ããããã§ãã ããã¯ãã« ã¹ãã£ã³ã®é¡äŒŒç©ã§ããããããåã¶äººã¯ã»ãšãã©ããŸããã
ID ã«ãããŠãŒã¶ãŒã®ã¿ãå¿ èŠãªå Žåã¯ãããã§åé¡ãããŸããã ãã ããå Žåã«ãã£ãŠã¯ãä»ã®ã¯ãšãªãäœæããããéžæã«ä»ã®å¶éã課ãããããå¿ èŠããããŸãã ãããã£ãŠãããã¯ãã¹ãŠããŒãã£ã·ã§ã³åããŒãæã€ãããã§ããããã®å éšã«ã¯ãœãŒããããããããããããšãèŠããŠãããŠãã ããã
ãããŠã圌女ã¯ã¯ã©ã¹ã¿ãªã³ã° ããŒãšåŒã°ããããŒãæã£ãŠããŸãã ãã®ããŒã¯ãéžæããåã§æ§æãããŠããããããå©çšã㊠Cassandra ã¯ããŒã¿ãã©ã®ããã«ç©ççã«äžŠã¹æ¿ããããåããŒãã«é 眮ãããããç解ããŸãã ã€ãŸããäžéšã®ããŒãã£ã·ã§ã³ ããŒã®å Žåãã¯ã©ã¹ã¿ãªã³ã° ããŒã¯ãããŒã¿ããã®ããªãŒã«ããã·ã¥ããæ¹æ³ãšãããŒã¿ãããã§ã©ã®å Žæã«é 眮ãããããæ£ç¢ºã«ç€ºããŸãã
ããã¯å®éã«ã¯ããªãŒã§ãããããã§ã³ã³ãã¬ãŒã¿ãŒãåŒã³åºãããã ãã§ããªããžã§ã¯ãã®åœ¢åŒã§ç¹å®ã®åã®ã»ãããæž¡ãããåã®ãªã¹ããšããŠãæå®ãããŸãã
CREATE TABLE users_by_year_salary_id (
user_id uuid,
name text,
year int,
salary float,
PRIMARY KEY((year), salary, user_id)
äž»ã㌠ãã£ã¬ã¯ãã£ãã«æ³šæããŠãã ããããã®æåã®åŒæ° (ãã®äŸã§ã¯å¹Ž) ã¯åžžã«ããŒãã£ã·ã§ã³ ããŒã§ãã XNUMX ã€ä»¥äžã®åã§æ§æãããŠããŠãæ§ããŸããã è€æ°ã®åãããå Žåã¯ããããäž»ããŒã§ããããã®èåŸã«ããä»ã®ãã¹ãŠã®åãã¯ã©ã¹ã¿ãªã³ã° ããŒã§ããããšãèšèªããªããã»ããµãç解ã§ããããã«ãå床æ¬åŒ§å ã§åé€ããå¿ èŠããããŸãã ãã®å Žåããããã¯åºçŸããé åºã§ã³ã³ãã¬ãŒã¿ã«éä¿¡ãããŸãã ã€ãŸããæåã®åã¯ããéèŠã§ãããXNUMX çªç®ã®åã¯ããéèŠã§ã¯ãªãããšããããã«ãªããŸãã ããšãã°ãããŒã¿ ã¯ã©ã¹ã®ãã£ãŒã«ãã®æžãæ¹ã¯åãã§ãããã£ãŒã«ãããªã¹ããããããã«å¯ŸããŠã©ã®ãã£ãŒã«ãã倧ããããã©ã®ãã£ãŒã«ããå°ããããèšè¿°ããŸãã Cassandra ã§ã¯ããããã¯çžå¯Ÿçã«èšãã°ãããŒã¿ ã¯ã©ã¹ã®ãã£ãŒã«ãã§ããããã®ãã£ãŒã«ãçšã«æžãããåçã®ãã®ãé©çšãããŸãã
ãœãŒããèšå®ããå¶éã課ããŸã
ãœãŒãé åº (éé ãæé ãªã©) ã¯ããŒã®äœæãšåæã«èšå®ãããåŸã§å€æŽããããšã¯ã§ããªãããšã«æ³šæããŠãã ããã ããŒã¿ã®äžŠã¹æ¿ãæ¹æ³ãšä¿åæ¹æ³ãç©ççã«æ±ºå®ããŸãã ã¯ã©ã¹ã¿ãªã³ã° ããŒãŸãã¯äžŠã¹æ¿ãé åºãå€æŽããå¿ èŠãããå Žåã¯ãæ°ããããŒãã«ãäœæããããã«ããŒã¿ã転éããå¿ èŠããããŸãã ããã¯æ¢åã®ãã®ã§ã¯æ©èœããŸããã
ããŒãã«ã«ãŠãŒã¶ãŒãèšå
¥ãããšãæåã¯èªç幎ããšã«ãªã³ã°ã«åé¡ããã次ã«çµŠäžãšãŠãŒã¶ãŒ ID ããšã«åããŒãã®å
åŽã«åé¡ãããããšãããããŸããã å¶éã課ãããšã§éžæã§ããããã«ãªããŸããã
ç§ãã¡ã®åã人ãåã³çŸããŸã where, and
ãããŠãŠãŒã¶ãŒãç²åŸããåã³ãã¹ãŠãããŸããããŸãã ããããã¯ã©ã¹ã¿ãªã³ã° ããŒã®äžéšã ãã䜿çšããããããéèŠåºŠã®äœãããŒã䜿çšããããšãããšãCassandra ã¯ããã«ããã®ãªããžã§ã¯ã (null ã³ã³ãã¬ãŒã¿çšã®ãã£ãŒã«ããšãã®ãã£ãŒã«ããæã€) ããããå
ã§ã©ãã«ãããèŠã€ãããªããšæå¥ãèšããŸããããã¯ã¡ããã©èšå®ããããšããã§ã - 圌ã暪ããã£ãŠããå Žæã ãã®ããŒããããã¹ãŠã®ããŒã¿ãå床ååŸããŠãã£ã«ã¿ãªã³ã°ããå¿
èŠããããŸãã ããã¯ããŒãå
ã®ãã« ã¹ãã£ã³ã«äŒŒãŠããŸãããããã¯æªããã®ã§ãã
ç¶æ³ãäžæçãªå Žåã¯ãæ°ããããŒãã«ãäœæããŸã
IDã幎霢ã絊äžãªã©ã§ãŠãŒã¶ãŒãã¿ãŒã²ãã£ã³ã°ã§ããããã«ãããå Žåã¯ãã©ãããã°ããã§ãããã? äœããªãã ããŒãã«ã 10 ã€äœ¿çšããã ãã§ãã XNUMX ã€ã®ç°ãªãæ¹æ³ã§ãŠãŒã¶ãŒã«ã¢ãããŒãããå¿ èŠãããå ŽåãããŒãã«ã XNUMX ã€ååšããŸãã ããžã®ã¹ããŒã¹ãç¯çŽããæ代ã¯çµãããŸããã ããã¯æãå®äŸ¡ãªãªãœãŒã¹ã§ãã ãŠãŒã¶ãŒã«ãšã£ãŠäžå©çãšãªãå¯èœæ§ãããå¿çæéã«æ¯ã¹ãŠãã³ã¹ããã¯ããã«äœããªããŸãã ãŠãŒã¶ãŒã«ãšã£ãŠã¯ãXNUMX åã§äœããåãåãããããXNUMX ç§ã§äœããåãåãæ¹ãã¯ããã«å¿«é©ã§ãã
äžå¿ èŠãªã¹ããŒã¹ãšéæ£èŠåããŒã¿ãç ç²ã«ããŠãé©åã«æ¡åŒµãã確å®ã«åäœããèœåãç²åŸããŸãã çµå±ã®ãšãããå®éã«ã¯ãããããã XNUMX ã€ã®ããŒããæ〠XNUMX ã€ã®ããŒã¿ã»ã³ã¿ãŒã§æ§æãããã¯ã©ã¹ã¿ãŒã¯ã蚱容ã¬ãã«ã®ããŒã¿ä¿å (äœã倱ãããŠããªãå Žå) ãåããŠããã°ãXNUMX ã€ã®ããŒã¿ã»ã³ã¿ãŒãåæ¢ããŠãå®å šã«çãæ®ãããšãã§ããŸãã ãããŠæ®ãã® XNUMX ã€ã®ããããã«ããã« XNUMX ã€ã®ããŒãããããŸãã ãããŠãã®åŸåããŠåé¡ãå§ãŸããŸãã ããã¯ããªãåªããåé·æ§ã§ãããSSD ãã©ã€ããšããã»ããµãããã€ãè¿œå ãã䟡å€ããããŸãã ãããã£ãŠããªã¬ãŒã·ã§ã³ã·ãããå€éšããŒããªã SQL ã§ã¯ãªã Cassandra ã䜿çšããã«ã¯ãç°¡åãªã«ãŒã«ãç¥ãå¿ èŠããããŸãã
ãèŠæã«å¿ããŠãããããã®ããã¶ã€ã³ãããŠããã ããŸãã éèŠãªã®ã¯ããŒã¿ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ãããŒã¿ãã©ã®ããã«æ±ããã§ãã ç°ãªãããŒã¿ãç°ãªãæ¹æ³ã§åä¿¡ããå¿ èŠãããå ŽåããŸãã¯åãããŒã¿ãç°ãªãæ¹æ³ã§åä¿¡ããå¿ èŠãããå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäŸ¿å©ãªæ¹æ³ã§åä¿¡ããå¿ èŠããããŸãã ããããªããšããã« ã¹ãã£ã³ã«å€±æããCassandra ã¯äœã®å©ç¹ãäžããŸããã
ããŒã¿ã®éæ£èŠåã¯æšæºã§ãã ç§ãã¡ã¯æšæºåœ¢åŒã®ããšãå¿ããŠããããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã¯ãããããŸããã äœãã100å眮ããšã100å暪ã«ãªããŸãã ããã§ãæ¢ããããã¯å®ãã§ãã
æ£åžžã«åæ£ãããããã«ããŒãã£ã·ã§ã³åããããŒãéžæããŸãã ããŒã®ããã·ã¥ã 5 ã€ã®çãç¯å²ã«åãŸãããšã¯æãŸãããããŸããã ã€ãŸããäžèšã®äŸã®çãŸã幎ã¯æªãäŸã§ãã ããæ£ç¢ºã«èšããšããŠãŒã¶ãŒãçãŸã幎ã«ãã£ãŠæ£èŠã«ååžããŠããå Žåã¯è¯å¥œã§ãããXNUMX 幎çã«ã€ããŠè©±ããŠããå Žåã¯äžè¯ã§ãããããã§ã®åå²ã¯ããŸãé©åã§ã¯ãããŸããã
ãœãŒãã¯ãã¯ã©ã¹ã¿ãªã³ã° ããŒã®äœæ段é㧠XNUMX åéžæãããŸãã å€æŽããå¿ èŠãããå Žåã¯ãå¥ã®ããŒã§ããŒãã«ãæŽæ°ããå¿ èŠããããŸãã
ãããŠæãéèŠãªããšã¯ãåãããŒã¿ã 100 ã®ç°ãªãæ¹æ³ã§ååŸããå¿
èŠãããå Žåã100 ã®ç°ãªãããŒãã«ãååšããããšã«ãªããŸãã
åºæïŒ habr.com