ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã®ã³ã³ããã¹ãã§ã¯ãåæå®è¡å¶åŸ¡ãšã¯ãããŒã¿ã®äžè²«æ§ãæŽåæ§ãç¶æããããŒã¿ã®ç°åžžãé²ãããã«ãããŒã¿ããŒã¹ ã·ã¹ãã äžã§åæã«å®è¡ãããæäœã®ç®¡çãšèª¿æŽãæããŸããããã¯ãè€æ°ã®ãŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãåãããŒã¿ããŒã¹ ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããå¿ èŠãããå Žåã«ãããŒã¿ããŒã¹ ã·ã¹ãã ãå¹ççã«æ©èœããããã®åºæ¬çãªåŽé¢ã§ããåæå®è¡å¶åŸ¡ã¡ã«ããºã ã«ãããACID (ååæ§ãäžè²«æ§ãå颿§ãèä¹ æ§) ããããã£ã«æºæ ããæ¹æ³ã§ãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ãããããšãä¿èšŒãããããŒã¿ããŒã¹æäœã«å®å®ããäžè²«ããç°å¢ãæäŸãããŸãã
åæå®è¡å¶åŸ¡ã«ãããäž»ãªèª²é¡ã¯ãããŒã¿ããŒã¹ ã·ã¹ãã ã®ããã©ãŒãã³ã¹ãšããŒã¿ã®æ£ç¢ºæ§ã®éã®ãã©ã³ã¹ãéæããããšã§ãã广çãªåæå®è¡å¶åŸ¡ãååšããªãå ŽåãæŽæ°ã®æ¶å€±ãããŒãã£èªã¿åããå埩äžå¯èœãªèªã¿åãããã¡ã³ãã èªã¿åããªã©ã®åé¡ã«ããç«¶åãçºçããå¯èœæ§ããããããŒã¿ã®æŽåæ§ãæãªãããäžæ£ç¢ºãªçµæãçããå¯èœæ§ããããŸãããããã®åé¡ã¯ç·ç§°ããŠåæå®è¡ç°åžžãšããŠç¥ãããŠãããå ±æããŒã¿ãžã®ã¢ã¯ã»ã¹ãé©åã«ç®¡çãããã« 2 ã€ä»¥äžã®ãã©ã³ã¶ã¯ã·ã§ã³ãåæã«å®è¡ãããå Žåã«çºçããŸãã
ãããã®èª²é¡ã«å¯ŸåŠããããã«ãããŸããŸãªåæå®è¡å¶åŸ¡æè¡ãéçºãããŠããŸããããæãé¡èãªãã®ã«ã¯æ¬¡ã®ãããªãã®ããããŸãã
- ããã¯: ããã¯ã¯ãããŒã¿ããŒã¹ ãªãœãŒã¹ãžã®åæã¢ã¯ã»ã¹ã管çããããã«åºã䜿çšãããŠããã¢ãããŒãã§ãããã®æ¹æ³ã§ã¯ãããŒã¿é ç®ã«ããã¯ãèšå®ãããããã¯ãè§£æŸããããŸã§ä»ã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãããããã®é ç®ãžã®ã¢ã¯ã»ã¹ãå¶éãããŸããããã¯ã¯ãã¿ãã« ããã¯ããããŒãã« ããã¯ããŸãã¯ããã«æŽç·Žãããè€æ°ç²åºŠã®ãã㯠ãããã³ã«ã«è³ããŸã§ãããŸããŸãªæ¹æ³ã§å®è£ ã§ããŸãã 2 ãã§ãŒãº ãã㯠(2PL) ãããã³ã«ã¯ãç«¶åã·ãªã¢ã«åå¯èœæ§ãæäŸããããŒã¿ããŒã¹ã®äžè²«æ§ã確ä¿ããããã«äžè¬çã«æ¡çšãããŠããææ³ã§ãã
- ã¿ã€ã ã¹ã¿ã³ãããŒã¹ã®ãããã³ã«: ãããã®ãããã³ã«ã¯ãåãã©ã³ã¶ã¯ã·ã§ã³ã«äžæã®ã¿ã€ã ã¹ã¿ã³ããå²ãåœãŠããã©ã³ã¶ã¯ã·ã§ã³æäœã®é åºä»ãã«äœ¿çšããŸããã¿ã€ã ã¹ã¿ã³ãã«åºã¥ããŠããããã³ã«ã¯ãã©ã³ã¶ã¯ã·ã§ã³ã®ç¶è¡ãèš±å¯ããããäžæ¢ããŠåéããããæ±ºå®ããŸããã¿ã€ã ã¹ã¿ã³ã ããŒã¹ã®ãããã³ã«ã䜿çšããäž»ãªå©ç¹ã¯ãããã¯ãå¿ èŠãªãããããã㯠ããŒã¹ã®ã¹ããŒã ã«é垞䌎ãç«¶åããããããã¯ã軜æžãããããšã§ãã
- ãªããã£ãã¹ãã£ãã¯åæå®è¡å¶åŸ¡: ãªããã£ãã¹ãã£ãã¯åæå®è¡å¶åŸ¡ (OCC) ã¡ãœããã䜿çšãããšãç«¶åããŸãã§ãããšæ³å®ããŠãããã¯ãååŸããã«ãã©ã³ã¶ã¯ã·ã§ã³ãç¶è¡ã§ããŸãã代ããã«ãã·ã¹ãã ã¯ã³ãããæ®µéã§ç«¶åããã§ãã¯ããç«¶åãæ€åºãããå Žåã¯ãç«¶åãããã©ã³ã¶ã¯ã·ã§ã³ã® 1 ã€ãäžæ¢ããŠåéããããšã§ç«¶åã解決ããŸãã OCC ã¯ãããã¯ã®äœ¿çšãåé¿ããããšã§ãç¹ã«ç«¶åããŸããªç¶æ³ã§ã·ã¹ãã ã®ããã©ãŒãã³ã¹ãåäžãããã®ã«åœ¹ç«ã¡ãŸãã
- ãã«ãããŒãžã§ã³åæå®è¡å¶åŸ¡: ãã«ãããŒãžã§ã³åæå®è¡å¶åŸ¡ (MVCC) æè¡ã¯ãããŒã¿é ç®ã®è€æ°ã®ããŒãžã§ã³ãç¶æãããã©ã³ã¶ã¯ã·ã§ã³ãåãããŒã¿ã®ç°ãªãããŒãžã§ã³ã«å¯ŸããŠèªã¿æžãã§ããããã«ããŸãããã®ã¢ãããŒãã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãäºãã®äœæ¥ã«å¹²æžããªãããã«ããããšã§ç«¶åãåé¿ããŸãã MVCC ã¯ãåæå®è¡æ§ã®é«ãç°å¢ã«ç¹ã«é©ããŠãããããã¯ã®å¿ èŠæ§ãæå°éã«æããããããå¹ççãªããã¯ç®¡çæŠç¥ãå®çŸãããã§ããŸãã
ç¹å®ã®ããŒã¿ããŒã¹ ã·ã¹ãã ã«é©åãªåæå®è¡å¶åŸ¡ã¡ã«ããºã ã®éžæã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ§è³ªãäºæ³ãããã¯ãŒã¯ããŒããæãŸããããã©ãŒãã³ã¹ç¹æ§ãªã©ã®ããŸããŸãªèŠå ã«ãã£ãŠç°ãªããŸããé©åãªæ¹æ³ã§ã¯ãããŒã¿ã®äžè²«æ§ãšæ£ç¢ºæ§ã®èŠä»¶ãšãåæã¯ãŒã¯ããŒãäžã§é«ãã·ã¹ãã ããã©ãŒãã³ã¹ãšå¿çæ§ãç¶æããå¿ èŠæ§ã®ãã©ã³ã¹ãåãå¿ èŠããããŸãã
AppMasterno-codeãã©ãããã©ãŒã ã§ã¯ãã¹ã±ãŒã©ãã«ã§é«æ§èœãªããŒã¿ããŒã¹ ã·ã¹ãã ãæ§ç¯ããããã®éèŠãªåŽé¢ãšããŠã广çãªåæå®è¡å¶åŸ¡ã®éèŠæ§ãçè§£ããŠããŸããåœç€Ÿã®ãã©ãããã©ãŒã ã䜿çšãããšãäŒæ¥ã¯æå 端ã®åæå®è¡å¶åŸ¡æè¡ãå©çšããŠãæé©ãªããã©ãŒãã³ã¹ãããŒã¿ã®äžè²«æ§ãæŽåæ§ã確ä¿ããå ç¢ã§ã¹ã±ãŒã©ãã«ãªããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ãè¿ éã«äœæã§ããŸãããã©ãããã©ãŒã ã®åŒ·åãªããžã¥ã¢ã« ããŒã«ãšåªããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ãããã§ãéçºè ã¯ããŒã¿ããŒã¹ ãªãœãŒã¹ãžã®åæã¢ã¯ã»ã¹ã®ç®¡çã«äŒŽãè€éããæ°ã«ããããšãªããå¿ èŠãªããžãã¹ ããžãã¯ã®èšèšãšå®è£ ã«éäžã§ããŸãã
ããã«ãã¢ããªã±ãŒã·ã§ã³ãæåããçæããAppMasterã®ç¬èªã®ã¢ãããŒãã«ãããããŒã¿ããŒã¹ ã¹ããŒããšããžãã¯ãžã®å€æŽã¯ãæè¡çè² åµãè² ãããšãªããçæãããã¢ããªã±ãŒã·ã§ã³ã«ã·ãŒã ã¬ã¹ã«åæ ãããŸããããã«ãããé¡§å®¢ã¯æå°éã®åŽåã§æ°èŠãŸãã¯æŽæ°ãããåæå®è¡å¶åŸ¡ã¡ã«ããºã ãå®è£ ããã¹ããå±éã§ããããã峿 Œãªåæå®è¡å¶åŸ¡å¯Ÿçãå¿ èŠãšããããŒã¿éçŽåã¢ããªã±ãŒã·ã§ã³ã®éçºã«çæ³çãªãã©ãããã©ãŒã ãšãªããŸãã
èŠçŽãããšãåæå®è¡å¶åŸ¡ã¯ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ ã·ã¹ãã ã®ããã·ã§ã³ ã¯ãªãã£ã«ã«ãªåŽé¢ã§ãããå ±æããŒã¿ããŒã¹ ãªãœãŒã¹ãžã®åæã¢ã¯ã»ã¹ã管çããããšã§ããŒã¿ã®ç°åžžã鲿¢ããããŒã¿ã®äžè²«æ§ãšæ£ç¢ºæ§ãä¿èšŒããããšãç®çãšããŠããŸããé©åãªåæå®è¡å¶åŸ¡æ¹æ³ãæ¡çšããããšã¯ãã¹ã±ãŒã©ãã«ã§é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ããã AppMasterno-codeãã©ãããã©ãŒã ã¯ãããŒã¿ããŒã¹ ã·ã¹ãã ã®å¹æçãªåæå®è¡å¶åŸ¡ã¡ã«ããºã ãèšèšãå®è£ ãç¶æããããã«å¿ èŠãªããŒã«ãšã€ã³ãã©ã¹ãã©ã¯ãã£ãéçºè ã«æäŸããŸãã