際際滷

際際滷Share a Scribd company logo
Optimistic Offline Lock
               vs
      Pessimistic Offline Lock

               Lubo邸 Kr叩l
               Ondej Machulda

               VUT FEL
               Y36ASS - Architektura SW syst辿m哲
               LS 2011
Offline lock
Probl辿m
   Soub転n箪 p鱈stup k dat哲m
   Zabr叩nit nekonzistenci v datech
      Vz叩jemn辿 pepisov叩n鱈 dat
      営ten鱈 star箪ch dat
   Business transakce pes nkolik syst辿mov箪ch transakc鱈


P鱈klad
   Datab叩ze


Jak na to?
   Optimistic offline lock
     Mo転n箪 konflikt pi commitu
   Pessimistic offline lock
     Zabr叩nit za ka転dou cenu konfliktu
Optimistic offline lock
Optimistic offline lock
Princip
  Fakticky nefunguje jako z叩mek  data nezamyk叩
  Hl鱈d叩, kter叩 data byla zmnna (znevalidov叩na pro ostatn鱈 transakce)
       Pre-commit validation
  Business transakce z鱈sk叩 OOL pouze pokud od doby naten鱈 dat do pokusu o
    jejich zmn nedo邸lo ke zmn tchto dat jinou stranou
  Pokud se transakce pokus鱈 pepsat nevalidn鱈 data  konflikt
  Pokud tato transakce z鱈sk叩 OOL, teprve tedy dojde ke zmn tchto dat v
    datab叩zi

e邸en鱈 koliz鱈
  Ignorov叩n鱈 kolize a peps叩n鱈 dat v nov辿 transakci
  Vye邸en鱈: u転ivatelem, automaticky
  Nee邸it a zalogovat
Pedpoklad
  N鱈zk箪 poet konflikt哲
  Mal叩 ztr叩ta v p鱈pad ne炭sp邸n辿 transakce
Optimistic offline lock  verzovac鱈 implementace
Verzovac鱈 implementace
  Pi z鱈sk叩n鱈 dat se k session ulo転鱈 i aktu叩ln鱈 verze tchto dat
  Pi pokusu o zmnu dat se porovn叩 verze dat ze session s verz鱈 dat v syst辿mu:
      Pokud se verze neli邸鱈, session z鱈sk叩 OOL a je j鱈 umo転nno data zmnit
          Inkrementuje se verze
      Pokud se verze li邸鱈  konflikt

   Nen鱈 vhodn辿 pou転ivat timestamp ani jeho varianty zavisl辿 na syst辿mov辿m ase
     nespolehliv辿
   Vhodnj邸鱈 je pou転鱈vat obyejn箪 integer

   営asto se spolu s aktu叩ln鱈 verz鱈 z叩znamu v syst辿mu ukl叩d叩 i as a autor
    posledn鱈 zmny
Optimistic/Pessimistic Offline Lock
Optimistic offline lock  SQL implementace
SQL implementace
  Pi ten鱈 dat (SELECT) se natou data vetn hodnoty verze
  U ka転d辿ho SQL dotazu zmny (UPDATE, DELETE)
      V podm鱈nce (WHERE) je 鱈slo verze v session z鱈skan叩 pi na鱈t叩n鱈 dat
      Zmna dat z叩rove mn鱈 (SET) i 鱈slo verze

   Tento p鱈stup zeslo転i泥uje SQL dotazy a m哲転e b箪t pomal箪 v z叩vislosti na
    datab叩zov辿m stroji
Optimistic/Pessimistic Offline Lock
Optimistic offline lock  Nekonzistentn鱈 ten鱈
Nekonzistentn鱈 ten鱈 dat
  Kontrola verze dat pi zmn dat neznamen叩, ze v pr哲bhu business transakce
   nem哲転eme na鱈st data zmnn叩 nk箪m jin箪m
  Pokud na za叩tku transakce nev鱈me, jak叩 data budeme / m哲転eme potebovat,
   neexistuje rozumn辿 e邸en鱈
  Je poteba zn叩t, kter叩 data se maj鱈 kontrolovat
     Pi z叩pisu dat se ov鱈, zda i data naten叩 (by泥 nemnn叩 v pr哲bhu
      transakce) odpov鱈daj鱈 svou verz鱈 verzi session
          M哲転e zp哲sobit probl辿my v z叩vislosti na izolaci dat v r叩mci syst辿mov辿
           transakce (datab叩ze), tak転e se budou znovu ten叩 data jevit stejn
     Provede umlou zmnu takov箪chto dat se stejnou hodnotou a s
      inkrementovanou verz鱈
          M哲転e b箪t pomal辿 pi z叩vislosti na velk辿m objemu dat

   Coarse-grained lock umo転uje zamykat skupinu dat jako jedin箪 zamykateln箪
    objekt (Person 1 --- * Address)
Optimistic offline lock  uk叩zka implementace
Optimistic offline lock  uk叩zka soubhu

       U転ivatel 1




                                  U転ivatel 2




                                            Nateme verzi, ta ji転 ale byla
                                        inkrementov叩na soub転nou operac鱈




Ulo転鱈me tak辿 inkrementovan箪
         鱈ta verze


                                          Verze se tedy li邸鱈,
                                         provedeme rollback
Optimistic offline lock  Pou転it鱈
Pou転it鱈
  Kdy転 oek叩v叩me m叩lo konflikt哲
      Konflikt je ztr叩ta  u転ivatel ho mus鱈 asto e邸it
  Jednoduch箪 na implementaci
  Pokud sta鱈, nen鱈 teba ho doplovat o jin辿 z叩mky

Pou転it鱈 v praxi
  Verzovac鱈 syst辿my: SVN, Git,
      Pi konfliktu umo転n鱈 u転ivateli spravit situaci
      Pokud to jde, provede s叩m merge a znovu se pokus鱈 o proveden鱈 commitu
  MediaWiki
  JPA 2.0
  Google App Engine
Pessimistic offline lock
Pessimistic offline lock
Princip
  Zamyk叩 data v哲i urit辿 炭rovni p鱈stupu
      Exclusive Write Lock: Pro z叩pis dat je poteba z鱈skat z叩mek. Nee邸鱈 ten鱈
        ani nehl鱈d叩, jestli nkdo data zmn鱈 tsn pedt鱈m.
      Exclusive Read Lock: Z叩mek je poteba pro naten鱈 dat. Jejich pou転it鱈
        nehraje roli. Dokud je z叩mek aktivn鱈, nikdo jin箪 s daty nem哲転e jakkoliv
        manipulovat.
      Read/Write Lock: Kombinace pedchoz鱈ch. Syst辿m umo転uje z鱈skat bu
        z叩mek na ten鱈 nebo na z叩pis. Je mo転nost existence soub転n箪ch z叩mk哲 na
        ten鱈. Z叩mek na z叩pis tedy nikdy nem哲転e existovat spolu s jin箪m z叩mkem
        (na ten鱈 ani na z叩pis).

e邸en鱈 zam鱈tnut鱈
  Vyk叩n鱈 na pidlen鱈 z叩mku
  Zru邸en鱈 transakce
Pedpoklad
  Vysok箪 poet konflikt哲
  Velk叩 cena za konflikt v pozdj邸鱈 f叩zi business transakce
Optimistic/Pessimistic Offline Lock
Pessimistic offline lock  Lock Manager
Lock manager
  Lock manager spravuje z叩mky a u転ivatele (business transakce).
  Ide叩ln centralizovan箪, jednoduch箪 a jedin箪 (singleton)
  Pokud nem哲転e b箪t centralizovan箪 (distribuovan辿 syst辿my), je lep邸鱈 pou転鱈t
    zamyk叩n鱈 zalo転en辿 na datab叩zi
  Pi poteb spousty roztrou邸en箪ch z叩mk哲 na r哲zn叩 data je vhodn辿 uva転ovat o
    nasazen鱈 Coarse-Grained Lock
Pessimistic offline lock  Deadlock a Timeout
Deadlock
  Prvn鱈 session uzamkne data A a potebuje i z叩mek na data B
  Z叩rove druh叩 session uzamkne data B a potebuje i data A
  Vznikl箪 deadlock nen鱈 efektivn鱈 e邸it na stran session timeoutem
  Nejlep邸鱈 mo転n辿 e邸en鱈 je zru邸it transakci pi prvn鱈m nedostupn辿m z叩mku
     M哲転e naopak v辿zt ke zbyten辿mu ru邸en鱈 transakc鱈

Timeout
   Pokud vypadne klient ani転 by ukonil transakci, tj. uvolnil z叩mky, mohou b箪t
    data blokovan叩 p鱈li邸 dlouho
   嬰e邸en鱈:
      Timeout na stran aplikace
      Timestamp jako atribut z叩mku  po uplynut鱈 urit辿 doby bude z叩mek
        neplatn箪
Pessimistic offline lock  uk叩zka soubhu

    U転ivatel 1


                                   U転ivatel 2




                   Z鱈sk叩me z叩mek




                                                Z叩mek nelze z鱈skat, dr転鱈 jej
                                                   soub転n叩 operace


        Z叩mek uvoln鱈me
Pessimistic offline lock  Pou転it鱈
Pou転it鱈
  Pedpokl叩d叩me vznik konflikt哲 => nutno 鱈dit soub転n辿 operace
  Nechceme zahazovat data v p鱈pad konfliktu v pozdj邸鱈 f叩zi transakce
  Ide叩ln pokud je doba uzamen鱈 kr叩tk叩

Pou転it鱈 v praxi
  JPA 2.0
  Hibernate
Ostatn鱈 vzory a 壊鞄姻稼顎岳鱈
Overly Optimistic Lock
Princip
   Overly optimistic lock nezamyk叩 ani nijak nekontroluje soub転n箪 p鱈stup k dat哲m


Pou転it鱈
  Append-only data
      Logy
  Read-only data
  Jednou転ivatelsk辿 syst辿my
Coarse-grained lock
Princip
   Ucelen叩 skupina souvisej鱈c鱈ch dat
   Pi vy転叩d叩n鱈 z叩mku k njak箪m dat哲m z t辿to skupiny dojde k zamen鱈 cel辿 skupiny
Implicit lock
Princip
   Nkdo hl鱈d叩 p鱈stup k dat哲m a zaji邸泥uje automatick辿 zamyk叩n鱈
   Eliminuje se tak spousta potenci叩ln鱈ch chyb spojen箪ch s run鱈m hl鱈d叩n鱈m z叩mk哲
Optimistic vs Pessimistic offline lock  V箪hody a Nev箪hody

Optimistic Offline Lock           Pessimistic Offline Lock

V箪hody:                           V箪hody:
  Nemus鱈 si udr転ovat spojen鱈 s      Bezkonfliktn鱈
    datab叩z鱈
  Nemus鱈 nic zamykat              Nev箪hody:
  営ten鱈 dat nikoho neomezuje        V箪kon
  Jednodu邸邸鱈 implementace           Nutn辿 spojen鱈 s datab叩z鱈
                                     Obt鱈転n叩 邸k叩lovatelnost
Nev箪hody:
  Hroz鱈 konflikt
Optimistic vs Pessimistic offline lock - Shrnut鱈
Jakou implementaci?
   Je poteba zv叩転it:
      Jak箪 je pomr editac鱈 a prohl鱈転en鱈 (read-only)?
      Jak叩 je pravdpodobnost soubhu p鱈stup哲?
      Do jak辿 m鱈ry je zamyk叩n鱈 nahraditeln辿 syst辿movou transakc鱈?
      D辿lka prov叩dn箪ch transakc鱈
      Cena za konflikt
      Cena za dirty read
Implementace se vz叩jemn dopluj鱈! Nejsou v箪lun辿!
Souvisej鱈c鱈 vzory
   Coarse-grained Lock
   Implicit Lock
   Identity Map

More Related Content

Optimistic/Pessimistic Offline Lock

  • 1. Optimistic Offline Lock vs Pessimistic Offline Lock Lubo邸 Kr叩l Ondej Machulda VUT FEL Y36ASS - Architektura SW syst辿m哲 LS 2011
  • 2. Offline lock Probl辿m Soub転n箪 p鱈stup k dat哲m Zabr叩nit nekonzistenci v datech Vz叩jemn辿 pepisov叩n鱈 dat 営ten鱈 star箪ch dat Business transakce pes nkolik syst辿mov箪ch transakc鱈 P鱈klad Datab叩ze Jak na to? Optimistic offline lock Mo転n箪 konflikt pi commitu Pessimistic offline lock Zabr叩nit za ka転dou cenu konfliktu
  • 4. Optimistic offline lock Princip Fakticky nefunguje jako z叩mek data nezamyk叩 Hl鱈d叩, kter叩 data byla zmnna (znevalidov叩na pro ostatn鱈 transakce) Pre-commit validation Business transakce z鱈sk叩 OOL pouze pokud od doby naten鱈 dat do pokusu o jejich zmn nedo邸lo ke zmn tchto dat jinou stranou Pokud se transakce pokus鱈 pepsat nevalidn鱈 data konflikt Pokud tato transakce z鱈sk叩 OOL, teprve tedy dojde ke zmn tchto dat v datab叩zi e邸en鱈 koliz鱈 Ignorov叩n鱈 kolize a peps叩n鱈 dat v nov辿 transakci Vye邸en鱈: u転ivatelem, automaticky Nee邸it a zalogovat Pedpoklad N鱈zk箪 poet konflikt哲 Mal叩 ztr叩ta v p鱈pad ne炭sp邸n辿 transakce
  • 5. Optimistic offline lock verzovac鱈 implementace Verzovac鱈 implementace Pi z鱈sk叩n鱈 dat se k session ulo転鱈 i aktu叩ln鱈 verze tchto dat Pi pokusu o zmnu dat se porovn叩 verze dat ze session s verz鱈 dat v syst辿mu: Pokud se verze neli邸鱈, session z鱈sk叩 OOL a je j鱈 umo転nno data zmnit Inkrementuje se verze Pokud se verze li邸鱈 konflikt Nen鱈 vhodn辿 pou転ivat timestamp ani jeho varianty zavisl辿 na syst辿mov辿m ase nespolehliv辿 Vhodnj邸鱈 je pou転鱈vat obyejn箪 integer 営asto se spolu s aktu叩ln鱈 verz鱈 z叩znamu v syst辿mu ukl叩d叩 i as a autor posledn鱈 zmny
  • 7. Optimistic offline lock SQL implementace SQL implementace Pi ten鱈 dat (SELECT) se natou data vetn hodnoty verze U ka転d辿ho SQL dotazu zmny (UPDATE, DELETE) V podm鱈nce (WHERE) je 鱈slo verze v session z鱈skan叩 pi na鱈t叩n鱈 dat Zmna dat z叩rove mn鱈 (SET) i 鱈slo verze Tento p鱈stup zeslo転i泥uje SQL dotazy a m哲転e b箪t pomal箪 v z叩vislosti na datab叩zov辿m stroji
  • 9. Optimistic offline lock Nekonzistentn鱈 ten鱈 Nekonzistentn鱈 ten鱈 dat Kontrola verze dat pi zmn dat neznamen叩, ze v pr哲bhu business transakce nem哲転eme na鱈st data zmnn叩 nk箪m jin箪m Pokud na za叩tku transakce nev鱈me, jak叩 data budeme / m哲転eme potebovat, neexistuje rozumn辿 e邸en鱈 Je poteba zn叩t, kter叩 data se maj鱈 kontrolovat Pi z叩pisu dat se ov鱈, zda i data naten叩 (by泥 nemnn叩 v pr哲bhu transakce) odpov鱈daj鱈 svou verz鱈 verzi session M哲転e zp哲sobit probl辿my v z叩vislosti na izolaci dat v r叩mci syst辿mov辿 transakce (datab叩ze), tak転e se budou znovu ten叩 data jevit stejn Provede umlou zmnu takov箪chto dat se stejnou hodnotou a s inkrementovanou verz鱈 M哲転e b箪t pomal辿 pi z叩vislosti na velk辿m objemu dat Coarse-grained lock umo転uje zamykat skupinu dat jako jedin箪 zamykateln箪 objekt (Person 1 --- * Address)
  • 10. Optimistic offline lock uk叩zka implementace
  • 11. Optimistic offline lock uk叩zka soubhu U転ivatel 1 U転ivatel 2 Nateme verzi, ta ji転 ale byla inkrementov叩na soub転nou operac鱈 Ulo転鱈me tak辿 inkrementovan箪 鱈ta verze Verze se tedy li邸鱈, provedeme rollback
  • 12. Optimistic offline lock Pou転it鱈 Pou転it鱈 Kdy転 oek叩v叩me m叩lo konflikt哲 Konflikt je ztr叩ta u転ivatel ho mus鱈 asto e邸it Jednoduch箪 na implementaci Pokud sta鱈, nen鱈 teba ho doplovat o jin辿 z叩mky Pou転it鱈 v praxi Verzovac鱈 syst辿my: SVN, Git, Pi konfliktu umo転n鱈 u転ivateli spravit situaci Pokud to jde, provede s叩m merge a znovu se pokus鱈 o proveden鱈 commitu MediaWiki JPA 2.0 Google App Engine
  • 14. Pessimistic offline lock Princip Zamyk叩 data v哲i urit辿 炭rovni p鱈stupu Exclusive Write Lock: Pro z叩pis dat je poteba z鱈skat z叩mek. Nee邸鱈 ten鱈 ani nehl鱈d叩, jestli nkdo data zmn鱈 tsn pedt鱈m. Exclusive Read Lock: Z叩mek je poteba pro naten鱈 dat. Jejich pou転it鱈 nehraje roli. Dokud je z叩mek aktivn鱈, nikdo jin箪 s daty nem哲転e jakkoliv manipulovat. Read/Write Lock: Kombinace pedchoz鱈ch. Syst辿m umo転uje z鱈skat bu z叩mek na ten鱈 nebo na z叩pis. Je mo転nost existence soub転n箪ch z叩mk哲 na ten鱈. Z叩mek na z叩pis tedy nikdy nem哲転e existovat spolu s jin箪m z叩mkem (na ten鱈 ani na z叩pis). e邸en鱈 zam鱈tnut鱈 Vyk叩n鱈 na pidlen鱈 z叩mku Zru邸en鱈 transakce Pedpoklad Vysok箪 poet konflikt哲 Velk叩 cena za konflikt v pozdj邸鱈 f叩zi business transakce
  • 16. Pessimistic offline lock Lock Manager Lock manager Lock manager spravuje z叩mky a u転ivatele (business transakce). Ide叩ln centralizovan箪, jednoduch箪 a jedin箪 (singleton) Pokud nem哲転e b箪t centralizovan箪 (distribuovan辿 syst辿my), je lep邸鱈 pou転鱈t zamyk叩n鱈 zalo転en辿 na datab叩zi Pi poteb spousty roztrou邸en箪ch z叩mk哲 na r哲zn叩 data je vhodn辿 uva転ovat o nasazen鱈 Coarse-Grained Lock
  • 17. Pessimistic offline lock Deadlock a Timeout Deadlock Prvn鱈 session uzamkne data A a potebuje i z叩mek na data B Z叩rove druh叩 session uzamkne data B a potebuje i data A Vznikl箪 deadlock nen鱈 efektivn鱈 e邸it na stran session timeoutem Nejlep邸鱈 mo転n辿 e邸en鱈 je zru邸it transakci pi prvn鱈m nedostupn辿m z叩mku M哲転e naopak v辿zt ke zbyten辿mu ru邸en鱈 transakc鱈 Timeout Pokud vypadne klient ani転 by ukonil transakci, tj. uvolnil z叩mky, mohou b箪t data blokovan叩 p鱈li邸 dlouho 嬰e邸en鱈: Timeout na stran aplikace Timestamp jako atribut z叩mku po uplynut鱈 urit辿 doby bude z叩mek neplatn箪
  • 18. Pessimistic offline lock uk叩zka soubhu U転ivatel 1 U転ivatel 2 Z鱈sk叩me z叩mek Z叩mek nelze z鱈skat, dr転鱈 jej soub転n叩 operace Z叩mek uvoln鱈me
  • 19. Pessimistic offline lock Pou転it鱈 Pou転it鱈 Pedpokl叩d叩me vznik konflikt哲 => nutno 鱈dit soub転n辿 operace Nechceme zahazovat data v p鱈pad konfliktu v pozdj邸鱈 f叩zi transakce Ide叩ln pokud je doba uzamen鱈 kr叩tk叩 Pou転it鱈 v praxi JPA 2.0 Hibernate
  • 20. Ostatn鱈 vzory a 壊鞄姻稼顎岳鱈
  • 21. Overly Optimistic Lock Princip Overly optimistic lock nezamyk叩 ani nijak nekontroluje soub転n箪 p鱈stup k dat哲m Pou転it鱈 Append-only data Logy Read-only data Jednou転ivatelsk辿 syst辿my
  • 22. Coarse-grained lock Princip Ucelen叩 skupina souvisej鱈c鱈ch dat Pi vy転叩d叩n鱈 z叩mku k njak箪m dat哲m z t辿to skupiny dojde k zamen鱈 cel辿 skupiny
  • 23. Implicit lock Princip Nkdo hl鱈d叩 p鱈stup k dat哲m a zaji邸泥uje automatick辿 zamyk叩n鱈 Eliminuje se tak spousta potenci叩ln鱈ch chyb spojen箪ch s run鱈m hl鱈d叩n鱈m z叩mk哲
  • 24. Optimistic vs Pessimistic offline lock V箪hody a Nev箪hody Optimistic Offline Lock Pessimistic Offline Lock V箪hody: V箪hody: Nemus鱈 si udr転ovat spojen鱈 s Bezkonfliktn鱈 datab叩z鱈 Nemus鱈 nic zamykat Nev箪hody: 営ten鱈 dat nikoho neomezuje V箪kon Jednodu邸邸鱈 implementace Nutn辿 spojen鱈 s datab叩z鱈 Obt鱈転n叩 邸k叩lovatelnost Nev箪hody: Hroz鱈 konflikt
  • 25. Optimistic vs Pessimistic offline lock - Shrnut鱈 Jakou implementaci? Je poteba zv叩転it: Jak箪 je pomr editac鱈 a prohl鱈転en鱈 (read-only)? Jak叩 je pravdpodobnost soubhu p鱈stup哲? Do jak辿 m鱈ry je zamyk叩n鱈 nahraditeln辿 syst辿movou transakc鱈? D辿lka prov叩dn箪ch transakc鱈 Cena za konflikt Cena za dirty read Implementace se vz叩jemn dopluj鱈! Nejsou v箪lun辿! Souvisej鱈c鱈 vzory Coarse-grained Lock Implicit Lock Identity Map