Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Group Replication and DB State Machine Approach

tom--bo
April 17, 2020

Group Replication and DB State Machine Approach

Try to understand Database State Machine Approach

tom--bo

April 17, 2020
Tweet

More Decks by tom--bo

Other Decks in Programming

Transcript

  1. (SPVQ3FQMJDBUJPO

    ͱ

    %BUBCBTF4UBUF.BDIJOF"QQSPBDI
    [email protected]@CP .Z42-$BTVBM5BMLT0OMJOF HBNNB
    7PM

    View Slide

  2. (SPVQ3FQMJDBUJPO

    ͱ

    %BUBCBTF4UBUF.BDIJOF"QQSPBDI
    [email protected]@CP .Z42-$BTVBM5BMLT0OMJOF HBNNB
    7PM

    View Slide

  3. %BUBCBTF4UBUF.BDIJOF"QQSPBDI

    ͷ

    ࿦จΛಡΜͰΈͨ
    [email protected]@CP .Z42-$BTVBM5BMLT0OMJOF HBNNB
    7PM

    View Slide

  4. tom__bo
    • .Z42-ྺͪΐ͏Ͳ೥ ͓࢓ࣄͱͯ͠

    • 0QFSBUJPOͱࣗಈԽγεςϜ։ൃͳͲ
    • աڈͷ$BTVBM .Z/"ͷൃද
    • $BTVBMWPMUBCMFTJ[FFTUJNBUPS
    • .Z/"
    TZTCFODINZTRMUFTUFS
    • $BTVBMWPMCJOMPHΛআ͘
    • $BTVBMWPMPSDIFTUSBUPSೖ໳
    • IUUQTTQFBLFSEFDLDPNUPNCP
    • .Z42-8FFLMZIUUQTNZTRMXFFLMZIBUFOBCMPHDPN

    [email protected]@CP
    [email protected]@CP

    View Slide

  5. ໨త
    • (SPVQSFQMJDBUJPOͷ࢓૊ΈΛ஌͔ͬͯΒ࢖͍͍ͨ
    • յΕํʹͲ͏͍͏Մೳੑ͕͋Δ͔
    • յΕͨ৔߹ͳʹΛ෮چ͢Ε͹Α͍͔
    • ύϑΥʔϚϯεͱ଱ো֐ੑͷόϥϯεΛͲ͜ͰͲ͏औΔ͔
    • ϨϓϦέʔγϣϯ͕஗Ԇ͍ͯͯ͠΋1BYPTͷ߹ҙ͕Ͱ͖Δͱ͸ʁ
    • Ͳ͏΍Β%BUBCBTF4UBUF.BDIJOF"QQSPBDIͱؔ࿈͕ڧ͍༷ࢠ

    View Slide

  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

    View Slide

  7. ࿦จʹ͍ͭͯ
    • 1FEPOF ' (VFSSBPVJ 34DIJQFS "5IF%BUBCBTF4UBUF.BDIJOF
    "QQSPBDI%JTUSJCVUFEBOE1BSBMMFM%BUBCBTFT r

    • IUUQTEPJPSH"
    • IUUQTXXXJOGVTJDIGBDVMUZQFEPOF1BQFS%1%5QEG
    • "༻ࢴϖʔδ


    View Slide

  8. ࿦จͷষཱͯ
    *OUSPEVDUJPO
    3FQMJDBUFE%BUBCBTFNPEFMͷಋೖ
    %FGFSSFEVQEBUFSFQMJDBUJPOͷઆ໌
    %FGFSSFEVQEBUFΛTUBUFNBDIJOFSFQMJDBUJPOʹಋೖ͢Δํ๏
    "CPSU཰ΛݮΒ͢ख๏ SFPSEFSJOH

    ධՁͷͨΊͷγϛϡϨʔγϣϯํ๏ɺ݁Ռɺߟ࡯
    SFMBUFEXPSLT
    $PODMVTJPO
    ࠓճ͸ষ·Ͱͷ಺༰Λத৺ʹ঺հ

    View Slide

  9. %BUBCBTF4UBUF.BDIJOF"QQSPBDIͱ͸
    • 3FQMJDBUJPOͷҰൠతͳख๏ͱͯ͠ఏҊ͞ΕͨTUBUFNBDIJOFBQQSPBDIΛ

    %BUBCBTFͷSFQMJDBUJPOʹద༻
    • %BUBCBTF4UBUF.BDIJOFͰ͸஗Ԇߋ৽ %FGFSSFEVQEBUF
    ख๏ʹج͍ͮͯ5YΛॲཧ͢Δ
    • ҧ͍ͱͯ͠͸ैདྷͷBUPNJDDPNNJUNFOUͷΑ͏ͳEJTUSJCVUFE5YΛ࢖Θͳ͍
    • %FGFSSFEVQEBUF͸ଈ࣌ߋ৽ JNNFEJBUFVQEBUF
    ͳͲͷख๏ͱൺ΂ͯҎԼͷϝϦοτ͕
    ༗ΔҰํͰ"CPSU཰͕ߴ͘ͳΔσϝϦοτ͕༗Δ
    • ύϑΥʔϚϯε͕ྑ͍
    • ଱ো֐ੑͷαϙʔτ͕ྑ͍
    • σουϩοΫ཰͕௿͍
    • %4.BQQSPBDIͰ͸"CPSU཰ͷߴ͞ΛSFPSEFSJOHDFSUJGJDBUJPOUFTUʹΑͬͯ࡟ݮ͍ͯ͠Δ

    View Slide

  10. 4ZTUFN.PEFMBOE%FGJOJUJPOT
    • γεςϜ͸ෳ਺ͷTJUFͷू߹ TFUЄPGTJUFT
    ͔ΒͳΔͱ͢Δ
    • TJUF.Z42-Ͱ͍͏NZERMEϓϩηε

    • TJUF͸NFTTBHFQBTTJOHΛհͯ͠΍ΓऔΓ͠ɺڞ༗ϝϞϦ΍ڞ௨ͷ࣌ܭ
    DPNNPODMPDL
    Λ࣋ͨͳ͍
    • TJUF͸ނোʹΑͬͯಥવյΕΔ΋ͷͱ͠ɺ#Z[BOUJOFނোΛ૝ఆ͠ͳ͍
    • 5Yͷ࣮ߦ͸POFDPQZTFSJBMJ[BCJMJUZ 43
    Λ΋ͬͯਖ਼͍͠ͱ͢Δ

    View Slide

  11. 4UBUF.BDIJOF"QQSPBDI
    • தԝूݖͰͳ͍ OPODFOUSBMJ[FE
    ͳSFQMJDBUJPODPPSEJOBUJPOςΫχοΫ
    • ,FZDPODFQU͸શͯͷSFQMJDB͕ಉ͡ΫΤϦ࣮ߦͷϦΫΤετΛड͚Δ͜ͱ
    • ͜͜ͰϦΫΤετ͕ཁٻ͢Δ΋ͷ͸

    "HSFFNFOU ϝοηʔδ͕ಧ͍͔ͨͷಉҙ


    0SEFS ࣮ߦॱং

    • ϦΫΤετʹҙຯ৘ใ ͲͷσʔλΛߋ৽͢Δ͔ͳͲ
    ͕෇Ճ͞Ε͍ͯΔ͜ͱΛલఏͱ
    ͢Δ .Z42-Ͱ͍͏1,&ͱߟ͑ͯྑͦ͞͏

    • ͜ͷ৘ใ͕͋Δ͜ͱͰɺґଘؔ܎ͷͳ͍σʔλʹର͢ΔϦΫΤετͰ͋Ε͹


    ͷPSEFSͷ੍໿ΛकΔඞཁ͕ͳ͘ͳΔ

    View Slide

  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Λड͚औΔ

    View Slide

  13. %FGFSSFE6QEBUF3FQMJDBUJPO
    • ·ͣϩʔΧϧͰ5YΛ࣮ߦͯͦ͠ͷؒଞͷTJUFͱ͸૬ޓ࡞༻͸͠ͳ͍
    • ϩʔΧϧͰTUSJDUUXPQIBTFMPDLTDIFEVMFSʹΑ࣮ͬͯߦ
    • DMJFOU͕DPNNJUΛཁٻͨ͠ΒTYͷߋ৽ SFEPMPHͳͲ
    ΛଞTJUFʹ఻ൖͤ͞Δ
    • DFSUJGJFEͰ͖ͨΒDPNNJU

    View Slide

  14. 5FSNJOBUJPOQSPUPDPM
    • %FGFSSFE6QEBUFͷ͓͍ͯɺDPNNJUཁٻ͔Β࢝·ΔϓϩηεΛ

    TFSNJOBUJPOQSPUPDPMͱ͍͏
    • Termination protocol͸ҎԼͷ͔ͭΒͳΔ
    • ଞͷTJUFT΁ͷ5Yͷ఻ൖ
    • ͦͷݕূ DFSUJGZJOH

    • $FSUJGJDBUJPOUFTU͸POFDPQZTFSJBMJ[BCJMJUZΛอূ͢Δ͜ͱ͕໨త
    • 5Yͷ࣮ߦʹΑͬͯ੔߹ੑ่͕ΕΔ৔߹ʹ͸"CPSU

    View Slide

  15. 5SBOTBDUJPO4UBUFT
    • 5Yͷ࣮ߦ͸ҎԼͷΑ͏ͳ4UBUFΛ௨Δ
    • ϩʔΧϧͰ࣮ߦத͸Executing
    • DMJFOU͔ΒDPNNJUΛड͚ͨΒCommittingʹભҠ
    • ଞͷTJUFͱ߹ҙͰ͖ͨΒCommitted͔ɺAbortedʹભҠ

    View Slide

  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

    View Slide

  17. 5SBOTBDUJPO%FQFOEFODJFT
    • 5Yta
    ͱtb
    ʹରͯ͠ɺztb
    ͕ta
    ͱconflict͢Δzͱ͸ɺ
    • ྆ऀ͕ผʑͷ5Y
    • ಉ͡σʔλΛૢ࡞͢Δ
    • ͲͪΒ͔͕XSJUFૢ࡞Ͱtb
    ͕ta
    ʹઌΜ͡ͳ͍ tb
    EPFTOPUQSFDFEFta


    • ta
    ͱtb
    ʹ͓͚ΔQSFDFEFSFMBUJPO ॱংؔ܎
    ͸

    View Slide

  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཰͸্͕ΔͷͰɺ࣍ͰରࡦΛࣔ͢

    View Slide

  19. 5IF%BUBCBTF4UBUF.BDIJOF"QQSPBDI
    • ͜͜·ͰͰઆ໌ͨ͠%FGFSSFE6QEBUFͷςΫχοΫ͸ҎԼͷΑ͏ʹͯ͠

    SUBUFNBDIJOFͱߟ͑Δ͜ͱ͕Ͱ͖Δ
    • ͋ΔDMJFOU͕5YͷDPNNJUΛཁٻͨ͠Βɺͦͷ5Y͸શͯͷTJUFʹBUPNJDʹ

    CSPBEDBTU͢Δ
    • TJUF͸SUBUFNBDIJOFͷΑ͏ʹৼΔ෣͍ɺͦΕʹඞཁͳಉҙͱॱংอূ͸

    "UPNJDCSPBEDBTUʹΑͬͯߦ͏
    • ౸ୡͨ͠TxΛॱ൪ʹద༻͢Δ͜ͱͰͦΕͧΕͷsite͸ಉ͡stateʹ౸ୡ͢Δ͜ͱ͕

    อূ͞ΕΔ
    • State Machineͱͯ͠ͷΑΓৄࡉͳTermination Protocolʹ͍ͭͯݟ͍ͯ͘

    View Slide

  20. %#.PEVMF
    • $FSUJGJFS͸"UPNJD#SPBEDBTUNPEVMF͔Βಧ͘5YΛ

    ड͚औͬͯɺͦΕͷDFSUJGJDBUJPOUFTUΛ࣮ߦ͢Δ
    • 5YͷDFSUJGJDBUJPO͸
    • $FSUJGJFS͸%BUB.BOBHFSʹDPNNJUࡁΈͷ

    σʔλΛ֬ೝ
    • ݕূʹ੒ޭ͢Ε͹-PDL.BOBHFSʹҠߦ
    • ߋ৽ͷద༻
    • $FSUJGJFS͕DPOGMJDU͢Δߋ৽ͷదԠॱংʹ͍ͭͯ

    อূ͢ΔͷͰɺશͯTJUFͰ࠷ऴతʹಉ͡TUBUFʹ

    ͳΔ͜ͱ͕อূ͞ΕΔɻ

    View Slide

  21. 5FSNJOBUJPO"MHPSJUIN
    • 5Yta
    ͕TJUFSi
    Ͱ࣮ߦ͞ΕΔͱ͖ɺͦΕͧΕͷTJUFSj
    Ͱ͸ta
    ͕ಧ͍ͨޙʹ
    Certification TestͱCommitmentͷ2ͭΛߦ͏
    • ͜ͷͱ͖5Yta
    ͸84 8SJUF4FU
    34 3FBE4FU
    Λ۠ผ͠ɺର৅ͱ͢ΔϨίʔ
    υͷJEFOUJGJFSΛ৘ใͱ͍ͯ࣋ͬͯ͠Δ΋ͷͱ͢Δ



    View Slide

  22. $FSUJGJDBUJPO5FTU
    • Sj
    Ͱ͢ͰʹDPNNJUͨ͠5Ytb
    ͕ta
    ͱDPOGMJDU͠ͳ͚Ε͹ɺta
    ΛCommittingTUBUF
    ͔ΒCommittedTUBUFʹҠߦ͢Δ
    • DPOGMJDUͷఆٛ(ຊεϥΠυp17)Λ֬ೝ

    • ͜ͷͱ͖DPOGMJDUͷ੍໿͸ऑΊΒΕɺXSJUFSFBEDPOGMJDU͚ͩΛߟྀ͢Ε͹
    ྑ͍
    • 38DPOGMJDU: ta
    ͷDFSUJGJDBUJPOUFTUͰߟ͑Δඞཁ͕ͳ͍
    • 88DPOGMJDU: ͦͷ࣌ࠁ·Ͱʹ࣮ߦ͞Εͨߋ৽·Ͱ࣮ߦͨ͠ޙʹta
    Λ࣮ߦ͢Δ͜ͱΛอ
    ূ͢Δ͜ͱͰɺղܾͰ͖Δʢʁʣ
    • ͜ͷ৚݅Λຬͨ͞ͳ͍৔߹͸BCPSU͢Δ


    View Slide

  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Λ։์͍ͯ͠ͳ͍৔߹͸୯७ʹ଴ͭ

    View Slide

  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ͱ͚ͩൺֱ͢Ε͹ྑ͍͜ͱʹͳΔ

    View Slide

  25. 3FPSEFSJOH$FSUJGJDBUJPO5FTU
    • ta
    ͕ಧ͍ͨॱ൪ͷҐஔͱ͸ผͷҐஔ΁SFPSEFSJOH͢Δ͜ͱΛՄೳʹͯ͠ɺ

    ta
    ΛDPNNJU͢ΔՄೳੑΛ্͛Δ
    • 3FPSEFS-JTU
    • DFSUJGJDBUJPOUFTU͸CommittedͰߋ৽͕ద༻͞Εͨ΋ͷͱɺCommitted͕ͩద༻͞Ε͍ͯ
    ͳ͍3FPSEFS-JTUʹ͋Δ΋ͷΛ۠ผ͢Δ
    • -JTUͷ௕͞͸3FPSEFS'BDUPSͱͯ͠ఆ਺ͰܾΊΔ
    • -JTU͕͍ͬͺ͍ʹͳͬͨΒࠨ୺ͷ΋ͷΛద༻͢Δ

    View Slide

  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
    Λ֦ு͢Δ

    View Slide

  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
    ͕ಡΉσʔλΛߋ৽͠ͳ͍

    View Slide

  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Λ֦ு

    View Slide

  29. $PNNJUNFOU SFPSEFSJOH

    • ΋͠ta
    Λ3FPSEFS-JTUʹૠೖͯ͠ɺ-JTUͷ௕͕͞3FPSEFS'BDUPSΛ௒͑ͨ

    ৔߹͸Ұ൪ࠨͷ5YΛద༻͢Δ

    View Slide

  30. ষҎ߱
    • ධՁ࣮ݧͷϞσϧɾઃఆͱ݁Ռɾߟ࡯͕ଓ͘
    • ͍ΘΏΔϚϧνϚελʔͳΫϥελ d୆
    ʹର͢ΔϕϯνϚʔΫ
    • "UPNJD#SPBEDBTUͷΫϥεΛDMBTTL DMBTTLO DMBTTʿʹ෼ྨ͠ɺͦΕΒͷੑೳධՁ
    • αʔό୆਺Oʹରͯ͠3FPSEFSGBDUPSΛมԽͤͨ͞৔߹ͷੑೳධՁ

    ࢀߟ3FPSEFSGBDUPSO͕Ұ൪ྑ͔ͬͨ

    • etc…

    View Slide

  31. ·ͱΊ
    • State Machine approach, Atomic broadcast, Deffered update replicationΛ

    Databaseʹద༻ͨ͠”Database State Machine Approach”ͷ֓ཁ͕

    (ূ໌ͳͲΛআ͖ɺͳΜͱͳ͘) Θ͔ͬͨ

    • Multi Master؀ڥͰ੔߹ੑΛऔΓͭͭτϥϯβΫγϣϯΛॲཧ͢ΔͨΊͷ

    Certification test, Commitmentͷॲཧ͕(ͳΜͱͳ͘)Θ͔ͬͨ

    View Slide

  32. ݱঢ়ͷࢲͷࢀߟจݙ
    • 5)&5)&03:0'%"5"#"4&$0/$633&/$:$0/530-
    • TRANSACTIONAL INFORMATION SYSTEMS
    • DISTRIBUTED COMPUTING

    View Slide

  33. (SPVQSFQMJDBUJPOʹཱͪฦͬͯ

    • "UPNJDCSPBEDBTUͷ෦෼ΛQBYPTͰอূ͍ͯͦ͠͏
    • SFQMJDBUJPO஗Ԇ͕ൃੜ͍ͯͯ͠΋1BYPTͷίϯηϯαεΛऔΕΔཧ༝͸

    ͳΜͱͳ͘Θ͔ͬͨؾ͕͢Δ(reorder list΁ͷૠೖ͕Ͱ͖Ε͹ྑ͍)
    • ٙ໰
    • Atomic broad castͷDMBTTL DMBTTLODMBTTʿͬͯͳʹʁ
    • 5Yதͷ4&-&$5݁Ռͷ1,&΋ϨϓϦέʔτ͢Δʁ XSJUFͷ1,&Ͱ΋े෼

    View Slide

  34. View Slide