Tsurugiã¨RSA
Tsurugiã¨RSA
ã2023/12ç¾å¨ãTsurugiã¯åãã¼ã稼åã®å¶ç´ãããã®ã§ã次ã®ãã§ã¼ãºã¨ãã¦è¤æ°ãã¼ãã§ã®ç¨¼åãç®æãã¦ãã¾ããTsurugiã¯ç´æ¥ã®æä½å¯¾è±¡ãã¼ã¿ã®index treeãã¡ã¢ãªã¼ã«ãã¤RDBã§ãããåãã¼ãã§ã®ã¡ã¢ãªã¼éçãããã©ã¼ãã³ã¹éçã«ãªãã¾ããè¤æ°ãã¼ãã«ã¾ãããã¡ã¢ãªã¼ã»ã¯ã©ã¹ã¿ã¼ã§ã®ééçãªç¨¼åãTsurugiã®æ¬¡ã®ç®æ¨ã¨ãã¦ãã¾ããæ³å®ããã¦ããã¢ã¼ããã¯ãã£ã¯Rack Scale Architectureï¼ä»¥ä¸RSAï¼ã«ãªãã¾ãã
ãRSAã«ã¤ãã¦ã¯ãã¾ããã®ãã¹ããã¹ã¿ã¼ãå°ç¹ã
https://okachimachiorz.hatenablog.com/entry/20151225/1451028992
 ããã¯2015å¹´ãªã®ã§ã8å¹´åã®ã¨ã³ããªã¼ã«ãªãã¾ããæ¦ãã³ã³ã»ããã¯å¤ãã£ã¦ãã¾ãããï¼8å¹´åã¯èª°ããã¤ããã ããã¨ããã£ã¦ãããã©ãã¾ããèªåãããç¾½ç®ã«ãªãã¨ã¯æãã¾ããã§ãããï¼
ãã¾ãã¯ãã®ãã¹ãã®reviewããã§ããã»ã»ã»ç¾å¨ã§ãããã»ã©å¤ãã£ã¦ããªãã¨ãããããã°ãå¤ãã£ã¦ããé¨åãããã¾ãã
1.対象ãã¼ã¿ãµã¤ãº
ãããã»ã©ã®å¤§è¦æ¨¡ã¯ã©ã¹ã¿ã¼ã¯æ¥æ¬ä¼æ¥ã§ã¯å¿
è¦ãªããã¨ãã8å¹´åã«æ¯ã¹ã¦ã©ããç¾å¨ã¯ã©ããï¼ã¨ããã¨ããããã«PBãµã¤ãºã®ã¯ã©ã¹ã¿ã¼ã¯çããã¯ãªããªãã¾ãããã¨ã¯ãããä¸è¬çãªä¼æ¥ã§ãã®ãµã¤ãºã®ãã¼ã¿ãä¿æã»éç¨ãã¦ããä¼æ¥ã¯ãã¯ãç¾å¨ã§ãå°æ°æ´¾ã§ããç¹ã«ãããæ°å¹´ã¯ã¯ã©ã¦ããããªãã®é«ã³ã¹ãã«ãªãã¤ã¤ãããPBã¯ã©ã¹ã®å¤§è¦æ¨¡ãã¼ã¿ãã¯ã©ã¦ãã§éç¨ããã³ã¹ãã¡ãªãããåãã®ã¯å½å
ä¼æ¥ã§ã¯ç°¡åã§ã¯ããã¾ããã
ãå®éãã¦ã¼ã¶ãã¼ã¹ã§è¦ãæã«åãæ±ããã¼ã¿ãµã¤ãºã¯å¢å ããã®ãï¼ã¨ããç¹ã§ã¯ãããããã¡ããã¨ãããã¼ã¿ããã¾ããããä½æã¨ãã¦ã¯ãåæç³»ã«ã¤ãã¦ã¯æ®éã«5-10åç¨åº¦ã«ã¯å¢ããæãã§ããä¸æ¹ã§ãåºå¹¹ç³»ã»åå®ç³»ã«ã¤ãã¦ã¯ã1.2-1.5åç¨åº¦ã§ãåã«ããªã£ã¦ããªããã¨ããå°è±¡ã§ãã
ãæ¦ããä¸è¬çãªä¼æ¥ã®ã·ã¹ãã ã®ãã¼ã¿ãµã¤ãºã¯ã100GBãã10Tã®éãããã§ããããã«åãã¼ãã§ã¯è¶³ããªãããã¼ãã©ãã¯ç¨åº¦ã®ãµã¼ãæ°ã§ããããã«åã¾ããã¨ããç¶æ³ã«è¦ãã¾ãã
2.H/Wã®ã¹ããã¯ãã
ãRSAã®å®ç¾©ã«ã¤ãã¦ã¯ããè¤æ°ã®ãã¼ããâé«å¯åº¦âã«Rackå é¨ã§çµã¿ä¸ãã¦å縮æ§ãããã¦ãã©ãã¯ãã¼ã¹ã®ä¸ã¤ã®ã³ã³ãã¥ã¼ã¿ã¨è¦ãªãã¢ã¼ããã¯ãã£ãã§å¤ãã£ã¦ãã¾ããã100ã³ã¢ãã·ã¼ã³ãããã»ã©çãããªãç¾ç¶ã§ã¯ãâRackå é¨ã§ãç·è¨1000ã³ã¢ï¼10TB-DRAMã®ãµã¼ãã»ã¯ã©ã¹ã¿ã¼âã¯ããã»ã©ç¹æ®ã§ããªãH/Wç°å¢ã¨è¨ããã§ãããããã®8å¹´ã§RSAã®ç°å¢ã¯èº«è¿ã«ãªã£ãã¨ã¯ããã¾ãã
3.RSAã®å é¨æ§é ã«ã¤ãã¦
ã8å¹´åã®ãã¹ãã§ã¯ãRSAã®ç¹é·ã¨ãã¦ãRDMAã¨NVMãæãã¦ãã¾ããã¾ããNVMã§ãããæ®å¿µãªããæ®åã®è¦éãã¯ç«ããªãç¶æ ã«ãªã£ã¦ãã¾ãã¾ãããNVMã¯ããã¯ãé 延ãDRAMã«è¶³ãããã¾ãbyteå価ãSSDã«ã¯åã¦ãªããã¨ããä¸éå端ãªç¶æ³ã ã£ãã®ãæå¾ã¾ã§æ®åã«å½±é¿ããã¨ããã¨ããã§ããããIntelã®æ¤åã¯ã»ã¼å ¨é¢çãªã®ãã¢ããã«è¦ãã¾ãã
ãä¸æ¹ã®RDMAã§ããããã®8å¹´ã§ä¸è¬çã«ãªã£ããã¨ããã¨ããã§ã¯ãªãã§ãããããDCã«ãã£ã¦ã¯ããªãå°å
¥å®ç¸¾ãåºã¦ããããã§ããç¹ã«HPCã§ã¯ããããªãä¸è¬çãªããã§ããã
ãä¸åãã¯EtherãIBã§ãç´æ¥ã®ãã¹çµåã¯ã¡ãã£ã¨ä¸ç«æããã£ã¦ãã¾ãå²ã¨ä¸è¬çãªãã¹ã§å©ç¨ãã¾ããããã¨ãããã¨ã«ãªãããããã³ã«ã¯RoceV2ããiWARPãã«ç¾æç¹ã§ã¯åæãã¤ã¤ããã¾ããçµå±ã®ã¨ããã¯ãNICçµç±ã¯ããã¨ãã¦ãã«ã¼ãã«ã»ãã¤ãã¹ããããï¼ããªããï¼ã¨ããã¨ããã«éå
ãããããªæ°é
ã§ãã
 ãæ®éã«èããã°SoCã§CPUããå¦çããªããã¼ãããã»ãããå§åçã«ã³ã¹ããå®ãã¯ãã§ãããè±å³ããããç¹ã«ããããªã¯ã¼ã¯ãã¼ãã§ã¯Roceçã®è¨å®ãããã©ã¤ãã¼ã®åºæ¥ããã§ããªãããå¥ã
æªã
ãªä¸å®å®ããã§ãä¸æ¹ã§ãæ®éã«ã¹ã¿ãã¯éããã»ããã¯ãªã¼ã³ã§ãåå¤ããã©ã¼ãã³ã¹ãåºã¦ãã¾ãç¾ç¶ãããããã§ããå°å
¥æããããã§ã¯ããã®ã§ããããã®è¾ºã©ã¼ã«ããªããªãã®ã§ããããã»ã»ã»
ãDBé£å¶ã¨ãã¦ã¯ãééçã§ãããã¨ã¯æ£ç¾©ãã¨ã°ããã«ãã§ããã ãè«ç層ã¯åé¢ãããåãã®ãã¶ã¤ã³ã§ãã¨ããããä½é 延ãªãä¸ã¯ãªãã§ãããã§ãã®å¼·è¡çªç ´ã¨ãããã¨ã«ãªããããªæ°é ã§ãã
ãã¾ãä¸æ¹ã§ãããã«ãã¦ãCXLãæ¬å½ã¨ã°ããã«ãã¤é¡ç¶æ ã§ãã¦ãPCIe5ã®ç»å ´ã§åºãã°ã£ããã®PCIeï¼ããã£ã¨ããéã«é³è åã®æãç®ã¨ãç ½ããããã£ã¦ããã£ã¨ã§ãããããã¹ãã¼ãNICãããããã¾ããããå¢ãã§æ¬¡ä¸ä»£ã«ç§»è¡ã¨ããã»ã»ã»ãããã¤ããæ¹ã¯æè³ååã§ããªãã®ã§ã¯ï¼ã¨ããæ¸å¿µãããã¾ããã
ãç·ãã¦ãä½é 延ã§ã®Rackå é¨ã»Rackéã§ã®ãµã¼ãæ¥ç¶ãã¯ããã®ãããé²æ©ãã¤ã¤ãããç¾å¨ãã£ã¨ãããããªã¤ã³ãã©ã®ç¦ç¹ã®ä¸ã¤ã§ãããã¨ã¯ééããªãã§ãããããã®æå³ã§RSAãS/Wã¹ã¿ãã¯ã¨ãã¦ãã©ããã¦ãããï¼ãæãä¸ããã«ã¯ã¡ããã©ããææã§ãããã®è¾ºãã¯ãããã«ããªãã¨ãããã®ãçã§ããããé¸æè¢ã¯ç°æ§ã«ããããã«è¦ãã¦ãå®ã¯ä½¿ããã®ã¯2-3ãããªãããªãã¦ã®ã¯æ¥å¸¸è¶é£¯äºãªãã§ã
Â
âTsurugiã§ã¯RSAã§ä½ãããã¤ãããªã®ãï¼
ã大ããã¯äºã¤ã«ãªãã¾ããreplication/partitioningã¨åæ£ãã©ã³ã¶ã¯ã·ã§ã³ã§ãã両è ã®éãã¯serialization spaceãåä¸ãã©ããã§ããåè ã§ã¯åä¸ã§ãå¾è ã§ã¯è¤æ°ã«ãªãã¾ãã
1. replication/partitioning
ãreplicationã¨partitioning(disjoint replication)ã¯ãA) åããã¼ã¿ããã¤replicationã¨ãB) åããã¼ã¿ãæããªãpartitioningã¨ãC) ãã®æ··åã®partial replicationã®3種é¡ãæ³å®ãã¦ãã¾ãããããä¸ã¤ã®éãã¯ãã¼ã¿ãåãã¼ãã«åæ£ãããéã®ãéãªã度åããã®éãã«ãªãã¾ãã
Â
A) replication
ãåããã¼ã¿ãè¤æ°ã®ç©çãã¼ãã«ãã¤ãã¨ã§ãå¯ç¨æ§ã確ä¿ãã¾ããè¤æ°ãã¼ãã®ã¡ã¢ãªã¼ã»ã¯ã©ã¹ã¿ã¼ã§åããã¼ã¿ãæã¡ãå¦çã¯ãã¹ã¦transactionã¨ãã¾ããããªãã¡ãpartial writeã¯çºçããã¾ãããã¯ã©ã¹ã¿ã¼å
ã§åä¸ã®serialization spaceãæã¡ã¾ããcommit levelã¯propagatedã«ãªããã¯ã©ã¤ã¢ã³ãã«å¯¾ãã¦ã¯âå¿
ãæå®ã®è¤æ°ã®ãã¼ãã§åããã¼ã¿ãåå¨ã§ããâå ´åã«commitãè¿ãã¾ãã
ãå¿ è¦ãªåæã¡ã«ããºã ã¯åç´ã«éçãªãã¼ãæ§æã«ã¤ãã¦ã®ã¿ã¨ããlog replicaã«ã¤ãã¦ã¯èæ ®ãã¾ãããã·ã³ãã«ãã¤é«éãªã¢ã«ã´ãªãºã ãå©ç¨ãã¾ããï¼ã§ããã°ä½ããããªããã©ããã¶ãä½ãç¾½ç®ã«ãªãããã極ä½é 延ã§ã®ä½è¨ãªãã¨ãä¸åããªãã¯ã©ã¹ã¿ã¼ãã¼ã管çããã«ã¯å®ã¯ããããã§ãªãããã§ãã大æµã¯ä½è¨ãªãã¨ãããä¸ã«é«é 延åæã«è¦ãã¾ãï¼
ãã¾ã£ããåããã¼ã¿ãè¤æ°ãã¼ãã®ã¡ã¢ãªã¼ä¸ã«å¸¸ã«ãã¡ããµã¼ããã¦ã³æã®å¯ç¨æ§ç¢ºä¿ã極ãã¦é«éã«è¡ããã¨ãä¼å³ãã¦ãã¾ãã
Â
B) partitioning
ãåã
ã®ãã¼ã¿ãè¤æ°ã®ç©çãã¼ãã«åæ£ããã¦ãã¹ã±ã¼ã«ã¢ã¦ãã確ä¿ãã¾ããè¤æ°ãã¼ãã§åããã¼ã¿ãæã¤ãã¨ã¯ãªããè¤æ°ãã¼ãã®ãã¼ã¿ã®ã¦ããªã³ãDBãã®ãã®ã«ãªãã¾ããå½ç¶ã§ãããA)ã¨åæ§ã«å¦çã¯ãã¹ã¦transactionã«ãªããã¯ã©ã¹ã¿ã¼å
é¨ã§åä¸ã®serialization spaceãæã¡ã¾ãã
ãåãæ±ããã¼ã¿éãå¢å ããå ´åã«ããã®ã¾ã¾ç©çãã¼ãã追å ãããã¨ã§å¯¾å¿ã§ãããã¨ãä¼å³ãã¦ãã¾ãããã ããreplicationããªãã®ã§ãåä¸ãã¼ãã¸ã®æ¸ãè¾¼ã¿ã失æãã段éã§ãDBã¸ã®æ¸ãè¾¼ã¿å¤±æã¨ãªãã¾ããããªãã¡ã追å ãã¼ãåã ãSPoFãå¢ãããã¨ã«ãªãã¾ãã
Â
C) partial replication
ãpartitioningã¨replicationã®ãåããæãã«ãªãã¾ããåpartitionã®åä½ã§ãreplicationãè¡ãã¾ããreplicaãåå¨ãããããpartitioningãè¡ããªããé«å¯ç¨æ§ã確ä¿ãããã¨ãå¯è½ã«ãªãã¾ããB)ã ãã§ã¯å¯ç¨æ§ã«é£ãããä¸æ¹ã§ãA)ã ãã§ã¯ã¹ã±ã¼ã«ã¢ã¦ãã«åé¡ãããã¾ãããããã£ã¦çæ³ã¯ãã®çµã¿åããã¨ãããã¨ã«ãªãã¾ãã
2.åæ£ãã©ã³ã¶ã¯ã·ã§ã³
ãããã¯âè¤æ°âã®âåä¸ã®Tsurugiâã«ã¾ããã£ã¦å¦çãè¡ãã¨ãã«ãglobalã«serialization orderãã¨ãã¨ããå¦çã«ãªãã¾ãããã®æã®âåä¸ã®Tsurugiâã¯ç©çãµã¼ãæ°ã¯éå®ãã¾ãããåä¸ãµã¼ãã§ãã£ãããè¤æ°ãµã¼ãã§ãã£ã¦ãæ§ãã¾ãããããããã«ããserialization spaceã¯åä¸ã¨ãã¾ãï¼ãªãããã®æã®è«çå¢çãSphere of Control (SoC)ã¨å¼ãã§ãã¾ããè¦ããã«è¤æ°ã®SoCãå¦çããã¨ãããã¨ã§ãï¼ã
ããã®åä¸ã®serialization spaceãè¤æ°ã«ã¾ããã£ã¦ãtransactionãå®è¡ãããã¨ãTsurugiã§ã¯åæ£ãã©ã³ã¶ã¯ã·ã§ã³ã¨å®ç¾©ãã¦ãã¾ããï¼ããªãã¡Tsurugiã§ã¯åæ£ãã©ã³ã¶ã¯ã·ã§ã³ã¯ç©ççãªãã®ã§ã¯ããã¾ãããï¼ãã®è¾ºããç®æãã¦ããã¾ãã
Â
âéå ·ç«ã¦ã«ã¤ãã¦
ãreplication/partitioningã«ãããåæ£ãã©ã³ã¶ã¯ã·ã§ã³ã«ãããããããã¦ããé«å¯åº¦ä½é 延åæ£ã·ã¹ãã ãã§ãããã®åæ£ã·ã¹ãã ã®è«çã¤ã³ãã©ã¨ãã¦ãEpoch based synchronizationãã¬ã¤ã¤ã¼ã¨ãã¦ä½æããåæã¤ã³ãã©ã¨ãã¾ããæå»åæã¯H/Wï¼ç©çtime serverï¼ã§è¡ãäºå®ã§ãããã¾ã®ã¨ããã®å©ç¨ãããã³ã«ã¯PTPã£ã½ãã§ãã
ãããããTsurugiã¯åæ£DBãä¼å³ãã¦ã¤ãããã¦ãã¾ããTsurugièªä½ãEpochãã¼ã¹ãªã®ã§ãEpoch based synchronizationã¯ããã®å»¶é·ç·ã§è¡ãã¾ãããtransactionå¦çã¯read-lock free / write lock-freeãªã®ã§ãåãã¼ãã§lockãåããã«å¦çãâ渡ãæ©ãâãã¨ãã§ãã¾ãããã®ã¢ã¼ããã¯ãã£ã¯ä½é 延åæ£DBã«ã¯æ¥µãã¦æå©ã§ãã
ããªãªã¼ã¹é ã¨ãã¦ã¯ãä»ã®ã¨ããã¯replicationããã£ã¨ãå ã«ãããã¯ã·ã§ã³ã§ãªãªã¼ã¹ããã次ã«partitionã試é¨çã«ããããã¯ã·ã§ã³ã¨ãã¦ã¯C)ã®æ··åãä¸ç·ã«ãªãªã¼ã¹ãããã¨æãã¾ããã¨ãããããã®è¾ºã¯ããæ³åã§ãããåæ£ãã©ã³ã¶ã¯ã·ã§ã³ã«ã¤ãã¦ã¯ãç¾æç¹ã§ã¯ããã¾ã§ãããã¿ã¤ããæ³å®ãã¦ãã¾ãã
ãã¾ããpartitioningã«ã¤ãã¦ã¯åæ£Index treeãæ³å®ãã¦ãã¾ããDHTã§ã¯ä½é 延è¦æ±ç°å¢ã§ã¯ãç¹ã«range scanãfull scanã§ç°¡åã«N/Wãï¼æé©åãè¡ã£ã¦ãï¼é£½åããå¯è½æ§ãé«ãã®ã§ãä»ã®ã¨ããã¯èãã¦ãã¾ããã
Â
âéæ
ãRSAã¨ããè¨ãæ¹èªä½ã¯ãå¤åã«ç©ççãªå¶ç´ã®è©±ï¼Rackå
é¨ï¼ä½é
延ï¼ã§ãããªãã®ã§ããããè«ççãªæ çµã¨ãã¦æãç´ããå ´åã¯ãæå¾ã¯é
延éçã®è©±ã«éå
ããããããªæ°ããã¦ãã¾ããããã¾ã§Tsurugiãã¨ãããããECCãã¼ã¹ã§ã®åæ£ã¯ã©ã¹ã¿ã¼ããåæã®è©±ã§ã¯ããã¾ããã
ãä»®ã«Rackãè·¨ãã N/Wæ§æã®é
延ããRackå
é¨ã¨å¤ãããªãã®ã§ããã°ãè¤æ°ã®Rackããæ§æãããRSAã¨ããã®ãå¿è«å¯è½ã§ããããã¯ããããä»å¾ã¯DCå
é¨ã»DCéã«ã¾ã§æ¡å¤§ãããã¨ãå¯è½ã§ããã®å ´åã¯DCéãè·¨ãã ãRSAãã¨ãããã¨ã«ãªããRackã®æå³ã¯ãã¾ããªãã§ãããã§ã¯ãã©ãã¾ã§æ¡å¤§ããã®ï¼ã£ã¦è©±ã¯ãã£ã¦ã»ã»ã»
https://dsstation.sakura.ne.jp/report/misc/chien_nw.html
ãªãã¦ã®ã§è¨ç®ããã¨ï¼åã£ã¦ãã®ãããï¼1000kmã§çå´6.5msã§ãããã§ã«epochï¼3msã¨ãã¦ãç©ççã«æç«ãã¾ãããepoch=3~1msã¨ããã°ãå¾å¾©ã§èããã°ã100kmã¨ããã®ã¯ä¸ã¤ã®ãã«ãã´ãªã¼ãã«ãªãã§ãããããã®æå³ã§ã¯Tsurugiãåå ããPETRAã«ãããNTTã®IOWNããããããã¯é½å¸OSçãªãã®ãå«ãã¦100kmåã¨ããã®ã¯ããããªãã¨ãRSAçãªã¢ã¼ããã¯ãã£ããè¦ãå ´åã¯ãä¸ã¤ã®åºæºã«ãªãã¨è¦ã¦ãã¾ããTsurugiã¨ãã¦ã¯ãã®è¾ºã¯çã£ååè² ã«ããããããã¨ãããã¨ã§ã
ããªãã100km以ä¸ã§ããã°ããµã¼ãå é¨ã®è©±ã«ãªãã®ã§ãããã¯Intelè¦æ ¼ã®ãã¹ã®åè² ã®è©±ã§Tsurugiã¨ãã¦ã¯åãã¼ãã§ã©ãã¾ã§åãè©°ãããï¼ã¨ãã話é¡ã«ãªããéã«100kmè¶ ã§ããã°ãã©ã転ãã§ãGAFAMãã¯ããã¨ããããã¯ã¯ã©ã¦ããã³ãã¼ã®DBã®æ¹ãæé©ã®ã¯ããªã®ã§ãTsurugiã¨ãã¦ã¯ããã ãç¡é§ãã¨ããæèã§ãããããã£ãã¨ããã§éåæã®log-shipã«ãªãã®ã§ãæ®éã«åæ£åæã®æªå¤¢åã³ãã¨ããã®è¾ºã¯é 延ã¨ã®ãã¬ã¼ããªãã®é¸æããã¾ãã¯é©å½ã«Raftã£ã½ããã¤ãã®ã¤ãã§ãè¶ãæ¿ãã¨ãããã¨ã«ãªãæ°ããã¾ããå人çã«ãããã«ãã¦ãã¡ã³ãã¼ã·ãã管çã¨partial writeã®åé¡ã¯ãã¹ã¤ã¹ã¤ã«ãçä»ããæ¹ãã¤ã¤ã¨æã£ã¦ã¯ãã¾ãã
Â
ãããªæãã§ãããã¾ãã
Â
Â
æ¬å½ã«transactionã¯å¿ è¦ãªã®ãï¼
åæ
åæã§ããã
ãtransaction=Consistency/Isolationãæ
ä¿ããä»çµã¿ã®è©±ã¨ããã
ä¸è¬ã«transactionãæã¤ã¹ãå±æ§ã¯ACIDã¨è¨ããããC/Iã«æ¯ã¹ã¦ãA/Dãâããããããâã®ã§Atomic/Durableã®å±æ§ã®æ¹ã人å£ã«è¾çãã¦ããããç¾å¨ã®transactionã§ã¯A/Dãã¿ã¯ãã¾ã話é¡ã«ãªããªããA/Dãã¿ã¯ãã¼ã«ã«ã ãã§è¦ãã®ã§ããã°æ®éã«file system /storageã®è©±ã«ãªããå
æ¥Atomic/Durableã¯transactionã®ã³ã³ãã¯ã¹ãã§ã¯å°ãlogging / recoveryã®è©±ã ã£ããããã¦ãããã¯éåæã®epoch-basedã«ãªãã¨ããèªä½ã®åãæ±ãåªå
度ãä¸ãããç¾ä»£çãªtransactionã§ã¯ããç¾æç¹ã§ã¯read committedãä¿è¨¼ããã¦ããFS/storageã§A/Dã®åé¡ã¯(ããç¨åº¦)解決ãã¾ããããã¨ãããã¨ã«ãªã£ã¦ããã
ããªã®ã§transactionã¨ãã£ãå ´åã¯C/Iã®è©±ãæ®éã«ã¡ã¤ã³ã«ãªããå®éãç¾ç¶ã§ã¯ãMVCCã§ã¤ã³ã¡ã¢ãªã¼ä¸»è»¸ã§epochãã¼ã¹ã ã¨ããã»ã©ç´°ããepochãåããªãéãã¯åé¡ã«ã¯ãªããªããversion pressure ãå¼·ãã®ã§ãlog以åã«ä¸è¦ãªversionãæ¶ãæ¹ã§é ã«è¡ãä¸ã£ã¦ããã®ãç¾å®ã ã
ãã¨ããåæã§ã
Â
ãã¦ãæ¬å½ã«Transactionã¯å¿ è¦ãªã®ãï¼ã
Â
DBã«ãããã人éã®ã»ã¼100%ãçåã«æããã¨ã§ã¯ããã
Â
大ä½çç±ã¯ä»¥ä¸ã ã
ã»ããããé£ãããç解ãã¦ãã人éã¯å§åçã«ãããªãã
ã»ããã©ã¼ãã³ã¹åªå
ã®ããã«ã¬ããisolationã¬ãã«ã§å¹³æ°ã§éç¨ãã¦ããã
ã»ãªãã ããã ã§ãçµå±DBã®ä½¿ãæ¹ã¯é«æ©è½ãã¡ã¤ã«ãµã¼ãã
ãã£ã¦ããå¥ã«ãªãã¦ããããããï¼ãã¨ãããã¨ã«ãªãã
Â
ã¾ãå人çãªå°è±¡ããè¨ã£ã¦ããã¨ãããã¦ãã®å ´åã¯ã
1.ããã£ãã»ããããã«æ±ºã¾ã£ã¦ããããä»ã®å®è£
ã¯ä½¿ããã®ã«ãªããªããæ´¾
2.ãserializableã§ããï¼å¥ã«ããã¾ã§ã®ä¸è²«æ§ã¯ãããªãããæ´¾
ã®2éããå¤ãããããã«é ããããããªã¢ãã¤ã©ãã¤ãã¨ãã人ã¯ããã¾ããããªããã¨ãã©ãå±
ããã©ä¾å¤ã«è¿ãã
Â
ã1ã®å ´åã¯ãtransactionã®å¿ è¦æ§ã¯èªãã¦ããããç¾ç¶ã®ã¾ã¾ã§ã¯ä½¿ããªãã¨ããã¹ã¿ã³ã¹ãtransactionã«ç¸å½ããæå½ã¦ããªãããã®å½¢ã§è¡ãããã¾ãã¯åé¿çãã¨ã£ã¦ããã±ã¼ã¹ãå¤ãã
ã2ã®å ´åã¯ãé«æ©è½ãã¡ã¤ã«ãµã¼ãçã«RDBã使ã£ã¦ããåã«ã¯åé¡ãªããããã§ã¯ãªãã¦ããããªãã«æ´æ°å¦çãããã«ãããããããã¬ããisolationã¬ãã«ã§éç¨ãã¦ãããã¨ããã¾ã¾ããããã®å ´åããserializableã§ã¯ãªããã¨ã©ãããåé¡ãããããï¼ã¨ãããã¨ãããããã£ã¦ããªããã¨ãå¤ãã
ãtransactionãã¾ã¨ãã«åããªãã¨ãã®ãã°ï¼ã§ã¯ãªãã§ããä»æ§ãªã®ã§ããï¼ã¨ãããã¨ã©ã¼(anomaly)ã¯ãªã«ãã¨è¨ãã°viewã®ç°å¸¸ã ãã¨ãããæ®å¿µãªããæç§æ¸çãªè¨è¿°ã¯anomalyã¯lost updateã¨inconsistent readã ã£ãããããlost updateã¯ç¹å®ã®ã¬ã³ã¼ãã®read modify writeãéããã¨ããç¹æ®ãªã±ã¼ã¹ã ããinconsistent readã¯read committedã§ããã°åé¿ã§ããããã®äºã¤ã§anomalyã代表ãããã®ã¯ç¡çããããï¼phantom readã¯å®ã¯ä¸çªnot -serializableã®ä¾ã¨ãã¦ã¯è¯ãã®ã ãããã®å ´åã¯ãã¼ã®åå¨ã»ä¸åå¨ã話é¡ã«ãªã£ã¦ããã®ã§è«ç¹ãå¤ãã£ã¦ãã¾ãé©åã§ã¯ãªãï¼
ããã£ã¨ãå ¸åçãªanomalyã¯read skewã®é¡ãã«ãªããèªãã§ã¯ãããªããã¼ã¿ã»ããããã®ã¾ã¾èªãã§ããå¯è½æ§ãé«ãããã®æã®anomalyãèµ·ããã¨ãééã£ãè¨ç®çµæãæ£å¸¸å¦çã§è¿ããã¨ãããããã¤åç¾ããªããããã¯å®ã¯æ¤åºãããã¨ãé常ã«å°é£ã ãDBMSçã«ã¯æ£å¸¸å¦çã§âç°å¸¸âãªãã¼ã¿ãè¿ãã®ã§ãã¨ã©ã¼å¦çã«ã¯ã²ã£ããããªããï¼ãªãè£è¶³ãã¦ããã¨ãlost updateã®æé¤ã®ãããªwrite abortã¯ãããã¯åç´ã«ãã®ã¾ã¾æ¸ãè¾¼ãã¨âãã®çµæâãã©ãèªãã§ãviewãã¶ã£å£ãã¦ããã®ã§ãwriteå´ãabortãã¾ãã£ã¦è©±ã«ãªããï¼
ãçµé¨çã«ã¯ãserializableã§ããï¼å¥ã«ããã¾ã§ã®ä¸è²«æ§ã¯ãããªãããæ´¾ã®äººããread skewã®é¡ãã®é¢åãããããã°ä¸æ¦ã«ãtransactionã¯ä¸è¦ãã¨ã¯è¨ããªãã¨æãã
ãªã®ã§ãã¾ã¨ãã«åã 人ã§transactionã®è¦ä¸è¦ã®è©±ãããã¨å¤§æµã¯ãããã£ãã»ãããããããã¨ãã話ã«ãªã£ã¦ãã¾ããããã¯ããã§ãããããããã¯ãæ®ãã
å®è¨¼çãªæå³åããã
ãããã¶ãtransactionã¯ãããªããã¾ã¨ãã«è¨å®ããã¦ãªãã¦ã社ä¼ã¯åãã¦ããããã誰ãå°ã£ã¦ãªããããã£ã¡ããèããã»ããããããã¶ããå®åé¢ããã¿ãã¨ããã¯ããã§æ£è§£ã ã¨æããå®éãªãã¦ããªãã¨ããªããªããå¥æ®µå¿ è¦ã§ã¯ãªããï¼ãã£ã¨ããããã¯å®ã¯transactionã®è©±ã«ã¨ã©ã¾ããªããITå ¨è¬ã«ãããå¾ã話ã§ããã¨ãã°ãITãªããããããç´ã»Faxã»å¤åã§ååãã¨ããæåã¯æªã ã«ããããããã«ãããï¼
ããã§viewãã¶ã£å£ããã®ã¯ã¾ãããªããï¼ã£ã¦è©±ã§ããããæ®éã«transactionã®è¦ã»ä¸è¦ã«ã¤ãªããã
Â
viewãå£ãã¦ã¾ããã®ãï¼
1.å¥ã«ã¨ãã©ãã¶ã£å£ãã¦ãã¾ãããªãã§ããã
ãã¾ããããã話ã¯ã©ãã¾ã§ãã£ã¦ãå¿ ãèµ·ããã対å¦ã¯å¤§æµã®å ´åããããªãããããããªã¨æã£ã¦ããªãã¼ããã¦ããã¾ãã§ãåé¡ãªãã§çä»ããã¾ãç¾å®ã®å¤§åã¯ããã ã£ãããããDBãé«æ©è½ãã¡ã¤ã«ãµã¼ãçã«ä½¿ãã®ã§ããã°ãã¾ã£ããåé¡ãªãã確ãã«transactionã¯ã¤ã©ãã¤ãåç´ã«æ£è¦åãã¦æ ¼ç´ãããã¼ã¿ã»ããã«å¯¾ãã¦SQLã§ã¯ã¨ãªã¼ãçºè¡ã§ããã°ååã§ããã¨ãããã®ã ãæ´æ°ã¯ãã£ã¦ãé »ç¹ãããªããã
ãã¾ãããããã§ã®æ´ãæ¿ããå®æçã«ããã¦è£æ£ãã¦ããã±ã¼ã¹ãviewãå£ãã¦ãåé¡ã¯ã¨ãããããªããviewãå£ããã¾ã¾ã§æ¸ãè¾¼ã¿ãç¶è¡ãã¦ããã¨ãã ãã ãDBèªä½ãã¶ã£å£ãã¦ããããå¤éãããã§å ¨é¨æ´ãæ¿ãã¦æ´åæ§ãåããããã«ãå¡ããªãããã¨ãããã¨ã§ããã°ãç¹ã«åé¡ããªãã
ãå®éãé·æã«ããã£ã¦éç¨ãã¦ããæ¥åã·ã¹ãã ã§ã¯ãæåã«ããããçµãã 人ããªã¹ã¯ãè¦ã¦æå³çã«ãã¼ã¿ã®skewã®ã¯ãªã¼ãã³ã°ãï¼ãã¼ã¿æ´æ°ã®ã¿ã¤ã ãã£ã¼ããè¦ã¦ï¼å ¥ãã¦ãããããããã ããææ¥ãçµã¤ã¨ãã¼ãã¼ã®ãå¿ãå»ããã¦ããä¸è²«æ§ï¼å¿ è¦ãªãããããªãï¼ãã¨ã¾ãããããæãã«ãªã£ããããããã»ã»ã»è¦ã¯ãéç¨ã§ã«ãã¼ãã¦ãããã¨ããå ´åã«ãªãããã®å ´åãtransactionã¯å¿ è¦ã§ã¯ãªã
ãä¸è¨ã®å ´åã¯ãã©ããã¦ããã¼ã¿ã¯staleã«ãªããä»ã®æ£ç¢ºãªå¤ã欲ããã¨ããã¨ãã«ã¯å½¹ã«ç«ããªããæ£ç¢ºãªç¾å¨ã®å¤ã¯ç¥ããããããã¨ããå ´åã¯å½ç¶ããããããããæ®éã¯ã§ããã°viewã¯å£ãã¦æ¬²ãããªããã¨ãããã¨ã§ã»ã»ã»
Â
2.èªåã§ã¢ããªå´ã§lockå¶å¾¡ããã®ã§transactionã¯ã¤ã©ãã¤ã
ãã¨ã¾ãããããçç±ãå°å³ã«ã¢ãªã¬ãã ã¨æããå®éåé¡ãisolationã ãã»ããã®ã§ããã°ãlockã使ããã¨ã§ããç¨åº¦ä¿è¨¼ã¯ã¨ããã¨ãã§ãããããã£ãã»ããããã«æ±ºã¾ã£ã¦ããããä»ã®å®è£ ã¯ä½¿ããã®ã«ãªããªããæ´¾ã®äººã¯æ®éãã¡ãã ã
ããã ãããã®é¸æã¯ãã¬ã¼ããªãã¨ãã¦ãèªåã§ã®å質ç¶æã®ã³ã¹ãã¨ããã©ã¼ãã³ã¹å£åãããããã¾ã«ãªãããªã®ã§ãåºæ¬çã«ãªã«ãèããã«ä¸æ¹çã«lockãå©ç¨ããã¨ããã®ã¯ãããã¦ãã®å ´åã¯ã³ã¹ãé«ã«ãªããå¤å°ã³ã¹ããæã£ã¦ããããã¨ããä½ç½®ã¥ãã§ããã°ãã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã¼ã§ãã¾ãã¯SQLã¬ãã«ã§æ示çã«ãèªåã§lockå¶å¾¡ããããªãã°ããã®ã§ãtransactionã¯å¿ è¦ãªãã
Â
ãè¦ã¯transactionãå¿ è¦ã§ã¯ãªããã¨ããå®éçãªé¢ããã¿ãã°ãä¸è¨ã®ãããã»ã©ã·ã¹ãã ã¯åé¢æ§ã»ä¸è²«æ§ã¯âå®ã¯âå¿ è¦ã¨ããã¦ããªããã¨ãããã¨ã¨ãå®éã«å¿ è¦ãªå ´åã¯ã³ã¹ããã¯ãã£ã¦èªåã§æºåã§ãããã¨ãããã¨ã«å°½ããããã«è¦ããã
ãã¾ããããã»ã©ã·ã¹ãã ã¯åé¢æ§ã»ä¸è²«æ§ã¯âå®ã¯âå¿ è¦ã¨ããã¦ããªããã¨ãããã¨ã¯ãããç¨åº¦ã¯çå®ã§ãããã¯å®éãä¸è²«æ§ãä¸è¦ãªã±ã¼ã¹ã§ãä¸å¿ è¦ã«éå°ã«RDBã使ã£ã¦ããã ãã ããã大æµã®å ´åããã£ããããfile systemãExcelãããã§ååãªã¯ãã ãï¼ãã¡ãããã¼ã¹ã®ãã¼ã¿ãµã¤ãºãExcelã§ã¯ä¸éãè¶ ããã¨ãããã¨ã¯ããã®ã§ããã®å ´åã¯RDBã使ãã¨ããã±ã¼ã¹ãããããããã¯ãã¼ã¿ã®åãåãã®è©±ã§ãæ®éã«CSVãããã§ã¡ããã¨å¦çãã§ããã°ãããããRDBã§ã®å¦çãå¿ è¦ããªããã¨ãå¤ãï¼
ãããã§ã¯ããå¤å°ã³ã¹ããæã£ã¦ãããã®ã§ãã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã¼ã§ãã¾ãã¯SQLã¬ãã«ã§æ示çã«ãèªåã§lockå¶å¾¡ããããªãã°ããã®ã§ãtransactionã¯å¿ è¦ãªãããã¨ãããã¨ãããå¾ããã©ããï¼ã§ããã
Â
lockå¶å¾¡ã§ã®åé¿
ããã¯å®ã¯äºç¹è«ç¹ããã£ã¦
1.ããããã¡ããã¨å¶å¾¡ã§ãã¦ããã®ãï¼ã¨ãã話ãã¨
2.ä»®ã«åºæ¥ã¦ããã¨ãã¦ããã¯ä»å¾ãå¯è½ãªã®ãï¼ã¨ãã話
ã«ãªãã
Â
ã1ã«ã¤ãã¦ã¯ãã¾ãã«DBAã®è 次第ã¨ããã¨ããã ã2PL-CSRã®çå±ãããã£ã¦ããã®ã§ããã°ãããç¨åº¦ã®ä¸¦è¡æ§ãä¿ã¡ãªãããæ´åæ§ããã£ãã¾ã¾çå°ãããããããã 大æ¹ã¯ãæä»å¶å¾¡ã«ããsingle versionã§ã®serial å®è¡ã®æ ä¿ãç¾å®ã ããããã®å ´åã¯å·¥å¤«ããªããã°ã¹ã±ã¼ã«ã¢ã¦ãã©ãããã¹ã±ã¼ã«ã¢ããããé£ããããã®ä¸ãlock-releaseã®ç®¡çããã£ã¡ãè¡ããªãã¨ç¡ç¨ã®ãã©ãã«ãå·»ãè¾¼ã¿ãããªããåºæ¥ãªãã¯ãªãããã¤ã³ã¹ããã¨ããã¨ããã ããã
ãlockã®ååè«ããè¨ãã°ãããã¯ç°¡åã§ãèªãã¹ããã®å ¨é¨ï¼predicateï¼ãã«ã³ã³ãã¼ã¸ã§ã³ã§ããªãread lockãåããã§ãããããã§æ®éã«read fromãä¿è·ãããã®ã§ã以ä¸ããã¾ãã«ãªãï¼ãã ãèªåã ãã§ã¯ãªããèªåãoverwriteããconcurrentãªtxå ¨é¨ã«ãåããã¨ãããå¿ è¦ãããï¼ããªã®ã ããpredicate lockã¯è¨ãã»ã©ç°¡åã§ã¯ãªãã®ã§ãããããé¢åãªå ´åã¯ä¸æ°ã«table lockãgiant lockãåãã¾ãããã¨ãå¤ããããã ã¨ãããããã¨ã»ã¼DBå ¨ä½ãã»ã¼ç·å½¢å®è¡ã«ãªã£ã¦ä½¿ãç©ã«ãªããªãããªã®ã§ãconflictã®ç¯å²/ã¿ã¤ãã³ã°/CRUDã®ä¾åçã ãã¿ãªãããsingle versionã§ããã°ãlockã¨releaseã®ã¿ã¤ãã³ã°ãåãããªãããã¾ããMVã§ããã°å¿ ãanti-dependencyã®chainãåããããã«over-writerã¸ã®å¶ç´ããããããã«ãæ éã«è¨è¨ãã¦ããã¨ããã®ãæ®éã ã¨æããã¾ãè ã¨çµé¨ã¯è¦ãããã å¯è½ã§ããããå®éããããSIã¯ãããã§ããããç¾å®ã®ããã¦ãã®DBã®serializableã®isolationã¬ãã«ã使ãç©ã«ãªããªãã®ã§ããã°ãããããé¸æãããããå¾ãªãã¨ããäºæ ãããã
Â
ã確ãã«ãããã§ãããªãtransactionã¯ã¤ã©ãã¤ãã¨ããèãæ¹ã¯ãã®éãã ã¨æããåãä¸è²«æ§ã®æ ä¿ãã¢ããªã§å®è£ ã§ããããã ãããå¥æ®µã«DB/ããã«ã§å¶å¾¡ãã¦ãããå¿ è¦ã¯ãªããã¨ã¯ãããããå®ãºãã«ããã«ã¯ç¸å¿ã®æè¡ã¨çµé¨ãå¿ è¦ã§ãããããDBAããããã転ãã£ã¦ããããã§ããªãããã£ã¦ã¡ããã¡ããå ·åãæªããã¨ã«ãªããããã®è¾ºã¯ä¾å¤å¦çï¼ã¨ã©ã¼ãã©ããã®é¬¼å®åSIã¨ã®åããæã§ä¹ããããã¨ããã®ãç¸å ´ã«ã¯è¦ããã
ãããã§ãã®ãè·äººè¸çãªlockã³ã³ããã¼ã«ããã©ãã¾ã§æã¤ãï¼ã¨ãã話ã§ããããä»å¾ãå¯è½ãªã®ãï¼ã¨ãã話ãã«ãªãã
Â
ä»å¾ã®ã¢ã¼ããã¯ãã£ã®å¤æ´ã¨ãlockã¨transactionã®ä½ç½®ã¥ãã®å¤å
ãã®10-20å¹´ãããã®ã³ã³ãã¥ã¼ãã£ã³ã°ã®å¤åã§ã¯ãã¾ããã¯ãåæ£å¦çã大å°ãã¾ãã¾ã«æ®åãã¤ã¤ãããã¨ã ãããå°ã¯NUMAãã大ã¯å¤§è¦æ¨¡åæ£ã¹ãã¬ã¼ã¸ã¾ã§ãã ã¼ã¢ã®éç/åãã¼ãã®éçããã®ã¹ã±ã¼ã«ã¢ã¦ãæ¦ç¥ã¯ãå¾åã®åãã¼ã/Diskãã¼ã¹/å°éã³ã¢/å°ãªãDRAMã®ç¶æ³ãä¸å¤ããã¦ããã
ããã®ç¶æ³ä¸ã§ã®ä¸è²«æ§æ ä¿ã®ããã«lockã³ã³ããã¼ã«ã¯æ¥µãã¦æè²ãæªãã大è¦æ¨¡ã¯ã©ã¹ã¿ã¼ã§ã®åæ£lockã¯2PCã®æ代ããããã£ããè² ããã®ä»£åè©ã®ã¾ã¾ã ãã大è¦æ¨¡ãµã¼ãã®rack scaleæ§æãSOA/microserviceã®ãã声ã¯ããããä¸è²«æ§æ ä¿ã®ããã®åæ£Txã¯lockåã£ãã¨ããã«ããã©ã¼ãã³ã¹å£åãæ¿ãããããã«ããããã®è¶³ä¸ã®ãµã¼ãã®ã¡ãã¼ã³ã¢/大容éã¡ã¢ãªã¼ã§ãããæ¢åã®2PL-CSRã®DBã§ã¯ã³ã¢ã¹ã±ã¼ã«ããã§ããªãå§æ«ã«ãªã£ã¦ãããæ確ã«ãªã£ã¦ããã®ã¯ããã®åæ£ç°å¢ä¸ã§ã¯ãlockã®ã³ã¹ãããæ³å®ä»¥ä¸ã«å¤§ãããªã£ã¦ããã¨ããç¾å®ã ããã
ãlockã¯ããæå³ã§åãããããããã¨ãã°ãCCã®æå³è«ã¨resource managementãåºå¥ããªãã¦ããããç¹ã«critical sectionã®ç®¡çã¨ãã¦ã®lockå¶å¾¡ã¯éæ¿ã®ææ³ã§ããããã®å»¶é·ç·ã¨ãã¦ã®readä¿è·ã¯å®è£ 容ææ§ï¼ãã ãéç¨ã容æãã©ããã¯å¥ï¼ãããæ £ãã¦ããã°ãããã§ãå©ç¨ã§ããããã®å¼å®³ã¨ãã¦ã¯serializableã®ç¢ºä¿ã®ããã®lockãªã®ããserialå®è¡ã®ããã®lockãªã®ãã®åºå¥ãã¤ããªããã¨ãããã¨ã«ãªãããããã©ã¼ãã³ã¹å£åã許容ç¯å²ã«åã¾ãã®ã§ããã°ãå®è£ 容ææ§ã«åããã®ã¯ãªãã ããã
ããã®lockå¶å¾¡ã«ããä¸è²«æ§æ ä¿ã¯ãcentralizedãªä»çµã¿ã§ããã°é常ã«ãã¾ãæ©è½ãããã³ã¢æ°ã»ã¡ã¢ãªã¼ãå°ãªãç°å¢ä¸ã§ã¯ç®ç«¯ã®å©ãæå ã§ã®èªåå¶å¾¡ããæåå®è¦ã®ã¢ã«ã´ãªãºã å¶å¾¡ãããå¹ççã§ãããã¨ã¯è¨ãã¾ã§ããªãããã ãæ®å¿µãªããåæ£ç°å¢ä¸ã§ã¯ããã¯ãããªããlockå¶å¾¡ã§ç®¡çå·¥æ°ã嵩ãä¸ã«ãããããã®lock-releaseã®turn aroundã®ã³ã¹ããæ¯é çã«ãªãå§ãããããã¯lockãã¼ã¹ã®æ¬è³ªçãªãã®ãªã®ã§ããããã¨ãããããã
Â
ããããã£ããã¨ãèæ¯ã«æè¡çã«ææ°ã®transactionå®è£ ã¯ãã»ã¼ãã¹ã¦time stampï¼TSï¼ãã¼ã¹ã«ãªã£ã¦ããTSã¨lockãã¼ã¹ã¯å®ã¯è«ççã«ã¯åããã¨ã ããå®è£ ãã¾ãã§ç°ãªããã¢ã«ã´ãªãºã ã¯ï¼å¤§æµã®å ´åã¯ï¼å¥ç©ã¨è¨ã£ã¦è¯ãã2PL-CSRã®ç§æçãªçè«/å®è£ ã«æ¯ã¹ãã°ã次å ã®ç°ãªãé£æ度ã«ãªã£ã¦ãã¾ã£ã¦ããããããã¹ã¯ã©ããã®ãã³ãã¡ã¤ãã§ä½ãä¸ããã®ã¯è³é£ã®æ¥ã ã端çã«è¨ãã°ãlock/releaseã®æé ããtimestampãããã©ããã«ããã¢ã«ã´ãªãºã ã§è§£æ±ºããï¼lockã§ããã°ãè¦ãã°ããããã¨ããããè¨ç®ããå¿ è¦ãã«ãªãï¼å¿ è¦ããããè¨ç®ã®ããã®ãã¼ã¿æ§é ã¯ç¨æããå¿ è¦ããããããªã¼ãã¼ããããããããããããè¨ç®ã³ã¹ããè¦ç©ããå¿ è¦ãããã
Â
ã»ã»ã»ã»ã¨ããããã§
ãèªåã§ã¢ããªå´ã§lockå¶å¾¡ããã®ã§transactionã¯ã¤ã©ãã¤ãã¨ããã®ã¯ä»ã¾ã§ã¯ããããä»å¾ã¯éç¨ããªãããªã®ã§ããtransactionã¯ã¤ã©ãã¤ãã¨ããã®ã¯ããDBï¼é«æ©è½ãã¡ã¤ã«ãµã¼ããã«ä½¿ã£ã¦ããã±ã¼ã¹ãããä»ã®å¤ã¯è¦ãã¾ããOLAPãã ããããããã«ããã¯ãtransactionã¯ã¤ã©ãã¤ãããã ããä»å¾ãä»ç¾æç¹ã®æ£ããå¤ãç¥ãããã¨ãããã¨ã§ããã°ãå¾åã®èªålockå¶å¾¡ã§ã¯ããããæããå¹ããªããªãã¤ã¤ãªãããã£ã¦RDBã§transactionæ©è½ãæä¾ãããã¨ãããã¨ã¯å¿ è¦ä¸å¯æ¬ ã«ãªããã¾ããããªæãã ã
ã»ã»ã»ã ããlockãã¼ã¹ã§ã§ããããããã®ã¾ã¾ãããããã¨ãã£ã¦ç¡çã ã¨æããã
Â
ãå人çã«ã¯ãé ãå°æ¥ã«ã¯ï¼è¿ãæªæ¥ã§ã¯ç¡çã ã¨æãï¼TSãã¼ã¹ã§ã®å¶å¾¡ã¢ã«ã´ãªãºã ãåèªãããªããªå®è£ ãã¦ããæ代ã«ã¯ãªãã¨æããã©ãåãçãã¦ããéã«ã¯ç¡çã ã¨æãã
è£è¶³ï¼TSãã¼ã¹ã§å¶å¾¡ã¢ã«ã´ãªãºã ãä½ãã«ã¯
ãç¾ç¶ã®å®è·µã®å»¶é·ç·ã§ã¯ãOCCã¨ãMVTOã©ã¤ã¯ãªå½¢ã§è¡ãã®ã¯æã ã¨æãããã®å ´åTSãã¼ã¹ã®ä»çµã¿ã¯lockã¨éã£ã¦ãã©ããã¦ã楽観ã«ãªãããã£ã¦é·ãtxã¯ã»ã¼ç¢ºå®ã«æ»ã¬ããªã®ã§ãåç´ãªã¢ã«ã´ãªãºã ã§ã¯ãã¾ããããªãããã ããã¹ã¦ãæ²è¦³ãã¼ã¹ã§ããå ´åã¯ãã©ããã¦ãåæ£å¦çã¨ã®ç¸æ§ã¯æªãããã£ã¦ãTSãã¼ã¹ã®è¯ããçããã®ã§ããã°ãOCC/MVTO/MVSGã©ã¤ã¯ãªã¢ã«ã´ãªãºã ã»ã³ã³ããã³ããä¸ä½ã«ãã¾ãããä¸ä½ã«ã»ãã«ã¹ã¿ã ãªã¢ã«ã´ãªãºã ãã¯ã¼ã¯ãã¼ãã«åããã¦èªåã§éçºãã¦ã楽観ã¨æ²è¦³ã®éãããã®ä»çµã¿ã«ãä»ä¸ãã¦ããããã¨ãå¿ è¦ã«ãªãããã¼ã¿æ§é ã»ã¯ã¼ã¯ãã¼ãã»ã¢ããªã±ã¼ã·ã§ã³ãç¨ã¿ãªããããã®æã®ã¢ã«ã´ãªãºã ã¾ã§ä½ãä¸ãããã¨ã¯lockãã¼ã¹å®è£ ã¨ã¯æ¬¡å ãç°ãªãé£ããã ãããããã¯ãã¾ãçµã¿ä¸ããæã®ç½å¿«æã¯ãªã«ãã®ã«ã代ãããããããã¾ããããªãå ´åã¯å»¶ã ã¨æ¶çµ¶ãã¦ã¡ã³ã¿ã«ã«ããã®ã§ãããããã¯ããªããããè ã«è¦ãã®ããããã«ã¦ã§ã¢ã»ã¨ã³ã¸ãã¢ã§ããã°ãã²ææ¦ãã¦ã»ããæªéã®å°ã§ã¯ããã
Â
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ã¨ãã¦å¿ è¦ãªãã®ã»ããã¨ãããããã®ã¯é¬¼ã®ããã«ããã¨ã¯æããã©ãæ®éã«è¨èªè¨è¨ã®è©±ã«ãªãã®ã§ãããã§ã¯å²æã
Â
ãããªæã
OceanVista åèª
OceanVista
http://www.vldb.org/pvldb/vol12/p1471-fan.pdf
Â
åºæ¬çã¢ã¼ããã¯ãã£ã¯ãDCéã¯ã©ã¹ã¿ã¼ãã¤ã³ãã©ã«ããã¦ãé«é 延ã»èé害æ§ãåæã«ããåæ£transactionã®ä»çµã¿ã«ãªã£ã¦ããã
Â
ã©ãè¦ã¦ãAlibabaã®OceanBaseãã®ãã®ã§ã¯ãªããããåãAlibabaã°ã«ã¼ãã§ãã¤ãOceanã®ååãã¤ãã¦ããã®ã§ãé¢ä¿ã¯ãªãã¯ãªãã¨æããå°ãªãã¨ãåãã°ã«ã¼ãã¾ãã¯æ å ±äº¤æã¯ãã¦ããã®ã§ã¯ãªãããæè¡çãªæ¹åæ§ã模索ãããããã¿ã¤ãã«è¦ããã
Â
ããã¯ã°ã©ã¦ã³ãçãªä¸å¤ªè©±ãããã¨ãAlibabaã¯ãã¨ãããä¸å½çã«ã¯ãITã§ã®ç±³å½ããã®ä¾åè±å´ï¼ãã¼ãºã ããªã®ããå®éãªã®ãã¯ç½®ãã¦ããã¦ï¼ãç®æ¨ã¨ãã¦æ²ãã¦ããã®ã¯å¨ç¥ã®éãããã§å ·ä½çãªè©±ã¨ãã¦ã¯ãAlibabaçã«ã¯è±Oracleãä¸ã¤ã®ç®æ¨ã«ãªã£ã¦ããããã®ç®ç·ã§è¦ãã¨ãã«ã¯ããã®æã®ã³ã¢æè¡ã¨ãã¦ã®ãtransactionæè¡ã®ç¿ç度ãç·´æ度ã¯DBæè¡ã®ç¬èªæ§ã®ããã¿ããã¹ãã¼ã³ã«ãªããããããæå³ã§çºãã¦ã¿ã¦ããããã»ã»ã»ã¾ãããã®ãæ®å¿µãªãããã§ã«å°ãªãã¨ã極æ±ã®æå½ããã¯å ¨ç¶ä¸ã§ããï¼é ãç½ç®
ãã®ã¬ãã«ã§ããã°ã¾ã ã¾ã 追ãã¤ããã¨å人çã«æããã®ã§ãããã¯ãããªãã¨ãããããããªã«é£ãããã¨ã¯ãã£ã¦ãªããã§ããã©ãã
Â
DBã«ã¤ãã¦ã¯ãä¸ççã«ã¯3極ã«ãªã£ã¦ãã¦ãOracleã»SAPã»ä¸å½ã ã¨æããGAFAã¯ã¡ãã£ã¨whaleããã¦éãæãã§ãããé¢ç½ãã®ã¯æ®éã«MSã§ãããã ä¾ã®SQLServerã(ry
Â
OceanVistaã«ã¤ãã¦ã®å人çãªã¤ã³ãã¬ãã·ã§ã³ã¯ä»¥ä¸
Â
1. ã¾ãatomicãªåç´ãªå¦çãã®ã¿ãã«ã¤ãã¦ãä¸è²«æ§ãæ ä¿ããåæ£transactionã§ã¯ãç¸å½åªä½ã ã¨ã¯æããquorumã¨MVçµã¿åããã¯ãã¢ãªãã§ãä»å¾ã®ãã®æã®è©±ã§ã¯æ®éã«æ¤è¨ããããã¬ã¼ã ã ã¨æããå人çã«ã¯é«ãè©ä¾¡ããããã¢ã¤ãã¢ã®çã¯æªããªãã詳細ã¯è¨³åºã®æ¹ãèªãã§ãããã¨ãã¦ããã£ããè¨ãã¨MVã§éåæã«æ¸ãè¾¼ãã§ãããversion orderãå©ç¨ãã¦viewã®æ´åæ§ï¼é åºï¼ã確ä¿ãããã®ãããã³ã«ã«åæ£åæãå©ç¨ãã¦ããããã®ããcommit protocolã¨replication protocolãçµ±åããã¦ããããªã«ãã¨å¹çãããããªããåæã¯gossipã®ä¸ã§å²ã¨ã·ã³ãã«ãªfast paxosãå©ç¨ãã¦ããã
Â
2. ãã³ããã¼ã¯ã¯ã»ã¨ãã©åèã«ãªããªããåç´ãªPoCã¬ãã«ã§ç¹ã«åé¡ããªãã¨ãã話ã§ãããªããããããç°å¢ãpooréããããã«è¦ãããç¹ã«ããç¨åº¦åæ£åæãåæã§ããã®ã§ããã°ãããå°ãé害ããã«æ¯ããªãã¨åèå¤ã«ããªããªãã ããããã ã趣æ¨ã¨ãã¦transactionå¦çããã®è©±ã§ããã°ããããªãã§ããªãã
Â
3. TPC-Cããã£ã¦ããªãã®ã¯çç±ã¯æ確ã§ãå ¨ç¶ããã©ã¼ãã³ã¹ãåºãªãããã ã¨æããããããã¯çç±ã¯ç°¡åã§ãããããACIDãªtransactionã§ã¯ãªããï¼ãã ééããªãæ¬äººã¯ACIDã£ã¦è¨ãå¼µãã¨æããï¼ACID transactionã®åçååã®view equivalentï¼ãä¿è¨¼ããHerbrand semanticsï¼ãæå³çã«ç¡è¦ãã¦ãããè¨ã訳çã«dependent transactionã¨ããè¨ãæ¹ããã¦ãããã»ã»ã»å½ç¶ãTPC-Câã§ããâçµæãã§ãªãã®ã¯ç«ãè¦ãããæãããªã®ã§ãå½ç¶ãã³ããã¼ã¯ã¯ããªããåæ¥çã«ã¯ããã¾ãããã ããªï½ãã¨ããæ°ããããã¨ã¯ãããNoSQLã®ãã³ãã«ã»ã³ã³ã·ã¹ãã³ã·ã¼ããã¯å ¨ç¶ã¾ãã§ããã
Â
4. è¦ããã«deterministicãªä»çµã¿ã§ããã®ã§ãé常ã®SQLã¯æ®éã«é£ãããOceanBaseèªä½ã¯æ¥½åã§SQLã¯ä½¿ãã¦ããã¯ããªã®ã§ããã®æå³ã§ãOceanVistaã¨OceanBaseã¯ã¾ã£ããã®å¥ç©ã ããã
Â
5. æè¡çãªçºå±æ§ã«ã¤ãã¦ã¯ãããããæè¦ã¯ããã¨ã¯æãããè¯å®çã«ã¿ã¦ãããç¹ã«ãä»å¾ã¯DBã®âããã¯ã¢ããâã¯ãæ®éã«åæ£ã¯ã©ã¹ã¿ã¼ãç«ã¦ã¦ããã®ã¾ã¾Actï½Nã¤ã³ã¹ã¿ã³ã¹ã§ãã¹ã¦ãé²ããã¨ããã®ãåºæ¬ã«ãªãã¨å人çã«ã¯æã£ã¦ãããå¾åã®ããã¯ã¢ããã»èé害系ã¨æ£å¸¸ç³»ãåããã¢ã¼ããã¯ãã£ã¯åå¨æ義ããªããçè«ã«ããã¦ãããã¨ãã°Txå¦çã¯æ£å¸¸å¦ç/ãªã«ããªã¼ã¨ããå³å¼ã¯åºæ¬çã«ãããªãã¨æãããã®æå³ã§ã¯ãMV(ã¨ãããåæ£å¦çã§ã®orderingã ãããã)ï¼gossip+quorumã¯ææã ã
Â
6.ããããä½ããã«å¤§é¸éã®åæ£transactionãå¿ è¦ãï¼ã¨ãããã¨ã¨ããã®çµæã©ã®ãããªãããã³ã«ãå¿ è¦ãªã®ãï¼ã¨ããç¹ã¯èæ ®ããå¿ è¦ãããã¨ã¯æããã°ãã¼ãã«ã«ãµã¼ãã¹ãå±éããã¨ããã¯ãã¡ãã¡ãã¼ã«ã«ã«ãã£ã¦ãã¦ã¯ããããªã³ã¹ããé«ãï¼ç¹ã«ã½ããï¼ã¯ããªã®ã§ããã®æå³ããèããå¿ è¦ãããã
 ãã æ¥æ¬ãã¼ã«ã«ã§ã¿ãå ´åã¯ã¾ã¡ãããªãDRã大ããã¨ã¯æããè¦ã¯ãµã¤ããã¦ã³ãªãã ãããã®ã³ã³ãã¯ã¹ãã§ã©ã®ãããªåæ£transactionã®ãããã³ã«ãå¿ è¦ãã¯ãèããå¿ è¦ã¯ããããã®æå³ã§ã¯ããç¨åº¦ã®é 延åæã§ã®DRçãªé«å¯ç¨æ§ã®ç¢ºä¿ã¨ãã¦ãOceanVistaçãããã³ã«ãä¸é¨é©å½ã«å©ç¨ããã®ã¯ããã§ã¯ãªããã¨æãã
 ã¾ãã¯ä½é 延ãµã¤ãå ã§ã®åæ£å¦çãåºæ¬ã«ãªããããã®çµã¿åããã¨ãã¦é«å¯ç¨æ§ãèããã®ã§ããã°ãããããã¯Primary-BackupãDRçã«æ§ç¯ããã®ã§ã¯ãªããæ®éã«Partitioned-Master/Masteræ§æã§ãOver-DCã§ã¯X-HTAPçãªãã®ã«ãªãã¨æãããã®æã®log転éã®commit/replicaãããã³ã«ã¯ãã®ã¾ã¾OceanVistaæ¹å¼ãããã ã¨æã
Â
7. ä½è«ã ãã©ãä»ã®Tsurugiã®read-only -anomaly対çã®å®è£ ã«ãããçµã¿åãããã®ã¯ã¨ã¦ããèå³æ·±ãã
Â
8. ä»å¾ã®æè¡ååã¨ãã¦ã¯ãtransactionã¨distributedã¯åºæ¬çãªåºç¤æè¡ã¨ãã¦mustã ã¨æããçæè½ã¡ã¯ã ãã§ã両è ããã¹ã¿ã¼ãããã¨ãã¤ã³ãã©ã»ããã«ã¦ã§ã¢ã»ã¨ã³ã¸ãã¢ã¨ãã¦ã¯å¿ é ã«ãªãã¤ã¤ãããããã¯ãªããªããã¼ãã«ãé«ããï¼ã»ã»ã»ã¯ã©ã¦ãã¯ä½¿ãåã«ã¯ä¾¿å©ã ãããã®è¾ºã¯å®å ¨ã«é è½ãããã®ã§ãã¾ã£ããããããªããããã¦ãã¦ããã¾ããªãæ°ããããï¼
Â
以ä¸ããã³ãã¯é¤ããæ¬è«ã®å ¨è¨³ã«ãªããããããå¾®å¦ãªãã¥ã¢ã³ã¹ã表ç¾ã®éãã¯ããã¨æãããååã¨ãã¦æ¬è«æã®æ¹ãæ£ããã®ã§ããã¡ããåç §ã®ãã¨ããã¨ãã¨ä»¥ä¸ã¯èªåç¨ã®ãã®ãªã®ã§ã
Â
Ocean Vista
http://www.vldb.org/pvldb/vol12/p1471-fan.pdf
Â
ABSTRACT
ãã°ãã¼ãã«ãªåæ£ãã¼ã¿ã«ã¤ãã¦ãconflictä¸ã§ã®ACID transactionã®æä¾ã¯ãtransactionå¦çãããã³ã«ã®ã¨ãã¬ã¹ãã¨ãããããã®ã·ããªãªã§ã®ãtransactionå¦çã§ã¯ãconcurrency controlï¼ä»¥ä¸CCï¼ã¨ã¬ããªã±ã¼ã·ã§ã³ã®ãªã¼ãã¼ããããå¢å¤§ããã大é¸éãããã¯ã¼ã¯ã®é«é 延ãç¹ã«é«ãã¤ãããã®åé¡ãç·©åããããã«ãOceanVistaï¼ä»¥ä¸OVï¼ãå°å ¥ãããããã¯ããªãã¡ãææ°ã®åæ£ãããã³ã«ã§ãããstrict serializabilityãä¿è¨¼ããã
ãCCã¨ã¬ããªã±ã¼ã·ã§ã³ã¯transactionã®visibilityã®åé¡ãæ§ã ãªå´é¢ãã解決ãããããªãã¡versionã®water markãå©ç¨ãã¦visibilityã管çããmulti-version(以ä¸MV)ãããã³ã«ã¨ãå¹ççãª(efficient)ãªgossipãå©ç¨ããé©åãªviewã®æ±ºå®ã®é å¸ãå©ç¨ãã¦ããããã®åé¡ã解決ããã
ãwatermarkã®gossipã¯ãããåä½ã§ã®éåætransactionå¦çã¨transactionã®visibilityã®éç¥ãå¯è½ã«ãããã¾ãããã®CCã¨ã¬ããªã±ã¼ã·ã§ã³ã»ãããã³ã«ã«ãããã¼ã¿ã»ã³ã¿ã¼éã®é«é 延ãããã¯ã¼ã¯ä¸ã§ã®å¹çæ§ãæ¹åããããç¹ã«OceanVistaã¯conflictãèµ·ããã¦ä¸¦å競åãã¦ããtransactionãå¦çãããã¨ãã§ããå¹ççãªwrite-quorum / read-oneãªã¢ã¯ã»ã¹ããµãã¼ããã¦ãããã¦ãã®ã±ã¼ã¹ã§ã1 roundããªããã§å¦çãå®äºãããå®è¨¼å®é¨ã§ã¯ãã«ãDCã®ã¯ã©ã¦ãç°å¢ã§ãç¾ç¶æéã®åæ£Txã¨ã³ã¸ã³ã®TAPIRã®ããã¼ã¯ã»ã¹ã«ã¼ãããã§10åã®ããã©ã¼ãã³ã¹ãgossipã®è¿½å çãªé 延ã³ã¹ãã ãã§å®ç¾ããã追å ã®é 延ã³ã¹ãã¯WANã§ã®RTTã®1ã©ã¦ã³ãåã§ãã¯ã¼ã¯ãã¼ããä½ãæè¯æ¡ä»¶ã®å ´åã¯ãã®ä¸ã©ã¦ã³ãã§TAPIRã¨ã»ã¨ãã©åãæ§è½ã§transactionãã³ãããã§ããã
Â
1. INTRODUCTION
ãã¯ã©ã¦ãã«ãããèé害æ§ä¿è¨¼ãã¹ã±ã¼ã©ããªãã£ããµã¼ãã¹ã®ãã¼ã«ã©ã¤ã¼ã¼ã·ã§ã³ãã³ã¹ãå¹çæ§ã®ããã«ãã¢ããªã±ã¼ã·ã§ã³ã¨ãã¼ã¿ãå°ççãªåæ£DCã«ããã£ã¦é åãããã¨ãããç°¡åã«ãªã£ã¦ããããã®ãããªã¤ã³ãã©ã«ãããä¸å°è¦æ¨¡ã®ä¼æ¥ãä¸çä¸ã®é¡§å®¢ã«å¯¾ãã¦ã°ãã¼ãã«ãªåæ£ã¹ãã¬ã¼ã¸ã·ã¹ãã ãæ§ç¯ãããã¨ãå¯è½ã«ãªã£ã¦ãããå°ççã«åæ£ãããã¼ã¿ãã¼ã¹ã·ã¹ãã ã«ãããåæ£Transactionã¯ãACIDã»ãã³ãã£ã¯ã¹ãå©ç¨ãããã¨ã«ããã¢ããªã±ã¼ã·ã§ã³ã便å©ã«ããä¸æ¹ã§ããã®ãªã¼ãã¼ããããç¹ã«ã°ãã¼ãã«ãªåæ£ãã¼ã¿ã«å¯¾ããã¨é«ãã³ã³ãã³ã·ã§ã³ã«å¯¾ãããé«ããªã¼ãããããæªååé«ãã
ãå°çåæ£transactionã®ãªã¼ãã¼ãããã¯ãç°ãªã£ãã·ã£ã¼ãã«å¯¾ããåä¸æ§ã¨åé¢æ§ã®ã³ã¼ãã£ãã¼ããè¡ãã³ãããã¨åææ§å¶å¾¡ã®ãããã³ã«ããã ãã§ã¯ãªããåä¸ã·ã£ã¼ãã§ã®è¤æ°ã¬ããªã«ã®ç¶æ ãã³ã¼ãã£ãã¼ãããï¼ãã¨ãã°Paxosã®ãããªï¼ã¬ããªã±ã¼ã·ã§ã³ã»ãããã³ã«ãããçºçãããå°çåæ£transactionã§ã®ãããã¯ã¼ã¯é 延ã®å¢å¤§ã¯ããã¼ã«ã«ã§ã®å¦çããããããã£ã¨é«ãã³ã³ãã³ã·ã§ã³ãããããããã¨ãã°ãåæ£DBã®ãã³ããã¼ã¯ã®ã¯ã¼ã¯ãã¼ãï¼ãã¼ç©ºéãã¿ã¼ã²ããã¹ã«ã¼ãããã®åºå®ï¼ã¯åä¸ãªã¼ã¸ã§ã³ã§å¤æ°ã®ãµã¼ãä¸ã§ã®åæ£DBã§ã¯ä½ãã³ã³ãã³ã·ã§ã³ãä½ããªããã¨ãããããéã«ãã¼ã¿ã»ãããã°ãã¼ãã«ã«åæ£ããå ´åã¯é«ãã³ã³ãã³ã·ã§ã³ã«ãªããã¨ãããã[注:è¦ããã«ããã¾ãåæ£ãããã°å¹çããããã¨å½ç¶ãããããã®ã¾ã¾ãããå°çåæ£ã«ãã£ã¦ããã¨å´©å£ããã¨ãããã¨]
ãä¼çµ±çãªCCã¡ã«ããºã ï¼ãã¨ãã°OCCã¨ã2PLï¼ã¯åæ£transactionãåæçã«å¦çãããtransactionã®ãã¸ãã¯ã®å®è¡ä¸ã«transaction orderã決å®ãããã®transactionãæä»çã«ææ°ã®versionã«ã¢ã¯ã»ã¹ã§ããæéã®éã ããã¼ã¿ãªãã¸ã§ã¯ãã®æ´æ°ãã§ããããã®ãããªæä»ã¢ã¯ã»ã¹ã¯æ²è¦³ããã¯ã楽観çãªå¾è¿½ãã§ã®validationã®å©ç¨ã«ããä¿è¨¼ãããçµæã大æµã®å ´åã¯ãã¹ã¦ã®read-write transactionã«ããã¦ããããªãã¨ãWANã§ã®RTTä¸ååã®æéãããããããã§ã¯ããã®æä»çã¢ã¯ã»ã¹ã®æéãtransactionã®serialization windowã¨å¼ã¶ãé·ãserialization windowã¯conflictãã¦ããtransaction並åå®è¡ã®å¦¨ãã«ãªãããã¤ããã©ã¼ãã³ã¹ãªCCãããã³ã«è¨è¨ã®å¤§ããªèª²é¡ã«ãªã£ã¦ããã
ãä»æ¹ãWANã§æ¥ç¶ãããã·ã¹ãã ã§ã®ã¬ããªã±ã¼ã·ã§ã³ã»ãããã³ã«ã®è¨è¨ã¯ç¹ã«å°é£ã§ãããããã¯å°ççã«åæ£ããDCéãçµåããN/Wãé ãï¼é 延ã¯æ°ç¾msecã«ãªãï¼ãã¤äºæ¸¬ä¸è½ã§ãããã¨ã«ãããçµæã¨ãã¦ãWrite-All(WA)ã¯ã¢ããã¼ãã¯ãé 延ããwriteã®ç«¶åãå³ãããä»æ¹ãWrite-Quorumï¼WQï¼ã®ã¢ããªã¼ãã¯æ®éãå°ç¨ã®leaderããã¾ãã¯quorumããèªã¿è¾¼ããè¡ãããããã¯å¥ã®åé¡ãå¼ãèµ·ãããleaderã¯æ½å¨çã«ããã©ã¼ãã³ã¹ã»ããã«ããã¯ã«ãªãããReading-Quorum(RQ)ã¯å¤§æµã®ãªã¼ããããã³ããªã¯ã¼ã¯ãã¼ãã§ã¯ãReading-One(RO)ããããã£ã¨ã³ã¹ã[注ï¼workã ããquorumçãªè¨ãæ¹ã ã¨å¤åload]ããããã
ãTAPIRã¨ãMDCCã®ãããªä»¥åã®ç 究ã¯ãCCã¨ã¬ããªã±ã¼ã·ã§ã³ãå¹çã®ããã«åä¸ã®ãããã³ã«ã«ã¾ã¨ãã¦ãããTAPIRã¯WQROã許容ããçµæinconsistent-readãèµ·ãããããããã¯CCã¨ã¬ããªã±ã¼ã·ã§ã³ã®ä¸¡è ã®ããã«ãã¬ããªã«ã®quorumã«å¯¾ãã¦âã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã¼ã§ã®validationâãå©ç¨ãããã¨ã§å¯¾å¿ãã¦ãããçµæãvalidationæ¸ã¿ã®ãªã¼ãã¯åºæ¬çã«RQã«ä¸è´ãããã¨ã«ãªããã¨ã¯ããconflictããªãã¨ããç¹æ®ãªã±ã¼ã¹ã«ããã¦CCãããã³ã«ã«é¨åçã«ãã®ãªã¼ãã¼ããããé ãããã¨ãããã¨ã«ãªããããã以ä¸ã«ãTAPIRã¨MDCCãããã³ã«ã«ããã¦ã¯ãconflictã¯ããæ©ããã¹ããå®è¡ãé ãããå¥ã®ããé ããã¹ã«ãããã¡ãã»ã¼ã¸ã®ã©ã¦ã³ãã追å çã«å¢ãããã¨ã«ãªã£ã¦ãã¾ãã[注ï¼æ©ããã¹ã»é ããã¹(fast path / slow path)ã¨ããã®ã¯ããã¡ãã£ã¨ä»ã®è¨ãæ¹ãããã¨ã¯æãããåç´ã«turn aroundã¨ãå®è¡stepã§ã®æ³å®å®è¡æéã®ãã¨ã§ãããã¨]
ããã®è«æã§ã¯ãOceanVistaã¨å¼ã°ãããææ°ã®ãããã³ã«ãææ¡ãããããã«ãããå°çåæ£ä¸ã®transactionå¦çã«ã¤ãã¦ãstrictly serializableãªåé¢ã¬ãã«ãæä¾ãããOVã¯CCã¨transactionã³ãããã¨ã¬ããªã±ã¼ã·ã§ã³ãåä¸ã®ãããã³ã«ã«çµ±åãããã®æ©è½ã¯viewã®ã³ã³ããã¼ã«(visibility control)ã¨ãã¦è¦ãªããã¨ãã§ãããæã ã®èãã§ã¯ä»ã®transactionã«å¯¾ããããtransactionã®visibilityãç¶æãããã¨ãä¸è²«ããåæ£transactionã®ä¸»ããããã·ã§ã³ã§ãããmulti-versioning(MV)ã«åºã¥ãã¦ãOVã¯ãversion watermarkãå©ç¨ãããã¨ã§visibilityã®ãã©ããã³ã°ããããã¦ãå¹ççãªgossipãå©ç¨ãããã¨ã§é©åãªviewã®æ±ºå®ã®é ä»(å°çã)(arrives at correct visibility decisions)ãè¡ããwatermarkã¯visibilityã®ãã¦ã³ããªã¼ã§ããï¼watermarkããä¸(below the watermark)ã®versionã®transactionã¯å¯èªã§ãããwatermarkããä¸(above the watermark)ã®versionã®transactionã¯èªããã¨ãã§ããªããOVã¯éåæãã¤åæ£çã«ãé権çãªleaderãã¼ããâä»ããã«âwatermarkãçæã»gossipãããã[注ï¼ãã®watermarkã®ä¸ä¸ï¼above/belowï¼ã£ã¦ã®ã¯ãããã¦ãã®å ´åã¯å調å¢å ãªã®ã§ãåã»å¾ï¼before/afterï¼ã§ããã®ã ãã©ãå¤è»¸ã»å¤å±¤ã§å¤æããªãã¨ãããªãã¨ãã«ä¸ä¾¿ãªã®ã§above/belowã使ãã¨ããæãããã¾ãã¯åç´ã«boundaryã¨ãã¦ä½¿ã£ã¦ããã®ã§ãããããè¨ãæ¹ã«ãªã£ã¦ãããããããªãããããã¥ããã¨ãã«ã¯æ®éã«below=before / above=afterã§é åºã¨ãã¦ç解ãã¦ãããã¨æãã]
ãvisibilityã³ã³ããã¼ã«ã¯watermarkãå©ç¨ããconflictããtransactionã並åå¦çãããã¨ãã§ããææ°ã®éåæCC(Asynchronous CC=ACC)ã¹ãã¼ã ãå¯è½ã«ãããACCã¯transactionã®å®è¡ãã¸ãã¯ããtransaction orderãåé¢ããï¼transactionã¯åæã¯ããã¯ã«åºã¥ãã¦çæãããã°ãã¼ãã«ãªversionã«ããtotal orderã«ãªãã並åæ§ãæé©åããããã«ãACCã¯read-write transactionã以ä¸ã®ä¸ã¤ã®å¦çã«å¤å½¢ããã
-write-onlyã®å¦çãMVã¹ãã¬ã¼ã¸ã®ãã¬ã¤ã¹ã»ãã«ãã¼ï¼ããªãã¡ãã¡ã³ã¯ã¿(注ã¨ãããã©ãè¦ã¦ãFutureã§ãã)ï¼ã®write
-read-onlyã®å¦çã
-ç¹å®versionã®éåææ¸ãè¾¼ã¿
[注ï¼ã¨ãããã¨ã§æ®éã«Herbrand sematicsçãªã¢ã¬ã¯ãå®ã¯å¾è¿°ã®Dependent transactionã«ãªã£ã¦ãã¦ããã¿ããã©ãã¨ããã¯ä»¶ã®deterministic DBã®æµåããã®è¾ºã§èªãæ°åããªããªãã¾ãããã¾ãCommitãããã³ã«ã¨Replicationãããã³ã«ã®çµ±åã¯ãããªãã«è¦äºãªã®ã§ãè¨ããããã¨ã¯ä¸æ¦çä¿ãã¦èªã¿ç¶ããã®ãåãã¨ã]
visibilityã®watermarkï¼Vwatermarkï¼ã¯ç¹å¥ãªversion numberã§ãããããä¸ã®ãã¹ã¦ã®transactionã¯ãã®write-onlyã®å¦çã¯å®äºãã¦ããªããã°ãªããªãï¼S-phaseï¼ãOVã§ã¯Visibilityã³ã³ããã¼ã«ã¨MVã«ããããã®å¦çã®å¤§åã¯ãã¨ãconflict transactionã§ãã£ã¦ã並åå®è¡ã§ãããå ãã¦ãwatermarkã®gossipã¯transactionã®visibilityããããçã«éç¥ãããã¨ãã§ããwrite-onlyã®å¦çã«å¯¾ããå¹ççãªatomicãªè¤åãã¼ã§ã®æ¸ãè¾¼ã¿ã«ã¤ãªãããã¨ããã®ã¯ãVwatermarkãããä¸ã®ãã¹ã¦ã®versionã¯ãã¹ã¦ã®ãã¼ãvisibleã«ãªãããã [注ï¼ãã¼äºã ã®è©±ã¯ãè¦ã¯Phantomããªããã¨ãã話ã ã¨æãããã]
ãã¬ããªã« watermark(Rwatermark)ãããããä¸ã®transactionã®versionã¯å®å ¨ã«å¯¾å¿ããã¬ããªã«ã«ã³ãã¼ããã¦ãããã(ãã®watermarkï¼ã¯å¹ççãªquorumã¬ããªã±ã¼ã·ã§ã³ãå¯è½ã«ãããOVã§ã¯æ¸ãè¾¼ã¿ã¯ãã¼ãã®ç«¶åã¨å¤±æãèªåçã«åé¿ããããã«WQï¼ããããéåæã®WAï¼ãå©ç¨ãããæ¸ãè¾¼ã¿ã¯conflictããã£ã¦ãæ©ããã¹ã§ã®1ã©ã¦ã³ãããªããã§è¡ããã¨ãã§ããããã¾ãã®å¤§éã®ãã¼ãã§å¤±æããã¨ãã¯é ããã¹ã§2ã©ã¦ã³ãããªãããå¿ è¦ã«ãªããOVã¯å¤§æµã®å ´åãRwatermarkããä½ãtransactionã«å¯¾ãã¦ROï¼ããªãã¡ã©ã®ã¬ããªã«ããèªãã§ãããï¼ãå©ç¨ãããã¨ã§ä¸è²«æ§ã®ãããªã¼ããæä¾ãããã¨ãã§ãããèªã¿è¾¼ãversionã¯ãå®å ¨ã«ã¬ããªã±ã¼ã·ã§ã³ããã¦ããªããã®ã§visibleãªå ´åã§ã®ã¿ãRQãè¦æ±ããã
ãOVãããã³ã«ã¯åæ£transactionã®é常ã±ã¼ã¹ãããªãã¡ã¹ãããã¨ãã¼ãããã£ã¦ããwrite-setãæ³å®ãã¦ããããã®transactionã¢ãã«ã¯ããã¤ãã®å è¡äºä¾ï¼16:H-store 24: Janus 29: Calvinï¼ã§ä½¿ããã¦ããã
ãå ãã¦ãäºåã«å®£è¨ã®write-setãªãã§ã®transactionããããç¥ããããã¯ããã¯ãããªãã¡reconnaissance query (Sec 3.4)ãå©ç¨ãããã¨ã§ãµãã¼ããã¦ããã注ï¼è¦ããã«deterministicãªè©±ãªãã ãã»ã»ã»OceanVistaãOceanBaseã§æ¡ç¨ããã¦ããªãã ããã¨ããçç±ãããã§ãããæ®éã«èãã¦non-deterministicã§ãªãã¨ã¢ããªã±ã¼ã·ã§ã³ã«èããä¸ä¾¿ãããããã¨ã«ãªããAlibabaã®åºå¹¹ã§ããã®ã§ããã°ãã¡ãã£ã¨ããããªãã®ã§ã¯ãä»æ¹ãã¹ã±ã¼ã«ããã¦ãããç¨åº¦ã®å¤§é¸éãã¼ã¹ãèããã®ã§ããã°ãããªãã¸çãªã¢ããªãå¥éãã¾ãã¦ãdeterministicã«å¦çããã¨ããã®ã¯å¯è½ã§ããã®éãã§ãã®ç¨®ã®ã¢ã¤ãã¢ã使ããã¦ãã¦ãããããã¯ãªãã¨æããï¼
ãOVã¯OV-DBã¨å¼ã°ããã¹ãã¬ã¼ã¸ã·ã¹ãã ä¸ã§å®è£ ããã¦ããAWSã®EC2ä¸ã§ã°ãã¼ãã«ã«åæ£transactionãè©ä¾¡ãã¦ãããOV-DBã¨å°çåæ£transactionãããã³ã«ã®TAPIRãæ¯è¼ããã¨ãããçµæãOV-DBã¯ä¸ç¤ããé«ãã³ã³ãã³ã·ã§ã³ã»åææ§ã«ããã¦ã¹ã«ã¼ãããã§TAPIRãåé§ããä¸æ¹ã§watermarkã®gossipã«ã¤ãã¦ã¯é«ãé 延ãå¼ãèµ·ãããã¨ã«ãªã£ããç¹ã«ãOV-DBã¯ä½ãpairwiseãªconflict rateã§ããä¸æ¡é«ããã¼ã¯ããã©ã¼ãã³ã¹ãéæããããã¦gossipãããã³ã«ã¯ç·ãã¦è¿½å çãªä¸åã®WAN-RTTã®é 延ã³ã¹ããããã£ããå®è¨¼å®é¨ã¯OVãä¸åã®WAN-RTTã¨ãããã£ã¨ãããã±ã¼ã¹ãéæãããã¨ã示ããããã¯TAPIRã¨åçã§ããã
Â
2. ARCHITECTURE
ãFig1ã«OV-DBã®ã¢ã¼ããã¯ãã£ã示ããããããã®DCã«å°ãªãã¨ãä¸ã¤ã®gossiperããããè¤æ°ããå ´åã¯åã«FTã®ããã§ããããã£ã¦ç¬ç«ãã¤redundantã«åãã
 Gossiper
gossiperã¯DCå ã®visibilityã®æ å ±ãwatermarkã®å½¢ã§éããä»ã® gossipersã¨ãã®watermarkã交æãããã°ãã¼ãã«ãªvisibilityã®ç¶æ ã®viewãããgossiperã¯ãã®DCå é¨ã®watermarkãçæãé å¸ããã
 DB Server
OV-DBã¯ã·ã£ã¼ãã«ãã¼ãã£ã·ã§ãã³ã°ããã¦ãããåã·ã£ã¼ãã¯DBãµã¼ãã®ã¬ããªã«ã®ã°ã«ã¼ãåä½ã§ç®¡çããã¦ãããDBãµã¼ãã¯ä»¥ä¸ã®ä¸ã¤ã®æ©è½ã®è²¬ä»»ããã¤
Â
1. Transaction coordinator
ã¯ã©ã¤ã¢ã³ãããtransactionè¦æ±ãåããã¨ãã«ãåãµã¼ãã¯ã°ãã¼ãã«ãªã¦ãã¼ã¯versionï¼tsããã¼ã«ã«ã¯ããã¯(注ï¼ãã¶ããã¸ã«ã«)ã«åºã¥ãã¦ããã®è¦æ±ã«å²ãå½ã¦ããï¼ä¾ãã°ãtimestampã¨ãµã¼ãIDã¨å調å¢å ã®ã«ã¦ã³ã¿ã¼ã®çµã¿åããã¨ãï¼ãµã¼ãã¯ãã®tsã«ç´ã¥ããtransactionãåparticipantã«ã¬ããªã±ã¼ã·ã§ã³ããããããããtransactionã®çµæ(decide)ãæåã®ãµã¼ããè¿ãã段éã§ãã¯ã©ã¤ã¢ã³ãã«éç¥ããå¤ãè¿ãã
2. Multi-version(MV)ã¹ãã¬ã¼ã¸
åãµã¼ãã¯MVã¹ãã¬ã¼ã¸ã®ã·ã£ã¼ãã®ãã¼ã¿ãä¿æãããåã·ã£ã¼ãã¯è¤è£½ãããconsistent hashingã§ã¢ã¯ã»ã¹ãããã
3. Transaction execution
transaction ãã¸ãã¯ã¯ãåtransactionã®version numberã§ããtsãVwatermarkãä¸åã£ãã¨ã(when below)ã«å®è¡ããããåDBã®ã¹ãããã§å®è¡ãããã
Â
OVãããã³ã«ã¯ä»¥ä¸ã®ååãå®è¡(enforce)ãã
P1 transactionã¯ãã®versionã®orderã«å¾ã£ã¦effectãã
P2 åcoordinatorã¯å調å¢å ã®version numberã®tsãããããã®transactionã«å²ãå½ã¦ãvisibleã§ããã¹ãã§ãªããã£ã¨ãä½ãã¢ãµã¤ã³ãããversion numberï¼ããªãã¡Svw Sec3.3åç §ï¼ãè¨é²ãã¦ãã
P3 Vwatermarkã¯ãã¹ã¦ã®Dbãµã¼ãã®æå°ã®Svwããã大ããã¦ã¯ãããªãï¼æ³¨ï¼largeãããªãã¦highï¼ã ã¨æãï¼
 ä¸è¨ã®ããããã£ãä¸ããããã¨ãVwatermarkãããä¸ã®ãã¹ã¦ã®transactionã¯å®å ¨ã«visibleã«ãããã¨ãã§ããããã¤ãããä¸ã®versionããã¤transactionãä½ãããæãããªãã®ã§transaction orderãåºå®ã§ããããããã«ãOVã¯Vwatermarkãå©ç¨ãããã¨ã§ãå¹ççã«å¤æ°ã®transactionã®visibilityãã³ã³ããã¼ã«ãããã¨ãã§ããã
 ãµã¼ãã®ã¯ããã¯ã¯åæããã¨ãã°NTPã®å©ç¨ããæ³å®ãã¦ãããã¯ããã¯ã®ç°å¸¸ã¯OVã®ããã©ã¼ãã³ã¹ã«ã®ã¿å½±é¿ããGoogleSpannerã®TrueTimeãµã¼ãã¹ã¨ã¯ç°ãªããä¸è²«æ§ä¿è¨¼ã«ã¯å½±é¿ããªãããããã¯ã¼ã¯ã¯ã¡ãã»ã¼ã¸ã«ã¤ãã¦ä½å質ãé åºä¿è¨¼ãªããé 延ãæ³å®ããããéãæãç¹°ãè¿ããªãã©ã¤ããã®ã§ããã°çµæã¨ãã¦æ£å¸¸ãªãµã¼ãã«ã¯ããªããªã¼ããããOVãããã³ã«ã¯ã©ã®DCå ã§ãå®å ¨ãªå ¨é¨ã®ã¬ããªã±ã¼ã·ã§ã³ã¯è¦æ±ãããªãããã ãããã®è«æã§ã¯åæãç°¡åã«ããããã«å®å ¨ãªã¬ããªã±ã¼ã·ã§ã³ãæ³å®ãã¦ããã
Â
3. CONCURRENCY CONTROL AND TRANSACTION COMMITMENT
 OVã«ãããtransaction visibilityã®ç®¡çã¯éåæãã¤ã¾ã¨ããï¼batchï¼transactionå¦çãå¯è½ã«ãããACCã¯conflictããtransactionã並åã«å¦çãããå¯è½ã§ãããå¾æ¥ã®ã·ã¹ãã ãããé«ã並åæ§ãæä¾ãããã¨ãã§ããabortã¾ãã¯ãããã¯ã«ããconflictããtransactionã解決ãããã¨ãã§ãããtransaction commitmentã¯OVãããã³ã«ã®visibility管çã«çµ±åããã2PCã¯å¿ è¦ãªããOVã¯å¤ãã®transactionã®visibilityã®æ å ±ãä¸ã¤ã®watermarkã«ã¾ã¨ãããã¨ãå¯è½ã§ãåã ã«transactionã®visibilityã管çããï¼ãã¨ãã°2PCã®ãããªï¼ãããã³ã«ãããé«ãå¹çæ§ãå¯è½ã«ããããããã³ã«ããã詳ãã調ã¹ãã¨ãOVã«ãããread-write transactionã®ãã£ã¨ãããã¬ã¤ãã³ã·ã¼ã¯TAPIRã¨åãã¨ãããã¨ãåãããããªãã¡1WAN-RTTã«ãªããã¾ããOVãstrict serializableãæä¾ãããã¨ã®è¨¼æãã¹ã±ãããããã¨ã«ããªãã
Â
3.1 Asynchronous Concurrency Control
æåã«éåæ並è¡æ§å¶å¾¡ï¼ACCï¼ã®ææ³ãæ示ãããäºåã«ããã£ã¦ããwrite-setã«å¯¾ããread-write transactionã®ãã¯ããã¯ã«ãªãããã®ä»ã®transactionã®ã¿ã¤ãã«ã¤ãã¦Sec3.4ã«è©³ç´°ããããOVã¯éåæã«transactionãå¦çãããããªãã¡ï¼read-write transactionã®å¦çãwrite-onlyã¨read-onlyã¨éåæã®writeã®ã·ã¼ã±ã³ã¹ã«å¤å½¢ãããACCã¯transaction orderã®æ±ºå®ãtransactionãã¸ãã¯ããåé¢ãããããã¯ã°ãã¼ãã«ãªwrite-setã®ãã¼ã®è¨é²ã«ããéæãããããã®å¾ã§read-onlyã®å¦çã¨éåæwrite-onlyãç¶ãã
Â
Write-only operation
ACCã¯versionãtsã§ããtransactionã®write-setã®ãã¼ããStore-phaseï¼S-phaseï¼ã®versionã®å¤ã«ãããããã¬ã¼ã¹ã»ãã«ãã¼ãå©ç¨ãã¦è¨é²ããããã¬ã¼ã¹ã»ãã«ãã¼ã¯functorã§ããï¼æ³¨ï¼ä½åº¦ãè¨ããã©æ®éã«Futureã ã¨æãï¼transactionå ¨ä½ãå¦çããããã«å¿ è¦ã¨ãããå ¨é¨ã®æ å ±ããã¤ï¼ãã¨ãã°ãread-setå ¨ä½ã»write-setããã©ã¡ã¼ã¿çï¼ãã®ãããªfunctorããä¸è¬çãªãã«ãã»ãã¼ãã£ã·ã§ã³ã®transactionãå½è©²transactionã«ããã¦ããããã¼ãã£ã·ã§ã³ããèªã¾ããå¤ãå¥ã®ãã¼ãã£ã·ã§ã³ã«æ¸ãããå¤ã«å½±é¿ãããããªtransactionããµãã¼ããããS-phaseã®transactionã¯visibleã§ãªãããã¤ãããããå¥ã®versionãæ¸ãè¾¼ããããã¦ã¢ãããã¯ãªãã«ããã¼ã¸ã®CCãåç´åãããMVãå©ç¨ãããã¨ã§ãåtransactionã¯ã¦ãã¼ã¯ãªversionãæ¸ãè¾¼ã¿ãVwatermarkãgossipãããã¨ã§visibleã«ãªããããã¯ï¼PCã§ã®2roundç®ã®ã¡ãã»ã¼ã¸ãã¾ã¨ãããã¨ã¨ä¼¼ããããªå¹æãããã
Â
Read-only operationã¨éåææ¸ãè¾¼ã¿
ACCã§ã¯transactionã¯ãã®versionãVwatermarkãããä¸ã«ãªã£ãã¨ãã«ã®ã¿å®è¡ããããããã¯ãtsãããä¸ã«ããversionã®transaction orderã決å®ããããã¨ã§ãExecution-phaseï¼E-phaseï¼ã§è¨é²ãããfunctorãå®è¡ããããã¨ã«ããéæããããversion tsã®functorã®å®è¡ã¯ãã¾ãread-onlyã®operationãtsã®ç´åã®versionã®read-setã®ãã¼ãèªã¿ï¼æ³¨ï¼ããããreadãããã³ã«ã«ãªã£ã¦ããã¨ãããã¨ï¼ãã¤ãã«transactionã®æ±ºå®ãè¨ç®ããã¯ã©ã¤ã¢ã³ãã«å¤ãè¿ãããã®ã®ã¡write-setã®ãã¼ã«å¯¾ããæçµçãªå¤ãè¨ç®ããæå¾ã«ãéåææ¸ãè¾¼ã¿ã§ãS-phaseã«ã¹ãã¢ãããfunctorããã®æçµã®å¤ã§ãªãã¬ã¼ã¹ãããããèªã¾ããversionã(å¤ã§ã¯ãªã)functorã§ããã°ãDBãµã¼ãã¯å帰çã«functorãæåã«è¨ç®ãããããããè¨ç®ãããæçµã®å¤ãå©ç¨ãã¦read-onlyã®operationã解決ãã
 Fig2ãACCã«ãããtransactionå¦çã®ã¡ãã»ã¼ã¸ããã¼ã«ãªããAlgorithm1 ãï¼çä¼¼ã³ã¼ãã§ã®ï¼æç¶ãã«ãªããããã§ã¯ä¸¸ã§ãã¼ã¯ãããæ°åï¼â ï¼ãã¡ãã»ã¼ã¸ããã¼ã¨çä¼¼ã³ã¼ããçµã³ã¤ããããã«å©ç¨ãã¦ããã
 ã¾ããtransactionãã©ããã®Dbãµã¼ãï¼ãã¼ã«ã«ãªDCãªãã®ãããã°ããï¼ã«ã¯ã©ã¤ã¢ã³ãããéãä»ããããããã§ãtransaction coordinatorãèµ·åãcoordinatorãTidMgrï¼Tx_Id_managerï¼ãã¤ãã£ã¦ãèªåã®ãã¼ã«ã«ã¯ããã¯ã«åºã¥ãã¦ãã°ãã¼ãã«ã«ã¦ãã¼ã¯ãªversion number tsãã¢ãµã¤ã³ãããã³ã¼ããããã¯ã ã¨â ãcoordinatorãtransactionããã®transactionã®ãã¹ã¦ã®participantã·ã£ã¼ãã«Write(Sec4.1)ããããããåããã¬ããªã«ã¯ãtransactionå ¨ä½ãplaceholder(functor)ã¨ãã¦ããã®version tsã®å¤ã¨ãã¦ä¿åããã(注ï¼place_holderã«å¤ãããªãã¦é¢æ°ï¼transactionå¦çããã®ãã®ï¼ãã»ãããããå¤ãå¼ã³åºãã¨ãã«å®è¡ããã)ããã§ãã®âå¤âã¯E-phaseã§write setã®æçµçãªå¤ã«ãªãã¬ã¼ã¹ããããDBãµã¼ãã¯tsã®ä¿åã«MVï¼Sec3.2ï¼ãå©ç¨ããS-phaseã§ã¯transactionéã§ã®é åºä»ããå¼·å¶ã¯ããªããã¨ãããã¨ã§ãS-phaseã§ã¯conflictã«ããtransactionã®abortã¯æ±ºãã¦çºçããªããtsããã¹ã¦ã®shardã«ä¿åããã¨ãã«coordinatorã¯TidMgrã«ä¿åãããtransactionã«ãã¼ã¯ãã¤ãããããã§ãªããã°ï¼æ³¨ï¼ããªãã¡ããã¹ã¦ã®ã·ã£ã¼ããã®ä¿åã§ããªãã¨ããããã¯quorumãã¨ããªãã£ãã¨ãã«ãªããããã®æã¯è¦ã¯ãã®é åºã®å ´æã®åæãåããªãã£ãã¨ãããã¨ã«ãªããããã®ã¨ãã«ï¼abortããããAbortTxnã«ã¤ãã¦ã¯Sec4.1åç §ã®ãã¨ãAlgorithm 1ã®9-11è¡ç®ã¯ã¬ããªã±ã¼ã·ã§ã³ã®éåæå¦çã«ãªã£ã¦ãããããã¯non-blocking(詳細ã¯Sec4.2)
 åDBãµã¼ãã¯ç¶ç¶çã«ææ°ã®Vwatermarkãgossiperããåãåãç¶ããVwatermarkãããä½ãversionããã¤transactionã¯ãã¹ã¦å®è¡å¯è½ãªç¶æ ã«ãããtransactionã¯versionçªå·ã§é åºã¥ãããããfunctorã®å®è¡ã¯â¡ã®ããã®versionçªå·ã®tsã®ç´åã®versionã®read-setã®ãã¼ãèªããã¨ã§å§ã¾ããããããèªã¾ããå¤ã«åºã¥ãã¦transactionãå®è¡ããããèªã¿è¾¼ã¿ã¯ãtsãRwatermarkï¼Sec4.3åç §ï¼ã®ãããä¸ã«ããå ´åã¯ãã£ã¨ãè¿ãã¬ããªã«ã«æä»çã«è¡ããããããããªããâ¢ã«ããã¦ãå®è¡çµæã¯coordinatorã«éãããããã®ã®ã¡â£ã§ãwrite-setã®ãã¹ã¦ã®ã¬ããªã«ã«éåæã«æ¸ãè¾¼ã¾ãããOVã¯ãã¹ãããã®transactionã®ãã¸ãã¯ã¯deterministicãªãã®ãæ³å®ãã¦ããã
ï¼ããªãã¡ãåãå¤ãèªãã å ´åãfunctorã®å®è¡ã®çµæã¯ãåãçµæãåºããã¾ããversion tsã®functorã®å®è¡ã¯ä¸¦åãã¤ç¬ç«ã«è¡ãããããªãã¬ã¼ã¹ãããfunctorã®éè¤å®è¡ãé¿ããããã«ãæåã®å®è¡ã§version tsã®ããããã®functorãæçµã®å¤ã«ãªãã¬ã¼ã¹ãããdeterminismã¯åãtransactionã®ãfunctorã®åæå®è¡ãåãçµæãåºããã¨ãä¿è¨¼ããããªã®ã§ãcoordinatorã¯functorå®è¡ã®æåã¬ã¹ãã³ã¹ãåãåããå¦ãããã«ã¯ã©ã¤ã¢ã³ãã«å®äºãéç¥ããã(注ï¼ããã§è¨ã£ã¦ããdeterministicã¨ããè¨ãæ¹ã¯ãã£ã±ãåæ£å¦çã®ã³ã³ãã¯ã¹ãã§ã®è¨ãæ¹ã§ãTxç¨èªã§ã®deterministicã¨ããè¨ãæ¹ã§ã¯ãªãããã ãOceanVistaèªä½ã¯deterministic DBã«åé¡ãããã)
Â
è°è«ï¼ä¸¦åæ§ã«ã¤ãã¦
read-writeã¾ãã¯write-writeã®conflictãconcurrentãªtransactionéã§çºçããã¨ãã¯å¸¸ã«ãå¾æ¥ããã®åæCC(ãã¨ãã°2PLã¨ãOCC)ã¯concurrentã«å®è¡ãããã¨ãã§ããªã[注ï¼ããªãä¹±æ´ãªè°è«ã§ã]ããã®ãã¨ã¯ãconflictãã¦ãããã¼ã¿ã¸ã®ã¢ã¯ã»ã¹ã«å¯¾ãã¦ãæä½ã§ãä¸åã®1WAN-RTTã®æä»çãªâserialize windowsâã«ã¤ãªãããå¯¾ç §çã«ãACCã¯conflictãã¦ãã大æµã®å¦çã並åã«å®è¡ãããã¨ãã§ããã
 Tableï¼ã§äºã¤ã®concurrentãªtransactionã®ACCã®ã¹ãããã®çµã¿åããã«å¯¾ããæåãå
±éã®ãã¼ä¸ã§ã®äºã¤ã®æä½ã«ã¤ãã¦ã並åã«å®è¡å¯è½ãã©ããããè¨è¿°ãã¦ããã
äºã¤ã®transactionã®writeï¼ããªãã¡ãwrite-onlyã¨éåææ¸ãè¾¼ã¿ï¼ã®ã¹ãããã¯write-setã被ã£ã¦ãã¦ã並åã«æ¸ãè¾¼ããã¨ãã§ããããªããªãç°ãªã£ãversionãæ¸ããã¨ã«ãªãã ããªã®ã§ãåæ§ã«ãwrite-onlyã¨read-onlyã®ä¸¦åå¦çãç°ãªã£ãversionãã¢ã¯ã»ã¹ãããã¨ã«ãªããããªãã¡ãä¸ã¤ãVwatermarkã®ä¸ã§ãããä»æ¹ãä¸ã«ãªãã
 ACCã®äºã¤ã®ã¹ããããå®å ¨ã«å¹³è¡ã«å¦çã§ããªãå¯ä¸ã®ã±ã¼ã¹ã¯ãread-onlyãªãã¬ã¼ã·ã§ã³ããä»ã®transactionã®éåææ¸ãè¾¼ã¿ã¨ãç¹å®ã®versionã¸ã®conflict(ããªãã¡read dependentãªå ´å)ãæã¤å ´åã«ãªãããããããã®å ´åã¯ããã¦ããåæCCã®read-writeãããâcontention footprintâã§å°ããã§ããã¤æç¶æéã¯1-WAN RTTã«ãªããããã¯ä»¥ä¸ã«ãã
1) æåã®replicaãéåææ¸ãè¾¼ã¿çµç±ã§æå¾ã®å¤ã«ãªãã¬ã¼ã¹ããã¦ãã¾ãã°ã(ãã¨ãã°ããã¼ã«ã«DCã®ã¬ããªã«ããã®èªã¿è¾¼ã¿ï¼readã¯æåãã
2) ãã®conflictããversionã¯ä»ã®versionã®å®è¡ã妨ããªãããã¨ãã°ãACCã¯è¤æ°ã®ãã®ãããªåããã¼ã«å¯¾ããread-dependentãªconflictãç°ãªã£ãversionã§åæã«è§£æ±ºãããã¨ãã§ããã
Â
è°è«ï¼é 延ã«ã¤ãã¦
TAPIRã¯WANã«ã¾ãããã¹ããªã¼ã ã©ã¤ã³ã®coordinationã«å¯¾ãããããã³ã«ãå©ç¨ãããçµæã¨ãã¦ãTAPIRã¯æè¯ã®ã±ã¼ã¹ã§ãï¼ãã¼ã«ã«ã®ã¡ãã»ã¼ã¸RTTã¯ç¡è¦ããã¨ãã¦ï¼DCãã¼ã«ã«ã®ã¬ããªã«ãèªã¿ããã¤èªã¿ãæ¸ããconflictããªãå ´åã1åã®WANRTTã®é 延ãèµ·ããããã®é 延ã¯ãconflictããã®ãªãã©ã¤ã«ããcontentionãå¢å ããã«ã¤ãããã£ã¨å¢å ãã¦ãããã«ããããããããã®é 延ã¯writeãvisibleã«ããéåæã®ã³ãããã¡ãã»ã¼ã¸ãå«ã¾ãªãã(注ï¼ã¤ã¾ãã³ãããã®ã¡ãã»ã¼ã¸ã¯å¥ã«ã¾ãå¿ è¦ã«ãªã)ãOVãããã³ã«ã§ãã¾ãã1WANRTTã§æè¯ã®é 延ãéæãããFig2ãããããã¨ãããS-phaseã¯WANã¯ä¸ã¤ããã°ååã§ãDCå ã§ã¬ããªã«ãå©ç¨å¯è½ãªå ´åã¯ããã¹ã¦ã®E-phaseã®ã¡ãã»ã¼ã¸ã¯éåææ¸ãè¾¼ã¿ãããã¯é 延ã«å«ã¾ããªããããé¤ããDCãã¼ã«ã«ã«ãªããgossipã¡ãã»ã¼ã¸ãDCéã«ãããgossipããããããããgossiper (ãã¨ãã°Gã¨ããã¨)ã¯ãä»®ã«Gããã§ã«tsãããé«ãwatermarkãåãåã£ã¦ããã®ã§ããã°ããªã¢ã¼ããªgossiperããã®ã¡ãã»ã¼ã¸ãå¾ ã¤å¿ è¦ã¯ãªããFig2ã®ä¾ã§ããã¨ãã¯ããã¯ãåæãã¦ããã¨ããWAN-RTTãTwanã¨ããã¨ãæå»tã«ããã¦ãDC2ã¯é »ç¹ã«æ´»åããªãcoordinatorããã£ã¦ããã¨ãã¦ãgossiper_dc2ã¯gossiper_dc1ã«tã«ä¸è´ããDvwãéããgossiper_dc1ã¯gossipã¡ãã»ã¼ã¸ãt+Twan/2ã§åãåããã¾ãæå»tã«gossiper_dc1ã¯transaction txnã«å¯¾ãã¦tãå²ãå½ã¦ãããã®transactionã¯æå»t+Twanã«S-phaseãå®äºãããããã§ãæå»t+Twanã«ã¯gossiper_dc1ã¯ãã§ã«DC2ã®Dvwãåãåã£ã¦ããããã§ãããã¯tããã大ãããçµæãgossiper_dc1ã¯gossiper_dc2ã¨ã®ã©ã¦ã³ãããªããã®ã¡ãã»ã¼ã¸äº¤æãªãã§ãå³æã«version tãvisibleã§ãããã¨ã決å®ã§ããã
Â
3.2 Multi-version Storage
 DBãµã¼ãã¯MVãå©ç¨ãã¦ãã¼ã¿ãã¼ã¹ã®ãã¼ã¿ãæ ¼ç´ãããAPIã¯ä»ã®MVã·ã¹ãã ã¨ä¼¼ã¦ãããããªãã¡Put(key, version, value)ã§versionã«å¯¾ããå¤ãä¿åããGetï¼key, versionï¼ã§versionããã大ãããªãææ°ã®versionçªå·ã¨å¤ãè¿ããAbort(key, version)ã¯versionããªã ã¼ãããåãversionãäºåº¦ã¨åãåããªãããã«ãããACCã§å©ç¨ããããã«ãæã ã®MVã¯äºã¤ã®è¿½å çãªç¹å¾´ããã£ã¦ãããä¸ã¤ã¯ãPutããå¤ã¯ãfunctorã§ãæçµã®å¤ã®ã©ã¡ãã§ããããä¿åãããæçµã®å¤ã¯immutableã§ãä¿åãããfunctorã¯ãã¨ã§ãæçµã®å¤ã«ãªãã¬ã¼ã¹ããããGetã¯å¸¸ã«æçµã®å¤ãè¿ããã¨ããã®ã¯ã¢ã¯ã»ã¹ããversionãæçµã®å¤ã§ã¯ãªãfunctorã ã£ãå ´åã¯ãã¾ããDBãµã¼ãã¯ãã®functorã解決ããããããå¤ãè¿ããããããä¸ã¤ã¯ãACCã§ã¯Getã¯Vwatermarkããä½ãversionã®ã¿ã対象ã«ããversionã®æ¿å ¥ã¯Vwatermarkãããé«ãversionã対象ã«ãããæã ã®MVã¹ãã¬ã¼ã¸ã§ã¯ããã¼ã¿ãversionã§ã½ã¼ããã¦ãGetã§ã¯ç´ æ©ãversionã®åå¾ãã§ããããã«ããæå»ã®åºæºå¤ãããå¤ãä¸è¦ãªversionãGCããã
Â
3.3 Gossip of Visibility Watermarks
ãåç´ã«ãP3ã®å±æ§ãæºããããã«ãå ¨é¨ã®DBãµã¼ãã«ã¢ã¯ã»ã¹ããS-phaseã«ãããæå°ã®versionã«ããVwatermarkãåå¾ãããã¨ãã§ãããããããAlgorithm 2ã«ããããã«ãDCå é¨ã®ã¡ãã»ã¼ã¸äº¤æãè¡ããµã¼ã-gossiperã¨ãDCéã®ã¡ãã»ã¼ã¸äº¤æãè¡ãgossiper-gossiperãå©ç¨ãããã¨ã§ãããå¹ççã§åæ£å¦çã®Vwatermarkãçæãããããã³ã«ãããã
Server visibility watermark (Svw)
 Svwã¯ããDBãµã¼ãã«ãããS-phaseã§ã®æå°ã®versionçªå·ã«ãªããããããã®DBãµã¼ãã¯ãS-phaseã«ãããå ¨é¨ã®versionãè¨é²ãããã¨ã§ããTidMgrã«ãããã»ãããããªãã¡TSsetã¨ãã¦ãèªåã®Svwãä¿æãã¦ãããTidMgrã®createTS()ãå調å¢å ã®çªå·tsãçæã(Algo1ã®2è¡ç®)ããã®ã¨ãã«TidMgrã¯tsãTSsetã«å ãããtransaction tsãTidMgr.store(ts)ãã³ã¼ã«ã(Algo1ã®8è¡ç®)ãèªèº«ã®S-phaseãå®äºããã¨ãã«ãTidMgrã¯TSsetããtsãåãé¤ããããä»®ã«TSsetã空ã§ãªããã°ãã»ããã®ä¸ã®æå°ã®versionãSvwã«ãªãããããªããã°ãTidMgrãcreateTS()ãã³ã¼ã«ãã¦tsãSvwtã¨ãã¦çæãããçµæãå ã§çæãããversionçªå·ã¯ãã¹ã¦ããé«ããã®ã«ãªãã
 DC visibility watermark (Dvw)
 Dvwã¯ãã®DCã«ãããæå°ã®Svwã«çããversionçªå·ã«ãªããããªãã¡DCã®å é¨ã§ã¯Dvwããä½ãversionã¯ãã¹ã¦S-phaseãå®äºãã¦ããããã®ãã®ã®gossiperã¯DCå é¨ã®ãã¹ã¦ã®DBãµã¼ãã®ææ°ã®Svwã®ã¹ãããã·ã§ãããä¿æãããã¨ã§Dvwãçæãããgossiperã¯ç¶ç¶çã«Svwã®ããã«DBãµã¼ãããã¼ãªã³ã°ããä¸æ¹ãDCå ã®ãã¹ã¦ã®DBãµã¼ãã«å¯¾ãã¦ææ°ã®Vwatermarkãçºè¡ãããããããã®DBãµã¼ãã¯æ¸å°ããªãVwatermarkãä¿æããå¥ã®gossiperãçºè¡ããå¥ã®watermarkãåãåã£ãå ´åã¯ä¸çªé«ãwatermarkã常ã«æ¡ç¨ããã
 åæ§ã«ãããããã®gossiperãã¾ãããããã®DCã®ææ°ã®Dvwã®ã¹ãããã·ã§ããããä»ã®gossiperã¨èªåã®Dvwãå®æçã«äº¤æããä¿æãããgossiperã¯å¸¸ã«ããããã®DCã§ãã£ã¨ãé«ãDvwãä¿æããããããã¯Svwã¨Dvwãæ¸å°ããªããã¨ã«ãããVwatermarkã¯åç´ã«ãã¹ã¦ã®DCã«ãããæå°ã®Dvwã®ã¹ãããã·ã§ããã¨ãã¦çæãããã
Â
3.4 Other Transactions
 read-only transactionã¨write-only transactionã¯ããä¸è¬çãªread-write transactionã«è¦æ±ãããACCã®ããã¤ãã®ã¹ããããé£ã°ããã¨ãã§ãããããã«ããããã©ã¼ãã³ã¹ãåä¸ãããã¾ããäºåã«write-setãããããªãdependent transactionã®å®è¡ã«ã¤ãã¦ããã®ãµãã»ã¯ã·ã§ã³ã§èª¬æããã
Â
Read-only transaction
 ACCã¯ã³ã³ãã³ã·ã§ã³ã«ãé¢ãããã1ã©ã¦ã³ãã®ã¡ãã»ã¼ã¸ã«ãã read-only transactionã®strictly serializableãéæãããã¨ãã§ããããªã¼ãã¼ãããã¯ã¹ãããã·ã§ããã®èªã¿è¾¼ã¿ã«ä¼¼ã¦ãããread-only transactionã®ãããã³ã«ã¯read-write transactionã®ããã«ä¼¼ã¦ããããS-phaseã«ããã¦DBãµã¼ãã®coordinatorã«functorãä¿åããã ããã¨ããã¨ãããç°ãªããããã«ãS-phaseå ¨ä½ã¨functor-to-coordinatorã®éç¥ã¯coordinatorãµã¼ãã®ãã¼ã«ã«ãªæä½ã«ãªããE-phaseã¯transactionã«ã¢ãµã¤ã³ãããtsã«ã¤ãã¦read-only transactionãå®è¡ããã ãã§ãããç¹ã«ãtsãRwatermarkãããå°ããå ´åã¯ãread-only transactionãæå¯ãã®ã¬ããªã«ã«å¯¾ãã¦å®è¡ãããã¨ãã§ãããï¼Sec4.3åç §ï¼
Â
Write-only transaction
 write-only transactionã®ãããã³ã«ã¯S-phaseã§çµãããæçµã®å¤ãMVã¹ãã¬ã¼ã¸ã«æ¸ãè¾¼ãã ãã§ãããcoordinatorã¯ã¯ã©ã¤ã¢ã³ãã«Vwatermarkãtransactionã®versionãããé«ãéãã¯éç¥ãããã¨ãå¯è½ã§ããã
Â
Dependent transaction
 ãã¹ã¦ã®read-set/write-setã決å®ããããã«ãã¼ã¿ãã¼ã¹ã®å¤ãèªãå¿ è¦ã®ããdependent transactionã¯åºæ¬çãªãããã³ã«ã¨ãã¦ã¯ãµãã¼ããããªããããããªãããããç¥ããããã¯ããã¯ã§ãããèªèã¯ã¨ãªã¼(reconnaissance query)ããã®ç¨®ã®transactionããµãã¼ãã§ãããreconnaissance queryã¯dependent transactionã®read-set/ write-setãä¸æçã«è¦ã¤ããããã«ä½¿ãããread-only transactionã§ãããdependent transactionã¯ãã®ä¸æçãªãã¼ã¿ã»ããã«åºã¥ãã¦å®è¡ãããããE-phaseã®æåã«reconnaissance queryã§çæãããä¸æçãªread-set/write-setãã¾ã æå¹ãã©ããå¤ãåãªã¼ããããã¨ã«ãã£ã¦ç¢ºèªããããããããªãã¡ã¤ã失æããã°ãtransactionã®å®è¡çµæã¯âabort transactionâã«ãªããããã§ãªããã°å½è©²transactionã¯åºæ¬çãªãããã³ã«ã¨åãããã«å®è¡ãããã[注ï¼ã¨ãããã¨ã§ãRMWãªå¦çãå¤çºãã大è¦æ¨¡ãªæ¸ãè¾¼ã¿å¦çãä¸æã«æãããã¨ãããã¦ããã©ã¼ãã³ã¹ãè½ã¡ã]
Â
3.5 Strict Serializability
 ããã§ã¯OVããã¹ã¦ã®ã³ããããããtransactionã«ã¤ãã¦strict serializabilityãä¿è¨¼ãããã¨ã®è¨¼æã®ã¹ã±ãããæ示ãããå®å¼çã§ãªãè¨ãæ¹ãããã¨ããã®ãããªtransactionã®ã¹ã±ã¸ã¥ã¼ã«ãserializableã§ããã®ã¯ããã®ã¹ã±ã¸ã¥ã¼ã«ãããã¤ãã®serialãªã¹ã±ã¸ã¥ã¼ã«ã¨ç価ã§ããã¨ãã§ãããStrict serializabilityã¯ãããã«å ãã¦serialization orderãããªã¼ãã¼ã©ããããªãï¼æ³¨ï¼Txã®å®è¡ãéãªããªãã¨ããæå³ï¼transactionã§ã®ãªã¢ã«ã¿ã¤ã ï¼å®æéï¼ã§ã®äºåã®orderã¨äºæã§ãããã¨ãè¦æ±ããã[注ï¼ããã¯åã£ã¦ã¾ã]å¾è ã®å±æ§ã¯concurrent data structureã®æèã§ã¯linearizabilityã¨ãã¦åç §ãããã[注ï¼ããã¯è¨ãæ¹ã¨ãã¦ä¸ååã¨ããæå³ã§æ£ç¢ºã§ã¯ãªããå人çã«ã¯ãã®æã®è¨ãæ¹ã¯èå¾ã«CSRã»full-scheduleåæã®ãã°ããããããã«è¦ããããã¡ããããã®åæã§ããã°linearizableã¨serializableã®intersectã¨ãã¦strictã¯æ£ããã¨ã¯æãã]
 å®å¼åããã«è¨ãã¨ãããããã®transactionããå®è¡ã¨çµæããããã¾ã§ã®éã®ãããæç¹ã§å¹æãçºç¾ãã(appear to take effect)ã®ã§ããã°(if)ãã³ããããããã¹ã±ã¸ã¥ã¼ã«ãstrictly serializableã¨ãªãããã®ããæç¹ãããtransactionã®serialization point(SP)ã¨åç §ããã[注ï¼ãã®è¨ãæ¹ã ã¨transactionãã¨ã«SPãããã¨ãããã¨ã«ãªã]
Serializability
 OVã§å®è¡ãããtransactionã¯Pï¼ã®ååã«ããversionçªå·ã®é ã«å¹æãçºç¾ãããtransactionã¯å¸¸ã«èªèº«ã®versionã®ç´åversionã®ãã¼ãèªã(Algo1 16è¡ç®)ãã¤ãã®æ´æ°ã¯ããé«ãversionã®transactionã«ããè¦ããã¨ãã§ããªãã
 Strict ordering
 ããããã®transactionã®SPã以ä¸ã®ããã«çµã¿ãããï¼version tsããã¤ãããtransactionã®SP(以ä¸sp_i)ã¯ã·ã¹ãã å ã®æåã®ã¬ããªã«ãµã¼ããts_iããã大ããVwatermark ãåãåã£ããã®æéã«ãªããå¥ã®è¨ãæ¹ãããã¨ãsp_iã¯Tiãå¥ã®ãµã¼ãããè¦ãããã£ã¨ãæ©ãæéã«ãªããæã ã¯ãããä¸ã¤ã®æå»ã§ä¸ã¤ã®transactionã ããè¦ããããã«ãªãããã¨ãæ³å®ãã¦ãããããªãã¡ãSPã¯äºã¤ã®transactionã«ã¤ãã¦åä¸ã§ãããã¨ã¯ãªããã¾ããsp_iãtransaction Tiã®å®è¡éå§ã¨çµæè¿å´ï¼invocation / responseï¼ã®éã«ãããã¨ãç°¡åã«ããããã¨ããã®ã¯sp_iã¯Tiã®E-phaseã®ä¸ã«ãªããã°ãªããªããããã¾ããOVã«ãããTiã®å®è¡ã¯sp_iã§å¹æ(take effect)ãç¾ãã以ä¸ã
1.Tiã®æ´æ°ã¯sp_iãããåã«ã¯visibleã§ã¯ãªããããã¯sp_iããåã«ã¯ã©ã®ãµã¼ããts_iããã大ããªVwatermarkãæããªãããã ããããªããã°sp_iã®å®ç¾©ã«çç¾ããã
2.Tiã®æ´æ°ã¯sp_i以éãä»ã®transactionã«å¯¾ãã¦visibleã«ãªããAlgo1ã«ãããsp_i以éãããé«ãversionçªå·ããã¤transaction Tj (ts_j > ts_i)ã®ã¿ãTjã®E-phaseã«ããã¦Vwatermarkãts_iããã大ãããããªãã¡Tiãvisibleã§ããã¨ãããã®ã¨ãã«Tiã®æ´æ°ãèªããã¨ãã§ããã
Â
Serializable order matches strict order
 OVã®ã¹ã±ã¸ã¥ã¼ã«ã«ããã¦ãã©ã®ãµãã¤ã®ã³ããããããtransaction Tjã¨Tiã«ã¤ãã¦ãããã®version çªå·ãts_j>ts_iï¼serializable orderï¼ãæºããã®ã§ããã°ãsp_j>sp_i(strict order)ã§ãããã¨ã®è¨¼æãç°¡åã«ç¤ºããããã¯transactionãSPã¨ã¾ã£ããåãããã«versionçªå·ã«ãã£ã¦é åºãããã¨ãããã¨ãæå³ãããããã¯èçæ³ã§è¨¼æã§ããã
 sp_jã«ããã¦ãã¬ããªã«Rã¯Vwatermark>ts_jãªãVwatermarkãsp_jã®å®ç¾©ãããããªããã°ãªããªããè°è«ã®ããã«ãsp_i>sp_jãããããªããã°sp_j>sp_iã¨ããstrict orderã¯serializable orderã¨ä¸è´ããã¨ãããããã¯ã¬ããªã«Rã«ããã¦ã¯Tiã¯visibleã§ã¯ãªãã¨ãããã¨ãæå³ããããã£ã¦ãVwatermark<=ts_iã¨ãªãããã£ã¦ãts_i>=Vwatermark>ts_jã§ãããããã¯ts_j>ts_iã«çç¾ããããã£ã¦ãOVã¯strict serializabilityãä¿è¨¼ããã(注ï¼ç¹ã«ç°è«ã¯ãªãã¨æã)
Â
3.6 On Clock Skew
 coordinatorã¯åæã®ã¨ããï¼NTPï¼ãã¼ã«ã«ã¯ããã¯ããã®timestampãå©ç¨ãã¦ãã°ãã¼ãã«ãªã¦ãã¼ã¯transaction versionãçæãããSvwã¨Dvwãå調å¢å ããéããæã ã®ãããã³ã«ã§ã¯timestampã¨å®æéã¨ã®ä¹é¢ã«ã¤ãã¦ã¯ããªããè¦æ±ã¯ãªãããã£ã¦ã¯ããã¯ç°å¸¸ã¯ACCã®æ£ããã«ã¯å½±é¿ãåã¼ããªãã
 ã¯ããã¯ç°å¸¸ã«ããããããwatermarkã®å調æ§å±æ§ãä¿è¨¼ããã«ã¯ããããã³ã«ã§ä»¥ä¸ã®ã«ã¼ã«ãé©ç¨ãããã¾ã第ä¸ã«ãcoordinatorã¯ãã£ã¨ãé«ãå²ãå½ã¦ãããtimestampããªãã¡ lastTSãè¨é²ããçæãããtimestampãlastTSãããä½ãã¨ãã¯å¸¸ã«åçæããããã«ããã次ã«ãåæåä¸ã¯ãcoordinatorã¯DCã®ãã¹ã¦ã®gossiperã§æ°ããcoordinatorãã¢ã¯ã»ãããããã¾ã§(å¾è¿°)ãã¯ã©ã¤ã¢ã³ãã®è¦æ±ã¯åãä»ããªããæå¾ã«Dvwã®å調æ§å±æ§ãå¼·å¶ããããã«ãgossiperã¯coordinatorããã®SvwãDvwãããé«ãã¨ãã«éããæ°ããcoordinatorãåãå ¥ããã
 ããããªãããã¯ããã¯ç°å¸¸ã¯ã·ã¹ãã ã®ããã©ã¼ãã³ã¹ã«å½±é¿ãä¸ãããtransactionã¯ãã®versionçªå·ã§é åºä»ããããã®ã§ãããâæ©ãæè¨âã§å²ãå½ã¦ãããtransactionçªå·ã¯ãtransactionå¦çãä¸å½ã«é ãããããé 延ããã«ãã£ãå¼ããããããã®å¯ä½ç¨ã¯ä»¥ä¸ã®æ¦ç¥ã«ãã軽æ¸ãããã¨ãã§ãããã¾ããåãDCå é¨ã®ãµã¼ãã¯LANã§æ¥ç¶ãããåä¸ã®ãã¼ã«ã«ã¿ã¤ã ã½ã¼ã¹ãå©ç¨ããåä¸ã®DCå é¨ã§ã®ã¯ããã¯ç°å¸¸ãå°ããããã次ã«ãcoordinatorã¯æ°ããã¯ã©ã¤ã¢ã³ãã®è¦æ±ããèªèº«ã®ã¯ããã¯ãç°å¸¸ãªå ´åã¯ãåãä»ããªããã¯ããã¯ç°å¸¸ã¯ããã¤ãã®æ¹æ³ã«ããæ¤åºããããããªãã¡ãã¿ã¤ã ã½ã¼ã¹ã対ã«ãªã£ã¦ããï¼ãã¨ãã°ãä»ã®DBãµã¼ããgossiperï¼ã®æå»ã¨å¤§ããªå·®ãæ¤åºããããã¾ãã¯ããã¼ã«ã«ã¯ããã¯ã¨Vwatermarkã¨ã®å¤§ããªæå»ã®ã£ãããæ¤åºãããããæ¹æ³ã«ããã
Â
4. REPLICATION PROTOCOL
 OVã¯CCã¨ã¬ããªã±ã¼ã·ã§ã³ãåä¸ã®gossipãã¼ã¹ã®visibilityã³ã³ããã¼ã«ã«çµ±åãã¦ãããçµ±åãããã³ã«ã®ã¢ã¤ãã¢ã¯ä»¥åç 究ï¼[18/24/25]ï¼ããåãã¦ãããã®ã ãã¨ã¯ãããæã ã®gossipãã¼ã¹ã®ãwatermarkãå©ç¨ãããã¨ã§ã³ã³ãã¯ãã«è¡¨ç¾ãããvisibilityæ å ±ãå©ç¨ããã¢ããã¼ãã¯ãå°çåæ£ãã¼ã¿ã«ããå¹ççãªã¬ããªã±ã¼ã·ã§ã³ãå¯è½ã«ãã¦ãããæã ã®ã¬ããªã±ã¼ã·ã§ã³ã¹ãã¼ãã¯ãã¬ããªã«ã®ã¹ã¼ãã¼ã»ã¯ãªã¼ã©ã ï¼super quorumï¼Fast paxosã§å®ç¾©ããã¦ãããã®ã[注ï¼ããããªããFastPaxosã§ã¯âsuper quorumâã¨ããè¨ãæ¹ã¯ãªããå¾è¿°ã«ããããã«|2/3f|+1)ã®ãã¨ã ã¨æããããããããFastPaxosèªä½ãè¤æ°ã®quorumãå©ç¨ããã¹ã¿ã¤ã«ãªã®ã§ãããããããæ¹ããã¦ããããã¨ããç¨åº¦ã®æå³ãããªããããªæ°ããã]ãå©ç¨ã§ããéãã«ããã¦ãconflictã«ããããããæ¸ãè¾¼ã¿ã¯ï¼RTTã§æåããã¾ããã²ã¨ãã³majority quorumãå©ç¨ã§ããã°ã2RTTã§å®äºãããããã¯ã©ã¡ããå ã«ãã¦ããããread-onlyã®æä½ã«é¢ãã¦ã¯ãACCã«ããã¦ãããã¯å¸¸ã«å¯¾è±¡versionã«ã¿ã°ä»ãããããÂ
 watermarkã®gossipã«ãããèªã¿è¾¼ã¿ã¯å¸¸ã«å¯¾è±¡versionãRwatermarkãããä½ãæã¯ã©ã®ã¬ããªã«ãããè¡ããã¨ãã§ãããããã¯é常ã®è¦æ±ã«å¯¾ããWQRO(Write-quorum, read-one)ãéæãã¦ããã対象ã®versionãRwatermarkã¨Vwatermarkã®éã«ããã¨ãã¯ãèªã¿è¾¼ã¿ã¯é©åããversionã®quorumãè¦ã¤ãããã«è¿½å çã¬ããªã«ã«ã¢ã¯ã»ã¹ããå¿ è¦ãããã
Â
4.1 Write-Only Operations
 S-phaseã§ã®transactionã¯æä»çã«write-onlyã®æä½ãè¡ããããªãã¡Writeã¨AbortTxnã§ãããFast Paxosã¨TAPIRã®åææé ãã¾ãã¦ï¼inspiredï¼Writeã¯ç¹å®ã®versionãä¿åããããã©ããã«ã¤ãã¦åæãã¨ããããã¯æ©ãæé ï¼fast pathï¼ã®å ´åã¯1RTTã§ååã§ãé ãæé ï¼slow pathï¼ã®å ´åã¯2RTTãå¿ è¦ã«ãªããFast PaxosãTAPIRã¨éã£ã¦ããããã¯conflictãæ¤åºãããå ´åã¯é ãæé ã«ãªãã¨ããããã©ã¼ãã³ã¹ããã«ãã£ãããããOVã§ã®Writeã¯ã»ã¨ãã©conflictããªã¼ã§ãããããã¯MVãå©ç¨ãã¦åã«ã°ãã¼ãã«ãªã¦ãã¼ã¯versionãæ¿å ¥ããã ãï¼S-phaseã§ã¯ãªã¼ããã¦ããªããã¨ãæãã ããã¨ï¼ã ãããæã ã®å ´åã§é ãæé ãå¿ è¦ãªå ´åã¯ãé害(failure)ã¨èª¿åãå¿ è¦ãªå ´åï¼stragglersï¼ã®æã®ã¿ã§ããã2f+1ã¬ããªã«é ä¸ã§ã®fã®ã¬ããªã«é害ã許容ããããã«ãFastPaxosã¨åæ§ã«ãæ©ãæé ã§ã¯å©ç¨å¯è½ãªã¬ããªã«ã®super quorum(3/2f+1)ãå¿ è¦ã«ãªããã¾ããé ãæé ã§ã¯åã«å©ç¨å¯è½ã¬ããªã«ã®majority quorumï¼f+1ï¼ãå¿ è¦ã«ãªããåç´ã«æ¯è¼ããããã«ãTAPIRã§ã®ç¨èªãå©ç¨ãã¦ä»¥ä¸ã«ãããã³ã«ã説æããã
Â
 1.coordinatorã[key,ts,value]ãã·ã£ã¼ãå é¨ã®å ¨é¨ã®ã¬ããªã«ã«éãããã§ãä¸æãã¼ã¿ã¨ãã¦ããããã®ã¬ããªã«ãä¿åããããã§ãã¾ãã¯ã¬ããªã«ã¯æåãè¿ã
 2.Fast path(æ©ãæé )
ã¿ã¤ã ã¢ã¦ãåã«ã¬ããªã«ã®super quorumãè¿ãã°ãcoordinatorã«ã¯fast pathãé¸æãã¦ãå¼ã³åºãå´ã«æåãéç¥ããããããããéåæã«ãã¹ã¦ã®ã¬ããªã«ã«[FINALIZE, ts]ãéãã
 3.ããã§ãªãå ´åã¯ãããªãã¡majority quorumãè¿ã£ã¦ããå ´åãslow pathãã¨ããcoordinatorã¯ãã¹ã¦ã®ã¬ããªã«ã«[FINALIZE, ts]ãéã
 4.FINALIZEãåãåã£ãå ´åãåã¬ããªã«ã¯versionã«FINALIZEDããã¼ã¯ãã¦ãCONFIRMãcoordinatorã«è¿ãã
 5.Slow path(é ãæé )
coordinatorã¯f+1ã®CONFIRMãè¿ã£ã¦ããã¨ãã«å¼ã³åºãå´ã«æåãè¿ããããã§ãªãå ´åãããã¬ããªã«ã®majorityãå©ç¨ã§ããªãå ´åã¯failãè¿ã
Â
 AbortTxnã¯ããããã®ã·ã£ã¼ãä¸ã§ãï¼abortï¼å¤æããã©ã¼ã«ããã¬ã¼ã©ã³ã¹ã«ã¬ããªã±ã¼ããããæã«æåãããã·ã£ã¼ãã¯ããããã¬ããªã«ã®majority quorumãè¿ãéãæåãããã¨ããã®ã¯ãWriteã®ä¸æçãªç¶æ ã¨ã¯ç°ãªããabortå¤æã¯æ±ºãã¦åå®è¡ãããªãããã ãAbortTxnã®ãããã³ã«ã¯ä»¥ä¸ã«ãªã
 1.coordinatorã¯åå ãã¦ããã·ã£ã¼ãã®ãã¹ã¦ã®ã¬ããªã«ã«[ABORT, key, ts]ãéããããããã®ã·ã£ã¼ãããã¬ããªã«ã®majority quorumãã²ã¨ãã³è¿ãã°ãå¼ã³åºãå´ã«éç¥ããã
 2.ãªã¯ã¨ã¹ããåããã¨ãã«ãã·ã£ã¼ãã¯ããããAbort(key, ts)ãã³ã¼ã«ãã¦ãcoordinatorã«æåãè¿ãã
 AbortTxnã¯algo1ã®9-11è¡ç®ã«ãããããªéåæå®è¡ãå¿ è¦ã¨ããããã¯ãã¹ã¦ã®ã¬ããªã«ãabortã«æåãããã¨ã示ãããã«å©ç¨ãããã
Â
4.2 Replica Watermarks: Rwatermark
 replica watermark (Rwatermark)ã¯ç¹æ®ãªversionçªå·ã§ããã以ä¸ã®transactionã¯ãã¹ã¦ã®åå ãã¦ããã¬ããªã«ã«write-onlyã®å¦çã¯ãªãã¬ã±ã¼ããå®äºãã¦å± ãªããã°ãªããªããRwatermark以ä¸ã®versionã¸ã®read-onlyã®å¦çã¯ãã¹ã¦ã®ã¬ããªã«ï¼ä¾ãã°ãã¼ã«ã«ã®DCã®ã¬ããªã«ï¼ã®å¤ã«ç´æ¥ã¢ã¯ã»ã¹ã§ãããRwatermarkã®gossipãããã³ã«ã¯åç´ã«Sec3.3ã«ãªãVwatermarkã®çæãããã³ã«ãæ¡å¼µãããã®ã§ã追å çãªãã£ã¼ã«ãããªãã¡ãserver replica watermark(Srw), DC replica watermark(Drw), Rwatermearkãå ãã¦ããã
 gossipãããæ å ±ã¯ä»¥ä¸ã«ããã«å©ç¨ããããVwatermarkã¯ãtransactionã®versionãã»ãã®transactionã«visibleãã©ããã決å®ããCCã¨ã³ãããã«å©ç¨ãããRwatermarkã¯ãã¬ããªã±ã¼ã·ã§ã³ã»ãããã³ã«ã«ããã¦ãã©ã®ã¬ããªã«ï¼ãã¨ãã°ãã£ã¨ãè¿ãã¬ããªã«ï¼ã§ãèªããããã«è¨è¨ããã¦ãããç¹ã«ãgossiperã¯æå°ã®DCã¯ã¤ãã®Srwå©ç¨ãã¦Drwãçæãããã¹ã¦ã®DCã®ãªãã®æå°ã®Drwãå©ç¨ãã¦Rwatermarkãçæãããããããã®DBãµã¼ãã§ã¯ãTidMgrããå®å ¨ã«ã¬ããªã±ã¼ãããã¦ããªãwrite-onlyã®æä½ã®ãã¹ã¦ã®versionçªå·ãè¨é²ãããã¨ã§Srwãä¿æãããã¾ããDBãµã¼ãã§ã¯èªåçã«Rwatermark以ä¸ã®ãã¹ã¦ã®versionãFINALIZEDã¨ãã¦ã»ãããããAlog1ã®9è¡ç®ã§ãtsã®å®å ¨ãªã¬ããªã±ã¼ã·ã§ã³ã«ã¤ãã¦ã®éç¥ãTidMgrã«è¡ãéåæã®æç¶ããéå§ãããã¨ã«çæãããã¨ããã®æç¶ãã¯write-onlyã®æä½ï¼Writeã¨AbortTxnï¼ãå ¨é¨ã®ã¬ã¹ãã³ã¹ãè¿ã£ã段éã§å®è¡ãããtrasactionã®E-phaseã®æä¸ããã®çµäºå¾ã«è¡ããããRwatermarkã®gossipã®ãããã³ã«ã®è©³ç´°ã¯Vwatermarkã®ããã¨ä¼¼ã¦ããã®ã§ãããã§ã¯çç¥ããã
 Rwatermarkã®ãããã³ã«ã¯ã·ã£ã¼ãã»Rwatermarkããã¹ãã»Rwatermarkã«æ¡å¼µã§ãããè¨ãæ¹ãå¤ããã¨ãgossiperã¨DBãµã¼ãã¯ãã·ã£ã¼ãããã¹ãã«ã¤ãã¦ã®Srwã»Drwã»Rwatermarkãããããå¥ã®å¡ã¨ãã¦æã¤ãã¨ã§ããã
Â
4.3 The Read-Only Operation
 Read-onlyã®å¦çãããªãã¡Read(key, ts)(ãã ããts<Vwatermark)ã¯ãkeyã«ã¤ãã¦ts以ä¸ã®ææ°ã®versionãåå¾ãããts<Vwatermarkã®å ´åã¯ãReadã¯Get(key,ts)ãã©ã®ã¬ããªã«ã«å¯¾ãã¦ãç´æ¥ã³ã¼ã«ãããã¨ãã§ãããã¨ãããã¨ã§ã以ä¸ã¯Rwatermarkã¨Vwatermarkã®éã«ããversionã®ãªã¼ãã«ã¤ãã¦éä¸ãã¦è¿°ã¹ãã
 Get(key,ts)ã¯Sec3.2ã«ããããã«ãversionã¨å¤ãè¿ãã ãã§ã¯ãªããã¬ããªã±ã¼ã·ã§ã³ã®ã¿ã°ã§ããTENTATIVEãFINALIZED (Sec4.1åç §)ãè¿ããã·ã£ã¼ãã«ããã¦2f+1ã®ã¬ããªã«ãæ³å®ããã®ã§ããã°ã
versionãtsã§ããtransactionã§Vwatermarkãããä½ããã®ã¯ä»¥ä¸ã®ãµãã¤ã®ã±ã¼ã¹ã®ã©ã¡ããã§ãªããã°ãªããªãããããªããã°ãvisibleã§ã¯ãªãã
Â
1. tsã®Writeãæåãã¦ãããããªãã¡ãå°ãªãã¨ãf+1ã®FINALIZEDãªã¬ããªã«ããã¾ãã¯ã3/2fãè¶ããæå°ã®æ´æ°ï¼1ã®TENTATIVEãFINALIZEDãªã¬ããªã«ããã
2. tsã®AbortTxnãæåãã¦ãããããªãã¡ãæ大ã§ãfã®TENTATIVEãªã¬ããªã«ããã¤ãFINALIZEDãªã¬ããªã«ããªãã
TENTATIVEã¾ãã¯FINALIZEDãªå ´åã¯ãWriteãæ©ãæé ã§æåããå ´åã§ãTEANTATIVEãªã¬ããªã«ã®ããã¤ãã¯éåæã®ç¢ºèª(confirmation)ã§ã®FINALIZEDã®ã¿ã°ãæ¡ç¨ããå ´åã«ãªãã
ãã¨ãããã¨ã§ãread(key, ts)ã¯ãã¹ã¦ã®ã¬ããªã«ã«è¦æ±ãéããæéã®super quorumãè¿ãï¼ã¾ãã¯ã¿ã¤ã ã¢ã¦ãã§ã®ãªãã©ã¤ï¼ã®ãå¾ ã¤ããts以ä¸ã®æ大ã®versionã§æä½ã§ãä¸ã¤ã®ã¬ããªã«ãFINALIZEDãã¾ãã¯f+1ã®ã¬ããªã«ãTENTATIVEã§ãããã®ãè¦ã¤ãããã¨ã«ãªãããããreadã®ããã®MATCH CONDITIONã¨å¼ã³ãæ大ã®versionãMATACHED VERSIONã¨å¼ã¶ãã¢ãã¼ããããversionã¯MATCH CONDITIONã¯æºãããªããæ大ã®ã³ãããæ¸ã¿ã®versionã¯ã¬ããªã«ã®super quorumã«ããã®ã§ããã°MATCH CONDITIONãæºããããã®read(key,ts)ã®ãããã³ã«ã¯Alog3ã«ãªããÂ
5. FAULT TOLERANCE
 ã¬ããªã±ã¼ã·ã§ã³ã¯OVã«ä¿åããããã¼ã¿ãæä¹ çãªåªå¤±ããé²ããããããcoordinatorã¨gossiperã®å¤±æã¯ãgossipãã¼ã¹ã®visibilityã³ã³ããã¼ã«ã»ãããã³ã«ã®watermarkã®ä¼æãæ¢ãããã¨ã«ãªããçµæãå¯ç¨æ§ãæãªãããããã®ç« ã§ã¯ããµã¼ãã»gossiperã»DCã¯ã¤ãã§ã®å¤±æãããªã«ããªã¼ã®ããã®ãããã³ã«ãæ示ããããããã®ãããã³ã«ã¯ãã¼ã¿ãã¼ã¹ããªã«ããã«ã§ãããã¨ãæ³å®ãã¦ãããããªãã¡ã2f+1ã¾ã§ã®ã¬ããªã«ã§ã®fã¾ã§ã®å¤±æã許容ããã«ã¯ããããªãã¨ããã¹ã¦ã®ã·ã£ã¼ãã«ã¤ãã¦ã¬ããªã«ã®super quorumãå©ç¨å¯è½ã§ããã¨ãããã¨ãæå³ããããã®åæã«ããã¦ããªã«ããªã¼ãããã³ã«ã¯Sec4.3ã®readãå©ç¨ãã¦ãversionããªã«ããªã¼ãã¹ããç ´æ£ããã¹ãã決å®ãããã¨ãã§ããã
Â
5.1 Membership Representation
 ã·ã£ã¼ãã¨ãµã¼ãã®ãã±ã¼ã·ã§ã³ãè¨é²ããããã«ãOVã¯coordinationãµã¼ãã¹ã¨ãã¦ãRaftãZKãå©ç¨ãããããããã®ã·ã£ã¼ãã¯èªåã®ã¡ã³ãã¼ã·ãããä¿æããç¶æ ã®å¤æ´ï¼viewï¼ã¯å調å¢å ã®çªå·ã«ããåºå¥ããããããããã®ãµã¼ãã¯ãã¹ã¦ã®ã·ã£ã¼ãã®ææ°ã®viewããã£ãã·ã¥ãã¦ãããããã¯ãµã¼ãéã®éä¿¡ã«ããã対象ã¨ãªãã·ã£ã¼ãã®viewçªå·ãå«ã¾ãã¦ããããµã¼ãã¯éä¿¡ã«ãããã®viewãå¤ããã©ããå¤æããèªèº«ã®viewãæ´æ°ãããTAPIRã¨åãããã«ãVIEW-CHAINGINGãªç¶æ ã«ãããµã¼ãã¯ããªã«ããªã¼ãé¤ãæ°ããªè¦æ±ã¯å¦çããªãã
Corfuã®ããã«ãtransaction versionã®ã¬ã³ã¸ã«ããç°ãªã£ãmembershipããã¤ãã¨ãã§ããããã¨ãã°ãversion[0, â]ãã«ãã¼ãã¦ããmembership<A,B,C>ã®ã·ã£ã¼ãã¯ã失æãããµã¼ãCãversion1000ããå§ã¾ããµã¼ãDã«ç½®ãæãããã¨ã許ããããããªãã¡ãmembershipã®æ°ããviewã¯<A,B>ã§ã[0,1000]ãã«ãã¼ãããã¤<A,B,D>ã§[1001, â]ãã«ãã¼ãããã¾ããã®éããµã¼ãDã¯1000以ä¸ã®versionããªã«ããªã¼ããã
Â
5.2 Coordinator Failure
 visibilityã³ã³ããã¼ã«ã¯coordinatorããã®watermarkã®éåã«ä¾åãã¦ãããã¨ãããã¨ã§ãç´ æ©ãcoordinatorã®å¤±æã®æ¤åºã¨ãªã«ããªã¼ã¯éè¦ã§ãããcoordinatorã®å¤±ææ¤åºã¯gossiper-coordinatorã®éä¿¡ã¨çµ±åããã¦ãããã¨ããã®ã¯ãã§ã«ããããwatermarkãé »ç¹ã«çºè¡ã»éç´ãã¦ããããã§ããããã以ä¸ã«ãgossiperã¨coordinatorã¯å¸¸ã«åãDCã«ããããWANããããããã¯ã¼ã¯ã®æåãäºæ¸¬å¯è½ã§ãããå ãã¦ãcoordinatorã¯é«è² è·ã«ããã¬ã¹ãã³ã¹ã®é ããé²ãããã«ãload shedding(é«è² è·æã«æ°ããã¯ã©ã¤ã¢ã³ãããã®è¦æ±ãæ¥ãã)ãè³æºåé¢ï¼CPUã¸ã®æä»ã¢ã¯ã»ã¹ï¼ãå©ç¨ããã
ãåã ã®coordinatorã¯èªèº«ã®å¤±æã®ã¨ãã«å¦çä¸ã®transactionãå®äºãããããã«ä»£æ¿ã«ãªãããã¯ã¢ããã®coordinatorããã¼ã«ã«ã®DCå é¨ã«ãã£ã¦ããããªããwrite-onlyã®å¦çï¼Writeã¨Abortï¼ã®å®è¡ã ããgossiperã®visibilityã³ã³ããã¼ã«ã«å½±é¿ãããã¨ã«çæãããã¨ãã¨ãããã¨ã§ãcoordinatorã¯ï¼å®è¡åã®ï¼writ-onlyå¦çã¨ï¼å®è¡å¾ã®ï¼å¦ç決å®ã«ã¤ãã¦ã¯ãåæã¬ããªã±ã¼ã·ã§ã³ãããã¯ã¢ããcoordinatorã¨è¡ããããã¯ãããã¯ã¢ããcoordinatorããã¹ã¦ã®å®è¡ä¸ã®transactionããã¤ãã¨ãä¿è¨¼ãããgossiperã失æããcoordinatorãçã£ã¦ããªãã¬ã¼ã¹ãå®è¡ããå ´åã¯ãããã¯ã¢ããcoordinatorã«ã¡ãã»ã¼ã¸ãéããgossiperã¯watermarkãçæããããã«ããã¯ã¢ããcoordinatorã®ã¹ãã¼ã¿ã¹ãå©ç¨ããããã§ã¤ã«ãªã¼ãã¼ã®æä¸ã¯ãããã¯ã¢ããcoordinatorã¯ãªãªã¸ãã«ã®coordinatorããã®ã¬ããªã±ã¼ã·ã§ã³ã®ãªã¯ã¨ã¹ããåãããã¨ãåæ¢ãããããã¯ãªãªã¸ãã«ã®coordinatorã¯å®éã«ã¯å¤±æãã¦ãªãã£ãå ´åã«ï¼ãã£ããï¼æ©è½åæ¢ã«ãã¦ãããã¨ã«ãããããã¯ã¢ããã®coordinatorã¯åç´ã«ãã¹ã¦ã®å®è¡ä¸ã®write-onlyã®å¦çãåå®è¡ããããã§ã«abortããããã¹ã¦ã®transactionã¯ãabortãããversionãã¬ããªã«ã®majorityãåãå ¥ããªãããã«ï¼promisedï¼å¤±æããªããã°ãªããªãï¼Sec3.2åç §ï¼ãcoordinatorã¨ãã®ããã¯ã¢ããã®ä¸¡è ã失æãããããªå ´åã§ãããããªãã³ããããããtransactionã失ãããªããã¨ããã®ã¯ãã©ã®transactionãDCã«ããã£ã¦ã¬ããªã±ã¼ã·ã§ã³ãããããã ã解決ãããªãfunctorã¯æ¬¡åã¢ã¯ã»ã¹ãããã¨ãã«æçµã®å¤ã«ãªãã¬ã¼ã¹ãããããã ã
Â
5.3 Replica Node Failure
 ã¬ããªã«ã®ãã¼ã失æã¯ãquorumãå©ç¨ã§ããéããã·ã£ã¼ãã®æ©è½ãæãªããã®ã§ã¯ãªããã¨ããã®ã¯ãã¬ããªã±ã¼ã·ã§ã³ã»ãããã³ã«ããã§ã«ãã©ã¼ã«ãã»ãã¬ã©ã³ã¹ãæä¾ãã¦ããããã ãã¨ãããã¨ã§ãã¬ããªã«ãã¼ã失æã®æ¤åºã¨å復ã¯ããé·ãéä¿¡é 延ã許容ã§ãããã¡ã³ãã¼ã·ããæ§æã®ãããã³ã«ã¯ã失æããã¬ããªã«ãã¼ããæ°ãããã¼ãã«ç½®ãæãããã詳細ã¯æ¬¡ã«è¨è¿°ããã
 ã·ã£ã¼ãå ã®ãªã¼ãé¸åºã¯æç¶ãã®åæ§æãè¡ãããã«RaftãZKã§ã®å©ç¨ãæ³å®ãã¦ãããã¾ãããªã¼ãã¯VIEW-CHANGINGã¡ãã»ã¼ã¸ãå ¨é¨ã®ã¡ã³ãã¼ã«éããçãæ®ã£ã¦ããã¡ã³ãã¼ã¯è¨é²ãã¦ããæ大ã®transactionã®versionãè¿ãã次ã«ããªã¼ãã¯æ°ããã¡ã³ãã¼ã·ããã«å¯¾ãã¦ãæ°è¦ã«ã¹ã¿ã¼ãããversionã§ããnewTSãé¸æãããããã¯çãæ®ã£ã¦ããã¡ã³ãã¼ããè¿ã£ã¦ããè¨é²ãããæ大ã®transactionã®versionã«ãªããæ°ããã¡ã³ãã¼ã·ããã¯2ã¤ã®ã¬ã³ã¸ã§æ§æããããä¸ã¤ã¯version[0,newTS]ã§quorumãµã¤ãºãå¤æ´ããã«çãæ®ã£ã¦ããã¡ã³ãã¼ã§å©ç¨ããããããä¸ã¤ã¯version[newTS, â]ã§ããã¯çãæ®ã£ãã¡ã³ãã¼ã«æ°ãããã¼ããå ãã¦å©ç¨ãããããªã¼ãã¯ã¡ã³ãã¼ã·ããã®viewã¿ã°ãæ´æ°ãã¦ãæ°ããã¡ã³ãã¼ã«éãããã®æ¬¡ã«ãæ°ãããã¼ãã¯ç´ã¡ã«newTSã®ä¸ã®versionãå©ç¨ãããã¨ãå§ããnewTSãVwatermarkãããä¸ã«ããå ´åã¯ãnewTSããããã®versionããªã«ããªã¼ãããversionã®ãã¡ã®å¤±ãããç¯å²ã«ã¤ãã¦ã¯ãçãæ®ã£ã¦ããã¡ã³ãã¼ãããã«ã¯ã§å¼ã£å¼µã£ã¦ãããSec4.3ã§ã®Readã¨åãããã«ãMATCH CONDITIONãæºããversionã¯FINALIZEDã¨ãã¦ä¿åãããã¹ãã§ãããã§ãªããã°ç ´æ£ãããã¹ãã ãæå¾ã«ãæ°ãããã¼ããnewTSã«è¿½ãã¤ããã¨ãã«ããªã¼ãã¯ã¡ã³ãã¼ã·ãããæ´æ°ããäºã¤ã®versionã®ã¬ã³ã¸ï¼ï¼ï¼newTSã¨newTS<ï¼ãä¸ã¤ã«ãã¼ã¸ããã
Â
5.4 Gossiper Failure and Datacenter Failure
 åä¸ã®gossiperã®å¤±æã¯watermarkã®é²è¡ã«å½±é¿ã¯ãªããã¨ããã®ã¯ãã©ã®DCã«ãç¬ç«ãã¤åé·çã«åãè¤æ°ã®gossiperãããããã ãããããä¸ã¤ã®DCå ¨ä½ããæ´æ°ã失ãããå ´åãwatermarkã®é²å±ã®å¦¨ãã«ãªããã¨ããã®ã¯DCã¯ã¤ãã®watermarkã失æããDCã«ãããªãã¬ãã·ã¥ãããªãããã ãããã¯ãããDCã®ãã¹ã¦ã®gossiperããDSCã¯ã¤ãã®ç½å®³ã«ããå©ç¨ã§ããªãã¨ãã«èµ·ããããã
 ãããã³ã«ã¯ããµã¼ããããããã®DCã®ã¡ã³ãã¼ã·ããã®viewããã£ãã·ã¥ãã¦ãããã¨ãæ³å®ãã¦ãããã¾ãæåã«ã失æããDCãåãé¤ãããæ°ããã¡ã³ãã¼ã·ãããããããã®ã·ã£ã¼ãã®ã失æããã®ãªã«ããªã¼ãªã¼ãã«éããï¼Sec5.3ã®ç¬¬äºãã©ã°ã©ãåç §ï¼ã次ã«ãããããã®ãªã¼ããæ°ããã¡ã³ãã¼ã·ãããããããã®ã·ã£ã¼ãã¬ããªã«ã«éããã¬ããªã«ã¯ã失æããDCããcoordinatedãããtransactionãåãå ¥ããªãããã«ãæ大ã®è¨é²ãããtransaction versionãè¿ããããããããªã«ããªã¼ã®ããã»ã¹ã¯ãã·ã£ã¼ãã®å ¨é¨ã®ãªã¼ãããæ大ã®è¨é²ãããversionçªå·ãmaxRecordedTSãéè¨ããã失æããDCã¯Vwatermwarkã¨maxRecordedTSã®éã«ãªãversionã®visibilityã³ã³ããã¼ã«ã«ã®ã¿å½±é¿ããããã¨ã«çæãããã¨ãã¨ããã®ã¯ãVwatermarkããå°ããversionã¯visibleã§ãããã¨ã確èªããã¦ãã¦ãmaxRecordedTSãããä¸ã®ãã¹ã¦ã®versionã¯å¤±æããDCããã¯coordinateããã¦ããªãããã®å¾ããªã«ããªã¼ããã»ã¹ã¯Vwatermarkã¨maxRecordedTSã®éã®transactionã®ç¶æ ãåéããAlog1ã«ãªãCoordinateã®æç¶ãã«å¾ã£ã¦ãtransactionã®æ±ºå®ãè¨ç®ãããæå¾ã«ãmaxRecordedTSããä¸ä½ã®versionã®ç¶æ ã解決ããããã¨ããªã«ããªã¼ããã»ã«ã¯æ°ããDCã®ã¡ã³ãã¼ã·ããã¨maxRecordedTSãæ°ããVwatermarkã¨ãã¦ããã¹ã¦ã®æ®ã£ã¦ããgossiperã«éãã
Â
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é å¼µãã¾ãã®ã§ãã¡ãã£ã¨ã§ããã®ã§å¿æ´ãé¡ããã¾ãã
Â
Â
Â
ã¨ããéè¡ã®MVCCå ¥éï¼ãªãã¨ãªããããããããªãã®ããã®ï¼
ã»ãæ¡å
MVCC=Multi Version Concurrency Controlã¯ãDBã®Txæè¡ã®ä¸ã§ãæ¯è¼çä¸ä½éæ³ã«å±ãããã¾ãã®Tx系統ã®éè¡ãå¦ã¼ãã¨ããéè¡å¸«ã®ææ¦ãéãã¦ãããããããªããæ代ã¯ã¡ãã¼ã»ã³ã¢/大容éã¡ã¢ãªã¼ã®æ代ã«å ¥ããMVCC系統ã®åªæãå±ããããã®è§¦åªã®ã³ã¹ããä¸ããã¤ã¤ããã
Â
ãã®ç°¡åãªè§£èª¬ã試ã¿ãã
Â
-Txç³»åªæã«ã¤ãã¦
Txç³»ã®spellã¯DBçéæ³ã®ä¸ã§ã¯ãããããæé«ä½ã®é²å¾¡éæ³ã«å±ãããè¨ã£ã¦ã¿ãã°å¤æ°ã®æ»æï¼ããã¯ç©çæ»æã¯ãã¡ããé«åº¦ã®Spellæ»æãå«ãï¼ãæãåããã¨ããã®ç¹å¾´ã§ãããä¸è¬ã«æé«ä½é²å¾¡éæ³ã¯çµ¶å¯¾é²å¾¡ç³»ã®ãã®ãå¤ããåããæ»æããã¹ã¦ç¡å¹åãããã¨ãå¯è½ã§ãã代ããã«è¡è å´ã«ã大ããªããã«ãã£ã課ããã¨ãå¤ãããã®çµ¶å¯¾é²å¾¡ç³»ã¨ç°ãªãTxç³»ã¯åªæçºåä¸ãè¡è ãï¼ä½è£ãããã°ï¼è¡åãããã¨ãå¯è½ã§ããããã®ã¢ããã³ãã¼ã¸ã¯é常ã«å¤§ããã
Â
-MVCCç³»ã¨OCCç³»
Txç³»ã®åªæã¯ãã®ç³»çµ±ã¨ãã¦å¤§ããäºã¤ã®ç³»çµ±ã«åãããã¨ãã§ãããä¸ã¤ã¯MVCCç³»ã§ãããããä¸ã¤ã¯OCCç³»ã§ããã
Â
OCCç³»ã¯çç±ç³»ã®é²å¾¡åªæã§ãããéè¡æ§æã¯Wall of Fireã«è¿ããã¾ãè¨ã£ã¦ã¿ãã°æ¯è¼çã·ã³ãã«ãªæ§æãæ¨ã¨ãã¦ãæµã®æ»æã端ããç¼ãå°½ãã対å¿ã®åªæã«è¿ããä¿®è¡ã®çµæã§ã¯ããã¨é«ç«åã«ãã£ã¦ãããããã®ã§æ¯è¼ç人æ°ãããã
Â
ããã¨ã¯å¯¾ç §çãªã®ããMVCCã§ããã
Â
MVCC系統ã®åªæã¯ãã©ã¡ããã¨ããã¨æ空éç³»ã®éè¡ã«å±ãããæ£ç´ãMVCCç³»ã¯æè¡çãªç¿å¾ãå°é£ã§ãããå ãã¦ãè¡å¼æ§ç¯ã®æ¬¡å ãé«ããããè© å±ã«ãæéããããããã®å²ã«ã¯ã·ãã¥ã¨ã¼ã·ã§ã³ãé¸ã¶ãã¨ãå¤ãããªããªãã³ã¹ããåºãã«ããåªæã§ãã£ãã
Â
ãããç¸æããããªãã®å¤§éã®ãã¬ã¹ãåªè©ãä¸æ°ã«åãé«ä¸ä½ç³»ãã©ã´ã³ã ã£ãããåæ£æ··ä¹±ç³»ã®ã¹ãã«ãä¹±çºããå¤ä»£ãã¶ã³ãã³å¸å½ã®Lichãããã ã£ããããã¨ãä¸æ°ã«å¤§éã®è² è·ããããæ»æ(é称Bulk ATtacking Combination Hits)ã主軸ã«ãªããOCCã®Maxç«åã§çããã¤ããã¨ãã§ããªãããã®ãããªç¸æã«ã¯MVCCç³»ã®ãã¯ãã«ã«ãªåªæãå±éãã¦ç·åæ¦ãæãå¿ è¦ãããããã¹å¯¾çã«ã¯æ¬ ãããªãã®ãMVCCç³»ã¨ãããã
Â
MVCCç³»ã®çé«ã¯ãå¤æ°ã®è§¦åªãå©ç¨ããå¤æ¬¡å å¤å±¤çéæ³çµç(multiversion)æ§æã«ãããããã¯OCCç³»ã«ããã¹ã¦è§¦åªãªã½ã¼ã¹ãããåºãå©ç¨ãããã¨ãå¯è½ã§ãããé²å¾¡å¹æç¯å²(serialization space)ãåºããã¨ãç¥ããã¦ããããªããå®å ¨ãªå¹æç¯å²ã®æé©å±éè¡å¼ã¯çè«ä¸åå¨ãããã¨ã¯ããã£ã¦ãããã第7éä½éæ³ï¼NP-Completeï¼ã«å±ããã¨è¨ããã¦ããããã®ææ³ã¯æªã 人é¡ã«ã¯æªç¥ã§ããã
Â
ä½è«ã ãã2019/04/01ç¾å¨ã§ã¯éè¡å¸«ã®ä¸ç大ä¼ã®é«ç«åã³ã³ãã¹ãã§ã¯ããããã®MVCCç³»ï¼çè ã¯MVCCã¨èªããã«ã¯é£ãããã¨ããã£ã¦ããããéè¡å¸«æ¥çã§ã¯ä¸å¿MVCCã¨ããã¦ããããã ï¼ãçè¡ç³»OCCãæããã¿ãã¨æé«åºåãè¨é²ãã¦ããããã®æå³ã§ã¯MVCC系統ã®åªæã極ãã¦ããçã®Txéè¡å¸«ã®ãã¹ã¿ã¼ã¨è¨ããã
Â
-MVCC詳細
Â
以ä¸ã®è§£é¡ã¯MVCCç³»éè¡ã®èå ¸ã¨åé«ãä¸å¤§å¤ææ¸ãããªãã¡âA Critique of ANSI SQL Isolation Levels[Hal Berenson, Phil Bernstein, Jim Gray, Jim Melton, Elizabeth OâNeil, Patrick O'Neil]â㨠âConcurrency Control and Recovery in Database Systems[Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman]âã¨âTransactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery[Gerhard Weikum, Gottfried Vossen]âï¼å®ã¯âTheory of Database Concurrency Control[Christos Papadimitriou]âã¨ãããã®ããããããã¯ã¡ãã£ã¨æ¬¡å ãéãã®ã§ï¼ããã¼ã¹ã«ãã¡ãã£ããMVCCã®æå¼ããæ¸ãã¦ã¿ã¾ãããã¨ãããã®ã ãåæã¨ãã¦ãTxéè¡ã®åç´ã§ããIsolationã®ä½¿ãæ¹ãããã¯ç解ãã¦ããã¨ããåæã«ãã¤ã
Â
ãªãã以éã¯ä¸è¨å¤ææ¸ã®è§£èªã®çµæã«åºã¥ãã¦ãçè ãåæã«èªåã®ç解ã®æå¼ãã®ããã«æ¸ãã¦ããã®ã§ãã¡ããã¨åå¼·ãããã²ã¨ã¯æµ·ã®åããã®éè¡å¸«åä¼ã§æ£å¼ã«ç§è¹ãåãããã¨ããªã¹ã¹ã¡ããã
Â
-Txç³»éè¡ã®åè
Â
ã¾ãããã§ã«ãåç¥ã®ããã«Txç³»éè¡ã®åºæ¬ã¯æ»æ§é²å£ãå©ç¨ããã«ã¦ã³ã¿ã¼æ»æã«ããé²å¾¡ãåçã¨ãªã£ã¦ãããä¸ç¨®ã®ã«ã¦ã³ã¿ã¼ã¹ãã«ã«ãªããæµã®ã¢ã¿ãã¯ã¹ãã«ãç©çæ»æï¼ä¸è¬ã«anomalyã¨ç§°ãï¼ã端ããæç ´ããããã ãæµã®æ»æã®æã¡æ¼ããã¯ãçµæã¨ãã¦æ¬ä½ã«å¤§ããªãã¡ã¼ã¸ãåãããã¨ã«ãªããæçµçã«ã¯æ¦éä¸è½ã«ãªããã¨ãã«ä¸é¨ã®åªè©ãã¡ã¼ã¸ã¯åççã«äºå¾çã«è¦³æ¸¬ãããã¨ãå°é£ã§ãããã¨ãå¤ããå¨ç¥ã®ã¨ãããæ°å¤ãã®éè¡å¸«ããæ°ãã¤ãããã¨ãã§ããªããã¨ã«ãªã£ã¦ãããã¨ããç¶æ ã§ãè¨ã¡æ»ã«ãã¦ããã
Â
ã¨ãã«å¯¾å¿éè¡å¸«ãï¼Cloth armorãçºã£ãSkeltonã¨Lichã®åºå¥ãã¤ããªããããã®ï¼norbã®å ´åã¯ãå·»ãæ·»ããããã£ã¦ã»ã¼ãã¼ãã£ã確å®ã«å ¨æ» ããããã®ãããã¯ã¨ã»éè¡å¸«è³æ ¼è©¦é¨ã®â巫女è³æ ¼âã®ã´ã¼ã«ãã¨ãã·ã«ãã¼ã¨ããåå¾ããéè¡å¸«é¢¨æ ã«ããè¦ãããã±ã¼ã¹ã§ãããã¢ã¬ã¯å人çã«ã¯ã¾ããã¨æããç¹ã«ãã¼ãã£åéã®é å ´ã§ã®èªå·±ç´¹ä»å±¥æ´æ¸ã§å¤§ããæ¸ãã®ã¯ã©ããã¨æãã
Â
ãã§ã話ãæ»ãã¨ãMVCCç³»ã¨OCCç³»ã§ã¯ãã®anomalyã®å¯¾å¦ã®æ ¹æ¬çãªãã¸ãã¯ãå®ã¯ç°ãªãããã¡ããã表é¢ä¸ã¯åãã«è¦ããããå®éãå¤å ¸çãªå ¥éééæ¸ã®A Critique of ANSI SQL Isolation Levelsã§ã¯anomalyã¯å¤§ããä¸å¤§è¦ç´ ã«åé¡ãã¦ãã¦ããã®ã¿ã§ãããããããDirty Read, Lost Update, Phantomã«ãªãããªããå®éã¯ããã«ãããã¦ä¸ç´éæ³ã§ããSnapshot Isolationã§ãé²å¾¡ä¸è½ã®Write Skewãããã¦ããã
Â
ãã ããå®éã«ä¸çªãã£ãããªã®ã¯Read-only anomalyã§ãããããã¯ãä¸è¦ç¡å®³ã«è¦ãããã¡ã¼ã¸ã¼ãæ»æãã«å¯¾ãã¦ãå¾è¿°è© å±ã§é å¹æ§ã®åªæãconcurrentã«çºåãããä¸æ°ã«ææ¯åããã¿ãã®æªãæ»æã«ãªãã¨ããã³ã³ããã¼ã·ã§ã³ã»ããã¼ã§ãããæ£ç´å¯¾å¦ãå³ããã
Â
-ãã¡ã¼ã¸å解ã®åºæ¬åç
Â
ã¾ãTxç³»éæ³ã§ã¯æéãã¹ããã¡ã¼ã¸ï¼åªæã§ããç©çæ»æã§ããï¼ãåç´ãª2è¦ç´ ãããªãã¡readå±æ§ã¨writeå±æ§ã«å¤æãéè¡çã«è§£éãããï¼ããã«å ãã¦commit/abortãèªèãããã¨ããããããã¯ç½®ãã¦ããï¼ãä»æ´ãTxéæ³ã®åçååãè¨ãã®ãã¢ã¬ã§ã¯ããããé常ã®å±æ§ã§ããã°ãåç´éæ³å±æ§å¤æãè¡ããã¨ã§ãç°¡åã«é¤å»/dispel/de-curseã§ããããã¡ãããæ»æå´ãããã¯æãè¾¼ã¿æ¸ã¿ãªã®ã§ãå®éã¯ãããã»ã©åç´ã§ã¯ãªãããã®å¤æå¾ã®read/writeå±æ§ã®çµ¡ã¿åãã§anomalyï¼ãã¡ã¼ã¸ãçºçããéè¡çãªãã¸ãã¯ãã ãçºåããããã«ãçµã¿ä¸ãã¦ãããã®ãé常ã§ãããã¤ã¾ãé常ãåé¡ã¨ãªãanomalyã¯ãã®å±æ§ã®ç¹å®ã®ã絡ã¿åããããªãã¡ä¸å®ã®ã³ã³ããã¼ã·ã§ã³ã«ããçºçããããããã£ã¦ããç¹å®ã®ã³ã³ããã¼ã·ã§ã³ããæ§æè¡å¼ã«ããé 次èªèããdispelãããã¨ã§ä¸æ°ã«æ»æããã¼ã¸ãããã¨ãå¿ è¦ã«ãªãã
Â
MVCCã¨OCCã§ã¯ããã®ãReadå±æ§ã¨Writeå±æ§ã®ç¹å®ã®ã絡ã¿åãããã®è§£éã®éãã大ãããããã«ããéè¡ã®ãã¸ãã¯æ§æãç°ãªããåªæã®æ§æçµæã®å¹æã¨ãã¦ãã¡ã¼ã¸çºç(serializable effect)ã¯ããªãã»ã©åãã§ãããã«æ§æææ³ã®æ§ç¯ã¢ã¼ããã¯ãã£ããå©ç¨ãããéåã®çæè¦ç´ ã¨ãã¦ã®è§¦åªãåãã§ãããã絡ã¿åãã®è§£éã§ã®æ¬¡å ãããã¦åç´ã«åæã«ãã£ã¦ããOCCã¨éã«æ¬¡å ãä¸ãã¦å¦çãããã®ãMVCCã§æ¹æ³ã«å¤§ããªéããããã以ä¸åå¥ã«è§£èª¬ããã
Â
-OCCã§ã®éè¡è§£é
ã¾ãåºæ¬çã«readå±æ§/writeå±æ§ãåç´ã«ä¸ç¨®é¡ã®çµã¿åããã«éå ãããããªãã¡
ã»write/read : ä¸çªè§£éãããããããå±æ§æ»æ(write)ã«ä¾åããå±æ§æ»æï¼readï¼ã®ã³ã³ããã¼ã·ã§ã³ã«ãªãããã©ããã¨ãã¦ã¯å¤æå¾ã«ä¾åãçºçããã®ãè¦è¶ãã¦ä»æããã¿ã¤ãã«ãªããå²ã¨ç°¡åã«è¦æããããè¦éãã¨ã¤ã¿ã¤ã
ã»write/writeï¼ãããåãã§ãããå±æ§æ»æ(write)ã®å¤éåãã©ã¡ããã¨ããã¨ãã©ã¬ã«ã«æ¥ãã³ã³ããã¼ã·ã§ã³ã§ãå¤æå¾ã®ã³ã¹ããå¢å¤§ãããæ¹åã§ã®ãã©ããã«ãªãã
ã»read/writeï¼ãã£ã¨ãé¢åã§ãå±æ§æ»æã«å¯¾ãã¦delayããã¦å¹æãå¤åãããç¹æ®ã³ã³ãæ»æãdelayã®timingã®è¦æ¥µãããããªãã«ãããã®ã§ãå²ã¨åé¡ã«ãªãã
ãªããread/readã¯ç¬ç«æ§ãé«ããã®ã¾ã¾ã§ãã¡ã¼ã¸ãã£ã³ã»ã«ãã§ããã®ã§ãæ®éã¯æ¾ã£ã¦ããã
Â
ãããã®æ»æãä¸å®ã®é åºã«å¦çããªãããã¼ã¸ãã¦ããããã®ã¨ãã«ããã¼ã¸ããé åºã«éè¡çä¸æ´åãèµ·ããªãããã«ãè¡å¼æ§æãåçã«çµã¿åããã¦è§¦åªãã¡ããã¨åãããã«ãã¦ãããã¨ãããã¨ãèã«ãªãããã®é åºå¦çã§ã®ä¸æ´åã¯ç°¡åã«éæ³é²å£ãç ´ç¶»ãããããããç¹ã«æ³¨æãå¿ è¦ã ã
Â
ã¾ãããã®OCCã«ã¤ãã¦ã¯ãéè¡æ§æã®æ¬¡å 空éã¯åä¸ã§ãããããã«æ¼ãè¾¼ãããã¨ãã¾ãåºæ¬ã«ãªãããã®ã¨ãã«è¥å¹²ï¼ã¨ãããç¸å½ï¼ç¡çãããããªãã¹ã触åªã®åä½å½ããã®å¹çæ§ããããããã«ä½ã³ã¹ãã§å¤§éã«ãæ¼ãè¾¼ãããã¨ãèè¦ã«ãªããçµæãæ¬æ¥ã§ããã°ãã¼ã¸ããªãã¦ããããã®ããã¼ã¸ãããã¨ã«ããããã触åªã®ä½¿ãæ¹ã¨ãã¦ã¯ç¡é§ãçºçãããããããã·ã³ãã«ãªæ¬¡å ã«æ¼ãè¾¼ãããã¨ã«ãããåç´éè¡è¦ç´ å±éã®éåãå¹çãã注ãè¾¼ããã¨ãã§ãããããå¤å°ã®ç¡é§ããã£ã¦ãéåã§æ¼ãåãã¨ãããã¨ãå¯è½ã«ãªãã
Â
ãã®æãã£ã¨ãå¹çããéæ³å ç´ ãçç±ç³»ã§ããã®ã§ãéæ³å®è¡ç°å¢ã¨ãã¦çç±ç³»ã®ãã¸ãã¯ã転ç¨ãã¦çºåããããã¨ãå¤ãã
Â
-MVCCã®éè¡è§£é
ããã«å¯¾ãã¦ãMVCCã¯ããããã®ãã¡ã¼ã¸å±æ§ãå¤é¢çã«æãã¦æ¬¡å æ°ãä¸ããä¸ã¤ã®éè¡çå¤æ§ä½ã¨ãã¦å¦çãããåè¿°ã®r/wå±æ§ã®çµ¡ã¿ã以ä¸ã«å½¢ã§èªèãããããªãã¡ã
Â
1) ã¾ãåºæ¬æ§æã¨ãã¦ãwrite-readã®ã³ã³ããã¼ã·ã§ã³ãèªèããä¸ã¤ã®éæ³æ¬¡å 空éãä½æããã®æ¬¡å 空éã«ã³ã³ããã¼ã·ã§ã³è¦ç´ ããã®ã¾ã¾ç§»ç®¡ãã
2) 移管ããwrite-read空éã«ãå次å å¹²æ¸ãããwriteå±æ§ã«å¤æãããè¦ç´ ã®èªèããå ´åã¯ããããåã次å 空éã«æ¼ãè¾¼ãããåé¡ããªããã°ããã§OCCã¨åãåç´ãªread-writeå¦çãå©ç¨ãã¦ãã¼ã¸ããã
3) 2)ãæç«ããæç¹ã§ã®write/readâwriteã®æ¬¡å 空éã«ããå¥æ¬¡å å¹²æ¸ããããå¥ã®writeå±æ§ã«å¤æãããè¦ç´ ããèªèãããã¨ãï¼ããã¯åè¿°ã®OCCã§ã®read-write / write-writeã®ã³ã³ããã¼ã·ã§ã³ãããé«ã次å ã§ä¿¯ç°ããã¨ãã®æ§é ã«ãªãï¼ã«ã¯ãåè¿°ã®æ¬¡å 空éã¨ã¯ããä¸ã¤å¥ã®âéæ³æ¬¡å æ°ãåãâ次å 空éãä½æããããã«å½è©²writeå±æ§ã®è¦ç´ ãæ¾ãè¾¼ãã
4) 次ã«ãããé«æ¬¡å ã®éæ³æ空éãä¸ã¤ä½æããããã«ä¸è¨ã®äºã¤ã®æ¬¡å 空éã移管ããããã®æã«ã移管ãããã¹ã次å 空éã®æéé²è¡ã¯å¤å´ããä¸æåçµãããã¤ã¾ãåçµæ空ã¨ã¯å¥ã«è¡å¼ãé²è¡ãããããã«é«æ¬¡ã®æ空éãä½ãåºããã¨ã«ãªãã
5) 移管ãããé«æ¬¡å éæ³ç©ºéã§ãéè¡ä¸æ´åãèµ·ããªã次å 空éé£çµãè¡ãããã®é£çµç©ºéã§ä¸æ°ã«ãã¼ã¸ãã¦ãåæã«æ¾åºãããå¤æã¨ãã«ã®ã¼ã§ãä½æãããç°æ¬¡å 空éããã¹ã¦å¹ãé£ã°ã
Â
ã¤ã¾ããåæã«ä¸ã¤ã®æ空éï¼ä¸ä½ã§ä¸ã¤ãä¸ä½ã§äºã¤ããã ãä¸ä½ã«ã¤ãã¦ã¯Nåã®å¶å¾¡ããããã¨ãå¯è½ï¼ãå¶å¾¡ããå¿ è¦ããããããªãã®é«é£åº¦ã®éè¡æä½ãè¦æ±ãããããã®ã¨ãã«ã次å æ°ãä¸ã¤å¢ããããå¢ãããªããï¼ã§éè¡ã®ã¬ãã«ãã¾ã£ããç°ãªããããªãã¡ã
Â
5â) 4)ã®é«æ¬¡å éè¡ç©ºéãå¬åããã®ã§ã¯ãªãããã®ã¾ã¾ãåç´ã«æ¬¡å é£çµããã¦ãã¾ãæ¹æ³ãããããã®å ´åã¯ãã¡ã¿ã¬ãã«ã®æé軸ãä¸ããããªããããèªç±ã«è§¦åªãå©ç¨ããæéãåå¨ããããã®ã¾ã¾ã·ã¼ã±ã³ãã«é£çµãããã¨ã«ãªããããã¯ããã¬ãã«ã®ä½ãæ¹æ³ã«ãªããã次å è² æ ãæ¸ãåã ãè© å±ã³ã¹ããä½ãï¼MCSRè¡å¼ã¨è¨ããã¦ããï¼ã
Â
ç¾ç¶ã®éè¡ã®æé«ã¬ãã«ã§ãå®ã¯å¾è ã®æ¹ã主æµã§ãéè¡ã¬ãã«çã«ã¯æé«å³°ã¨è¨ããã¦ããä¸è¨åè¿°ã®(1+N)軸ã®ä¸çç·ãèªå¨ã«æãéè¡å¸«ã¯ãé·ãéè¡ã®æ´å²ã®ä¸ã§ãããã¾ã å ¬å¼ã«ã¯ç¢ºèªããã¦ããªãã
Â
-MVCCã®ç§å¥¥ç¾©
以ä¸ã®ãã®ç¶æ ã§ãç¾å¨ã®MVCCã¯ååã«å¥¥ç¾©ã¨è¨ããããç¹ã«ãã®ä¸ä½ã§ããé«ä½ã®è¡å¼ãå®è¡ã§ãããã¨ãçè«ä¸ã¯ç¢ºèªããã¦ããããã®å ´åã¯ãä¸è¨ã®1+Nã®éæ³æ¬¡å 空éã®ããã«ä¸ä½ã®éè¡æ空éãä½æãããã£ã¨ãä¸ä½ã«éãè¾¼ããæ空éããé©å½ãªç©ºéãé¸æããä¸ä½ã®ç©ºéã«è»¢ç§»ããããããã«è»¢ç§»æç¹ã§ãã®ç¹å®æ空éã®æéé·ç§»ãåçµããã«é²è¡ããã¦ããããã®ä¸ã§ãæé軸èªä½ãå®å ¨ã«ååããã¦ããã®æ¬¡å é£çµã®èªç±åº¦ãä¸ããã¨ããè¡å¼ã«ãªãããã®å ´åã¯ãå¶å¾¡æé軸ã1+1+N軸ã«ãªããããã¯ä¾ãã°ãç¹ã«æ»æè ã®ã³ã³ããã¼ã·ã§ã³æ»æã«å¯¾ãã¦ãæ»æè ã®æ空ãä¸æçã«åçµããæéçã«å¾ããã®æ»æãå ã«é²å¾¡ããã®ååã¨ãã«ã®ã¼ãå©ç¨ãã¦ããå ã«æ¥ã¦ããæ»æããç¸æ®ºããã¨ããè¡å¼ãå¯è½ã«ãªããè¦ããã«æå ã§ç°¡åãªã¿ã¤ã ã¹ãªãããããã¨ãããã¨ã«ãªããããªãã¡ãæå³çã«ã¿ã¤ã ãã·ã³ãã©ãã¯ã¹ãçºçãããè¡å¼çµäºæã«è§£æ¶ãããè¡å¼ï¼å³å¯ã«ã¯éãããããããç解ã§ããã¨å人çã«ã¯æã£ã¦ããï¼ã«ãªãããã¨ãã°ãã¾ã ç¾å¨ã®æµãemitãã¦ããªãæªæ¥ã®æ»æï¼æªæ¥ã®æµã¯emitãã¦ããï¼ãå åããã¦ãç¾å¨ã®æµã®æ»æã«ç¸æ®ºããããã¨ãã§ããã¨ãããã¨ã ã
Â
ãã¡ãããåè¿°ã®1+N軸ã§ããè«ççã«ã¯ã¿ã¤ã ã¹ãªããã«ãªã£ã¦ããããæé軸æ¹åã¨ã¹ãããã§ããã¿ã¤ã ã¹ãããã«å¶ç´ãããã£ã¦ããã®ã§ãã¿ã¤ã ã¹ãªããã¨ãã£ã¦ãé常ã«åç´ãªãã®ã ãå¾è ã®è¡å¼ã¯èªç±åº¦ãå§åçã«é«ããã©ããªæ»æãã©ãæ¥ã¦ãé¢ä¿ãªããçè«ä¸ã¯ç¡æµã§ãããï¼ãªããçè ãæ¢æ±ãã¦ããã®ã¯ãã®2+N軸ã®éè¡æ§æã ããããã¨çµ¶æçã«ãããããããªãã¨ããã®ãç¾ç¶ã ã£ãããããï¼
Â
ãªãããããå®æ¬¡å ã«projectionããå ´åã¯ãã¾ãone-shot requestãå©ç¨ãã¦ãæ»æè ã®æéãä¸æçã«åçµãããå®æéã§ã®æåãå¶ç´ããåæã«ãã¸ã«ã«ãªå¥ã®ãã³ã³ãã¹ãã¼çµç空éãæ§ç¯ããããã§éè¡å¦çãå®è¡ãgroup commitã®ã¿ã¤ãã³ã°ã§ç©ºéããã¼ã¸ãã¦ãå®æéã«ãæ»ããã¨ããè¤æ°ã®ä¸çç·ã使ãåããåªæã¨ãã¦çºåããï¼ããæ£ç¢ºã«ã¯çºåãã¦ããããã«âè¦ããâï¼ããªãããã®ã¿ã¤ã ã¹ãã³ã¯ç¾ç¶ã§10-20msecãé常ã®ã¹ã±ã¼ã«ã«ãªã£ã¦ãããä¸è¬æ°é人ããããã¨1/100ç§ç¨åº¦ã ããéè¡çã«ã¯ããªãã®æéã«ãªãã
Â
以ä¸ã§ããã
Â
ãã£ãããããªæããªã®ã§ããã詳細ã«ç¥ãããããã¯ãä¸è¨ã®å¤ææ¸ã®è§£èªãããããããããªãããã®éã«ã¯ç¬åã§ã®è§£èªã¯ããªãé«ãã¬ãã«ã§ã®éè¡ã®ç´ é¤ããªãã¨é£èªã極ããã®ã§ãé©åãªéè¡å¸«ã®æã»ã©ããåãããã¨ããå§ãããã
æ¥æ¬ç¤¾ä¼ã¯ããããã«ããå´ååä¸è¶³è§£æ¶ã®å¤¢ãã¿ããï¼
ã©ã¡ããã¨è¨ãã¨é¢ä¿è åãã
Â
ã¨ããäºæ ã§ããããã¨ãCVã¨ããããããAIç³»ï¼ã®ä¸æ©æåï¼ã«é¢ãããã¨ã«ãªã£ã¦ãããæ¥åç³»ITå±ã¨ä»å¾ã®ãã¼ã±ããã®è¦ç¹ã§æ¸ãã¦ãããæåã«æã£ã¦ãããèªåã¯ããããã«é¢ãã¦ã¯ç´ 人ãªã®ãããªã®ã§ãã ãããããããããæ¸ããã¨ã¯ééã£ã¦ããå¯è½æ§ããããåç´ã«ãå¤å´ããè¦ãèãæ¹ã®ä¸ã¤ãã ã¨æã£ã¦ããã£ã¦ããããã®ã¤ããã§æ¸ãã¦ããã
Â
åæã¯NCãFAã¨è¨ã£ãå·¥ä½æ©æ¢°ã®å»¶é·ã®ãã®ã§ã¯ãªããããã¾ã§äººæã®ä»£æ¿ãè¡ããæ°´æºã®ãã®ãæ³å®ãããã¾ã極è«ããã¨ãå£åçãéè ã¢ãã ããã ã
Â
ç¾ç¶å ¨è¬
ä¸è¬ã«è¨ããã¦ãããã¨ã§ããããæ¥æ¬ã¯ä¸çæ´å²ä¸ãªããã¤ã¦ãªãã¬ãã«ã®é«é½¢åã«ãªã£ã¦ãããå°åå対çã®å¤±æããã®å´ååä¸è¶³ã«æãã£ããæ£é¢æ¿çªãã¦åæ»åçã§ããããããã大æ¨äºã®ããªãã«ããã®å´ååä¸è¶³ãçé¢ç®ã«ããããã§è£ãã¨ãããã¾ããã®SFããã¯ãªããã¾ãä¸çå²ä¸ä¾ã®ãªã試ã¿ã«åãã£ã¦ãããã¨ãããåãããããããªããã¨ãããã»ãã«é¸æè¢ããã£ããæãã¦ã»ããå±éã«ãªã£ã¦ããã
Â
ãããã«ããã¯æ¥µç«¯éããã ãããã¨ããæè¦ãããã¨ã¯æãããããã¾ã§è¿½ãè¾¼ã¾ãã¦ããã¨ãããããã®ã¯äºå®ã ããå¾ããè¨è¿°ããããã«ããã»ã©æ¡ä»¶ãæªãã¨ããããã§ããªãã
Â
éä¾çã«ã¯ã諸å¤å½ã®ä¾ã§ã¯ããããã±ã¼ã¹ã¯ç§»æ°ãå¤å½äººå´åè ã§è£ãããããã«ç¾å¨ã®æ¥æ¬ã§ãå°±å¦çãå¤å½äººå´åè ã¯å¤ãã¯ãªã£ããç¾å¨ã¯ããªãå´©ãçã«è¡ã£ã¦ããã±ã¼ã¹ãå¢ãã¦ãã¦ããã社ä¼çãªã«ã¼ã«ã»æ´åãè¡ããã«å ´å½ããçãªæ¹åã«é²ãã¦ããæ¿çãåºå§ãã¦ããããå®éã«ããªãã®èãããªãããã®æã®è©±ãã«æºãã£ã¦ãã人ãçµæ§è¦ãã
Â
ããå½æ°æèçã«ã¯ç¢ºå®ã«ãã®æã®ãå¤å½äººã®è¼¸å ¥ãã«ã¯ããªãã¨ãªããã¼ãã®æ¹åã«ãªãã ãããé£è¿æã§æ¯èªãéããªãéå£ãããããã£ããå¢ããæã®ãæ¢å社ä¼ã®æµææããã®çµæã®è»è½¢ã»ç¤¾ä¼åé¡åã¯ãã§ã«æ¬§ç±³ã§é¡å¨åãã¦ãããããã¯å¨ç¥ã®ã¨ããã ããã®æã®ç¤¾ä¼åé¡ã®æ·±å»åã¯ããå ´å½ããçãªæ¿çã«å®æã«æºãã£ã¦ãã人ãã®æ³åãè¶ ãããç¹å®ã®Native Japanese speakerã«å¯¾ãã¦ã§ãããã¤ãã¹ãã¼ãã®ãããªåé¡ãçºçããæ¥æ¬ã§ãNon-native Japanese speakerã«å¯¾ãã¦ã©ããªåãã«ãªããã¯ç°¡åã«æ³åã§ããã¯ãã ãï¼å人çã«ã¯æ¥æ¬ã®å ´åã¯ã¾ã¡ãããªãããç¦å³¶ããã¾ãæåã«æ¥æ¬ã®âGanz untenâã«ãªãã¨æããçé¢ç®ã«æ¥æ¬ã®æ¥ã«ãªãã®ã§ããã®æã®è©±ã¯ããã¦ç¦å³¶ã®ã¡ããã¤ãã¦ããã«ãã¦ã»ãããï¼
Â
ç¾ç¶ã®ããããå°å ¥è«
ãã¦ãããããã ãã»ã»ã»ããããããããããããã¨ããã¡ãã£ã¨åãªãã°èåç¡ç¨½ã«ã¨ãããããªããããã®è©±ããç¡è²¬ä»»ãªAIè«ãã·ã³ã®ã¥ã©ãªãã£è«ã¨ãã£ããç¾ç¶ã®å®è£ ãã¿ãã°ã©ãã§ããããå¦æ³ã沸ãã®ãç解ã«è¦ããã¬ãã«ã®è¨èª¬ã«å¾æ¼ãããã¦ãã¾ããã«åæã§èªããå§ãã¦ãããããã¦ãæ®å¿µãªããå¾å ãèããªãPoCã試é¨å°å ¥ãæ£è¦ããã¦ããã
Â
å ·ä½çã«ã©ãããã¨ããã§PoCã¨ãå°å ¥è«ããããããã¦ãããã¨ããã¨ãèªåã®è¦ã¦ããéãå ¨æ¥æ¬å´ååä¸è¶³å°çã®äºå¤§è¾ºçããå°å£²æµéæ¥ã¨ä»è·ç£æ¥ã®ã±ã¼ã¹ãå¤ããè¥å¹´å±¤å´ååä¸è¶³ã¯ã»ã¼ä»å¾ã解æ¶ãããè¦è¾¼ã¿ããªãä¸ã§ãå°å£²ï¼æµéã»ç©æµï¼/ä»è·ã¨ãã«ä¸ç¨®ã®å´åéç´çãªå·¨å¤§B2Cç£æ¥ã®ä»£è¡¨é¸æã§ãããæ¯è¼çæ群ã«ã人æã足ããªããããã®æå³ã§ã¯ãããããçãªãªã«ãã®å°å ¥ã¯é¿ãã¦éããªãéãçé ã«ããã
Â
幸ãä¸å¹¸ããä»äºçã«ä¸¡æ¥çã«ã¯ç¨åº¦ã®å·®ã¯ããé¢ãã£ã¦ããã®ã§ãããæå³ãã®ã£ãããé¡å¨åãããã®å éé¨åã«ç«ã¡ä¼ã£ã¦ããæãã«ãªã£ã¦ãããä¸åæ´çãã¨ãã
Â
ããããããèªä½ã®è©±
-ããã¤ã¹ã¨ãã®ãã¼ãã¦ã§ã¢ã®å¨ã
ããã¤ã¹å¨ãã¨ãã£ã¦ãã¾ãã«å¤ç¨®å¤æ§ã§ããããããéè ã¢ãã ãã®åãã¼ããã¨ã«ã¾ãã§éãã¨ããç¶æ³ããã¾ãã¾ãªãã¼ãã¦ã§ã¢ãå¿ è¦ã«ãªãããã®ãã¼ãã¦ã§ã¢å ¨è¬ã¯ãè¦ã¦ããéãã§ã¯ããããæ¥æ¬ã¯ä¸ççã«ããªãã®é«æ°´æºã«ãããããããã§ã¯åºæ¬çã«ç²¾å¯åä½ãæ±ãããããããå¶å¾¡ãé©å½ã§ããã¨ããããã«ã¯ãããªãããã®ç¹ã§æ¥æ¬ä¼æ¥ã¨ãã®æè¡ã¯è£½é æè¡ãå«ãã¦ããããã¨ã³ãã«ããã
Â
ã°ãã¼ãã«ã§è¦ãæã®åªä½æ§ã¯ãããããåä¸æè¡ã»åä¸ä¼æ¥ã§ã®å¼·ã¿ã¨ããããããããã£ã¦ããã¨ãããå¤ãããã®å¹ ãåºããèªç¤¾è£½åãæè¡ã®ã©ã®è¾ºãå£ã£ã¦ãããï¼ããããã¨ãããããããæè¡çãªåç£ç¢ç£¨ããããããã¨ãã風ã«è¦ãããå²ã¨ã俺TUEEEEããã£ãé端ã«ããªãã¨YOEEEEãã®çªã£è¾¼ã¿ãç¬éã§å ¥ãæ¥çã«è¦ãããããæå³ãã³ãã«åãã
ç¹å®ã®ä¼æ¥ã®ç¹å®ã®æè¡ã«ã©ã£ãã®Googleãéã ããããããã¼ãã¨ãããã®ã¯å¤åãæ ¹æ¬çã«ééã£ã¦ãããå¨ããå«ãã層ã®åãããæ¥æ¬ã®ããããç£æ¥ã®å¼·ã¿ã ã¨æãã
Â
-å¶å¾¡ã·ã¹ãã
ããããçµã¿è¾¼ã¿ç³»ã«å±ããã¨ããã«ãªããOSSãå«ãã¦å²ã¨é¸æè¢ãããããå¢ãã¦ãããPoCã¬ãã«ããããç¨åº¦ãããã¯ã·ã§ã³ã¬ãã«ã¾ã§ãããã¤ã¤ããããã«è¦ãããç¹ã«æ±ºå®çã«è¶³ããªãã¨ãããã®ã¯ãªãããã«è¦ãããæ¢ãã¨ããããªãã®ã¾ã§ããã®ããã¨ãããããã¾ã§ãããçç³æ··äº¤ã¨ãã話ãããããéã«çãç³ãããã¨ããã®ã¯å¼·ãã
Â
-ã¢ããªã±ã¼ã·ã§ã³
æ®å¿µãªãããããã決å®çã«ãªããããæ£ç¢ºãªè¨ãæ¹ãããã¨ãããããæ¥çã®äººãæ³å®ããã¢ããªã±ã¼ã·ã§ã³ã¨ä¸å®ã®æ¥åã§å°å ¥ããããã«å¿ è¦ãªã¢ããªã±ã¼ã·ã§ã³ã«å¤§ããªæºããããã¨ããè¨ãæ¹ã«ãªããä»ã®ããããå°å ¥ã®èãæ¹ã¯ç°¡åã«è¨ãã¨ãè¶ é«æ©è½ãªã移åããèªå販売æ©ãã®å»¶é·ç·ä¸ã«ãããã¾ãã¯ããé ã®ãªãéè ã¢ãã ãã¨è¨ã£ã¦ããããï¼ã¾ããã¬ã³ãã®èªåé転ãä¼¼ããããªã¨ãããããããã«è¦ãããã»ã»ã»ï¼
Â
æ¬ ãã¦ãããã¤ã³ãã°ã¬ã¼ã·ã§ã³ã
ã¾ããã£ã¦ãããããªç¾å ´ã§ã¯ãæã ã®è¨ãã·ã¹ãã ã»ã¤ã³ãã°ã¬ã¼ã·ã§ã³ã¨ããèãæ¹ãããèªä½ãã»ã¼åå¨ããªãããã¢ããªã±ã¼ã·ã§ã³ãã¨ãã観ç¹ããèªå販売æ©ã®çµã¿è¾¼ã¿ç³»å¶å¾¡ã½ããçãªãã®ãã®æèã®åãåºã¦ããªããè¦ããã«ãè¤éãªæ¥åä¾å¤å¦çãã¯èæ ®ã«å ¥ã£ã¦ããªãã
 ï¼ã¾ããããªãçä¿ã ããããããæ¥çã«ããã·ã¹ãã ã»ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¨ããè¨èã¯ããããããã¯SIæ¥çãããã¨ããã®ã·ã¹ãã ã»ã¤ã³ãã°ã¬ã¼ã·ã§ã³ã¨ã¯ä¼¼ã¦éãªããã®ã ãå¾è¿°ãããããããã¾ããããããªãã®ã£ããã«ãªããï¼
Â
ã¤ã³ãã°ã¬ã¼ã·ã§ã³ã®è¦³ç¹ã§è¦ãã¨ãçµé¨çã«ã¯ããã®ä¾å¤å¦çã¯ã·ã¹ãã å ¨ä½ã®ã³ã¹ãã®70%~80%ã«ããªããã¨ãããããç¾ç¶ã®ãããããæ¥çãã¯ãã®ã³ã¹ãã¾ã£ããè¦ã¦ããªããã¨ããããç¥ããªããã¨ããã¾ãã«ãã®ä¸è¨ã«å°½ããæãã ã
Â
ãã¾ã¾ã§ãã®æã®è©±ã¯ãå¶å¾¡ç³»ã»å®è¡ç³»ãã¨ããã¯ã¨ã³ãã¾ãã¯ãæ¥åç³»ãã¨å®å ¨ã«åãã¦ãããç¹ã«å¶å¾¡ç³»ã¯å ´åã«ãã£ã¦ã¯äººã®çæ»ã«é¢ãããã¨ãããã®ã§ãã§ããã ãä¾å¤ç³»ã¯æé¤ãå質ã«æ¯ãã¨ããã®ãçã§ããã®åãä¾å¤ã®ããå¯ãã¯æ¥åç³»ï¼äººæã§å¸åã¨ããã®ãçéã ã£ããããã¯ç¤¾ä¼ã¤ã³ãã©ã«ãããé輸交éã«ããã製é æ¥ã«ãããæ®éã«ãã話ã ãã ãããæ¥åä¾å¤çãªãã®ã¯ããããç³»ã§ã¯èæ ®ã®å¤ã§ããã¯ç¹å¥ãªè©±ã§ã¯ãªããæ®éã ãããã¯ãããã§ä¸ã®ä¸ãåã£ã¦ããããããããªã£ã¦ãããã¨ãã話ã§ãããªãã
Â
ç¾ç¶ã®ããããé¢ä¿ã®ä¼æ¥ã»äººæã¯ãã©ããã¦ãå¶å¾¡ã»å®è¡ç³»ã«å±ãããã¨ãå¤ãããã®æå³ã§ãæ¥åç³»ãã«ã¤ãã¦ã¯ãèæ ®ããªãã¨ããããããããã¨ããããè¦ããã«ããªãã¨ããªããã¨æã£ã¦ãããã·ãããããã®ç¶æ³ã¯ãã¹ãçµé¨è ãªãã°çèåå°ã§ç解ããã¬ãã«ã ãããã®ç¶æ ã§ä»è·ãªãæµéã®ç¾å ´ãªãã«æ¾ãè¾¼ããã¨ããã®ã§ãã»ã¼100%使ãç©ã«ãªããªããã»ã¼ãã¹ã¦ã®æ¡ä»¶ã§ãã¨ããããä¸åãã£ã¦ã¿ã¦ä»å¾ã¯è¦æ¤è¨ï¼ãèµå ¥ããç¶æ ã§ã¹ã¿ãã¯ããã
Â
ãAIãã¨ããè¨èã«ããé è½
ãã®ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¾ãã¯ã¢ããªã±ã¼ã·ã§ã³ãè¨è¨ã»å®è£ ã®ã¨ããé½åããé è½ããè¨èã«ãªã£ãã®ããå®ã¯ãAIãã ãããããã«éãããä»ã®ç¾ç¶ã®ãAIãã¯é½åããã¤ã³ãã°ã¬ã¼ã·ã§ã³ã³ã¹ããå¸åãã¦ããããã®ã¨ãããã¼ãããã¨ããå¸æç観測ããæ ¹åºã«ããããã¨ãã°RPAãããã¯ããããé°å²æ°ãé¸ãåºãããã誤解ããçºçãããçµæ大ä½ãã¾ããããªãã
Â
ãã®æå³ã§ã¯AIã¨ããè¨èã¯ãé常ã«ãã¤ãã¹ã«ãªã£ã¦ããã¨æããããã¹ããã¨ããããªãã¦ããã¨ããé常ã«é æçãªå¹»æ³ãæä¾ããããã ãç¿»ã£ã¦ãããã¯ITæ¥çã§ã¯ãããã¨ã¯ä½ããªããçä¸ã¯ãã¡ããã失ææãè延ããå¸å ´ãåºããããçµæãæ¬æ¥ã§ããã°ã¦ã¼ã¶ã»ãã³ãã¼ã¨ãã«äº«åã§ããã¯ãã®ãã¼ã¿ã«ã¡ãªããããªããªã£ã¦ãã¾ãã
Â
ã»ã»ã»ããããºã¯ã¼ãã§è³éãéã¾ããITå¸å ´ãæ´»æ§åããã¨ããæè¦ãèãããä¸æ£ç¢ºãªããºã¯ã¼ãã®ãªãã®æã¦ã¯å¤§ããªå¤±æã¨ä¸ä¿¡ã§ãããçµæã¨ãã¦ã®å¸å ´ã®åªå¤±ã ã失æã¾ã§ã®ã¿ã¤ã ã¹ãã³ãé·ããã°ãæéå·®ãå©ç¨ãã¦ä¸ç¨®ã®ããã«ã稼ããã¨ãå¯è½ã§ãããããæ å ±ä¼éã®ã¹ãã¼ããéãç¾ç¶ã§ã¯ããããåãè¾¼ã¿è©æ¬ºçãªç ½ãã¯éç¨ããªããããºã¯ã¼ãæè¿ãªITå±ã¨ãã¹ã³ãã¯å ¨åã§åçãã¦ã»ãããã¾ãã§ãå²ã¨ã¾ãã§ããããããï¼AIãã¯ãã®ã¾ã¾ã§ã¯ä¸å¹¸ãã¾ãæ£ããã ãã ãæå¾ ã大ããã ãã«ãããã¯ãããç¯ç½ªçã¨ããããã¨æãã
Â
ãããã«ãããçé¢ç®ã«èããã¨ããã®ãã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã®é¨åãã©ããããï¼ãä»å¾ã®ç¦ç¹ã«ãªããããã¯ä»ã¾ã§ã®SIã¨ã¯ãããããä¼¼ã¦éãªããã®ã«ãªãæ°ãããã
Â
ï¼ãªããããã§æåã®çä¿ã«æ»ããããããæ¥çã§ã®ãã·ã¹ãã ã»ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¯ãããããã®ã·ã¹ãã ï¼ããã¯ããããã®å¯¾è±¡é åã«éããç³»ã®ãã¨ï¼ãã®ã¤ã³ãã°ã¬ã¼ã·ã§ã³ã«ãªã£ã¦ãããåè¿°ã®ãããªãæ¥åä¾å¤ç³»ãã«ã¤ãã¦ã¯èæ ®ãã¦ããªããã¨ãå¤ããï¼
Â
ããããã©ãããã¤ã³ãã°ã¬ã¼ã·ã§ã³ãå¿ è¦ãªã®ãã
 ãã£ã±ãããããªããã¨ããã®ãæ®éã ã¨æãã
è¦ä»¶å®ç¾©ã®æåã®åºã ãã®æ¥åè¦ä»¶ã®æ´ãåºããããã¦é£èªã極ãããAs-IsãTo-Beã®ãããªå¤å ¸çãªçéåæã§ãããããããä½ãAs-Isãã¯ç¸å¤ãããæ´çããã£ããã ãããããããããããå°å ¥å¾ã«ããã¹ã姿ã®To-Beã¢ãã«ã詳細ã«æ¥åå´ããè©°ãããè¨ããã¦ããæ³åã¨å¦æ³ã®ç£ç©ããTo-Beã«ãããã¨ãã話ã«ãããªããªãã
Â
ã½ããã¦ã§ã¢ã®ããã«è»æ§ãªä»çµã¿ã§ããã°ãã¢ã¸ã£ã¤ã«çãªææ³ãæå¹ã ã¨æããããããããã¬ãã¬ãã®ãã¼ãã ãã¡ãã£ã¨ããããå¤ãã¦ã¿ã¾ãããã«ãéçãããªããã³ã¹ããæéããã«ã«ãªããªããå ãã¦ãåè¿°ã®éããããããããããã®ä½ãæã«ããããçµé¨ãå¤ããªãä¸ã«ãITæ¥çããAIãã¼ã ããé æãããããã¦ã¼ã¶ãµã¤ããããããAIããªãã¨ããã¦ããããã§ãããï¼ãã¨ããè¬ã®æå¾ ããããæå¾ ã®ã£ããã¯çµ¶è³å¤§æ¡å¤§ä¸ã ãå£ã¯ã¨ãã¬ã¹ãããé«ããæºã¯ããªã¢ãæµ·æºããæ·±ãã
Â
ããã«ãããããã¤ã³ãã°ã¬ã¼ã·ã§ã³ã³ã¹ããã©ã®ãããã§ãã©ãå¸åãããããããªãã¨ããåé¡ãçºçãããããã¯ãã«ã«ãªããªãããã£ããè¦ä»¶å®ç¾©ããå§ãã¦éç¨ã¾ã§èããã¨ãæ¡ä»¶ãããã§SIã³ã¹ãã¯ãæ°åä¸ã¯æ®éã ããã¡ãã£ã¨ééã£ããããã«åã¯è¶ ããã ããã
Â
ã¨ãããã¨ã§ãããããå°å ¥ã®è©±ãæµéã¨ä»è·ã«éå®ãã¦èªåã®èããè¿°ã¹ãã
Â
ã¾ãæ®éã«èããã¨ã絶æçã«æã¤æããªãã®ã§ãã©ããããããªãã§ããã
ã§ãããã¾ãã§ããã ãããããè¨ã£ã¦ããããªãã®ã§ã以ä¸ã®èªåã®ãªãã®è§£æ±ºæ¡ããæ³åããã¦ã¿ãããªãã以ä¸ã¯åã®æ³åï¼ã¨ãããç®æã¨ããããããããã£ã¦ã¢ã¬ã ï¼ã§ããããã©ããç¾å®ã«ãã®æ³åãå®ç¾ããããã¦ãã人ãã¡ãããã
Â
ç¾å®ã®ãããããã¨ã¦ã¼ã¶ãã®ã®ã£ããã®åãæ¹Â
-é²ãæ¹ã®åé¡
æ®éã®SIã®ããæ¹ã§ããã°ãç¾ç¶ã®æ¥ååæãè¡ããåé¡ç¹ãæ´ãåºãã課é¡ã解決ããããã«ITã®æè¡ãå°å ¥ãããã¨ããã®ãé常ã®çéã«ãªããç¾è¡ã®åé¡ç¹ã解決ããããã«ãããããå°å ¥ããã°ãããã¨ãããã¨ã«ãªããããã§ã¯ãããããå°å ¥ã®SIã«ããã¦ãæµéã®ç¾å ´ãªããä»è·ã®ç¾å ´ã§ããããã£ã¦ãã¾ãããããã¨ããã¨å¤åãã¾ããããªãã
Â
çç±ã¯ãããããããã大ããªãã®ã¯ãã¾ãåç´ã«ãããããå°å ¥ããã°ããå°å£²ã»ä»è·ã®ç¾å ´ã®åé¡ç¹ã解決ãããï¼ãã¨ããã¨ã解決ããªããããã ãæ¥ååæããã¦ã課é¡è§£æ±ºã«ããããããã¾ããããã¨ããã¨å¤åãçµè«ã¯ãå½é¢ã¯å ¥ããªãæ¹ãããã§ãããã¨ãããã¨ã«ãªãã
Â
ãã¾ã¾ã§ã®ITã¯ãITå´ã人éã«å¯ãã¦ããããã¾ãç¾å ´ãåãããã«ã¯ãæ³å®å¤ã«çºçãããã©ãã«ãåé¡ç¹ã人ã®åµæ工夫ã§è§£æ¶ããæ¹ãå¹çãããããã ããã®éªéãããªãããã«ITããã¾ãã¢ã¸ã£ã¹ããã¦å°å ¥ããã»ãããã¼ã¿ã«ã§ã®ãã¸ãã¹ã®ã¹ã«ã¼ãããã¯åºãããããã¡ã®ERPã®ã³ã³ãµã«ããããããªãæ¥åãERPã«å¯ãããã¨ããã®ã¯ãæ£è§£ã§ã¯ãªããã¨ã¯å¤ãã®äººãç¥ã£ã¦ãããå質ã¨ã¹ã«ã¼ãããã®èåããè¦æ±ããå¤å°ã³ã¹ãããã¦ãããããåæã«è§£æ±ºããã¨ããæ¹åã«åãã¦ããã®ãæ¥æ¬ä¼æ¥ã®ããæ¹ã ããã®ããã«ãSIã®è¦ä»¶å®ç¾©ããå®è£ ã»ãªãªã¼ã¹ã¾ã§ã®æµãã¯ãITãæ¥åã«å¯ãããã¨ããèããããæ ¹åºã«ç½®ãã¦é²ãããã¦ããã
Â
æ®å¿µãªãããã®æ¹æ³ã¯ç¾ç¶ã®è§£æ±ºã«ã¯ãªããªãã
Â
çç±ã¯å¤§ãããµãã¤ã ãã²ã¨ã¤ã¯ããããç³»ã¯è¨ããã¦ããã»ã©ä¸è½ã§ã¯ãªããå¶ç´ã®æ¹ãå¤ããããã¯ç¾ç¶ã§ã¯ã©ããªã«é å¼µã£ã¦ãããããã¨ã«éçãããã¨ãããã¨ã ããã¨ãã°ãä¸è¬ã«ã¯ä¿¡ããããªãã¨ãããããåè ã§ãã®ãã¡ããã¨æ´ãã§éã¶ãã¨ãããã¨ã§ããç¾è¡ã®æè¡ã§ã¯ãã£ã¨ããªãã¨ãã§ããã®ãæè¿ã ã£ãããããããã§ã人éã®æ°´æºã«ã¯å ¨ç¶é ããï¼å¤ãã®ãããããåè ã§ããã®ã¯ãè¨ããã¦ã¿ãã°ããã ãªã¨æãå½ãã人ãå¤ãã¨æãããã§ãå®ã¯åè ã®æ¹ã精度ã»å¹çããããç¡ç¨ã®ç¨ã¨ã¯ããè¨ã£ããã®ã§ãå±æçã«ã¯ç¡æå³ã ãã対象é åã®åãããã«ãã£ã¦ã¯ææã¨ãããã¨ã¯æ®éã«é »ç¹ã«ãããï¼ãããªãã¨ã¯ãããã§ããã£ã¦ãç¾å¨ã®å°å£²ã»ä»è·ã®æ¥åã®åé¡ç¹ã解決ããã«ã¯ãä»ã®æè¡æ°´æºã®ããããã§ã¯å¸¯ã«ã襷ã«ãçããããããã«ITã人å´ã«å¯ãããã¨ãããã¨ã極端ã«å°é£ã¨ãããã¨ã ã
Â
ããã²ã¨ã¤ã¯ããããããããã§ãµãã¼ãããã°ãã©ãã«ããªãã¨ããã¬ãã«ã®äººæä¸è¶³ã®æ°´æºã¯ã¨ã£ãã®æã«éãè¶ãã¦ããã¨ãããã¨ã ãç¾ç¶ã§ã¯ééãªãæ給ãããã¦ãæºè¶³ã«ã¢ã«ãã¤ãããéã¾ããªãã¨ããã®ãç¾ç¶ã«ãªã£ã¦ãããããããã§äººæä¸è¶³ãè£ããã¨ããã®ã¯è£ãã¹ããã¼ã¹ãããã®ãåæã§ããããããããã®åæãå´©ãã¤ã¤ããã
Â
ã¤ã¾ããæ¢åã®SIã®æ¹æ³ã§ãæ¥å(å°å£²ã»ä»è·ã®ç¾å ´)ã¨ITï¼ããããï¼ã®ã®ã£ãããåãããã¨ãã¦ãåã¾ããªããåãããããªããã®ãç¾ç¶ã ããªã®ã§ãæ®éã¯ãããããäºã ã®åã«ãããã¨ããã ããã£ã¦ããçµè«ã«ãªãã
Â
ã§ãã©ããããï¼ã¨ãã話ã ããããã¯æ¬æ«è»¢åã ãããSIãããããã«åããã¦ãè¡ããã¨ããéã®çºæ³ã«åããããªããè¦ããã«ããããæ§ãåããããããã«ç°å¢ãã¤ãã£ã¦ã人æ§ã¯ãã®ãµãã¼ãããããã¨ããæ¹åã«ãæ¥åå´ããã¤ã³ãã°ã¬ã¼ã·ã§ã³ããã¨ãããã¨ã ããã¡ããããµãã¼ãã®äººå¡ã¯å¯è½ãªéãã¼ãã«ããã
Â
è¦ããã«ããããåæã§ããã¸ãã¹ã»ãã©ã¼ãããããä½ãç´ãããã®ãã©ã¼ãããããã¯å¯è½ãªéã人éã¯æé¤ãããã¨ãããã¨ã ãå°å£²ã§ãä»è·ã§ãã ããã§ã人éã¯ãªã«ããã®ï¼ã¨ãã話ã ããå人çã«ã¯ãç©è³ªçãªãã¼ãã¦ã§ã¢ãªãµã¼ãã¹ãã§ã¯ãªããç²¾ç¥çã»ã¡ã³ã¿ã«ã»æ°æã¡ã¨ããããªæãã®ã½ããã¦ã§ã¢ãªãµã¼ãã¹ãã«å¾¹åºããæ¹ãããã¨æã£ã¦ãããã¾ããããããã®ãµãã¼ããã人éã¯ä¸é¨ãé¤ãã°ããã§ããå¿ è¦ããªãã¨æãã
Â
ã¤ã¾ããå¿ è¦ãªSIã¯å¾æ¥åã®SIã§ã¯ãªããå¾æ¥ã¨ã¯ã¡ãããã©ã¼ããããªããªãã¬ã¼ã·ã§ã³ãæ ¹æ¬çã«ä½ãä¸ããSIãå¿ è¦ã«ãªããè¦ããã«âæ´è«âãè¨ãã°ãå°å£²/ä»è·ã§çé¢ç®ã«ããããã¨ãå ¥ãããªããå¯è½ãªéã人ãããªãåºèã»ä»è·æ½è¨ãã¤ãããã£ã¦ãã¨ã§ããä¸éå端ã«ããããçãªãã®ãå ¥ããã¨ããã§ãä½è¨ãªããå¯ããæ¥åå´ã«ãã¦ãçµå±ãããªãã®ããã«ãããã®ãããããããªããã¨ãããã¨ã«ãªããã¨ãããããã§ã«ãªãã¤ã¤ããã
Â
çµå±ã®ã¨ããã®ä»ã®çµè«
ä»ã®ããããå°å ¥ã¯åºæ¬ç·ã¯ã便å©ãã¼ã«ãã®å»¶é·ã§ãããªãããããã£ã¦äººæã®ãªãã¬ã¼ã¹ã«ã¯ãªããªãããçµå±ãæ¥åããã®çµã¿ä¸ãããªãã®ã§ãã³ã¹ãå¢ï¼äººä»¶è²»å¢ã«ãªããæ代ã®è¦è«ã«ã¯éè¡ãããæ¬æ ¼çã«äººæä¸è¶³ã«å¯¾å¿ãããã«ã¯ããã©ã¼ãããã¬ãã«ããã®æ¥æ å¤æ´ãå¿ é ã«ãªãã
Â
ãã£ã¨ãããã¯æ¬æ¥çã«ã¯ããããããããå°å ¥ä»¥åã®è©±ãããããªãã人æãæ¸ããã¦ãããããçãªãã®ã«ç§»è¡ããã¨ãããã¨ã¯ã俯ç°ã§ã¿ãã°ãå´åéç´çãªç£æ¥æ§é ãè³æ¬éç´çãªç£æ¥æ§é ã«å¤§å¹ ã«å¤æ´ãããã¨ããè¦è«ã«ãç¹ããã ãããããã¾ã§è¡ããªããã°ãç¶ç¶çã«çºçãããããããã®å°å ¥è²»ã¯ãã¡ãããã¡ã³ããã³ã¹ã³ã¹ãã»SIã³ã¹ãã¯ãã¤ããªãã ããã確ãã«é¨åçã«ã¯ä»å¾ã¯ãå°±å´äººå£æ¸ãã人å¡ç¢ºä¿ãé æã¡ã«ãªãã®ã§ãå¿ ç¶çã«ãããªãã¨ããå´é¢ã¯ãããããã©ãããã以ä¸ã«çµå¶ä¸»ä½ã»ç¾å ´ã®æèãå¤åãããªãã¨ãããªããããã§ãªããã°ã人ææ¸ã®ä¸ã§ã®ç¡çã¨ããæå³ã§ãã¨ã©ã®ã¤ã¾ãã®ãæ¿çä¸å¨ãã¨ããã«ãµã³ããã³çãªè¢«å®³è æèãç©ã¿ä¸ããã ãã ããã
Â
æ¥æ¬ã«ç£æ¥å²ã§ããå´åéç´çãªç£æ¥æ§é ãè³æ¬éç´çãªç£æ¥æ§é ã«å¤æ´ãã®ä»£è¡¨ä¾ã¯ãå®ã¯é輸ã»ãã©ã³ã¹ãã¼ãã¼ã·ã§ã³ã ãè¦ããã«é¦¬è»é¦¬ã»é£èããè»ã»ééã«ãªã£ããç®èãªãã¨ã«è±¡å¾´çãªã¢ããã¸ã¼ã«ããªãããããªãã¡ãä»ã®æµéã»ä»è·æ¥çã¯ãã馬è»é¦¬ã»é£èã®æ代ããªãã§ããè»ã»ééã®æ代ãã«ããªãã¨ç¡çããã¨ã¾ããããªæããªã®ãããããªãã
Â
ããããã»AIã§ã®ãã¤ã³ãã°ã¬ã¼ã·ã§ã³ã®ä¸å¨ãã¯ãç¾å ´ã»çµå¶ã»æ¿çã®ååºç°å¤¢ã®æãã®æã¦ã¨ããããã¯ãç½®ãå»ãã«ãªã£ã¦ããæµéã»ä»è·æ¥çã®ç£æ¥æ§é ã®æ ¹æºçãªæ¬ é¥ãããã¾ãã¾é¡å¨åãããçµæãã ããããããªãããããå¥è²¨ã«ãã¦ã人å£æ¸ã®ä¸ã§ã®ãèªãã®ããæ¹ãã®ãã®ãæ¢åã®å»¶é·ã«ãããã®ã§ã¯ãªããæ°ãã«åãç´ãã¨ãããã¨ãå¯è½ã«ãªãã®ã§ããã°ããã®æå³ã§ã¯ãããããã»AIã§ãã©è²ãã¨ããåãè¾¼ã¿è©æ¬ºçãªITãã¼ã±ãå¤å°ã®æå³ã¯ããã®ãããããªããã¾ããããªæãã
Â
æ¬å¹´ããããããã§ãã§ãã
Â