Save 37% off PRO during our Black Friday Sale! »

Group Replication and DB State Machine Approach

0d91e4e792fb936633033b38e57f28c8?s=47 tom--bo
April 17, 2020

Group Replication and DB State Machine Approach

Try to understand Database State Machine Approach

0d91e4e792fb936633033b38e57f28c8?s=128

tom--bo

April 17, 2020
Tweet

Transcript

  1. (SPVQ3FQMJDBUJPO
 ͱ
 %BUBCBTF4UBUF.BDIJOF"QQSPBDI !UPN@@CP .Z42-$BTVBM5BMLT0OMJOF HBNNB 7PM

  2. (SPVQ3FQMJDBUJPO
 ͱ
 %BUBCBTF4UBUF.BDIJOF"QQSPBDI !UPN@@CP .Z42-$BTVBM5BMLT0OMJOF HBNNB 7PM

  3. %BUBCBTF4UBUF.BDIJOF"QQSPBDI
 ͷ
 ࿦จΛಡΜͰΈͨ !UPN@@CP .Z42-$BTVBM5BMLT0OMJOF HBNNB 7PM

  4. tom__bo • .Z42-ྺͪΐ͏Ͳ೥ ͓࢓ࣄͱͯ͠  • 0QFSBUJPOͱࣗಈԽγεςϜ։ൃͳͲ • աڈͷ$BTVBM .Z/"ͷൃද

    • $BTVBMWPMUBCMFTJ[FFTUJNBUPS • .Z/"  TZTCFODINZTRMUFTUFS • $BTVBMWPMCJOMPHΛআ͘ • $BTVBMWPMPSDIFTUSBUPSೖ໳ • IUUQTTQFBLFSEFDLDPNUPNCP • .Z42-8FFLMZIUUQTNZTRMXFFLMZIBUFOBCMPHDPN  UXJUUFS!UPN@@CP CMPHJEUPN@@CP
  5. ໨త • (SPVQSFQMJDBUJPOͷ࢓૊ΈΛ஌͔ͬͯΒ࢖͍͍ͨ • յΕํʹͲ͏͍͏Մೳੑ͕͋Δ͔ • յΕͨ৔߹ͳʹΛ෮چ͢Ε͹Α͍͔ • ύϑΥʔϚϯεͱ଱ো֐ੑͷόϥϯεΛͲ͜ͰͲ͏औΔ͔ •

    ϨϓϦέʔγϣϯ͕஗Ԇ͍ͯͯ͠΋1BYPTͷ߹ҙ͕Ͱ͖Δͱ͸ʁ • Ͳ͏΍Β%BUBCBTF4UBUF.BDIJOF"QQSPBDIͱؔ࿈͕ڧ͍༷ࢠ 
  6. Group ReplicationͱDatabase State Machine Approach • .Z42-)JHI"WBJMBCJMJUZ#MPHͳͲʹग़ͯ͘Δ • IUUQTNZTRMIJHIBWBJMBCJMJUZDPNNZTRMHSPVQSFQMJDBUJPOIFMMPXPSME •

    A5IJTJT UPTPNFFYUFOU TJNJMBSUPUIFEBUBCBTFTUBUFNBDIJOFBQQSPBDIUP SFQMJDBUJPO %#4. <>A • 0SBDMFࢿྉ ʮୈճؔ੢%#ษڧձʯͰͷߨԋࢿྉ  • MJOLPGUIFTMJEF • AάϧʔϓɾϨϓϦέʔγϣϯɾϥΠϒϥϦA • A3FQMJDBUFE%BUBCBTF4UBUF.BDIJOF MJOL ͷ࣮૷A • A.Z42-($4͸1BYPTΛϕʔεʹ࣮૷A 
  7. ࿦จʹ͍ͭͯ • 1FEPOF ' (VFSSBPVJ 34DIJQFS "5IF%BUBCBTF4UBUF.BDIJOF "QQSPBDI%JTUSJCVUFEBOE1BSBMMFM%BUBCBTFT r 

     • IUUQTEPJPSH" • IUUQTXXXJOGVTJDIGBDVMUZQFEPOF1BQFS%1%5QEG • "༻ࢴϖʔδ 
  8. ࿦จͷষཱͯ  *OUSPEVDUJPO  3FQMJDBUFE%BUBCBTFNPEFMͷಋೖ  %FGFSSFEVQEBUFSFQMJDBUJPOͷઆ໌  %FGFSSFEVQEBUFΛTUBUFNBDIJOFSFQMJDBUJPOʹಋೖ͢Δํ๏ 

    "CPSU཰ΛݮΒ͢ख๏ SFPSEFSJOH   ධՁͷͨΊͷγϛϡϨʔγϣϯํ๏ɺ݁Ռɺߟ࡯  SFMBUFEXPSLT  $PODMVTJPO ࠓճ͸ষ·Ͱͷ಺༰Λத৺ʹ঺հ 
  9. %BUBCBTF4UBUF.BDIJOF"QQSPBDIͱ͸ • 3FQMJDBUJPOͷҰൠతͳख๏ͱͯ͠ఏҊ͞ΕͨTUBUFNBDIJOFBQQSPBDIΛ
 %BUBCBTFͷSFQMJDBUJPOʹద༻ • %BUBCBTF4UBUF.BDIJOFͰ͸஗Ԇߋ৽ %FGFSSFEVQEBUF ख๏ʹج͍ͮͯ5YΛॲཧ͢Δ • ҧ͍ͱͯ͠͸ैདྷͷBUPNJDDPNNJUNFOUͷΑ͏ͳEJTUSJCVUFE5YΛ࢖Θͳ͍

    • %FGFSSFEVQEBUF͸ଈ࣌ߋ৽ JNNFEJBUFVQEBUF ͳͲͷख๏ͱൺ΂ͯҎԼͷϝϦοτ͕ ༗ΔҰํͰ"CPSU཰͕ߴ͘ͳΔσϝϦοτ͕༗Δ • ύϑΥʔϚϯε͕ྑ͍ • ଱ো֐ੑͷαϙʔτ͕ྑ͍ • σουϩοΫ཰͕௿͍ • %4.BQQSPBDIͰ͸"CPSU཰ͷߴ͞ΛSFPSEFSJOHDFSUJGJDBUJPOUFTUʹΑͬͯ࡟ݮ͍ͯ͠Δ 
  10. 4ZTUFN.PEFMBOE%FGJOJUJPOT • γεςϜ͸ෳ਺ͷTJUFͷू߹ TFUЄPGTJUFT ͔ΒͳΔͱ͢Δ • TJUF.Z42-Ͱ͍͏NZERMEϓϩηε  • TJUF͸NFTTBHFQBTTJOHΛհͯ͠΍ΓऔΓ͠ɺڞ༗ϝϞϦ΍ڞ௨ͷ࣌ܭ

    DPNNPODMPDL Λ࣋ͨͳ͍ • TJUF͸ނোʹΑͬͯಥવյΕΔ΋ͷͱ͠ɺ#Z[BOUJOFނোΛ૝ఆ͠ͳ͍ • 5Yͷ࣮ߦ͸POFDPQZTFSJBMJ[BCJMJUZ 43 Λ΋ͬͯਖ਼͍͠ͱ͢Δ 
  11. 4UBUF.BDIJOF"QQSPBDI • தԝूݖͰͳ͍ OPODFOUSBMJ[FE ͳSFQMJDBUJPODPPSEJOBUJPOςΫχοΫ • ,FZDPODFQU͸શͯͷSFQMJDB͕ಉ͡ΫΤϦ࣮ߦͷϦΫΤετΛड͚Δ͜ͱ • ͜͜ͰϦΫΤετ͕ཁٻ͢Δ΋ͷ͸ •

     "HSFFNFOU ϝοηʔδ͕ಧ͍͔ͨͷಉҙ  •  0SEFS ࣮ߦॱং 
 • ϦΫΤετʹҙຯ৘ใ ͲͷσʔλΛߋ৽͢Δ͔ͳͲ ͕෇Ճ͞Ε͍ͯΔ͜ͱΛલఏͱ ͢Δ .Z42-Ͱ͍͏1,&ͱߟ͑ͯྑͦ͞͏  • ͜ͷ৘ใ͕͋Δ͜ͱͰɺґଘؔ܎ͷͳ͍σʔλʹର͢ΔϦΫΤετͰ͋Ε͹
  ͷPSEFSͷ੍໿ΛकΔඞཁ͕ͳ͘ͳΔ 
  12. "UPNJD#SPBEDBTU • "UPNJD#SPBEDBTUʹΑͬͯɺෳ਺ͷTJUFʹશͯͷTJUF͕ϝοηʔδͷ
 ू߹ m ͱͦͷॱংʹಉҙͨ͜͠ͱΛอূ͢Δ͜ͱ͕Ͱ͖Δ • "UPNJD#SPBEDBTU͸broadcast(m)ͱdeliver(m)͔ΒͳΓɺ
 ҎԼͷੑ࣭Λอূ͢Δ 

    "HSFFNFOU͋ΔͭͷTJUF͕ϝοηʔδmΛड͚औͬͨΒɺ
 શͯͷTJUFT͕ϝοηʔδmΛड͚औΔ͜ͱ  0SEFSશͯͷTJUFT͕ಉ͡ॱংͰmΛड͚औΔ  5FSNJOBUJPO͋ΔͭͷTJUF͕mΛ഑৴ͯ͠ɺͦΕ͕ࣦഊ͠ͳ͚Ε͹ɺ
 ͢΂ͯͷTJUF͕͍ͣΕmΛड͚औΔ 
  13. %FGFSSFE6QEBUF3FQMJDBUJPO • ·ͣϩʔΧϧͰ5YΛ࣮ߦͯͦ͠ͷؒଞͷTJUFͱ͸૬ޓ࡞༻͸͠ͳ͍ • ϩʔΧϧͰTUSJDUUXPQIBTFMPDLTDIFEVMFSʹΑ࣮ͬͯߦ • DMJFOU͕DPNNJUΛཁٻͨ͠ΒTYͷߋ৽ SFEPMPHͳͲ ΛଞTJUFʹ఻ൖͤ͞Δ •

    DFSUJGJFEͰ͖ͨΒDPNNJU 
  14. 5FSNJOBUJPOQSPUPDPM • %FGFSSFE6QEBUFͷ͓͍ͯɺDPNNJUཁٻ͔Β࢝·ΔϓϩηεΛ
 TFSNJOBUJPOQSPUPDPMͱ͍͏ • Termination protocol͸ҎԼͷ͔ͭΒͳΔ • ଞͷTJUFT΁ͷ5Yͷ఻ൖ •

    ͦͷݕূ DFSUJGZJOH  • $FSUJGJDBUJPOUFTU͸POFDPQZTFSJBMJ[BCJMJUZΛอূ͢Δ͜ͱ͕໨త • 5Yͷ࣮ߦʹΑͬͯ੔߹ੑ่͕ΕΔ৔߹ʹ͸"CPSU 
  15. 5SBOTBDUJPO4UBUFT • 5Yͷ࣮ߦ͸ҎԼͷΑ͏ͳ4UBUFΛ௨Δ • ϩʔΧϧͰ࣮ߦத͸Executing • DMJFOU͔ΒDPNNJUΛड͚ͨΒCommittingʹભҠ • ଞͷTJUFͱ߹ҙͰ͖ͨΒCommitted͔ɺAbortedʹભҠ 

  16. %FGFSSFEVQEBUFSFQMJDBUJPO"MHPSJUIN ͋Δ$MJFOUCk ͕ͭͷTJUFSi ʹ5Yta Λ࣮ߦ͍ͯ͠ΔྫͰઆ໌͢Δ  Ck ͕Si ʹta ΛϦΫΤετ͢ΔͱSi

    ͸Executing4UBUFʹೖΓɺTUSJDUQIBTFMPDLJOHͰ࣮ߦ͢Δ  Ck ͕ta ͷDPNNJUΛཁٻͨ࣌͠SFBE5YͳΒ͙͢ʹDPNNJU͠ɺͦ͏Ͱͳ͚Ε͹CommittingTUBUFʹਐΉɺ
 ͦͯ͠Si ͸UFSNJOBUJPOQSPUPDPMΛ࣮ߦ͠ɺଞͷEBUBCBTFTJUFʹ5YͷSFBEXSJUFTFUΛૹΔ  ঃʑʹɺଞͷTJUFSj Ͱta ͕ݕূ͞ΕΔͱ͖ʹɺDFSUJGJDBUJPOUFTUͰ͸ta ͱDPOGMJDU͢Δ%BUBΛѻ͏5Ytb ͳͲΛߟྀ͢Δ
 (શͯͷTJUF͕ta ʹؔͯ͠ಉ͡GJOBMTUBUF Committed͔Aborted ʹͨͲΓண͘ʹ͸ɺAUPNJD$PNNJUQSPUPDPM΍
 ఏҊ͢Δ4UBUF.BDIJOF"QQSPBDIͷΑ͏ͳTJUFؒͷDPPSEJOBUJPO͕ඞཁ)  ΋͠DFSUJGJDBUJPO͕੒ޭͨ͠Βɺ͢΂ͯͷVQEBUFΛద༻ͯ͠ɺta ͱಉ͡σʔλʹରͯ͠ϩοΫΛऔ͍ͬͯΔSj ͷtb ΛBCPSU͢Δ  Ck ͸Si ͕ta ΛDPNNJU͢Δ͔BCPSU͢Δ͔ܾఆͰ͖ͨ࣌఺Ͱ݁ՌΛड͚औΔ  4UBUFPG%BUBCBTF4JUF
  17. 5SBOTBDUJPO%FQFOEFODJFT • 5Yta ͱtb ʹରͯ͠ɺztb ͕ta ͱconflict͢Δzͱ͸ɺ • ྆ऀ͕ผʑͷ5Y •

    ಉ͡σʔλΛૢ࡞͢Δ • ͲͪΒ͔͕XSJUFૢ࡞Ͱtb ͕ta ʹઌΜ͡ͳ͍ tb EPFTOPUQSFDFEFta  • ta ͱtb ʹ͓͚ΔQSFDFEFSFMBUJPO ॱংؔ܎ ͸ 
  18. 5SBOTBDUJPO%FQFOEFODJFT • ͜͜Ͱ • site(t) 5YU͕࣮ߦ͞ΕͨTJUF • Committing(t) : 5YU͕DPNNJUཁٻΛड͚ͨλΠϛϯά

    • Commit(t) Sj :5YUΛSj ͕DPNNJUͨ͠λΠϛϯά • F͸ΠϕϯτCommitting(t)ͱCommit(t)ʹର͢ΔMPDBM UPUBM PSEFSͷؔ܎Λද͢ • %FGFSSFEVQEBUFSFQMJDBUJPO͸࣮ߦதʹ5YΛTZOD͢ΔͨΊͷEJTUSJCVUFEMPDLJOH QSPUPDPMΛશ͘ඞཁͱ͠ͳ͍(?)ͷͰɺEJTUSJCVUFEEFBEMPDLΛݮΒͤΔɻ • ҰํͰACPSU཰͸্͕ΔͷͰɺ࣍ͰରࡦΛࣔ͢ 
  19. 5IF%BUBCBTF4UBUF.BDIJOF"QQSPBDI • ͜͜·ͰͰઆ໌ͨ͠%FGFSSFE6QEBUFͷςΫχοΫ͸ҎԼͷΑ͏ʹͯ͠
 SUBUFNBDIJOFͱߟ͑Δ͜ͱ͕Ͱ͖Δ • ͋ΔDMJFOU͕5YͷDPNNJUΛཁٻͨ͠Βɺͦͷ5Y͸શͯͷTJUFʹBUPNJDʹ
 CSPBEDBTU͢Δ • TJUF͸SUBUFNBDIJOFͷΑ͏ʹৼΔ෣͍ɺͦΕʹඞཁͳಉҙͱॱংอূ͸
 "UPNJDCSPBEDBTUʹΑͬͯߦ͏

    • ౸ୡͨ͠TxΛॱ൪ʹద༻͢Δ͜ͱͰͦΕͧΕͷsite͸ಉ͡stateʹ౸ୡ͢Δ͜ͱ͕
 อূ͞ΕΔ • State Machineͱͯ͠ͷΑΓৄࡉͳTermination Protocolʹ͍ͭͯݟ͍ͯ͘ 
  20. %#.PEVMF • $FSUJGJFS͸"UPNJD#SPBEDBTUNPEVMF͔Βಧ͘5YΛ
 ड͚औͬͯɺͦΕͷDFSUJGJDBUJPOUFTUΛ࣮ߦ͢Δ • 5YͷDFSUJGJDBUJPO͸ • $FSUJGJFS͸%BUB.BOBHFSʹDPNNJUࡁΈͷ
 σʔλΛ֬ೝ •

    ݕূʹ੒ޭ͢Ε͹-PDL.BOBHFSʹҠߦ • ߋ৽ͷద༻ • $FSUJGJFS͕DPOGMJDU͢Δߋ৽ͷదԠॱংʹ͍ͭͯ
 อূ͢ΔͷͰɺશͯTJUFͰ࠷ऴతʹಉ͡TUBUFʹ
 ͳΔ͜ͱ͕อূ͞ΕΔɻ 
  21. 5FSNJOBUJPO"MHPSJUIN • 5Yta ͕TJUFSi Ͱ࣮ߦ͞ΕΔͱ͖ɺͦΕͧΕͷTJUFSj Ͱ͸ta ͕ಧ͍ͨޙʹ Certification TestͱCommitmentͷ2ͭΛߦ͏ •

    ͜ͷͱ͖5Yta ͸84 8SJUF4FU 34 3FBE4FU Λ۠ผ͠ɺର৅ͱ͢ΔϨίʔ υͷJEFOUJGJFSΛ৘ใͱ͍ͯ࣋ͬͯ͠Δ΋ͷͱ͢Δ
  ਤ
  22. $FSUJGJDBUJPO5FTU • Sj Ͱ͢ͰʹDPNNJUͨ͠5Ytb ͕ta ͱDPOGMJDU͠ͳ͚Ε͹ɺta ΛCommittingTUBUF ͔ΒCommittedTUBUFʹҠߦ͢Δ • DPOGMJDUͷఆٛ(ຊεϥΠυp17)Λ֬ೝ

     • ͜ͷͱ͖DPOGMJDUͷ੍໿͸ऑΊΒΕɺXSJUFSFBEDPOGMJDU͚ͩΛߟྀ͢Ε͹ ྑ͍ • 38DPOGMJDU: ta ͷDFSUJGJDBUJPOUFTUͰߟ͑Δඞཁ͕ͳ͍ • 88DPOGMJDU: ͦͷ࣌ࠁ·Ͱʹ࣮ߦ͞Εͨߋ৽·Ͱ࣮ߦͨ͠ޙʹta Λ࣮ߦ͢Δ͜ͱΛอ ূ͢Δ͜ͱͰɺղܾͰ͖Δʢʁʣ • ͜ͷ৚݅Λຬͨ͞ͳ͍৔߹͸BCPSU͢Δ
 
  23. $PNNJUNFOU • ta ͕BCPSU͞Εͳ͚Ε͹XSJUFMPDLΛͱͬͯద༻͢Δ
 ͜ͷͱ͖ɺҎԼͷͭͷ͜ͱʹ஫ҙ͢Δඞཁ͕͋Δ • B Sj Ͱ࣮ߦ͍ͯ͠Δtb ͱSFBEPSXSJUFMPDL͕͔ͿͬͨΒ


    tb ͸BCPSUͯͦ͠ͷMPDL͸SFMFBTF͢Δ • C Sj Ͱ࣮ߦͯ͠DPNNJUཁٻΛड͚͕ͨɺ5FSNJOBUJPOQSPUPDPMͷ్தʹ͋Δ5Y͕
 ta ͱಉ͡σʔλʹϩοΫΛऔ͍ͬͯΔ৔߹͸ɺXSJUFMPDLΛཁٻ͢Δඞཁ΋ɺ
 ߋ৽Λ࣮ߦ͢Δඞཁ΋ͳ͍
 ͜ͷ͋ͱtb ͕DFSUJGJDBUJPOUFTUʹམͪͨΓͨ͠Βɺtb ͷͳ͍ঢ়ଶʹ෮ݩ͢Ε͹Α͍ • D DFSUJGJDBUJPOUFTUʹ௨ͬͨtb ͕·ͩMPDLΛ։์͍ͯ͠ͳ͍৔߹͸୯७ʹ଴ͭ 
  24. $PNNJUNFOU • ͜͜Ͱॏཁͳ఺͸TJUFؒͷJOUFSBDUJPO͸"UPNJD#SPBEDBTU͚ͩͳ͜ͱ • "UPNJD#SPBEDBTUʹΑͬͯશͯͷTJUF͕ta ͱͦΕҎલͷ5Yͷ࣮ߦʹ͍ͭͯอূ͞Ε͍ͯΔ
 • ͦΕͧΕͷTJUFͰ͜ͷΑ͏ͳηοτΛߏங͢ΔͨΊʹ͸ҎԼͷΑ͏ʹ͢Δ • ta

    ͱtb ͕ಉ͡TJUFͰ࣮ߦ͞ΕͨͳΒMPDBMͷUJNFTUBNQʹैͬͯMPDBMͰ࣮ߦ͢Δ • ta ͱtb ͕ผͷTJUFͰ࣮ߦ͞ΕͨͳΒɺ͢΂ͯͷ5YU͸DPNNJUཁٻΛड͚ͯCommittingʹ ͳͬͨMPDBM࣌ࠁͷCommitting(t)ͷ஋ΛBUPNJDCSPBEDBTUͰ͢΂ͯͷTJUFͰ͜Εͱ5Y͕ಉ ͡΋ͷͰ͋Δ͜ͱΛอূ͢Δ(ཁ֬ೝ  • Sj Ͱta ΛDFSUJGJDBUJPOUFTU͢Δͱ͖͸Sj ͷMPDBMͰCommitting(ta)ΑΓ΋େ͖͍஋Λ࣋ͭ $PNNJUUFE5Yͱ͚ͩൺֱ͢Ε͹ྑ͍͜ͱʹͳΔ 
  25. 3FPSEFSJOH$FSUJGJDBUJPO5FTU • ta ͕ಧ͍ͨॱ൪ͷҐஔͱ͸ผͷҐஔ΁SFPSEFSJOH͢Δ͜ͱΛՄೳʹͯ͠ɺ
 ta ΛDPNNJU͢ΔՄೳੑΛ্͛Δ • 3FPSEFS-JTU • DFSUJGJDBUJPOUFTU͸CommittedͰߋ৽͕ద༻͞Εͨ΋ͷͱɺCommitted͕ͩద༻͞Ε͍ͯ

    ͳ͍3FPSEFS-JTUʹ͋Δ΋ͷΛ۠ผ͢Δ • -JTUͷ௕͞͸3FPSEFS'BDUPSͱͯ͠ఆ਺ͰܾΊΔ • -JTU͕͍ͬͺ͍ʹͳͬͨΒࠨ୺ͷ΋ͷΛద༻͢Δ 
  26. 5IF5FSNJOBUJPO1SPUPDPMCBTFEPO3FPSEFSJOH • %BUBCBTFTJUFSi Λ࣌ࠁНʹ͓͚ΔTJUFSi Ͱద༻͞Εͨ5Yͱ3FPSEFS-JTUʹ ؚ·ΕΔ5Yͷฒͼͱߟ͑Δ
 database Si = t(0)

    o t(1) o … o t(last Si(τ))
 • 5YUͷEBUBCBTFSi ͷதͷҐஔΛpos(t)ͱͯ࣍͠ͷΑ͏ʹ5FSNJOBUJPO 1SPUPDPM $FSUJGJDBUJPOUFTU$PNNJUNFOU Λ֦ு͢Δ 
  27. $FSUJGJDBUJPOUFTU SFPSEFSJOH • TJUFSj ͸ta Λ3FPSEFS-JTUʹૠೖͰ͖Δͱ͖ʹDPNNJU͢Δ
 ta ͕ૠೖͰ͖Δ৔ॴp ͸ҎԼͷͭͷ৚݅Λຬͨ͢৔ॴͱ͢Δ •

    B 3FPSEFS-JTUʹ͋Δશͯͷ5Ytb ʹରͯ͠ɺpos(tb) < p
 ͜Ε͸tb ͕ta ʹઌΜ͡Δ tb QSFDFEFTta ΋͘͠͸ɺta ͸tb ͕ॻ͍ͨσʔλΛಡ·ͳ͍৔߹ • C 3FPSEFS-JTUʹ͋Δશͯͷ5Ytb ʹରͯ͠ɺpos(tb) >= p
 ͜Ε͸ C tb ͸ta ʹઌΜ͡ͳ͍ɺ΋͘͠͸ta ͸tb ͕ॻ͍ͨσʔλΛಡ·ͳ͍ɺ
 ׌ͭ C ta ͸tb ͕ಡΉσʔλΛߋ৽͠ͳ͍ 
  28. $FSUJGJDBUJPOUFTU SFPSEFSJOH • database Si = t(0) o t(1) o

    … o t(last Si(τ)) • ࣌ࠁНʹ͓͚ΔTJUFSi Ͱద༻͞Εͨ5Yͱ3FPSEFS-JTUʹؚ·ΕΔ5Yͷฒͼ • 5YUͷEBUBCBTFSi ͷதͷҐஔΛpos(t)ͱͯ͠5FSNJOBUJPO1SPUPDPMΛ֦ு 
  29. $PNNJUNFOU SFPSEFSJOH • ΋͠ta Λ3FPSEFS-JTUʹૠೖͯ͠ɺ-JTUͷ௕͕͞3FPSEFS'BDUPSΛ௒͑ͨ
 ৔߹͸Ұ൪ࠨͷ5YΛద༻͢Δ 

  30. ষҎ߱ • ධՁ࣮ݧͷϞσϧɾઃఆͱ݁Ռɾߟ࡯͕ଓ͘ • ͍ΘΏΔϚϧνϚελʔͳΫϥελ d୆ ʹର͢ΔϕϯνϚʔΫ • "UPNJD#SPBEDBTUͷΫϥεΛDMBTTL DMBTTLO

    DMBTTʿʹ෼ྨ͠ɺͦΕΒͷੑೳධՁ • αʔό୆਺Oʹରͯ͠3FPSEFSGBDUPSΛมԽͤͨ͞৔߹ͷੑೳධՁ
 ࢀߟ3FPSEFSGBDUPSO͕Ұ൪ྑ͔ͬͨ  • etc… 
  31. ·ͱΊ • State Machine approach, Atomic broadcast, Deffered update replicationΛ


    Databaseʹద༻ͨ͠”Database State Machine Approach”ͷ֓ཁ͕
 (ূ໌ͳͲΛআ͖ɺͳΜͱͳ͘) Θ͔ͬͨ
 • Multi Master؀ڥͰ੔߹ੑΛऔΓͭͭτϥϯβΫγϣϯΛॲཧ͢ΔͨΊͷ
 Certification test, Commitmentͷॲཧ͕(ͳΜͱͳ͘)Θ͔ͬͨ 
  32. ݱঢ়ͷࢲͷࢀߟจݙ • 5)&5)&03:0'%"5"#"4&$0/$633&/$:$0/530- • TRANSACTIONAL INFORMATION SYSTEMS • DISTRIBUTED COMPUTING

    
  33. (SPVQSFQMJDBUJPOʹཱͪฦͬͯ • "UPNJDCSPBEDBTUͷ෦෼ΛQBYPTͰอূ͍ͯͦ͠͏ • SFQMJDBUJPO஗Ԇ͕ൃੜ͍ͯͯ͠΋1BYPTͷίϯηϯαεΛऔΕΔཧ༝͸
 ͳΜͱͳ͘Θ͔ͬͨؾ͕͢Δ(reorder list΁ͷૠೖ͕Ͱ͖Ε͹ྑ͍) • ٙ໰ •

    Atomic broad castͷDMBTTL DMBTTLODMBTTʿͬͯͳʹʁ • 5Yதͷ4&-&$5݁Ռͷ1,&΋ϨϓϦέʔτ͢Δʁ XSJUFͷ1,&Ͱ΋े෼ 
  34. None