ä»æ¥ã¯ãšè©±ããžã«ã³ãŒã«ã¿ãŒ ã建ç¯å®¶ãšåœå
ã®ãªãŒãã³ãœãŒã¹DBMS Tarantoolã®éçºè
ã
OLTP-è² è·ã¿ã©ã³ãã¥ã©ã«é«ã垯åå¹
ãæäŸããèœåã®ããã«ã¯ããã€ãã¯äŒæ¥ã®äžã§ç¹å¥ãªäººæ°ãšéèŠã楜ãã¿ãŸããã ä»æ¥ãã¿ã©ã³ãã¥ã©ã¯ãåœå
æ倧ã®WebãµãŒãã¹ãéä¿¡äºæ¥è
ãããã³å€§äŒæ¥ã®ä»ã®å€ãã®ä»£è¡šè
ã«ãã£ãŠäœ¿çšãããŠããŸãã
PG Day'17ãã·ã¢ã§ã¯ãã¯ã·ãŒãªãŒãä¿æããéäžçãªãã³ãºãªã³ã³ãŒã¹ã Tarantoolãšnginxã® ïŒã¡ããã©2ã€ã®ããŒã«ã䜿çšããŠOLTP-ã¿ã¹ã¯ã®ããã«ã¹ã±ãŒã©ãã«ãªåæ£ã¢ãŒããã¯ãã£ãæ§ç¯ããŸãã ãã¹ãŠã®ã³ãŒã¹ã®åå è
ã¯ãã¢ãŒããã¯ãã£ãšã¿ã©ã³ãã¥ã©ã®å
éšæ§é ã«ã€ããŠã®ç°¡åãªæè²ããã°ã©ã ã«åå ããåŸããã©ãŒã«ããã¬ã©ã³ãã§ã¹ã±ãŒã©ãã«ãªãµãŒãã¹ãæ§ç¯ããããã«æåããããã®éã®3 hchasovuyuã®ç·Žç¿ãã«çªå
¥ããŸãã
ä»æ¥ã®äŒè©±ã®æ çµã¿ã®äžã§ããŽã¡ã·ãªãŒã¯ã¿ã©ã³ãã¥ã©ã®éçºãšãã®ããã»ã¹ã§ã®åœŒã®åœ¹å²ã«ã€ããŠèªããã¿ã©ã³ããŒã«ã䜿çšããŠè§£æ±ºãããã¿ã¹ã¯ã®äŸãå
±æããããŒããããã®æ§é ãšãã®äžã®æ°ãããæ©èœãã®å€èŠ³ã®åçã«ã€ããŠè©±ããŸããã
PG DayïŒããžã«ãããªãã«ç°¡åã«èšã£ãŠãã ãããããªãã¯èª°ã§ãããããªãã¯äœãããŸãããããªãã¯ã©ããªåé¡ã解決ããŸããïŒ
ããžã«ïŒI -ã·ãã¢éçºè
/ã¢ãŒããã¯ãã ç§ã®è²¬ä»»ã«ã¯èšèšãšéçºãå«ãŸããŸãã ç§ã®äœåãäžèšã§è¡šãã®ã¯é£ããã çŸåšãç§ã¯ãªãŒãã³ãœãŒã¹ã®Tarantoolãããžã§ã¯ããéçºããã³æšé²ããŠããŸãã ãŸããæã
ç§ã¯äŸCentrifugoïŒWebã«ãã®ã¡ãã»ãŒãžã»ãããŒã«ãŒïŒã®ããã«ãå€éšã«ä»ã®ãããžã§ã¯ããæ¯æŽããŸãã
ç§ã®æ
ç±ãšããã°ãããã¯ãããªã¹ããªãŒãã³ã°ã§ãã 人çã§äžåºŠãã£ãŠã¿ãŸãããRBCã§ãRBC-TVã®ããã¯ãšã³ãå
šäœãäœæããŸããã ããã¯ãããããã¢ãŒããã¯ãã£ãšã³ãŒãã®ç¹ã§ç§ã®æãèå³æ·±ããããžã§ã¯ãã§ããã
PG DayïŒTarantoolãããžã§ã¯ãå
ã§æ£ç¢ºã«äœãããŠããŸããïŒ
ããžã«ïŒTarantoolãã³ã¢éšåããã³å€éšã¢ãžã¥ãŒã«ã®éçºã«åºã¥ããŠåºæ¬çã«ã¯ãèšç»ãšå»ºç¯ã®æ±ºå®ã äŸãã°ãç§ããéçºïŒTarantoolã«ãŒã« - libcurl'a Tarantoolã«çµåãããŸãã Tarantool MQTT - MQTTã®ãã€ã³ãã£ã³ã°ã ãããŠnginxã®ããã®ã¢ãžã¥ãŒã«-ãªããŒã¹ãããã·ã¯ã¿ã©ã³ãã¥ã©ãããã³ã«ã¹ããªãŒã ãšãã®éã«å€æããHTTPèŠæ±ããã¢ãžã¥ãŒã«ã§ãã ã«ãŒãã«ã«é¢ããŠã¯ãæè¿ãå€éšãããžã§ã¯ããã«ãŒãã«ã«è»¢éããããšã«åå ããŸããã
PG DayïŒã¿ã©ã³ãã¥ã©ã®éçºã«ã¯äœäººã®äººãé¢ãã£ãŠããŸããïŒ ã«ãŒãããŒã ã®ãããªãã®ã¯ãããŸããïŒ
ããžã«ïŒã¯ãããã¡ããã å®éããããã¯éçºè
ã ãã§ã¯ãããŸããã ãããã¯ãŸãããã¯ãã«ã«ã©ã€ã¿ãŒã§ãããå°ãããŒã±ãã£ã³ã°ãè¡ã£ãŠããŸãã ç§ãã¡ã¯å®å
šã«21人ã ãããã¯ãã¢ã¹ã¯ã¯ã®Mail.ruã®ãªãã£ã¹ã«åº§ã£ãŠãããã¿ã©ã³ãã¥ã©ãéçºããŠãã人ã
ã§ãã ç§ãã¡ã®ã³ãã¥ããã£ã®äººã
ã¯ããªã倧ããªè²¢ç®ãããŠããŸãã ããšãã°ãããŸããŸãªèšèªçšã®æ°ããã³ãã¯ã¿ãè¿œå ããæ©èœãèãåºããããã«å®è£
ããŸãïŒ
PG DayïŒããŒã¿ããŒã¹ãšããŠã®ã¿ã©ã³ãã¥ã©ã®ã¯ãŒã«ãã¯ïŒ ä»ã®è£œåãšã®éãã¯äœã§ããïŒ
ããžã«ïŒçãã¯ç°¡åã§ã- OLTPã ã¿ã©ã³ãã¥ã©ã§ã¯ãæéã®çµéãè² è·ã®ãããæ·±å»ãªå£åãªã©ã®åé¡ã¯ãããŸããã ãã¹ãŠã®ãã£ã¹ã¯ããŒã¿ããŒã¹ãããã³äžéšã®ã€ã³ã¡ã¢ãªã倧å¹
ã«äœäžããŸãã ããã¯è² è·ã®éããšåæã«ã ã¹ãããã·ã§ãããäœæãããäŸãã°ãåãã¯ã€ãã®Redisã -ç§ãã¡ã¯ãè² è·ã®äžã§ããããç§ã®ããŒãã¡ã¢ãªã®ãµã€ãºãšãã¬ãŒãã«X2ãååŸããŸãã Tarantoolã«ã¯ãããã®æ¬ ç¹ã¯ãããŸãããããã©ã³ã¶ã¯ã·ã§ã³ã«å¯Ÿå¿ããŠããŸãã
çŸåšãäºæž¬å¯èœãªåŸ
æ©æéïŒå¿çæéïŒãšäºæž¬å¯èœãªäœäžã§å®éã«æ©èœããããŒã¿ããŒã¹ã¯ã»ãšãã©ãããŸããã ã¿ã©ã³ãã¥ã©ãã補åãã§ã©ã®ããã«æ©èœããããæ¯æ¥èŠãŠãããè² è·ãããã¡ã€ã«ãå€æŽãããŠãã1幎ã§ãã®æ¹æ³ã§æ©èœããããšãç¥ã£ãŠããŸãã
PG DayïŒé«ããã©ã³ã¶ã¯ã·ã§ã³è² è·ã§ã®äœæ¥ã«ããããã®äºæž¬å¯èœæ§ãšå®å®æ§ã¯ã©ã®ããã«éæãããŸããïŒ
ããžã«ïŒ å
éšã¢ãŒããã¯ãã£ã äžè¬çã«ãããã¯ç§ã®ãã¹ã¿ãŒã¯ã©ã¹ã«ãªããŸãã ãããã£ãŠãç§ã¯ä»è©±ããããããŸããã ç§ãä»ããªãã«èšã£ãããããã¯èŠ³å®¢ã«ãšã£ãŠããŸãé¢çœããªãã§ãããã 誰ãæ°ã«ããŠããã®ãã圌ã¯ã°ãŒã°ã«ã§ãã³ã³ã¹ã¿ã³ãã³ã»ãªã·ããã®ããã€ãã®èšäºãšå ±åæžãå
¥æããŸãã ãããŠããã¹ã¿ãŒã¯ã©ã¹ã«æ¥ãã»ããããã§ãïŒ çŸããå³ãæããã¹ã©ã€ãããªãããã»ã©éãå®å®ããŠæ©èœããã®ãã説æããŸãã ã ããããå°ã容èªããŠãã ããã
PG DayïŒäºæ³å€ã§ããããŸãããã®ãããªçãã¯åãå
¥ããããŸãïŒ ç§ã¯ãããç解ããŠããããã«ããã¹ã¿ãŒã¯ã©ã¹ã§çè«ãšå®è·µãçµã¿åãããããšãèšç»ããŠããŸããïŒ
ããžã«ïŒç§ã¯ããã€ãã®ã»ã¯ã·ã§ã³ãèšç»ããŠããŸãã æåã®ã»ã¯ã·ã§ã³ã¯ãç·Žç¿ãªãã§æçã§ãã ããã¯ãããäœã§ããããã¿ã©ã³ãã¥ã©ãå
åŽã«é
眮ããæ¹æ³ã«ã€ããŠã§ããšãã®äœ¿çšæ¹æ³ã ãŸãããã®äžã«ããåé¡ã«ã€ããŠã説æããŸãã ããã¯éåžžã«éèŠã§ã-æäœäžã®ãã¹ãŠã®åé¡ã«ã€ããŠç¥ãããšïŒ 第äºéš-ããã¯éåžžã«è»œãç·Žç¿ã«ãªããŸãã ç§ãã¡ã¯ã ã¢ããªã±ãŒã·ã§ã³ãµãŒãã®ã©ã®ãããªèãæ¹ããããã©ã®ããã«åäœããããåç
§ããŠãã ããTarantoolãèµ·åããŸãã 3çªç®ã®éšåã¯æãå°é£ã§ããæ¬æ ŒçãªãµãŒãã¹ãäœæãããããã¹ã±ãŒãªã³ã°ããã±ãŒãã®ãã§ãªãŒãšããŠããã®ãã¹ãŠããã©ãŒã«ããã¬ã©ã³ãã«ããŸãã ãŸãšããŸãã çè«ã¯çŽ50åçšåºŠã§ããã®åŸã¯ç·Žç¿ã®ã¿ã§ãã
PG DayïŒåå è
ã¯ãããã€ãã®ããã°ã©ãã³ã°èšèªãªã©ãç¥ã£ãŠããå¿
èŠããããŸããïŒ å®è·µçãªéšåã«åå ããããã®ãã¬ãŒãã³ã°ã®ã¬ãã«ã¯ïŒ
ããžã«ïŒããããå¿
èŠã«å¿ããŠãã©ãããããã ãã Luaèšèªã¯åå§çã§ããçããã«èª¬æããŸãã æ§æãã¡ã€ã«ã¯githubããååŸã§ããŸãããªã³ã¯ãæäŸããŸãã
ããžã«ïŒããã§ãã äºæž¬ã¹ã±ãŒãªã³ã°ãšãã©ãŒã«ããã¬ã©ã³ã¹ ïŒæã
ã¯2ã€ã®èŠä»¶ãæºãããããžã§ã¯ããäœæããŸãã å®éã«ã¯ãTarantulaãšnginxïŒç§ã話ããéåžžã«ãªããŒã¹ãããã·ã¢ãžã¥ãŒã«ïŒã®2ã€ã®æè¡ã䜿çšãããŸãã
PG DayïŒã¿ã©ã³ãã¥ã©ã«è¿œå ãããæ©èœã¯äœã§ããïŒ ããã«è¡šç€ºãããã¯ãŒã«ãªãã®ãä»ããå®è¡ããŠããŸããïŒ
ããžã«ã¯ïŒãŸããç§ãã¡ã¯å°å瀟äŒã«åœ±é¿ãäžããå¯èœæ§ãå®å
šã«ãªãŒãã³ãªããŒããããããæã£ãŠããããšãèšãããã§ãã SQLã¯ãããããçŸåšéçºãããŠããæ倧ã®æ©èœã®1ã€ã§ãããã¢ã«ãã¡çã¯æ¢ã«å©çšå¯èœã§ãã ç§ãã¡ã®èšç»ïŒå®å®ããç¶æ
ã«è¿œãã€ããŠãããåæ£SQLãšæ¬æ Œçãªã¯ãšãªãã©ã³ããŒã®å®è£
ãéå§ããŸãã
PG DayïŒSQLã¯SQLæšæºãŸãã¯ããçš®ã®æå³ã§ããïŒ
ããžã«ïŒç§ãã¡ã¯ SQLite3ã®ããŒãµãåããŸããã SQLæšæºãç§ã®èšæ¶ãæ£ããæ©èœããå Žåã2003幎ã ããããããã«ã¯ããã€ãã®éæšæºçãªãã®ãããããšãç解ããå¿
èŠããããŸãã
PG DayïŒTarantulaã®çµã¿èŸŒã¿SQLãäžè¬çãªDBMSãšã®äºææ§ã«ããèšç»ã¯ãããŸããïŒ
ããžã«ïŒç§ãã¡ã¯ããã®ãããªèããæã£ãŠããããæ£çŽãªãšãããæã
ã¯ããã«å€ãã®äŸ¡å€ã衚瀺ãããŸããã ããã§ããç§ã¯ããçš®ã®ã¢ã€ãã³ãã£ãã£ãä¿ã¡ããã§ãã ãããè¡ãããå Žåããããè¡ãããã«ç§ãã¡ã«é Œãç¹å®ã®é¡§å®¢ã®ããã«ã ãããããããžã§ã¯ãå
šäœã®éçºã®äžç°ãšããŠãããã¯ããããã«ãããŸããã ããŒããããã§ããããã¯èŠã€ãããŸããã
PG DayïŒã¿ã©ã³ãã¥ã©ã¯ãéå§æã補åã®çºå£²æããŸãã¯æ¢åã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã¢ããªã±ãŒã·ã§ã³ã®äŸããããŸããïŒ
ããžã«ïŒééããªããæ°ãããããžã§ã¯ããã¯ããŠãã ããã å€ãTarantoolã§ã¯ãããã€ãã®åé¡ã解決ã§ããŸãã OLTPã¯Tarantoolã®çæ³çãªã±ãŒã¹ã§ãããããã¯ãã¹ãŠã®ãããžã§ã¯ãã«åœãŠã¯ãŸãããä»åŸåœãŠã¯ãŸãããšãæãåºãããŠãã ããã
ããã¯ãæè¿åªããã±ãŒã¹ã ã£ãïŒã¿ã©ã³ãã¥ã©ã¯ãMySQL Clusterå
ã®èªã¿åãå°çšã¬ããªã«ãšããŠäœ¿çšãã倧ãã«å©ãããã®ãã¹ãŠã¯ãMySQL Clusterã®ç·©åãšå¿çæéãåäžãããŸãã MambaïŒWambaïŒç€Ÿã«ãã£ãŠäœæãããŸããã
ã³ãã¥ããã£ã«ã€ããŠèšãã°ãMambaã®ååèªèº«ããããã®ããŒã¿ããŒã¹éã®ã¬ããªã±ãŒã·ã§ã³ã¡ã«ããºã ãéçºããäžè¬çãªäœ¿çšã®ããã«ãªãŒãã³ãœãŒã¹ã«å
¥ããŸããã ã³ãã¥ããã£ãã£ããã®åå è
ãè€è£œã«ã€ããŠç©æ¥µçã«è³ªåãå§ãããšããç§ãã¡ã¯çããã«ã€ããŠç¥ã£ãŠããŸããã
ããããæã
ã¯Tarantoolã§Oracle GoldenGateãè€è£œãéããŠè¡ãããäžã€ã®ã¯ã©ã€ã¢ã³ããæã£ãŠããŸãã ã¹ããŒã ã¯åãã§ããOLTPããŒãå
šäœãTarantoolã«è»¢éãããŸãã ããã«ããã圌ãã¯å€ãã®ãéãç¯çŽããå¿çæéãå¢ããããšãã§ããŸããã
PG DayïŒäŒç€Ÿãã¿ã©ã³ããŒã«ã圌ãã®çŸå®ã«é©å¿ãããããã«ããªãã®å°éç¥èãåŒãä»ããããªããäœããã¹ãã§ããïŒ
ããžã«ïŒå¥çŽããŒã¹ã§ã
PG DayïŒã¿ã©ã³ãã¥ã©ã®èª€çšã®äŸã¯ãããŸããïŒ ããã«é¢ããæšå¥šäºé
ã¯ãããŸããïŒ
ããžã«ïŒã¯ãã Tarantoolã®1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã䜿çšããŠéåžžã«é£ããåæãè¡ãããšããŠãã人ã
ãããŸãïŒ ç°¡åãã€æè»ã«æ¡åŒµã§ããéå±€åã¢ãŒããã¯ãã£ãæ§ç¯ããããšããããŸããã ããã¯ãç§ãééããæãäžè¬çãªã¢ã³ããã¿ãŒã³ã§ãã
å
žåçãªã¹ããŒãªãŒã¯æ¬¡ã®ããã«ãªããŸãããŸãã圌ãã¯å°ããªãªã¯ãšã¹ããåºããé«éã§æºè¶³ããŸãã ãã®åŸã圌ãã¯éåžžã«éåžžã«éãèŠæ±ãåºãå§ããŸããTarantoolã®åäœã¯æªããããã¯éåžžã«è«ççã§ããOLAPã«ã¯ãŸã£ããç°ãªãã¢ãŒããã¯ãã£ãå¿
èŠã§ãããèšèšæ®µéã§æ€èšããå¿
èŠããããŸãã Tarantoolã¯OLAPããŒã¹ãããããŸããããããã¯æè¯ã®ã±ãŒã¹ã§ã¯ãããŸããã
PG DayïŒTarantulaãå®å®ããé«éãªOLââAPã«é©ãã補åã«ããèšç»ã¯ãããŸããïŒ ãããšãã圌ã®ã€ããªãã®ãŒã«ãŸã åããŠããŸããïŒ
ããžã«ïŒèãã¯ãããŸãããããã¯ãŸã ããŒããããã§ã¯ãããŸããã ç§ãã¡ã¯èªåã®åŸæãªããšãããããšããŠããŸãã ããªãã¡- å°ããªå€æ°ã®ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããããã«ãããã¯éåžžã«æ確ã§å€§ããªåžå Žã§ãã ã©ãã«ç§»åãããã¯æ確ã§ãã ç¹å®ã®é¡§å®¢ãªãã§å€§èŠæš¡ãªOLAPéçºãéå§ããããšã¯ãè¯ãæ¹æ³ã§ã¯ãããŸããã
PG DayïŒçŸåšã®ããŒããããã¯ãçŸåšã®èŠä»¶ãšå®éã®ãŠãŒã¹ã±ãŒã¹ã§æ§æãããŠããŸããïŒ
ããžã«ïŒããã§ãã ããŒããããã«ã¯ããã€ãã®ç°ãªãã¿ã€ãã®ã¿ã¹ã¯ããããŸãã éåžžã«å°ããªãã®ïŒå€§ãŸãã«ãããã€ãã®ãªãã·ã§ã³ãè¿œå ïŒãšéåžžã«å€§ããªãã®ïŒä¿®æ£ãã¹ã倧ããªåé¡ïŒããããŸãã æ°éçº -ä»ã®ã¿ã€ãããããŸãã ããã¯ãã¹ãŠãã客æ§ããŠãŒã¶ãŒãããã³è£œåã«å¯Ÿããåœç€Ÿç¬èªã®ããžã§ã³ã®èŠä»¶ã§æ§æãããŠããŸãã
PG DayïŒè£œåã®ããŒããããã«å«ãŸããã¹ãäœããã®æ©èœãããããšãã©ã®æç¹ã§èªèããŠããŸããïŒ
ããžã«ïŒããã¯è€éãªè³ªåã§ããã ããã¯å
šãç°ãªãæ¹æ³ã§èµ·ãããŸãã ç§ã¯æè¿ã®çµéšãèªãããšãã§ããŸãã
ãã®ãããªã¿ã¹ã¯ããããŸããïŒHTTPã¹ããŒã¿ã¹ãšããããŒãTarantoolããnginxã¢ãžã¥ãŒã«ã«è¿ãæ©èœãè¿œå ããããšã ãã®ã¢ã€ãã¢ã¯çŽ1幎ã®éä¿çãããå€ãã®äººããã®ã¢ã€ãã¢ã«æ祚ããŸããããç§ã®æã¯å®è£
ã«è³ããŸããã§ããã ãã¿ããªãããã«ã¯SOAPãšRESTããããŸããæ¬åœã«ã¹ããŒã¿ã¹ã³ãŒããå¿
èŠã§ããã åœç¶ããã®æ©èœã¯ããã«ãªãŒãã³ãœãŒã¹ã«ç»å ŽããŸããã
PG DayïŒãã¹ã¿ãŒã¯ã©ã¹ã®å
容ã«ã€ããŠã¯ããã§ã«å°ã話ããŸããã ãããã誰ã«åœ¹ç«ã€ã®ã§ããããïŒ
ããžã«ïŒç§ã¯ããã°ã©ãã³ã°ã«ã€ããŠãã¢ãŒããã¯ãã£ã«ã€ããŠè©±ãã ãã-ç§ã¯åŒ·ããäœãšããããšã ãããã£ãŠããŸã建ç¯å®¶ãéçºè
ã«ã äžè¬ã«ãã¿ã©ã³ãã¥ã©ã«åºã¥ããŠæ°ãããããžã§ã¯ããäœæããæ¹æ³ãåŠã³ããããŸãã¯æ¢åã®ãããžã§ã¯ãã«é©çšããããã¹ãŠã®äººãæåŸ
ããŸãã
PG DayïŒããããšããVasilyïŒ ããªããç§ãã¡ã«äžããŠãããæéã«æè¬ããŸãã ãµã³ã¯ãããã«ãã«ã¯ã§ãäŒãã§ããããšã楜ãã¿ã«ããŠããŸãã
ããžã«ïŒçžäºãããŒãïŒ æ¬åœã«æ¥œãã¿ã«ããŠããŸãã ããã¯ç§ã«ãšã£ãŠèå³æ·±ãçµéšã«ãªãã§ãããã