220 likes | 365 Views
Transactions. System transactions Transakce nad všemi zdroji , nejenom datovými objekty v databázi Např . t ransakce nad datovými objekty v databázi Systémové transakce dělat krátké (pro jeden request) Transakce přes více requestů jsou dlouhé Business transaction
E N D
Transactions • System transactions • Transakcenadvšemizdroji, nejenomdatovýmiobjekty v databázi • Např. transakcenaddatovýmiobjekty v databázi • Systémovétransakcedělatkrátké (pro jeden request) • Transakcepřesvícerequestůjsoudlouhé • Business transaction • Typicky se skládá z řadysystémovýchtransakcí • Nedá se nahraditsystémovoutransakcí, protožesystémovétransakcenemajíbýtdlouhé
Offline Concurrency • Zodpovědnostzadodržení ACID vlastností business transakcemezisystémovýmitransakcemi je ponechánanaprogramátorovi (enterprise) aplikace
Transactions • ACID • Atomicity (atomičnost) • Transakcemůžeproběhnoutbuďcelá, nebovůbec • Ukončenítransakceoperacemi commit/rollback • Consistency (konsistence) • Transakceprovádísama o soběsprávnývýpočet • Neporušujekonsistencyzdrojů (dat) • Isolation (izolovanost) • Paralelněprobíhajícítransakcesivzájemněneškodí • Různéstupněizolovanostitransakcí • Durability (trvalost) • Výsledkytransakce, kterábylaukončenaoperací commit jsoutrvalé (ipohaváriisystému)
Atomičnosttransakce Po úspěšnémukončenítransakcejsouzdrojeopět v konzistentnímstavu V průběhutransakcenemusíbýtzdroje v konzistentnímstavu Zahájenítransakcezdrojejsou v konsistentnímstavu čas Průběhtransakce
Izolovanosttransakcí • Problémy • Dirty read • T1:write(A), T2:read(A), …. T1:commit/rollback • Lost update • T1:write(A), T2:write(A), …, T1:commit • Unrepeatable read • T1:read(A), T2:write(A), … • Phantom • V průběhu T1 jinátransakce T2 vytvořízdroj, který, kdybyexistovalpřizahájení T1, T1 by s nm pracovala
Izolovanosttransakcí • Stupněizolovanostitransakcí
Optimistic versus pessimistic offline concurrency control • Optimistic: • Pravděpodobnostkonfliktu je malá • Předpokládáme, žekonfliktnenastane • Nedělámeprevencikonfliktu • Konfliktřešíme, ažkdyžnastane – ošetřenívýjimky • Nejobvyklejšíimplementace – každýzdrojmápřiřazenočísloverze • Obdobařízenísoučasnéhopřístupukezdrojovýmkódůmsystémytypucsv/svn.
Optimistic offline concurrency control System transaction Business transaction Business transaction
Optimistic offline concurrency control System transaction Business transaction Business transaction
Optimistic versus pessimistic offline concurrency control • Optimistic • Pessimistic: • Pravděpodobnostkonfliktu je velká • Preventivněbránímevznikukonfliktu • Nejobvyklejšíimplementace – zamykánízdrojů • Business transakcemusízískatzámekzdrojepředtím, než se zdrojemzačnepracovat • Nebo uživatelnesmípřijítani o částsvépráce
Pessimistic offline concurrency control Business transaction Business transaction
Optimistic versus pessimistic concurrency control • Pessimistic: • Lock manager • Dobré, pokud je součástídoménovéhomodelu • V (i) pamětinebo v (ii) databázidržíseznamzamčenýchobjektů. Pokudaplikaceběžínaclusteruserverů, musíbýttentoseznamuložen v databázi. • Sdílené (shared locks) zámky pro čtení, výhradní (exclusive locks) zámky pro zápis. • Kompatibilitazámků: SH x SH ano, SH x EX ne, EX x EX ne • Business transakcenemanipuluje se zámkypřímo, ale zásadněprostřednictvím lock managera, který je jejichvlastníkem
Optimistic versus pessimistic concurrency control • Pessimistic: • Lock manager • Protocol lock managera • kdyzamknout– jde-li to, pakdřívenežzdrojzískám (mámjistotu, žepracuji s nejaktuálnějšíverzízdroje). Úplněnejlepší je zamknoutvšechnyzdrojedříve, než s nimiuživatelzačnepracovat, nemá-li to vlivnaomezeníprůchodnostisystému. • co zamknout – typicky ID zdroje (známho, podlenějvyhledávám), • kdyodemknout – nejlépenakonci business transakce • co dělat, kdyžnelzezamknout – nejjednodušší je transakcizrušit (rollback)
Optimistic versus pessimistic concurrency control • Pessimistic: • Lock manager • Protocol lock managera • Tabulkazámkůspravovaná lock managerem • Serializovanýpřístup • Tabulkazámků v paměti – serializacenaúrovniprogr. jazyka • Tabulkazámků v databázi – serializacepomocísystémovétransakcenastupniizolovanosti SERIALIZABLE (současnéinserty a ready)
Optimistic versus pessimistic concurrency control • Pessimistic: • Lock manager • Protocol lock managera • Tabulkazámkůspravovaná lock managerem • Nebezpečídeadlocku • Nečekatnazámek, radějivyhoditvýjimku, pokud se nepodařízámekzískathned. • Pozor EJB transkace – čekajínazámek!
Optimistic versus pessimistic concurrency control • Pessimistic: • Lock manager • Protocol lock managera • Tabulkazámkůspravovaná lock managerem • Nebezpečídeadlocku • Lost transactions • Klientskýproces “spadne” uprostředtransakce • U webovéaplikacetypickyuživateltransakcinedokončí • Transakceneníschopnauvolnitzámky • Timeout naúrovniaplikacenebolépenaúrovniaplikačníhoserveru (typicky timeout http session) – potimeoutu se uvolní (nebozinvalidní) zámky
Coarse-grained Lock • Zamykánískupinobjektůjednímzámkem • Výhodyoprotizamykáníjednotlivýchobjektů: • Optimistickézamykání – pro zamčení (opatřeníverzí) je třebanačístvelkémnožstvíobjektů • Pesimistickézamykání – rozsáhlátabulkazámků – sériovýpřístup – časovědlouhotrvajícítransakcepřivelkémmnožstvíobvjektů
Coarse-grained Lock Optimistickézamykání – sdílenýobjektverze
Coarse-grained Lock Pesimistickézamykání – zamykánísdílenéhoobjektuverze
Coarse-grained Lock Pesimistickézamykání – zamykáníkořene
Business transakce • Neimplementujsvůjvlastní lock manager nebotransakční monitor • Pochopdobře, jakfungujetransakčnímechanismusTvéhoaplikačníhoserveru