Asakusaã¨Tsurugiã¨ãããå¦çï¼æ¨å¹´ã«å¼ãç¶ãï¼
[æ¨å¹´ã«å¼ãç¶ã]
Â
Tsurugiã«ã¤ãã¦
詳細ã¯ä»¥ä¸
Â
ã»ããã¯ååã®ç¹°ãè¨
è¦ããã«RDBãä½ãã¾ããããã¨ãã話ãããããã¤ã³ã¡ã¢ãªã¼ã§ã¡ãã¼ã³ã¢ã¨ããECC(Epoch-based Concurrency Control)ã¨ããããããç¹é·ã¯ãããã©ãç®æ¨ã¨ãã¦ããæ©è½ã®ä¸ã¤ã«ãwriteãããå¦çã«å¼·ããã¨ãããã®ãããã
Â
â ãããå¦çã®å°é£ã
ãã®ããããç¹°ãè¨ã«ããªããåºæ¬çã«ã¾ããããããè«ã¨ãã¦writeå¦çã¯æ¢åRDBã¨ã¯ç¸æ§ãè¯ããªããããã¯åç´ã«æ´åæ§ãæããã(serializable)ããã®ã³ã¹ãã大ãããã¨ã«ãããããããç¸æ§ã®è¯ããªãwriteãããã«å¤§éã«ããã¤ä¸åº¦ã«æ¸ãè¾¼ããããã¯ããã«éãã¦ç¸æ§ãè¯ããªãã
Â
以ä¸ãä»å¹´ä¸å¹´ã®é²æçãªè©±
Â
â Tsurugiã®ç¾ç¶ã¨ãã¦
ç¾å¨ãTsurugiã§ã¯æ¬æ ¼çã«ãããå¦ç対å¿ã«å ¥ã£ã¦ãããä¸è¨ã®éãã®å°é£ãã常ã«ã¤ãã¾ã¨ãã®ã§ãä»å¾ã®å ·ä½çãªæ¹çã¯å¸¸ã«å¤æ´ãããã¨ãããã試è¡é¯èª¤ããªããã«ãªãã
Â
ç¾å¨ã®è¦éãã§ã¯ãå人çã«ã¯
1.ãããããããå¦çã®æ´ç
2.ãã³ããã¼ã¯ã®ä½æ
3.å¦çæ¹å¼ã®æ¤è¨
4.å®è£ ã¨å®è¡çµæã®æ¤è¨¼ã»ãã³ããã¼ã¯
5. 3-4ã®å¨å
6.ç®å¦ãã¤ãã段éã§ãã®ä»ãã¼ã«ã®æ´å
7.æéåãã¿ã¤ã ã¢ã¦ã
ã®é ã§éçºããã¦ãããã®ã«ãªãã¨æããç¾ç¶ã§ã¯ããã³ããã¼ã¯ã®ä½æãã大ä½ãããªæãããªãã§çµäºããå¦çæ¹å¼ã®å ·ä½çãªæ¤è¨ã«å ¥ã£ã¦ã段éã«ãªãã
Â
â ãããå¦çã®æ´ç
 å»å¹´ã®æ®µéã§ã¯ã¾ã ã¾ã æ´çã¯ã¤ãã¦ããªããã¼ããã¨ãã話ã ã£ããã©ãç¾æç¹ã¯å¾ã ã«æ´çãã¤ãã¤ã¤ãããã¾ãåæã¨ãã¦ã®ãããå¦çã¨ã¯ä½è ããã¨ãã話ã«ãªããã端çã«è¨ãã°ãããããæ¥åç³»ã®è¤éãªå¦çã§ãç¹ã«å¤§éã®read/writeãå«ãtransaction群ãã¾ã¨ãã¦å®è¡ããå¦çãã¨ãããã¨ã§ããããããåã®ã¨ã³ããªã¼ã®ç¹°ãè¨ã«ãªãããTxæ¥çç¨èªã§ã¯long transactionã¨ããè¨ãæ¹ãä¸è¬çã§ãããããâãããå¦çâã¨ããè¨ãæ¹ã¯æ¥æ¬åºæã ããã¾ã¨ãã¦å¦çãããã¨ãããã¨ã§ã¯ãæ®éã¯bulkã¨ãã表ç¾ã®æ¹ãããã
bulkå¦çã®å ´åã¯è¤æ°transactionãã¾ã¨ãã¦ãã¨ãããã¥ã¢ã³ã¹ããããlong transactionã§ã¯åä¸ã®txã§å¦çãé·ããã¨ããæå³ã®æ¹ãå¼·ããæ¥æ¬çãªããããå¦çãã¨ããæå³ã§ã¯bulkã®æ¹ãæ¬æ¥çãªæå³ã«è¿ãã
Â
ãã®ããããå¦çãã ããä»ã®ã¨ããã¯ãå ·ä½çã«ã¯ä»¥ä¸ã®äºã¤ã®ã«ãã´ãªã¼ãæ¤è¨ããã¦ããããããããããã¿ã¤ãã®ãã³ããã¼ã¯ãã§ãã¤ã¤ããã
Â
1.Readï¼Write back
å¦çãã¹ããã¼ã¿ã®å¡ãã¾ãä¸æã«æãã ãã¦ããã¦ããããã¹ãå¦çãæ½ããã®ã¡ã«ãä¸æã«æ¸ãæ»ãã大ããªIPO(input-process-output)ã®æµãã§å¦çãè¡ãã¹ã¿ã¤ã«ãæ§æ¥åã®æ±ç¨æ©ãããããã®ãç¹ã«ãã¡ã¤ã«ãã¼ã¹ã§ã®å¦çããã®ãä¼çµ±çãªãããå¦çãäºåã«ããç¨åº¦è¨è¨ããã¦ããã¦éçºããããã¨ãå¤ãããããå¦ç対象ã¨å¯¾è±¡ä»¥å¤ã®ãã¼ã¿ã®åé¢ãããããã®ã¨ãå¦ç失ææã®ãã¼ã¿ã®ãªã«ããªã¼ãé害対çæã®åãåããããããã
Â
2.Bulk long transaction
ä¸ã¤ä¸ã¤ã®é·ãå¦çãããã®ã¾ã¾ã¾ã¨ãã¦åºã¾ãã¨ãã¦æµããããããã®è¦æ¨¡ã®ï¼ãããã大æµã¯è¬ã«å·¨å¤§ãªï¼SQLãæºåãã¦ãã§ããLoopã§å ¨é¨ä¸æã«ï¼ãã¤ãé ã«ï¼å¦çãããã¹ã¿ã¤ã«ãã©ã¡ããã¨ããã¨RDBã§ã®SQLãã¼ã¹ã§ãªãã¨ããã¾ããã¨ãããªã¼ãã³ç³»ã®ãããå¦çã«ããè¦ãããã¿ã¤ãããããå¦ç対象ã¨å¯¾è±¡å¤ã®ãã¼ã¿ã®åé¢ããã¥ããããªã³ã©ã¤ã³ãããå¦çã§ä½¿ããããã¨ãå¤ããåã ã®ã¬ã³ã¼ããã©ãã©ãæ´æ°ã»åç §ãããªãããåæã«ããç¨åº¦è¦æ¨¡ã§å®æçã«éè¨ã»ç· ãå¦çããªã¢ã«ã¿ã¤ã ã§è¡ããéããã«ä¸æ¸ãæ´æ°ã®å¿ è¦ãããæã®å¦çãå¦ç失ææã»é害çºçæã®å¯¾å¿æ段ãDBã®æ©è½ã«å¼·ãä¾åãããããå°è¦æ¨¡ãªãã®ã§ããã°ããæ軽ã«éçºã§ããä¸æ¹ã§ã巨大åããã¨ãã®ã³ã¹ãï¼å¦çæéã»éçºã¡ã³ãå·¥æ°ï¼ãï¼å¤§æµã®ã¦ã¼ã¶ãäºåã«è¦ç©ãã£ãã³ã¹ãããï¼å¤§ããè·³ãä¸ãããã¨ãå¤ãã
Â
â ç¾å¨ã®ã¨ã³ã¸ã³ã¨ãããå¦ç
ç¾å¨ãTsurugiã®å¦çã¨ã³ã¸ã³ã«ã¤ãã¦ã¯ã2ã¤ãæ¤è¨ãã¦ãããããã¾ã§æ¤è¨ã§æ¬å½ã«ã©ããªããããããªããã»ã»ã»æ¬æ¥ãªããã¾ãå ¬ã«ãã¹ããã®ã§ã¯ãªãããã£ã¨éæ¿ã«ãªã£ã¦ããæ¸ããæ¹ãããã®ã ãã©ãNEDOãããªãã§å¤å°ãµããµãã§ãé示ãã¹ããã¨ãã話ã
Â
Sirakamiï¼ç½ç¥ï¼
SILOãã¼ã¹ãããç¨åº¦ã®å®è£ ãè¡ãã¤ã¤ããããã¡ãã¯å¤åãã¡ã¼ã¹ããã§ã¤ã¹ã¨ãã¦æä¾ãããã¨æãã
OCCãã¼ã¹ã«ãªãã®ã§ãæ®éã«writeã¯ä¸å©ã«ãªããread heavy㧠writeã¯å°ã ãã¨ããã¯ã¼ã¯ãã¼ãã§ã¯ç¾æç¹ã§ã¯ä¸è²«æ§ãæ ä¿(serializable)ããä¸çæå¼·ãããã³ã«ã®ä¸ã¤ãã·ã³ãã«ã§ãã¤å¼·é±ããã ãwriteã«ã¤ãã¦ã¯ãæ¿ããä¸å©ã§ããã
Â
OCCã®æ§æ ¼ä¸ãBulk long transactionã¯åãã¦ããªãããªã«ãèããã«ç´°ããçãå¦çã¨write heavyãªbatchå¦çãæ··å¨ãããå ´åãå ´åã«ãã£ã¦ã¯(back-offã©ãã ããããã)çµäºããªãå¦çãçºçããå¯è½æ§ãããããã£ã¦ããããå¦çãå®è£ ããã®ã§ããã°ãæ®éã«Read and write-backã¹ã¿ã¤ã«ã«ãªããOCCã«ãªãããã®æå½ããããã¤ãããtransparentã«ãªããããªå½¢ã«ããå¿ è¦ãããã
Â
Ozeï¼å°¾ç¬ï¼
MVSRãã¼ã¹ããã¡ãã¯ã¾ã è¨è¨ã®è©¦è¡é¯èª¤æ®µéãSirakamiãTSãã¼ã¹ã®OCCã§ããã®ã«å¯¾ãã¦ããã¡ãã¯ä»ç¾å¨ã¯TSãã¼ã¹ã§ãlockãã¼ã¹ã§ããªãç¹æ®ãªãããã³ã«ãããããåç¬ã®ã¨ã³ã¸ã³ã¨ãã¦ã¯Tsurigiã®æåã®ãªãªã¼ã¹ã§ã¯è£½ååã¯æéçã«ç¡çã ã¨æãããããã¿ã¤ãã¨ãã¦æä¾ãããå¯è½æ§ããããã¨ããã¬ãã«ã
Â
MVSRãã¼ã¹ãªã®ã§å½ç¶serialization空éã¯åºãï¼non-deterministicã§ããã°çè«ä¸ãã£ã¨ãåºãï¼ããã®åã ãwriteã«ã¯æå©ã«ã¯ãªãããã ããã¡ã«ããºã ãè¤éã«ãªãã®ã§ãOCCã«æ¯ã¹ã¦ãç¹ã«åç´ãªã¯ã¼ã¯ãã¼ããé »çºãããããªå ´åã¯ä¸å©ã«ãªãã
Â
ãããå¦çã«ã¤ãã¦è¨ãã°ãReadï¼Write back / Bulk long transactionã®ã©ã¡ããå¯è½ã«ãªããå¥æ®µç¹å¥ãªè¿½å çãªã¢ã¼ããã¯ãã£ã¯å¿ è¦ãªãã
Â
â Sirakamiã¨Ozeã®æ¯è¼ã«ã¤ãã¦
Ozeã¯ã¾ã ãæ¤è¨æ®µéã§ãããªãã®ã§ãæ¯è¼äºã ã¯å½ç¶ææå°æ©ã§ã¯ããããã©ããã¶ã¤ã³çã«ã¯å¥ãã®ã§ãããã¨ã¯æãããRead主ä½ã§ããã°ãã»ã¼ã¶ã£ã¡ããã«Sirakamiã«ãªããã大éã®Write主ä½ã§ããã°ãOzeã®å§åã ã¨æããã»ã»ã»ã¾ãè¦ããã«çãä¸ããã¹ãã£ã¦è©±ã«ãªããããããªæå¼·ãªãã®ããã£ããã§ããã°ä¸è©±ã¯ãªããã¨ãã話ã§ãããªããWrite heavy batchã«é¢ãã¦è¨ãã°ãå½ç¶Ozeã«è»é ããããã¯ããSirakamiã§ãå½ç¶å¯¾å¿ã¯ããããå¶ç´ãã¤ãã¨æãã
Â
ãã¨ã¯ç¬¬ä¸æ¡ã¨ãã¦ãSirakamiããã¼ã¹ã§ãä¸é¨Ozeã®ã³ã³ã»ãããéå®çã«å ¥ãããã®ã¨ããæå·§çãªæããããããè¤æ°ã®CCãæ··å¨ãããRDBã¯æ®éã¯ãªããã¨ã¯ããããããå¦çãï¼ãããã¯ã¿ã¤ã ã¢ã¦ãããwriteç³»ã®å¦çã¨ãretryãããã¨ãã«ï¼ä¸ç¨®ã®ãããã¯ãã¢ã¼ãã§å®è¡ãããããã ãã ã¨å人çã«ã¯æã£ã¦ããã®ã§ãããã ããªã½ã¼ã¹ãããæ代ãªãæ®éã«ã¢ãªã ã¨ã¯æã£ã¦ãããããããç¸æ§ã壮絶ã«æªããªãé©å½ã«Isolateãã¦ããã°ããã§ãããï¼ã¨ãã話ã¯ãçå±ã ããªãéãããã§ã»ã»ã»ããã®æã®ä»çµã¿ã¯RDBã®ã©çãä¸ããä½ããªãã¨çµ¶å¯¾ã«ç¡çãªã®ã§ãä»åã¯ããæ©ä¼ãªã®ã§ãæ¤è¨ãããã¯ãã£ã¦ã¿ãã¤ãããããããåã®æ å½ã§ãããããæ®éã«ãã¡å ã§ã¯ããã
Â
以ä¸ã¯Tsurugiã®è©±ããã§ä»¥ä¸ããAsakusaã
Â
â Asakusaã®å¦ç
ååã®ã¨ã³ããªã¼ã§Asakusaï¼BatchTxã®è¨è¨ãã®ãã®çãªå´é¢ãããããã¨ãã話ã ãã©ãããã¯æ´çãããã¨ãAsakusaã®å¦çãç·ãã¦ãReadï¼Write backåã«å±ããã¨ããã¨ããã«è½ã¡çããAsakusaã¯ãã¨ãã¨æ§æ¥åã®å¤§è¦æ¨¡ãããå¦çã®åæ£å¦çã§ã®é«éåã¨ããã®ãç®çã§ããããç¾å¨ã®ä½¿ãããæ¹ãããããåºå¹¹ç³»ã®ãããã«ä½¿ããã¦ããã®ã大åããªã®ã§ãã©ã¡ããã¨ããã°ä¼çµ±çãªãããå¦çã¸ã®å¯¾å¿ã®ããã®ã¹ã¿ã¤ã«ã«ãªã£ã¦ãããã¾ããå ãã¦ãå¦çèªä½ãRDBããåé¢ãã¦åæ£å¦çããRDBã«æ¸ãæ»ããã¨ããã¢ã¼ããã¯ãã£ããã£ã¦ãããããå½¢ã¨ãã¦ã¯Readï¼Write backãæ¡ç¨ããããå¾ãªãå´é¢ãããã
Â
Sirakamiã¯Readï¼Write backã§ã®å¯¾å¿ã«ãªãã¨æãã®ã§ãAsakusaçãªçºæ³ã»ãã¦ãã¦ã¯ãã®ã¾ã¾å©ç¨ã§ãããéã«Ozeãã¼ã¹ã®ãã®ã¯Asakusaçã§ã¯ãªãã®ã§ãã©ããªã®ãï¼ã¨ããã¨ãããããã
Â
ã§ã¯Asakusaã¨Tsurugiãã©ã¼ããã®ãï¼ã¨ãã話ã«ã¯ãªããã»ã»ã»
Â
â Tsurugiã®ãããå¦çDSLã¨ãã¦ã®Asakusaã«ã¤ãã¦
ããããååã®ã¨ã³ããªã¼ã¨åæ§ãã¾ããåæã¨ãã¦ãNautilusã¨ãã¦ã¯ãå½ç¶Asakusaã¯Tsurugiã®å¯¾è±¡ã¨ãã¦èæ ®ãããã¹ããã®ã ããä¼ç¤¾ã®ããªã·ã¼ã¨ãã¦é¡§å®¢ãµãã¼ãããã£ã¡ãè¡ããã¨ãä¼æ¥æ´»åã®ãã¼ã¹ã«ãªã£ã¦ããã®ã§ãæ¤è¨ã¯ããã
ãä»æ¹ãTsurugiã¯å ¬éããã¸ã§ã¯ãã§ãããNautilusã®ç§ç©ã§ã¯ãªãããã£ã¦ãã¦ã¼ã¶ã«Asakusaãå¼·å¶ãããã¨ã¯ããããè«ã«ãªãããã£ã¦Tsurugiã§ã®ãããå¦çã®ãçªå£ãã¯ä¸ç¾©çãªæä¾ã¯ãå½ç¶ããéå£ã®åºããã®ã«ãªãã
ã¨ã¯ãããå人çã«ã¯ãæ¥åããã»ã¹ãèæ ®ãããè¤éãªããã¼å¶å¾¡ãæ¨ã¨ãããSIåæã®ãããå¦çDSLãã§ã¯ç¾å¨ãAsakusaãè¶ãããã®ã¯ãªãã¨æãããä»å¾OSSã§ã¯æ°¸ä¹ ã«åºãæ°ãããªããRDBä¸ã§Asakusaãç´æ¥åãã¦ãé常ã®SQLã®å®è¡ã®ããã©ã¼ãã³ã¹ã«ã¾ã£ããå½±é¿ãããã·ã¼ã ã¬ã¹ã«ç¸äºãå©ç¨ã§ããã®ã§ããã°ãTsurugiã®ä½¿ãåæã«ã¤ãã¦ã¯ç¢ºå®ã«ãã©ã¹ã«ã¯ãªãã¨æãã
ããªã®ã§ãæ¤è¨ã¯ããããNEDOããã®ç¯å²ã§ã¯ãããªããããã¾ã§Nautilusã®è²¬ä»»ã®ç¯å²ã«ããã¦è¡ãããçµæã©ãã§ãããå¿ ãæ¤è¨ã¯è¡ããããã¯å¤ãããªãã
Â
ãã®ä¸ã§ãDSLã¨ãã¦ã©ãã¿ããï¼ã¨ããç¹ã ãã©ã
Â
â Asakusaã¨Tsurugiã®çµã¿åããã«ã¤ãã¦ãªã«ããããããï¼
Â
ãã®ãããã®è°è«ã¯ãç¾æç¹ã§ã¯æ´çãç¹ã«ãã¦ããªããèªåã®å人ã®ã±ã£ã¨ããæãã¤ãã§ã¯å¤§ä½ä»¥ä¸3ç¹ã
Â
1.SQLã®ãã¼ãã¹ã¨ãã¦
æ®éã«è¤æ°ã®SQLã®å¶å¾¡ãã¼ãã¹ã¨ãã¦æ¬²ããã¨ããã¨ããã¯ãããåç´ãªSQLã§å¦çãæ¸ãã®ã§ããã°ããããUDFã¨ãã¦Asakusaã§ã³ã¼ã«ãã¦æ¸ã¾ããããç°¡åãªSQLãã·ã³ãã«ã«æ¸ãã¦åç´å®è¡ããå 容ãAsakusaã§è¨è¿°ããã¨ãªããªãã«é¢åã§ã¯ãããããããå ´åã¯æ®éã«SQLã§ç°¡åã«å¦çãããã
Â
2.Asakusaããã®ãã¤ã¬ã¯ãã®å®è¡ã¨ã³ã¸ã³ã¸ã®ã¨ã³ããªã¼ãã¤ã³ãã®ç¢ºä¿
SQLã®ãã³ãã©ã¼ã¨ãã¦ã§ã¯ãªããæ®éã®joinå¦çã§ã®ä¾å¤ãæ³£ãå¥ãã»åå²å¦çã«ã¤ãã¦ã¯ãããããSQLã§è¨è¿°ããã®ã¯ç¡çãããã®ã§ããããã®è¤éãªjoinã«ã¤ãã¦ã¯Asakusaã§ãã³ãã«ããããç°¡åãªå義éãã®ã¯ã¨ãªã¼ã§ããã°SQLã§ãè¤éæªå¥ãªjoinã§ããã°Asakusaã§ãããããè¨è¿°ãã¦ãproceduralãªå½¢ã§ã¾ã¨ãã¦Txã¨ãã¦å¦çããã¤ãã§ã«ä¾å¤å¦çããã¾ããã¨ãã£ã¦ããããããããªã¨ãããã¨ãSQLãä»ããï¼å¥ã«ä»ãã¦ãããããããããã«SQLçæã¯ãªãã§ããï¼ã«ç´æ¥ã¹ã±ã¸ã¥ã¼ã«ãå©ãè¾¼ãã¹ã¿ã¤ã«ãCCå´ã¯å¥ã«æ®éã«ãã³ãã«ããã ãã§ãTxãæ¥ã¾ãããäºè§£ãå¦çéå§ãã¾ããã§åé¡ãªãã
Â
3.è¨è¨ã»ãã¹ãçã®suitesã¨ãã¦
ããããAsakusaã®åå¨æ義ã»ã¡ãã»ã¼ã¸ã¨ãã¦ã¯ãè¨è¨ã¯æ®ãããå®è£ ã¯è ããã¨ãããã¨ã«å°½ãããã¡ããã¨è¨è¨ããã°ããã®åæã£ãã³ã¹ãã«è¦åãã ãã®ã¡ãªããã¯ãããã¨ãããã¨ã§ããã
SQLãããã§ãåãããã«ã¡ããã¨è¨è¨âå®è£ âãã¹ãã®æ çµã¿ãè¸è¥²ããä»çµã¿ã¨ãã¦Asakusaãå©ç¨ããããã¹ãããSQLã§ã®CIçãªè©±ã§ããã°æ®éã«Asakusaãå©ç¨ããæ¹ã確å®ã«è¦éããè¯ãæ°ããããã¹ãããã£ã¦ãªã«ãã«ãã¹ããã¤ããã¨ãããã§ããªãã®ã§ã
Â
ã¨ã¾ããããªæãã§ã¯ããããããã ã¨æ®éã«SQLãUDFã¨ãã¦Asakusaã§ã³ã¼ã«ã§ããã°ãããã¨ãã話ã«ãªã£ã¦ããã§ããã¾ããªã®ãï¼ã¨ã¡ãã£ã¨æããããã§ã¯èº«ãèããªãæ°ããããã»ã»ã»æ®éã«ã¢ãªãªæ°ãããã
Â
ä¾ãã°ãéè¨ç³»ã®åç´ãªSQLãæ¸ãã¦ãã¬ãã¼ãçæç³»ã®å¦çããä¾å¤ãã³ãã©ã¼ãAsakusaã§è¨è¿°ã»å¦çãã¦ãåºåãexcelã«ããããã¦ãRDBâéè¨âã¨ã¯ã»ã«ã®æµããSIããã¨ããªã«ãã¨æ¥½ãªæ°ããããåæ£å¦çããã¦ãããããã§ãBIç³»å¦çã§Excelãããã¤ã¬ã¯ãã«SQLã³ã¼ã«ãããã ãã©ãå¦çãè¤éã«ããã¨ãä¾å¤å¦çã¨ãããããå¤æ®µã®joinã¨ãããã¨ãã£ã¨ããéã«100å太é½è³ªéãããã®æé»ãã©ãã¯ãã¼ã«ã«æé·ããããããããããããã¹ãã¨ãã§ããã
Â
éãæ¥åå¦çã¯ãããããã¡ããã ãã©ãã軽ãã¨ããã®ãããããã¦éããã³ã¬ãã®ã¨ããã§Asakusaã使ãããããããã¨ã¯æããã¨ã«ããèªåçã«ä»æ§ãæ®ãã®ãããããããã¾ãã§ã
Â
â proceduralãªAsakusaãTsurugiã®CCããè¦ãã¨ãã«ã©ãè¦ãããï¼
Â
CCå±ã¨ãã¦ã¯Asakusaã§ã®SQLã®ã³ã¼ã«ã®ã¿ã¤ãã³ã°ã¨ãããã®ãããã®CCå¦çã®æ¹å¼ã¨ãã¯ããªã«ãèããã«OKã¨ããããã«ã¯ãããªããããæ°ãããã以ä¸æ°ã«ãªãç¹ãæ¸ãã¦ããããã ãããã¯Asakusaãã¨ãããããã¹ãããã®ãã¹ãè¨èªä¸è¬ã«è¦æ±ãããä»æ§ã ã¨ã¯æããããã£ã¨ããã¨ããç¨åº¦ã®ä½ã¬ãã«ã®serializability空éããæ ä¿ã§ããªãä»çµã¿ã§ã¯ããã°ä¸è¦ã ããããç¨åº¦ã®é«æ©è½ãªCCãã§ããä»çµã¿ã§å¿ è¦ãªãã®ã§ã¯ãªããã¨æãã
Â
ã»externalityã®ç¢ºä¿
é£ç¶ã§SQLï¼Txï¼ããªããæã®æä½é確ä¿ããªããã°ãããªãé åºã®å¶ç´ãããTxãcommitããã¦ããããã確èªãã¦ããããå¥ã®Txãæããããã¨ãã¯ãå¿ ãé£ç¶(logically serial)ã«ãªããªããã°ãªããªããã³ã¢æ°å°ãªç®ãªãªã½ã¼ã¹å¶ç´ãå³ãã以åã®ç°å¢ã§ããã°ãã»ã¼æé»ã«å®ãããããã¡ãã¼ã³ã¢ãåæ£ç°å¢ä¸ã§ã¯æ°ãã¤ããªãã¨ããªãæªãããã¨ã«ãªãã
Â
ã»æ示çãªparallelismã®æ示
ãã®ãããã¯ãååã®ã¨ã³ããªã¼ã¨åããã¹ãããã§Txãä»®ã«ã¹ãã¼ãã¡ã³ãåä½ã§åºåã£ã¦ã並åçã«å¦çããå¿ ãã§ãããå ´åãããã§ããããªã®ã§ãã£ã¦ã»ãããå ´åã«ãã¼ãã¹å´ã§ãæ示çã«æ示ãã ãã¨ãããã¨ãç¹ã«Loopå¦çã§ã¯ããé ã«å¦çãã¨ã並åã«å¦çãã¯æå³ãéããã¾ãæ示çãªä¸¦åå¦çã§ãããå¿ ãã§ããã®ã§å¾å èããªãã¦ãããã¨ãã§ããã¨æãã®ã§ãã£ã¦ã»ãããã§ã¯ããã¾ãæå³ãéãã
Â
ã»transactionã®controlå¢çã®æä¾
ã©ãã¾ã§ã®statementãä¸æ¬ã®Txã«ããããã¨ããæ示ãä¸æ¬ã«ããå ´åæ®éã«commitã®åä½ãåä¸ã«ãªãã失ææã«ã¯å ¨é¨roll backããããåºæ¬çã«ã¯CCå´ãåæã«å¤æããã®ã§å®ã¯ä¸è¦ã ãã©ãéç¨ã¨ãã¦å¿ è¦ãªå ´åãããã®ã§ã
Â
CCå´ããè¦ãã¨ãããªã¨ããããªãã¨ã¯æãããã¡ããDSLã¨ãã¦å¿ è¦ãªãã®ã»ããã¨ãããããã®ã¯é¬¼ã®ããã«ããã¨ã¯æããã©ãæ®éã«è¨èªè¨è¨ã®è©±ã«ãªãã®ã§ãããã§ã¯å²æã
Â
ãããªæã