Project Tsurugi(å)ã¨Asakusaã«ã¤ã㦠Â
Project Tsurugi(å)ã¨Asakusaã«ã¤ãã¦
ã¤ãã§ã«Asakusa advent calendarã®åã
Â
â Tsurugiã®ç¹ã«NEDOããé¨åã«ã¤ãã¦
æ¥çµã®è¨äºã¯ãã¡ã
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00001/03044/
æ¬ç´ã¯ãã¡ãããããªï¼
https://www.nikkei.com/article/DGXMZO51692890R01C19A1000000/
Â
ã»NEDOã®ãµã¤ã
https://www.nedo.go.jp/content/100891996.pdf
Â
ã»ã¹ã©ã¤ãã¯ãã
ã»togetterã¯ãã
 https://togetter.com/li/1430683
Â ãæ¬æ¥ã§ããã°ããã¾ãå¤åãã«æ¸ã話ã§ã¯ãªãã®ã§ãããä»®ã«ãå ¬éãå ¥ã£ã¦ãã¦ãæ¥çµã®æ¹ã«ããè¦ªæ¹æ¥ã®ä¸¸ãçã¯è¨äºãåºã¦ãã¾ã£ã¦ããã®ã§ãå½äºè ã¨ãã¦ãä»ã®ç¶æ³ã®ææ³ãã¿ãããªãã®ããå¤ã§ããã¹ã£ãå 容ã®è£è¶³ã¨ãã¦é示ãã¦ããæãã«ãªãã¾ãã
ãããã«æ¸ãã¦ãå 容ã¯åºæ¬çã«NEDOã§å ¬éããã¦ããæ å ±ã®è§£èª¬ãªã®ã§ãç¹ã«ç´°ããæ å ±ãå¿ è¦ãªäººã¯ãã¡ãããåå¾ãã¦ãã ããã
Â
ã»NEDOããã«ã¤ãã¦
ãTsurugiã®NEDOã«é¢ããé¨åã¯ããã£ã¡ãå ¬åã«å ¥æãã¦ã第ä¸è ã®å¯©æ»ãéã£ãããã¸ã§ã¯ãã§ããç¾å¨ãç£æ»ãå«ãã¦ãéææ§ã»éç¨é©æ£æ§ãæ±ããããããã«å¯¾å¿ãã¤ã¤ä½æ¥ãã¦ãã¾ããå°ãå¾è¿°ããã¾ãããTsurugièªä½ã¯ã³ãã¥ããã£ãã¼ã¹ã®é¨åãããããã®é¨åã«ã¤ãã¦ã¯NEDOã¨ã¯é¢ä¿ããã¾ããã
Â
ã»æ¥çµããã§ã®ãè¦ªæ¹æ¥ã®ä¸¸ãã¨ããè¨ãæ¹ã«ã¤ãã¦
ãã¾ãåºæ¬çã«ãè¦ªæ¹æ¥ã®ä¸¸ãã§ã¯ããã¾ããããããããè¦ªæ¹æ¥ã®ä¸¸ããä½ãã¨ãã話ã§ããã»ã»ã»ä¸åã§ãå ¬çãªãéãå ¥ã£ãããè¦ªæ¹æ¥ã®ä¸¸ãã§ãããã¨è¨ãããã¨ããã®æå³ã§ã¯ãè¦ªæ¹æ¥ã®ä¸¸ãã«ãªã£ã¦ãã¾ãã¾ããããããã話ã§ããªãã¨æã£ã¦ãã¾ããï¼éã«å ¬éãå ¥ããªãã¦ããè¦ªæ¹æ¥ã®ä¸¸ããªãã®ã¯ãããã§ãããã¨æã£ã¦ãã¾ããï¼
ãããããå人çã«ã¯ãITã«ããããè¦ªæ¹æ¥ã®ä¸¸ãã¯ä»¥ä¸ã®ã¹ãã¼ã ãæãã¨çè§£ãã¦ãã¾ãã
-éãé¢ãããããããã¼ï¼ãã¨å£°ä¸ãã¦ã
-é©å½ãªãªã¼ãã¼ã¾ãã¯ã³ã³ãµã«ã£ã½ãäººãææ°æåãã¦ããããã¼ï¼ãã¨å¼å¿ãã¦ã
-ãã©ãã¼ã®æ°é伿¥ãããã¼ï¼éã声ï¼ï¼ããã¨ç¶ãã
ã¨ããã¹ãã¼ã ã§å§ã¾ãããã¸ã§ã¯ãçãªããã«ã ã¨å人çã«ã¯çè§£ãã¦ãã¾ãã
Â
ãä»®ã«ãè¦ªæ¹æ¥ã®ä¸¸ããããã®æå³ãªã®ã§ããã°ãä»åã®Tsurugiã«ã¤ãã¦ã¯ãã¾ã£ããéãã¾ãã
Â
ãããããã¯æå¿ã§éã¾ã£ã¦ããDBããTxããã®åå¼·ä¼ã»ã³ãã¥ããã£ã®å»¶é·ç·ä¸ã§ããããä»ã«é¸æè¢ããªãããã¡ãã£ã¨ããããèªåã§DBã¤ããã¾ããï¼ãã¨ãã話ã§å§ã¾ã£ãã®ãäºã®èµ·ããã§ãããã®åå¼·ä¼ã»ã³ãã¥ããã£ã¯ä»ãæ´»åãã¦ãã¾ãããNEDOã¨ã¯å¥ã«åãã¦ãã¾ãããã®æµãã®ä¸ã§ãå½ã®æ¯æ´ãå¾ãã®ã¯ããã§ã¯ãªãããã©ããªã®ãï¼ã¨ããè°è«ãç´ä½æ²æããã£ã¦ãã¡ã³ãã¼ã®ä¸ã§æ¯æ´ãåãã¦ããã¶ããã§ã¯ãªããã¨ããã¡ã³ãã¼ãNEDOããã«åå ãã¦ãããã¨ããå½¢ã«ãªã£ã¦ãã¾ãããã£ã¦ãç¾å¨ãNEDOã«ã¯åå ããã«ãTsurugiã®æ´»åã«åå ãã¦ããã¨ããã¯å®éã«ããã¾ãã
Â
ããã£ã¦ãæ¥çµããã®ãè¦ªæ¹æ¥ã®ä¸¸ãã®æå³ããèªåã®çè§£ãã¦ãããã¾ããããããå¤ãã®ITé¢ä¿è ãæ¶æã«å©ç¨ããè¨èã¨ãã¦ã®ãè¦ªæ¹æ¥ã®ä¸¸ãã§ã¯ããã°ãäºå®ã¨ç°ãªãããéã«ã1åã§ãå ¬éãå ¥ãã°ãè¦ªæ¹æ¥ã®ä¸¸ãã§ãããã¨ããæå³ã§ã®ãè¦ªæ¹æ¥ã®ä¸¸ãã§ããã°ããã®éãã§ããã»ã»ã»ãªãã§ãããªãã¨è¨ã£ã¦ããã¨ããã¨ãåç´ã«å¤ãªãã¤ã¢ã¹ããããã®ãããã ããã§ãã
Â
ã»ä½å¶ã¨ãã¦è¹é å¤ããªããï¼ã¨ããçåã«ã¤ãã¦
ãä½å¶å³ãã覧ã®éããç¸å½ãªä¼æ¥ã»çµç¹ã»å¤§å¦ãåå ãã¦ãã¾ãã宿½ããåèªã®ã¿ã¹ã¯ã®å²ãå½ã¦/管ç/ææç©ç®¡çã»NEDOå®äºå¾ã®æ®åã¸ã¢ããã¼ã·ã§ã³/ããæ¹ã¯ãåå è ã飿ºãåããªããåèªã§é²ãã¦ãã¾ãã
ãè¹é çã«ã¯ä¸ã¤ãã£ã¦ããããå½¹å²ãéãã¾ããå¦è¡çãªã¨ãã¾ã¨ãã¯æ±å·¥å¤§ã®æ¨ªç°å çã«ãé¡ããã¦ãã¦ãå ¨ä½ã®æ çµã»æ³çãªå¯¾å¿ã»å ¬çãªå¯¾å¿ã¯NECãããæ å½ãæè¡çãªæ¹åæ§ãããããã®DBã¨ãã¦ã®ããæ¹ã®ã¨ãã¾ã¨ãã¯Nautilusã¨ãããã¨ã§åãã¦ã¾ããããããã®è¹é ãããããã®å¾æã®ã¨ããã§æ°´å æ¡å ããã¦ããã¨ããã¨ãããã¨æãã¾ãããªã®ã§ãå¤åå±±ã«ç»ããã¨ã¯ãªãã§ããã
ããªããTsurugiã®ç¹ã«æè¡çãªæ¹åæ§ã»å¿è«ãæ çµãå ¨ä½ã®æ¹åæ§ã¨ãã¦ã®åæã¯åå è å ¨å¡ã§ææçµ±ä¸ãã¦ä¸ã§é²ãã¦ãã¾ãããã®æå³ã§ã¯è¹é ã¯å¤ãã¨ãè¨ãã¾ããããã¾ããã©ã³ã¹ã¨ã£ã¦ãã£ã¦ããã¨ããã®ãèªåã®æè¦ã§ãã
Â
ã»ããããéãè¶³ããªãããããªããã¨ããçåã«ã¤ãã¦
ãã¾ãDBã¨DBMSã¯éãã®ã§èª¤è§£ã®ãªãããã«ãä»åä½ãã®ã¯DBã§ãã£ã¦ãDBMSã¯Postgresã®ãå¤å´ããå©ç¨ããå½¢ã«ãªãã¾ããManagement Systemã¬ãã«ã¾ã§ã¹ã¯ã©ããã§ä½ãã®ã§ããã°ããããã«å ¨ãéé¡ãè¶³ãã¾ããããã ãã³ã¢ã®DBã ããä½ãã®ã§ããã°ãéé¡ã¨ãã¦æ±ºãã¦éå°ã¨ããããã§ã¯ãªãã§ãã
Â
â Tsurugiã®æç¾©ã«ã¤ãã¦
Â
ã»ãããããªãã§RDBãªã®ã
ããããã仿RDBãããã£ã¦è¨ã人ãå¤ããã¨æãã¾ããRDBãªãã¦ããä½åå¹´ãåã®æè¡ã§ãå 容çã¯æãå°½ãããã¦ãããããªãã®ï¼ã¨ããå°è±¡ã¯ããã¨æãã¾ããå®éãCPUã»ã¡ã¢ãªã¼ãè²´éã§ãåºæ¬ãDiskãã¼ã¹ã«ããæ§æ¥ã®RDBã®å»¶é·ç·ä¸ãªã®ã§ããã°ã°ããã®éãã§ã»ã¼æ°è¦ã«ããããã¨ã¯ãã¾ããªãã¨æãã¾ãã
ãããããªãããã³ã¢æ°ã¨å©ç¨å¯è½ã¡ã¢ãªã¼ãæåéãæ¡éãã«å¢ããç¾å¨ã®ãã¼ãã¦ã§ã¢ç°å¢ã§ã¯ãæ§æ¥ã¢ã¼ããã¯ãã£ã®Diskãã¼ã¹ã®RDBã§ã¯æ®å¿µãªãããåæãã¾ã£ããç°ãªãããããã©ã¼ãã³ã¹ãã§ã¾ããã
ãã¡ãã¼ã³ã¢ã»å¤§å®¹éã¡ã¢ãªã¼ãã¼ã¹ã¯ããããèãæ¹ãæ§æ¥ã®Diskãã¼ã¹ã¨ã¯ææ¬çã«ç°ãªããããã¾ã£ããæ°è¦ã«ä½ã£ã¦ããå¿ è¦ãããã¾ãããã®åéã¯ã¾ã ã¾ã çè«çã«ãæªæçã§ãããã§ãç ç©¶ã»éçºã®ä½å°ãããã¾ãã
Â
ã»æåç¨ãã³ãã¼ã¨ãããæ¹ã¾ããã«åè² ããæ°ãªã®ã
ãæè¡çã«ã¯ã¾ããã«åè² ããæ°ã§ããæ®éã«åç®ã¯ããã¾ããæè¡çã«ããã¯ãããã¨ãããã®ããªããã°ããããRDBã®éçºãªã©ãã¾ããã
ããããã¸ãã¹çã«ã©ããã¨ããã°ãã®è¦æ¨¡æã¯ãã¢ãªã¨å·¨äººãããã§ãããããã¾ãããã¯ããã§ããæè¡ãç§ã§ã¦ããããããããã®ã¾ã¾æ®åãã¦ãã¸ãã¹ã«ãªãã¨ã¯ã¾ã£ããæã£ã¦ãã¾ãããæ·¡ã ã¨æ®éã«ãã£ã¦ããããã鏿è¢ãæä¾ãã¦ãããã¨ãç®æ¨ã«ãªãã¾ãããã¡ãããå ¬éãå ¥ã以ä¸ãæ®åãåç¨ã¨ãã話ã¯åºã¦ãã¾ããããªã«ãããã¾ãèªåãã¡ã§ã¡ããã¨ä½¿ãããã¨ããã®ãæ¬é³ã§ããããããæåç¨ãã³ãã¼ã®ã¢ã¬ã¯ã³ã¹ããå«ãã¦ãã¡ãã£ã¨ã¤ãã¤ããªããããã
Â
ã»DBã ãä½ã£ãã£ã¦èª°ã使ããã§ããã
ãããã£ã¦ã¾ããæ®éã«ããã«ã¯ãããªããã§ãããªã®ã§ã使ããããããã«
1.OSSã«ãã
2.å¤å´ã¯å¯è½ãªéãPostgres
3.å²ã¨æ´¾æç®ã®ãæ¯è²ã®éã3種é¡ã®ãããã¿ã¤ãã¢ããªãæºåãã
ã¨ãããã¾ã§æºåãã¾ããããã§ãå³ããã®ã¯èªè¦ãã¦ãã¾ãã
Â
ã»ãã§æè¡çã«ã©ããã£ã¦ã®ã¯ã端çã«è¨ãã°
-ä½é 延忣ç°å¢ãåæ
-lockãã¼ã¹ã§ã¯ãªãtimestampãã¼ã¹
-order theoryã¨ãã¦ã¯POSETã®ãªãã®ç¹æ®ãªãµãã¿ã¤ããããã¯ãã¼ã³ã«ãã¤
-multi-versionãªä¸¦è¡æ§å¶å¾¡ã軸
-忣å¦çã«æé©ãªå¦çç³»/å®è¡è¨ç»ãè£ åããOLTP
-ç¾ç¶ã§ã¯æå ç«¯ã®æé©åãæåããOLAP
-OLTPã¨OLAPãã·ã¼ã ã¬ã¹ã«çµ±åããserializableãªHTAPãè¦éã«ããã¦ãã
ã«ãªãã¾ãããªããããããé£ããããªãã¨æ¸ãã¦ã¾ãããå¥ã«ããã»ã©å¤§ãããã®ã§ã¯ãªãã§ãã仿ã§ããã°æ®éã«èããã§ããããã¨ãããã®ãã¡ããã¨å ¥ãã¦ããã ãã§ããç¹æ®µã«å¥ãã¦ãã£ãã¨ãããã®ã¯ç®æãã¦ãã¾ããããæ¬¡ä¸ä»£ã®æ¨æºã®æéã«ãªããããªæèã¯ãã£ã¦ãã¾ãã
Â
â ãã¦ãããããã¯Asakusaçãªè©±ã§ãã
Â
ãAsakusaã®å®è¡åºç¤ã¨ãã¦Tsurugiãã©ãã¨ããããï¼ã¯ä»ã®ã¨ããã¯ç½ç´ã§ãããã¡ããNautilusã®ãã¸ãã¹ã¨ãã¦ã¯ãã客ããã®ãã¨ãèããã®ã§ããã°ãä¸ç¾©çã«ã¯èããã¹ãã¨ããã§ã¯ããã¾ãããTsurugiã¯å¥ã«Nautilusãå社ã§å ¨é¢ä¸»ä½ã§ãã£ã¦ããããã¸ã§ã¯ãã§ã¯ãªãããå ¬éãå ¥ã£ã¦ãã以ä¸ãç§ç©åçæ±ãã¯å³ç¦ã§ããæä¸ã«å ããã ãããæ£ããã¹ã¿ã³ã¹ã§ããããã¨ã¾ãå«ççãªè©±ã¯ãã¡ããåæã§ããã»ã»ã»å®éã¯æè¡çï¼ã©ã¡ããã¨ããã¨çè«çãªãã¬ã¼ã ã¯ã¼ã¯ï¼ãªè©±ã®æ¹ãåé¡ã§ãã
Â
ãã¾ãåæã®ç¢ºèªã§ãããã¡ãã¼ã³ã¢ã»å¤§å®¹éã¡ã¢ãªã¼ï¼NUMAï¼ã¯åºæ¬çã«åæ£ã·ã¹ãã ã§ãããªã®ã§ããããå¦çã¯ããã®ã¾ã¾åæ£ãããå¦çã«ãªãã¾ãããã£ã¦ã»ã»ã»åæ£ãããå¦çã§ã¯ã©ã®ãããªtransactionã¢ãã«ãæ¡ç¨ãã¹ããï¼ã¨ãããã¨ã«ãªãã¾ãã
Â
ãã°ãã¼ãã«ãªã¢ã«ããã¢ã§ã®ããããå¦çãã®è©±ãããã¨ãã¾ãæ¥æ¬çãããå¦çã¨ããã®ã¯ããã¨ã³ã³ã»ããã¨ãã¦äºã¤ã®æ§æ ¼ãæ´çããã¦ããªããã¨ãããã¨ãæµ®ã彫ãã«ãªãã¾ãã
ãä¸è¬çã«ã¢ã«ããã¢ã§ã¯ããã«ã¯å¦çã¨ãã¦ã®ãããå¦çã¨long transactionã¯å¥ã ã«ããã¦èãã¾ãããã«ã¯å¦çã¯è¤æ°ã®transactionãã¾ã¨ãã¦å¦çã¨ãããã¨ãæãã¾ãããã®ã¨ãone-transactionï¼ããªãã¡nested transactionï¼ã¨ããããããã¾ã§è¤æ°ã®transactionãã¯ã±ã¼ã¹ãã¤ã±ã¼ã¹ã§ããç¾å¨ã®ã¨ããã¯æ®éã«è¤æ°ã®transactionã§å¦çã¨ããèãæ¹ãæ®éã§ããã䏿¹ãlong transactionã¯ãã«ãå¦çãä¸ã¤ã®transactionã¨ãã¦å¦çãããä»ã®transactionã¨å¦çæéã®ã¹ã±ã¼ã«ãåããªããããããããåä»ãã¨ãããããã¨ãããã®ãæãã¾ãã
ãããããå¥ã®ã³ã³ããã¹ãã§è©±ããããã®ãæ®éã§ããåè ã®ãã«ã¯å¦çã§ã¯ã¹ã«ã¼ãããã®åé¡ã§ãå¾è ã®long transactionã§ã¯lockå¶å¾¡ã®åé¡ã§ãããããå°ãã«æ¤è¨ããã¾ããæ¥æ¬åºæï¼ã¨ãã£ã¦ããããã¨æãã¾ãï¼ã®ããããå¦çãã§ã¯ãæ®éã«äºè ã®è©±ãæ··å¨ãã¾ããæ´çããã¦ãã¾ããã
Â
ãAsakusaã§ãããã®æ··å¨ã®è©±ã¯åºæ¬æ´çãã¦ãã¾ãããã¾ããã£ã¦transactionããªãã®ã§è°è«ã®ç¡é§ã§ããHadoopããSparkããã§ã®å¦çã¯åºæ¬ã¯isolationã®ä¿è·ã¯éç¨å´ã®ã¿ã¹ã¯ã«ãªãã¾ããã忣å¦çã§lockã¨ãã¹ã«ã¼ãããèããã¨ã»ã³ã¹æªããã§ãããããã£ã¦ãã¾ããã£ã¦AsakusaâTsurugiã®çéã®åã«ããããããããå¦çã§ã®trasactionãã©ãèããããã£ããæ´çããå¿ è¦ããããã¾ãã
Â
ãç¾ç¶ã®Tsurugiã§ã¯ããã£ã¨MCSRã¯ã©ã¹ç¸å½ã®ã¢ãã«ã宿ããæ®µéã§ããã®ä¸ã®ãã髿¬¡ã®MVSRã«è¿ãã¢ãã«ã¾ã§ã®å®å¼åãé²ãã¦ããæ®µéã§ãããã®å®å¼åã§åæ£å¦çã»ãããå¦çã«ã¤ãã¦ç®å¦ãç«ã¦ãäºå®ã§ãããããå¦ççãªåæ£transactionã¯ã¾ã æ¤è¨ãã¤ãã¦ã¾ããããªã®ã§ãç½ç´ã§ãã¨ããããç¾æç¹ã§ã¯ç½ç´ã«ããããå¾ã¾ããã
Â
ã¨ã¾ãããã ã¨èº«ãèããªãã®ã§ãç¾å¨ã¾ã§ã®ãèªåå人ã®èãæ¹ãè¿°ã¹ãmemoãç½®ãã¦ããã¾ããããã¯å人ã®memoã«éãã¾ããã®ã§ããã®è¾ºã®æ±ãã§ãé¡ããã¾ãã
Â
åé¡ï¼
ããããå¦çã¨transactionå¦çã§ã®æå¤§ã®èª²é¡ã¯å¤§éã®writeã§ããããã¯RDBããã£ã¨ãè¦æã¨ããå¦çã§ãããããããåçã®åé¡ã«ãªãã¾ããç¹ã«single versionã®CSRåæã®ç¾å¨ã®RDBã§ã¯lockå¶å¾¡ãåæã§ããlong transactionã§å¤§éã«writeãããå ´åã¯æ®éã«DBã峿»ãã¾ãããã¼ããã©ããªã«é å¼µããããããã¯ã½ããã¦ã§ã¢ã®ã¢ã¼ããã¯ãã£ã®åé¡ã§ã©ãã«ããªãã¾ããã
Â
ã©ã¼ãããã£ã¦è©±ã§ãããååè«ã¨ãã¦ã¯ä»¥ä¸ã§ãã
Â
-multiversionãåæããããå¦çä¸ã¨ãã以å¤ã®å¦çã§versionãisolateãã
è¦ããã«ãããå¦çä¸ã®versionã¨ãã以å¤ã®å¦çãå¥versionã¨ãã¦ãã£ã¡ã管çããããããã«ãããä»ã®versionã«å¯¾ããtransactionã稼åãããã¨ãããã¨ãã§ãããããå¦çä¸ã§ãå¥ã®å¦çãconcurrentã«èµ°ããããã¨ãå¯è½ã«ãªãã¾ãããã£ã¨ãããã¯ããããMVã®åºæ¬çãªåçãªã®ã§ãããã¯âæ¬æ¥ã¯âå½ããåã®è©±ã§ããï¼ã¨ããã®ã¯ç°¡åã§ããããªã«ãèããªãã¨æ®éã«NPå®å ¨ã§å³æ»ã§ããï¼
Â
-ã¡ãã¼ã³ã¢ãå©ç¨ãã¦åæ£å¦çãååã¨ãã¦è¡ã
è¦ããã«ãã©ãã¦ã¹ã«ã¼ããããä¸ãããã¨ãããã¨ã§ãããã£ã¨ç«¯çã«è¨ãã°åæ£ãã¼ãã§ã¯ãªããã¡ãã¼ã³ã¢ä¸ã§Hadoopã¨ãSparkã£ã½ãå¦çãDBä¸ã§å®è¡ããã£ã¦è©±ã§ãããããæ®éã«ã¹ã«ã¼ãããã¯ä¸ããã¾ãããã®ãããã¯ãã§ã«Asakusa/M3BPã§å®ç¸¾ãããã®ã§ãåæã¯ããç¨åº¦ã¯ããã£ã¦ãã¾ããï¼ã¨ããã®ã¯ç°¡åã§ããããªã«ãèããªãã¨æ®éã«barrierã§è©°ã¾ãã¾ãããï¼
Â
以ä¸ãããã ãã§ãæ§æ¥ã®ã³ã¢å°ãªãã®diskãã¼ã¹ã®RDBãããæ¡éãã®ã¹ã«ã¼ããããåºãã®ã¯ç¢ºå®ã§ããã¨ããã®ã¯ç°¡åã§ããããã®ç¶æ³ã§ãä¸è²«æ§ãæ ä¿ãããæ¹æ³ã¯ã2019å¹´ç¾å¨ãä¸çä¸ã§è§£æ±ºæ¡ã¯åºã¦ããªãã¬ãã«ã§ããã¨ãããããããªã®ç¡çã ããæ¤è¨ããã ãç¡é§ãã£ã¦ã®ãä¸çã®ç¸å ´ã§ãã
Â
ã¾ããããããã¯ããã®ã§é å¼µãã¾ããã¨ãããã¨ã«ãªããã¨æãã¾ãã
ããã¯è¿½ã 説æããã¨ãã¦ãï¼ã¡ãã£ã¨é¢åãªæ°å¦/ã¡ã«ããºã ã使ã話ã«ãªãã®ã§ããã§ã¯èª¬æã¯çãã¾ããï¼
Â
ã¾ããä¸è¨ã®MVCCã¨åæ£å¦çãåæã¨ãã¦ãããããããããå¦çã®transactionããã©ãèãããï¼ã®ããã®æ´çã®ãã¤ã³ããAsakusaã®çµé¨ãã以ä¸ã«ä¸¦ã¹ã¾ããããã¯ç«¯çã«è¨ãã¨ã並åå¦çãã§ããé ã§Txåããæ¹ãããã®ã§ã¯ãªããã¨æã£ã¦ãã¾ããè¦ããã«ä¾ãã°ã»ã»ã»
Â
[å¦ç]
大éã®å¨åº«å¦çãåæã§ãã»ã¼å ¨å¨åº«ã«ã¢ã¯ã»ã¹ãã¦ä¸æã«ç¹å®æ¡ä»¶ï¼ç¸äºã«ç¬ç«ï¼ã«åã£ãå¼ãå½ã¦ãè¡ã£ã¦ããã¤ä¼çºãè¡ãããªãããã®ç·åè¨ã®ã¬ãã¼ããç®åºããã
Â
çä¼¼ããã¼ã¯ä»¥ä¸
Â
-PlanA
TX-begin
LOOP
å ¨å¨åº«ã«é 次ã¢ã¯ã»ã¹ï¼
ã¢ã¯ã»ã¹é ã«æ¡ä»¶ã«ãããããå¦çãå®è¡ï¼
åå¨åº«å¥ã«ä¼ç¥¨çºè¡ï¼
END_LOOP
ã¬ãã¼ã使ï¼
TX-commit
ã¾ãæ®éã¯ãªãã§ããã©ããªã«ãèããªãã¨ããããã§ã¯ããã¾ãã1ä»¶ã§ã失æããã°æåãããå®è¡è¨ç»çã«ã¯ä¸ç´ç·ã«é çªã«å¨åº«å¦çããã¦ããã¹ã¦å®äºãããã¨ã«éè¨ãã¦çµäºã失æã®roll backã¯æåããã
Â
-PlanB
LOOPï¼parallel
TX-begin
å ¨å¨åº«ã«é 次ã¢ã¯ã»ã¹ï¼
ã¢ã¯ã»ã¹é ã«æ¡ä»¶ã«ãããããå¦çãå®è¡ï¼
åå¨åº«å¥ã«ä¼ç¥¨çºè¡ï¼
TX-commit
END_LOOP
TX-begin
ã¬ãã¼ã使
TX-commit
ãããæ®éã«ãããããã¿ã¼ã³ã®ä¸ã¤ã«ãªãã¨æãã¾ããããã¯å®ã¯ä¼ç¥¨çºè¡ãã¹ããªã¯ãã»ã·ã¼ã±ã³ã¹ãªã¦ãã¼ã¯ãã³ãã¼è¦æ±ã ã£ããããã¨ããã§ã¤ã¾ãã¾ãããã ãããã以å¤ã¯concurrencyãä¸ããããã¨ã¯ãªã«ã失æããå ´åã«ãå¨åº«âå¦çâä¼ç¥¨ã®åä½ã§roll backã§ããã®ã§ãå ¨ä½ã®é²æã管çãããããä¼ç¥¨å¦çã®æ¥åä¾å¤ãå¨åº«é¢é£ã«ä¸é¨åæ ããããã¨ãã¨ãããããã諸è¬ã®äºæ ã§ãåãåºã¾ã£ã¦ãããã¨ãã«æå¹ã
Â
-PlanC
LOOP : parallel
TX-begin
å ¨å¨åº«ã«é 次ã¢ã¯ã»ã¹ï¼
ã¢ã¯ã»ã¹é ã«æ¡ä»¶ã«ãããããå¦çãå®è¡ï¼
TX-commit
END_LOOP
LOOP : non parallel / parallel
TX-begin
åå¨åº«å¥ã«ä¼ç¥¨çºè¡ï¼
TX-commit
END_LOOP
TX-begin
ã¬ãã¼ã使
TX-commit
å²ã¨æ±ç¨æ©ç³»ãããå¦çã§ã¯çéã®ãããããã¼ãconcurrencyã®é«ãå¨åº«å¦çã®ã¿ãå¥Txã«ãã¦ãä¼çºã¨ã¯å¥ã®Txã«ãã¦å¯è½ã§ããã°parallelã§å¦çã ãã ããªã«ãã®å¤±æãå¨åº«ç®¡çã¨ä¼ç¥¨ç®¡çã®åæ¹ã«ã¾ãããå ´åã¯ãã»ã¼ç¢ºå®ã«roll backã§ããªãã®ã§ãåãæ¶ãããããå¥ã«æµãå¿ è¦ãããã
Â
ãããå¦çã§Txãèããã®ã§ããã°ããã¶ãPlanBãCã§ããã¾ã以åã®RDBã ã¨æ®éã«PlanAã¨ãããã®ã§è«å¤ã§ããã»ã»ã»èãæ¹ã¨ãã¦ã¯ã
1.DBå´ãåæã«å¤æãã¦ãBãCãã夿ãã¦ããæãã«å®è¡ãã
2.ãããè¨è¨è ãBãCã夿ãã¦ããããå®è£ ãã
ç¾å®çã«ã¯2ã§ããããã
Â
ããã¨Asakusaãã©ãããé¢ä¿ããã¨ãã話ã§ãããAsakusaã§éçºããããã¨ããã人ã§ããã°ããã®è¨è¨ã¯ãã®ã¾ã¾Asakusaã§ã®éçºããã»ã¹ãã®ãã®ã ã¨ãããã¨ããããã¨æãã¾ããè¦ããã«ããããå¦çã§Txå¦çããã¶ã¤ã³ãããã¨ãããã¨ã¯ããã®ã¾ã¾ãAasakusaã«Txãå°å ¥ãããã¨ãã話ã¨ã»ã¼åãã«ãªãã¾ãããã®æå³ã§ãTsurugiã®ãããå¦çã¨Asakusaã¯åãè·¯ç·ã®ä¸ã«ããã¨ãã£ã¦ããã¨æãã¾ãã
Â
ãããªæãã§ãã
Â
以ä¸ãä»ã¾ã§ã®å°è±¡ã¨ãææ³ã§ããã
Â
ã¨ã«ããwrite intensiveãªããã¼ãããå¦çã£ã¦ã®ã¨ãç¾å¨ã®RDBã®Txå¦çã¨ããã®ã¯ãæãããç¸æ§ãæªãã§ããããããITå²ä¸ãã£ã¨ãçã®æªãçµã¿åããã®ä¸ã¤ã§ããããã°ããã»ã©å®æãã¾ãããã®åé¡ã¯ãªããªãç¹ç´ã®åãã¿ã§ãæ ¹ã£ãã«ããæ°çã¢ãã«ããæ ¹æ¬çã«åæ§æããªãã¨æãæã¦ã¾ããã
Â
ã»ã»ã»ããããªãããæ®éã«å¤§éã®æ¸ãè¾¼ã¿ãããªãããé«ã¹ã«ã¼ãããç¶æããã¾ã¾ã§ãæ®éã«åçºã®ã¯ã¨ãªã¼ãã©ãã©ãæã¡è¾¼ãã§ãåé¡ãªãåãã¦ããã¤ä¸è²«æ§ãæ ä¿ãã¦ã»ããã§ãããã仿ãããªãã¨ãã§ããªãã®ãï¼ã¨ãä¸è¬æ°éçã«ã¯æããããªãã§ãããä¸éã¯äººå·¥ç¥è½ã ãã·ã³ã®ã¥ã©ãªãã£ã ã¨ãã夢ã¿ãããªãã¨è¨ã£ã¦ããããããã®è¶³ä¸ã®åºæ¬ã®DBã§ããããªãã¨ããåºæ¥ã¦ãã¾ããããã§ãç°¡åããã«è¦ãã¦ããããã¾ãæ³åãçµ¶ããé£æåº¦ã§ã»ã»ã»ã»ãã¾ãããªãã¨ãé å¼µãã¾ãã
Â
ãããã«ããTsurugié å¼µãã¾ãã®ã§ãã¡ãã£ã¨ã§ããã®ã§å¿æ´ãé¡ããã¾ãã
Â
Â
Â