Offline Lock OPTIMISTIC PESSIMISTIC Nikita SilinAleksandr Primak
Proč? Účel: Řeší problém datové integrity při konkurentním přístupu. Motivace: Intensivní přístup k DB několika klientů Kontrola verzí zdrojaků Bankovní transakcí
Typický problém
Optimistic Offline Lock Popis Zabraňuje konflikty mezi souběžnými business transakcí pomocí detekci konfliktu a rollbacku transakce.
Optimistic Offline Lock Obecná struktura
Optimistic Offline Lock Účastníci
Optimistic Offline Lock Příklad
Optimistic Offline Lock Výhody a nevýhody Výhody Jednoduchý na implementaci Povoluje souběžné čtení Dá se rozšířit pomocí merge strategií Nevýhody Ztracená data Sám o sobě je prevenci, není to lék
Pessimistic Offline Lock Popis Zabrání konfliktům mezi souběžnými business transakcemi tím, že pouze jedna business transakce může přístupovat k datům.
Pessimistic Offline Lock Obecná struktura
Pessimistic Offline Lock Příklad
Pessimistic Offline Lock Typy zámků Exclusive read lock Pouze jedna transakce má přístup k datům Exclusive write lock Pouze jedna transakce může data měnit Read/Write lock Kombinace předchozích
Pessimistic Offline Lock Výhody a nevýhody Výhody Není ztracená práce Nevýhody Pracuje jenom jeden uživatel Někdo může zapomenout uvolnit zámek
Optimistic vs. Pessimistic Lock OptimisticPessimistic Částečně řeší konflikty Konflikt pravděpodobně nenastane Práce uživatele není tak důležitá Relativně jednoduchý Zabrání konfliktům Velká šance konfliktu Práce uživatele je kritická Potřebuje řešení i v doménovém modelu
Související návrhové vzory Implicit Lock Povoluje frameworku nebo nadvrstvě získat offline lock Coarse-Grained Lock Zavírá množinu souvisejících objektů pomocí 1 zámku
Literatura Optimistic Offline Lock by David Rice Pessimistic Offline Lock by David Rice Catalog of Patterns of Enterprise Application Architecture