
äžäžèŽã¯ãã«ã¹ã¿ã ã³ã³ãã³ããšåæ§ãäºæ³ãããéãæé·ãç¶ããŠããŸãã ãŠãŒã¶ãŒãå€ãã»ã©ããã£ããã¡ãã»ãŒãžãå€ããªããŸãã 7æã«1æ¥4,000äžéã®ã¡ãã»ãŒãžãçºè¡šã ã12æã«1åéãçºè¡šã ã1æäžæ¬ã«1å2000äžéãè¶ ããŸãããããã€ã¹ã ããã¯å€§éã®ããŒã¿ã§ããããã®ãããŒãšéã¯å¢ãç¶ããŠãããããããã¹ãŠã«ã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸãã ãããã©ããã£ãŠããã®ïŒ ã«ãµã³ãã©ïŒ
ç§ãã¡ã¯äœãããŸããã
Discordã®ãªãªãžãã«ããŒãžã§ã³ã¯ã2015幎åé ã®2ãæãããæ©ãæžãããŸããã ãããããé«éå埩ã«æé©ãªDBMSã®1ã€ã¯MongoDBã§ãã Discordã®ãã¹ãŠã¯ãMongoDBã®åäžã®ã¬ããªã«ã»ããã«ç¹å¥ã«æ ŒçŽãããŠããŸããããæ°ããDBMSãžã®åçŽãªç§»è¡ã®ããã«ãã¹ãŠãæºåããŸããïŒãã®è€éããšæªç¥ã®å®å®æ§ã®ãããMongoDBã·ã£ãŒãã£ã³ã°ã䜿çšããªãããšãç¥ã£ãŠããŸããïŒã å®éãããã¯ç§ãã¡ã®äŒæ¥æåã®äžéšã§ããè¿ éã«éçºããŠæ°ãã補åæ©èœãäœéšããŸãããåžžã«ããä¿¡é Œæ§ã®é«ããœãªã¥ãŒã·ã§ã³ã«çŠç¹ãåœãŠãŠããŸãã
ã¡ãã»ãŒãžã¯ã
channel_id
ããã³
created_at
åäžã®è€åã€ã³ããã¯ã¹ãšãšãã«MongoDBã³ã¬ã¯ã·ã§ã³ã«ä¿åãããŸããã 2015幎11æãããããŒã¿ããŒã¹å ã®ã¡ãã»ãŒãžã1åè¡ã«éããŸããããããããããŒã¿ãšã€ã³ããã¯ã¹ãRAMã«åãŸãããé 延ãäºæž¬äžå¯èœã«ãªããšããåé¡ãç解ãå§ããŸããã ããé©åãªDBMSã«ç§»è¡ããæãæ¥ãŸããã
é©åãªDBMSã®éžæ
æ°ããDBMSãéžæããåã«ãæ¢åã®èªã¿åã/æžã蟌ã¿ãã¿ãŒã³ãšãçŸåšã®ãœãªã¥ãŒã·ã§ã³ã«åé¡ããã£ãçç±ãç解ããå¿ èŠããããŸããã
- èªã¿åãæäœãéåžžã«ã©ã³ãã ã§ãããèªã¿åã/æžã蟌ã¿æ¯çãçŽ50/50ã§ããããšãããã«æããã«ãªããŸããã
- Heavy Discordãã€ã¹ãã£ãããµãŒããŒã¯ã»ãšãã©ã¡ãã»ãŒãžãéä¿¡ããŸããã§ããã ã€ãŸããæ°æ¥ããšã«1ã€ãŸãã¯2ã€ã®ã¡ãã»ãŒãžãéä¿¡ããŸããã 1幎ã§ããã®ã¿ã€ãã®ãµãŒããŒã¯1000ã¡ãã»ãŒãžã®ãã€ã«ã¹ããŒã³ã«å°éããå¯èœæ§ã¯äœãã§ãã åé¡ã¯ããã®ãããªå°æ°ã®ã¡ãã»ãŒãžã«ããããããããã®ããŒã¿ããŠãŒã¶ãŒã«é ä¿¡ããã®ãããé£ããããšã§ãã ãŠãŒã¶ãŒã«50åã®ã¡ãã»ãŒãžãè¿ãã ãã§ãå€ãã®ã©ã³ãã ãªãã£ã¹ã¯æ€çŽ¢ãè¡ããããã£ã¹ã¯ãã£ãã·ã¥ã匷å¶çã«åé€ãããŸãã
- Heavy Discordã®ãã©ã€ããŒãããã¹ããã£ãããµãŒããŒã¯ãé©åãªéã®ã¡ãã»ãŒãžãéä¿¡ããŸããããã¯ã幎é100,000ã100äžã¡ãã»ãŒãžã®ç¯å²å ã§ãã éåžžãææ°ã®ããŒã¿ã®ã¿ãèŠæ±ããŸãã åé¡ã¯ããããã®ãµãŒããŒã®åå è ãéåžž100人æªæºã§ãããããããŒã¿èŠæ±ã®é床ãé ãããã£ã¹ã¯ãã£ãã·ã¥ã«ååšããå¯èœæ§ãäœãããšã§ãã
- 倧èŠæš¡ãªãããªãã¯DiscordãµãŒããŒã¯ã倧éã®ã¡ãã»ãŒãžãéä¿¡ããŸãã 1æ¥ã«æ°åã®ã¡ãã»ãŒãžãéä¿¡ããæ°åã®åå è ãããŸãã 幎éæ°çŸäžã®ã¡ãã»ãŒãžãç°¡åã«å ¥åãããŸãã 圌ãã¯ã»ãšãã©åžžã«æåŸã®1æéã«éä¿¡ãããã¡ãã»ãŒãžãèŠæ±ããããã¯é »ç¹ã«èµ·ãããŸãã ãããã£ãŠãããŒã¿ã¯éåžžãã£ã¹ã¯ãã£ãã·ã¥ã«ãããŸãã
- æ¥å¹ŽããŠãŒã¶ãŒã¯ã©ã³ãã ãªèªã¿åãå€ãçæããæ¹æ³ãããã«å¢ããããšãç¥ã£ãŠããŸãããããã¯ãéå»30æ¥éã®èšåã衚瀺ããå±¥æŽã®ãã®æç¹ã§ã¹ãããããæ·»ä»ã¡ãã»ãŒãžã衚瀺ããŠç§»åããå šæã§æ€çŽ¢ããæ©èœã§ãã ããã¯ãã¹ãŠãããã«ã©ã³ãã ãªèªã¿åããæå³ããŸãïŒ
次ã«ãèŠä»¶ã決å®ããŸããã
- ç·åœ¢ã®ã¹ã±ãŒã©ããªã㣠-åŸã§ãœãªã¥ãŒã·ã§ã³ãä¿®æ£ããããããŒã¿ãå¥ã®ã·ã£ãŒãã«æåã§è»¢éãããããå¿ èŠã¯ãããŸããã
- èªåå埩å -ç§ãã¡ã¯å€å¯ãŠãDiscordãå¯èœãªéãèªå·±å埩ãããã®ã奜ãã§ãã
- å°ããµããŒã -ã€ã³ã¹ããŒã«ãããšããã«åäœããã¯ãã§ãã ããŒã¿ã倧ãããªã£ããšãã«ããŒããè¿œå ããã ãã§ãã
- å®çžŸãã -ç§ãã¡ã¯æ°ãããã¯ãããžãŒãè©Šãã®ã倧奜ãã§ãããããã»ã©æ°ãããã®ã§ã¯ãããŸããã
- äºæž¬å¯èœãªããã©ãŒãã³ã¹ -95ïŒ ã®å Žåã®APIã®å¿çæéã80ããªç§ãè¶ ãããšãã¡ãã»ãŒãžãéä¿¡ãããŸãã ãŸããRedisãŸãã¯Memcachedã§ã¡ãã»ãŒãžããã£ãã·ã¥ããå¿ èŠã«çŽé¢ããããããŸããã
- BLOBã¹ãã¬ãŒãžã§ã¯ãããŸãã-BLOBãé£ç¶çã«ãã·ãªã¢ã©ã€ãºããŠããŒã¿ãæ·»ä»ããå¿ èŠãããå Žåã1ç§ãããæ°åã®ã¡ãã»ãŒãžã®èšé²ã¯ããŸãæ©èœããŸããã
- ãªãŒãã³ãœãŒã¹ -ç§ãã¡ã¯èªåèªèº«ã®éåœãå¶åŸ¡ãããµãŒãããŒãã£ã®äŒç€Ÿã«äŸåããããªããšèããŠããŸãã
Cassandraã¯ããã¹ãŠã®èŠä»¶ãæºãããå¯äžã®DBMSã§ããã ã¹ã±ãŒãªã³ã°æã«ããŒããè¿œå ããã ãã§ãã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ãäžããããšãªãããŒãã®æ倱ã«å¯ŸåŠã§ããŸãã NetflixãAppleãªã©ã®å€§äŒæ¥ã«ã¯ãæ°åã®CassandraããŒãããããŸãã é¢é£ããŒã¿ã¯ãã£ã¹ã¯ã®è¿ãã«ä¿åãããæå°éã®æ€çŽ¢æäœãšã¯ã©ã¹ã¿ãŒå šäœãžã®ç°¡åãªåæ£ãæäŸããŸãã DataStaxã§ãµããŒããããŠããŸããããªãŒãã³ãœãŒã¹ã§é åžãããŠãããã³ãã¥ããã£ã掻çšããŠããŸãã
éžæãããåŸã圌ãæ¬åœã«æ£åœåãããããšã蚌æããå¿ èŠããããŸããã
ããŒã¿ã¢ããªã³ã°
Cassandraã®æ°åè ãèšè¿°ããæè¯ã®æ¹æ³ã¯ãç¥èªKKVã§ãã 2ã€ã®æåãKãã«ã¯äž»ããŒãå«ãŸããŸãã æåã®ãKãã¯ããŒãã£ã·ã§ã³ããŒã§ãã ããŒã¿ãååšããããŒããšãã£ã¹ã¯äžã®ã©ãã«ããããå€æããã®ã«åœ¹ç«ã¡ãŸãã ã»ã¯ã·ã§ã³å ã«ã¯å€ãã®è¡ãããã2çªç®ã®ãKãã¯ã»ã¯ã·ã§ã³å ã®ç¹å®ã®è¡-ã¯ã©ã¹ã¿ãªã³ã°ããŒãå®çŸ©ããŸãã ã»ã¯ã·ã§ã³å ã§äž»ããŒãšããŠæ©èœããè¡ã®ãœãŒãæ¹æ³ã決å®ããŸãã ã»ã¯ã·ã§ã³ã¯ãé åºä»ããããèŸæžãšããŠæ³åã§ããŸãã ããããã¹ãŠã®ç¹æ§ãçµã¿åãããããšã§ãéåžžã«åŒ·åãªããŒã¿ã¢ããªã³ã°ãå¯èœã«ãªããŸãã
MongoDBã®ã¡ãã»ãŒãžã¯
channel_id
ãš
created_at
ã䜿çšããŠã€ã³ããã¯ã¹ä»ããããããšãèŠããŠããŸããïŒ ãã£ãã«ã§ãã¹ãŠã®ã¡ãã»ãŒãžãæ©èœããããã
channel_id
ãã»ã¯ã·ã§ã³ããŒã«ãªããŸãããã2ã€ã®ã¡ãã»ãŒãžãåæã«äœæã§ããããã
created_at
ã¯é©åãªã¯ã©ã¹ã¿ãªã³ã°ããŒãæäŸããŸããã 幞ããªããšã«ããã¹ãŠã®Discord IDã¯å®éã«ã¯Snowflakeã§äœæãããŸããã€ãŸããæéé ã«äžŠã¹ãããŸãã ãããã£ãŠããããã䜿çšããããšãã§ããŸããã äž»ããŒã
(channel_id, message_id)
ã«å€ãããŸãã
message_id
ã¯Snowflakeã§ãã ããã¯ããã£ãã«ãããŒããããšãã«ãã¡ãã»ãŒãžãæ€çŽ¢ããæ£ç¢ºãªç¯å²ãCassandraã«äŒããããšãã§ããããšãæå³ããŸãã
ã¡ãã»ãŒãžããŒãã«ã®ç°¡ç¥å³ã次ã«ç€ºããŸãïŒçŽ10åãã¹ãããããŸãïŒã
CREATE TABLE messages ( channel_id bigint, message_id bigint, author_id bigint, content text, PRIMARY KEY (channel_id, message_id) ) WITH CLUSTERING ORDER BY (message_id DESC);
Cassandraã®ã¹ããŒãã¯ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã¹ããŒãã«äŒŒãŠããŸãããç°¡åã«å€æŽã§ããäžæçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ãããŸããã ãããã¹ãã¬ãŒãžãšãªã¬ãŒã·ã§ãã«ã¹ãã¬ãŒãžãæ倧éã«æŽ»çšããŸããã
Cassandraãžã®æ¢åã®ã¡ãã»ãŒãžã®ã€ã³ããŒããéå§ããããšããã«ã100 MBãè¶ ããããŒãã£ã·ã§ã³ãèŠã€ãã£ãããšãèŠåãã°ã§ããã«ç¢ºèªããŸããã ãŸãïŒ çµå±ã®ãšãããCassandraã¯2 GBããŒãã£ã·ã§ã³ã®ãµããŒãã宣èšããŠããŸãïŒ ã©ããããå¯èœæ§ã¯ãããè¡ãããã¹ããšããæå³ã§ã¯ãããŸããã 倧ããªã»ã¯ã·ã§ã³ã¯ãã¯ã©ã¹ã¿ãŒã®å§çž®ãæ¡åŒµãªã©ã®éã«ãCassandraã®ã¬ããŒãžã³ã¬ã¯ã¿ãŒã«å€§ããªè² è·ããããŸãã 倧ããªããŒãã£ã·ã§ã³ãååšãããšããããšã¯ããã®äžã®ããŒã¿ãã¯ã©ã¹ã¿ãŒå šäœã«åæ£ã§ããªãããšãæå³ããŸãã äžéšã®Discordãã£ãã«ã¯äœå¹Žãååšããåžžã«ãµã€ãºãå¢å ããå¯èœæ§ããããããããŒãã£ã·ã§ã³ã®ãµã€ãºãäœããã®æ¹æ³ã§å¶éããå¿ èŠãããããšãæããã«ãªããŸããã
ç§ãã¡ã¯ãæéããããŠãã±ããã«ã¡ãã»ãŒãžãé ä¿¡ããããšã«ããŸããã Discordã®æ倧ã®ãã£ãã«ã調ã¹ãçŽ10æ¥éã®ãããã¯ã§ã¡ãã»ãŒãžãä¿åãããšã100 MBã®å¶éã«å¿«é©ã«æè³ã§ãããšå€æããŸããã ãããã¯ã¯ã
message_id
ãŸãã¯ã¿ã€ã ã¹ã¿ã³ãããåä¿¡ããå¿ èŠããããŸãã
DISCORD_EPOCH = 1420070400000 BUCKET_SIZE = 1000 * 60 * 60 * 24 * 10 def make_bucket(snowflake): if snowflake is None: timestamp = int(time.time() * 1000) - DISCORD_EPOCH else: # When a Snowflake is created it contains the number of # seconds since the DISCORD_EPOCH. timestamp = snowflake_id >> 22 return int(timestamp / BUCKET_SIZE) def make_buckets(start_id, end_id=None): return range(make_bucket(start_id), make_bucket(end_id) + 1)
CassandraããŒãã£ã·ã§ã³ããŒã¯ã³ã³ããžããã§ããå ŽåããããããïŒæ°ãã
((channel_id, bucket), message_id)
ãã©ã€ããªãããŒ
((channel_id, bucket), message_id)
æ°ãããã©ã€ããªããŒã§ãã
CREATE TABLE messages ( channel_id bigint, bucket int, message_id bigint, author_id bigint, content text, PRIMARY KEY ((channel_id, bucket), message_id) ) WITH CLUSTERING ORDER BY (message_id DESC);
ãã£ãã«å ã®æè¿ã®ã¡ãã»ãŒãžãèŠæ±ããããã«ãçŸåšã®æéãã
channel_id
ãŸã§ã®ç¯å²ã®ãããã¯ãçæããŸããïŒããã¯æç³»åã§SnowflakeãšããŠãœãŒããããæåã®ã¡ãã»ãŒãžããå€ãå¿ èŠããããŸãïŒã 次ã«ãååãªã¡ãã»ãŒãžãåéãããŸã§ã»ã¯ã·ã§ã³ãé çªã«ããŒãªã³ã°ããŸãã ãã®æ¹æ³ã®è£åŽã¯ãã¢ã¯ãã£ããªDiscordã€ã³ã¹ã¿ã³ã¹ããæéã®çµéãšãšãã«ååãªã¡ãã»ãŒãžãåéããããã«ãå€ãã®ç°ãªããããã¯ãããŒãªã³ã°ããå¿ èŠãããå Žåãããããšã§ãã å®éã«ã¯ãDiscordã®ã¢ã¯ãã£ããªã€ã³ã¹ã¿ã³ã¹ã®æåã®ã»ã¯ã·ã§ã³ã«ã¯éåžžååãªã¡ãã»ãŒãžãããããã®ã»ãšãã©ãããã§ããããããã¹ãŠãæ£åžžã§ããããšãå€æããŸããã
Cassandraãžã®ã¡ãã»ãŒãžã®ã€ã³ããŒãã¯ã¹ã ãŒãºã«é²ã¿ãæ¬çªç°å¢ã§ãã¹ãããæºåãæŽããŸããã
éãæã¡äžã
æ°ããã·ã¹ãã ãå®çšŒåç°å¢ã«æå ¥ããããšã¯åžžã«æãã®ã§ããŠãŒã¶ãŒã«åœ±é¿ãäžããã«ãã¹ãããããšããå§ãããŸãã MongoDBãšCassandraã§èªã¿åã/æžã蟌ã¿æäœãè€è£œããããã«ã·ã¹ãã ãæ§æããŸããã
èµ·åçŽåŸã«ã
author_id
ããŒãã§ãããšãããšã©ãŒ
author_id
ãã°ãã©ãã«ãŒã§
author_id
ãŸããã ã©ãããŠãŒãã«ã§ããŸããïŒ ããã¯å¿ é ãã£ãŒã«ãã§ãïŒ
æçµçã«ã³ã³ã»ã³ãµã¹
Cassandraã¯APã¿ã€ãã®ã·ã¹ãã ã§ããã€ãŸããããã§ã¯ã¢ã¯ã»ã·ããªãã£ã®ããã«ä¿èšŒãããæŽåæ§ãç ç²ã«ãªããŸãã Cassandraã§ã¯ãç¹å®ã®åã®ã¿ãæäŸãããå Žåã§ããæžã蟌ã¿åã®èªã¿åãã¯çŠå¿ã§ãïŒèªã¿åãæäœã¯ããé«äŸ¡ã§ãïŒããããã£ãŠãCassandraã¯æŽæ°ãšæ¿å ¥ïŒã¢ãããµãŒãïŒã®ã¿ãè¡ããŸãã ãŸããä»»æã®ããŒãã«æžã蟌ãããšãã§ããååã®ã»ãã³ãã£ã¯ã¹ãæåŸã®ã¬ã³ãŒããåªå ãã䜿çšããŠç«¶åãèªåçã«è§£æ±ºããŸãã ããã§ãããã¯ç§ãã¡ã«ã©ã®ãããªåœ±é¿ãäžããŸãããïŒ

競åç¶æ ã®ç·šé/åé€ã®äŸ
ãŠãŒã¶ãŒãã¡ãã»ãŒãžãç·šéããå¥ã®ãŠãŒã¶ãŒãåãã¡ãã»ãŒãžãåé€ããå ŽåãCassandraã¯æŽæ°ãšæ¿å ¥ã®ã¿ãèšé²ãããããäž»ããŒãšããã¹ããé€ããŠãããŒã¿ãå®å šã«æ¬ èœããŠããè¡ããããŸããã ãã®åé¡ã«ã¯2ã€ã®è§£æ±ºçããããŸãã
- ã¡ãã»ãŒãžã®ç·šéäžã«ã¡ãã»ãŒãžå šäœãæžãæ»ããŸãã ãã®åŸãåé€ãããã¡ãã»ãŒãžã埩掻ãããå¯èœæ§ãããã競åã®å¯èœæ§ãä»ã®åã®åæãšã³ããªã«è¿œå ãããŸãã
- ç Žæããã¡ãã»ãŒãžãç¹å®ããããŒã¿ããŒã¹ããåé€ããŸãã
2çªç®ã®ãªãã·ã§ã³ãéžæããã«ã¯ãå¿ èŠãªåïŒãã®å Žåã¯
author_id
ïŒãå®çŸ©ãã空ã®å Žåã¯ã¡ãã»ãŒãžãåé€ããŸãã
ãã®åé¡ã解決ãããšãæžã蟌ã¿æäœã«ã¯éåžžã«å¹æããªãããšãããããŸããã Cassandraã¯æçµçã«åæãããŠããããããã®ãããªããŒã¿ãååŸããŠããã«åé€ããããšã¯ã§ããŸããã 圌女ã¯åé€ãä»ã®ããŒãã«è€è£œããå¿ èŠããããããã¯ããŒããäžæçã«å©çšã§ããªãå Žåã§ãå®è¡ããå¿ èŠããããŸãã Cassandraã¯ãåé€ããtombstoneããšåŒã°ããç¬ç¹ã®èšé²åœ¢åŒãšåäžèŠããããšã§ãããè¡ããŸãã èªã¿åãæäœäžã圌女ã¯åã«éäžã§çºçãããå¢ç³ããããæããŸãã ãå¢ç³ãã®å¯¿åœã¯èª¿æŽããïŒããã©ã«ãã§ã¯10æ¥éïŒãæéãéããå Žåãåºæ¬å§çž®äžã«æ°žä¹ ã«åé€ãããŸãã
åã®åé€ãšåãžã®ãŒãã®æžã蟌ã¿ã¯ãŸã£ããåãã§ãã ã©ã¡ãã®å Žåãããå¢ç³ããäœæãããŸãã Cassandraã®ãã¹ãŠã®ãšã³ããªã¯æŽæ°ããã³æ¿å ¥ã§ãããããæåã«ãŒããæžã蟌ãã§ããå¢ç³ããäœæããŸãã å®éã«ã¯ãå®å šãªéä¿¡ã¹ããŒã ã¯16åã§æ§æãããŠããŸããããå¹³åã¡ãã»ãŒãžã«ã¯4ã€ã®èšå®å€ãããããŸããã§ããã éåžžã¯çç±ããªããCassandraã§12åã®ãå¢ç³ããèšé²ããŸããã ãã®åé¡ã®è§£æ±ºçã¯ç°¡åã§ããããŒã以å€ã®å€ã®ã¿ãããŒã¿ããŒã¹ã«æžã蟌ã¿ãŸãã
æ§èœ
Cassandraã¯èªã¿åãã§ã¯ãªãæžã蟌ã¿æäœãå®è¡ããããšãç¥ãããŠããããŸãã«ããã芳å¯ããŸããã æžã蟌ã¿æäœã¯1ããªç§æªæºã®ééã§çºçããèªã¿åãæäœã¯5ããªç§æªæºã§çºçããŸããã ãã®ãããªææšã¯ãã¢ã¯ã»ã¹ãããããŒã¿ã®çš®é¡ã«é¢ä¿ãªã芳å¯ãããŸããã 1é±éã®ãã¹ãã®éãããã©ãŒãã³ã¹ã¯å€åããŸããã§ããã åœç¶ã®ããšãªãããç§ãã¡ã¯æåŸ ã©ããã®ãã®ãæã«å ¥ããŸããã

ãã°ããã®ããŒã¿ã«å¿ããèªã¿åã/æžã蟌ã¿é 延
é«éã§ä¿¡é Œæ§ã®é«ãèªã¿åãããã©ãŒãã³ã¹ãšäžèŽããŠãæ°çŸäžã®ã¡ãã»ãŒãžããããã£ãã«ã§1幎åã®ã¡ãã»ãŒãžã«åãæ¿ããäŸã次ã«ç€ºããŸãã

倧ããªé©ã
ãã¹ãŠãé 調ã«é²ãã ãããCassandraãã¡ã€ã³ããŒã¿ããŒã¹ãšããŠå±éããMongoDBã1é±éç¡å¹ã«ããŸããã 圌女ã¯å®ç§ã«ä»äºãç¶ããŸãã...çŽ6ãæéã圌女ãå¿çããªããªããŸã§ã
Cassandraã¯ã¬ããŒãžã³ã¬ã¯ã·ã§ã³äžã«10ç§éç¶ç¶ããŠåæ¢ããããšã«æ°ä»ããŸãããããã®çç±ã¯ãŸã£ããããããŸããã§ããã 圌ãã¯æãå§ããDiscordãã£ãã«ãèŠã€ããŸãããããŒãã«20ç§ããããŸããã åå ã¯ã PuzzlesïŒDragons subredditã®ãããªãã¯DiscordãµãŒããŒã§ããã å ¬éãããŠããã®ã§ãåå ããŸããã é©ããããšã«ããã£ã³ãã«ã«ã¯ã¡ãã»ãŒãžã1ã€ãããããŸããã§ããã ãã®ç¬éãAPIãä»ããŠæ°çŸäžã®ã¡ãã»ãŒãžãåé€ããããã£ãã«ã«1ã€ã®ã¡ãã»ãŒãžããæ®ãããŠããªãããšãæããã«ãªããŸããã
泚ææ·±ãèªãã å ŽåãCassandraããå»æ£ãã䜿çšããŠåé€ãåŠçããæ¹æ³ãèŠããŠãããŠãã ããïŒãé·æçãªäžè²«æ§ãã®ç« ã§èª¬æïŒã ãŠãŒã¶ãŒããã®ãã£ãã«ãããŠã³ããŒããããšãå°ãªããšã1ã€ã®ã¡ãã»ãŒãžããããCassandraã¯äœçŸäžãã®ãå¢ç³ãã®ã¡ãã»ãŒãžãå¹æçã«ã¹ãã£ã³ããå¿ èŠããããŸãã 次ã«ãJVMãåéã§ãããããéãã¬ããŒãžãçæããŸãã
ãã®åé¡ã次ã®ããã«è§£æ±ºããŸããã
- æ¯æ©ãã¡ãã»ãŒãžã¯ã©ã¹ã¿ãŒã§Cassandraã®ä¿®åŸ© ïŒåãšã³ããããŒããã»ã¹ïŒãéå§ãããããå¢ç³ã®å¯¿åœã10æ¥éãã2æ¥éã«ççž®ãããŸããã
- èŠæ±ã³ãŒããå€æŽããŠããã£ãã«äžã®ç©ºã®ãããã¯ã远跡ããå°æ¥ããããåé¿ããŸãã ããã¯ããŠãŒã¶ãŒãåã³ãã®ãªã¯ãšã¹ããéå§ããå Žåãææªã®å ŽåãCassandraã¯ææ°ã®ãããã¯ã®ã¿ãã¹ãã£ã³ããããšãæå³ããŸãã
æªæ¥
çŸåšãã¬ããªã±ãŒã·ã§ã³ä¿æ°ã3ã®12ããŒãã®ã¯ã©ã¹ã¿ãŒããããå¿ èŠã«å¿ããŠæ°ããCassandraããŒããè¿œå ãç¶ããŸãã ãã®ã¢ãããŒãã¯é·æçã«ã¯æå¹ã§ãããšèããŠããŸãããDiscordãæé·ããã«ã€ããŠã1æ¥ãããæ°ååã®ã¡ãã»ãŒãžãä¿åããå¿ èŠãããå Žåãé ãæªæ¥ãèŠããŸãã NetflixãšAppleã«ã¯æ°çŸã®ããŒããæã€ã¯ã©ã¹ã¿ãŒããããããçŸæç¹ã§ã¯å¿é ããå¿ èŠã¯ãããŸããã ãã ããããã€ãã®ã¢ã€ãã¢ãçšæããŠããå¿ èŠããããŸãã
è¿ãå°æ¥
- ã¡ãã»ãŒãžã¯ã©ã¹ã¿ãŒãCassandra 2ããCassandra 3ã«ã¢ããã°ã¬ãŒãããŸããCassandra3ã®æ°ããã¹ãã¬ãŒãžåœ¢åŒã«ãããã¹ãã¬ãŒãžã50ïŒ ä»¥äžåæžã§ããŸãã
- Cassandraã®æ°ããããŒãžã§ã³ã¯ãåããŒãã§ããå€ãã®ããŒã¿ãåŠçããã®ã«é©ããŠããŸãã çŸåšãããããã«çŽ1 TBã®å§çž®ããŒã¿ãä¿åããŠããŸãã ãã®å¶éã2 TBã«å¢ããããšã§ãã¯ã©ã¹ã¿ãŒå ã®ããŒãã®æ°ãæžããããšã¯å®å šã ãšæããŸãã
é ãæªæ¥
- Explore Scyllaã¯ãC ++ã§èšè¿°ãããCassandraäºæã®DBMSã§ãã éåžžã®æäœã§ã¯ãCassandraããŒãã¯å®éã«ããã€ãã®CPUãªãœãŒã¹ãæ¶è²»ããŸãããCassandraã®ä¿®åŸ©æïŒãªããšã³ããããŒããã»ã¹ïŒã®ãªãããŒã¯æã«ããããã¯CPUã«å€§ããäŸåãã修埩æéã¯æåŸã®ä¿®åŸ©ä»¥éã«èšé²ãããããŒã¿éã«å¿ããŠå¢å ããŸãã Scyllaã¯ãä¿®çã®é床ãå€§å¹ ã«åäžãããããšãçŽæããŸãã
- Google Cloud Storageã«æªäœ¿çšã®ãã£ã³ãã«ãã¢ãŒã«ã€ããããããããªã³ããã³ãã§ããŠã³ããŒãããã·ã¹ãã ãäœæããŸãã ç§ãã¡ã¯ãããé¿ããããããããããªããã°ãªããªããšã¯æããªãã
ãããã«
Cassandraãžã®ç§»è¡ãã1幎以äžãçµéãã ã倧ããªé©ããã«ãããããããç©ãããªæ°Žæ³³ã§ããã çç£æ§ãšå®å®æ§ãç¶æããªããã1æ¥ãããåèš1åéãè¶ ããã¡ãã»ãŒãžãã1å2000äžéãè¶ ããã¡ãã»ãŒãžã«ç§»è¡ããŸããã
ãã®ãããžã§ã¯ãã®æåã«ãããç§ãã¡ã¯ãã®åŸãæ¬çªç°å¢ã«ããä»ã®ãã¹ãŠã®ããŒã¿ãCassandraã«è»¢éãããŸãæåããŸããã
ãã®èšäºã®ç¶ãã§ã¯ãäœååãã®ã¡ãã»ãŒãžã«å¯ŸããŠå šææ€çŽ¢ãå®è¡ããæ¹æ³ãæ¢ããŸãã
å°éã®DevOpsãšã³ãžãã¢ã¯ãŸã ããŸããïŒããã¯ãšã³ããšã³ãžãã¢ã¯4人ã®ã¿ã§ãïŒã®ã§ãå¿é ããå¿ èŠã®ãªãã·ã¹ãã ãããã®ã¯ãšãŠãã¯ãŒã«ã§ãã ç§ãã¡ã¯åŸæ¥å¡ãåéããŠããŸãã®ã§ããã®ãããªã¿ã¹ã¯ãããªãã®æ³ååãããããå Žåã¯ãé£çµ¡ãã ãã ã