Offline concurrency patterns Petr Smrček Ondřej Svoboda ČVUT FEL A7B36ASS – Architektura SW sytémů LS 2013.

Slides:



Advertisements
Podobné prezentace
OZD: Hašování RNDr. Michal Žemlička.
Advertisements

Start Postup transformace dat SEKM do formátu pro klasifikaci priorit programuPriority KM.
Využití cloudových služeb ve školství
Ing. Petr Štefan Kp-sys s.r.o. CPVŠK Praha
SQL Trace, Profiling, …a Tuning Lubomír Andrle
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Přednáška č. 5 Proces návrhu databáze
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
„Programátor by měl být v prvé řadě líný.“. PIFovo Web API (API = Application Programming Interface)
Informační systémy ZMVŠ. ERP ERP (Enterprise Resource Planning) –Enterprise Resource Planning (ERP) je informační systém, který integruje a automatizuje.
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Lubomír Andrle 8. přednáška
T OOL FOR C OLLABORATIVE XML S CHEMA I NTEGRATION Jiří Meluzín.
A4B33DS & X33MIS Zdeněk Kouba
Doplňující referát k přednášce Transakce Šárka Hlušičková
Radek Špinka Přepínače MSSQL výběr.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
NET Genium software pro výstavbu a provoz informačního portálu Martin Vonka
Petr Šetka, MVP Exchange, MCSE:Messaging, MCT Windows Small Business Server 2003 R2.
Databázové systémy Mgr. Lenka Švancarová. Úvod Doposud jsme uvažovali jen o modelu databázového systému, kde jsou veškerá data a systém řízení báze dat.
D ATOVÉ MODELY Ing. Jiří Šilhán. D ATABÁZOVÉ SYSTÉMY Patří vedle textových editorů a tabulkových kalkulátorů k nejrozšířenějším představitelům programového.
Architektura databází Ing. Dagmar Vítková. Centrální architektura V této architektuře jsou data i SŘBD v centrálním počítači. Tato architektura je typická.
Softwareová architektura
Úvod. školní: příprava na předmět Databázové systémy praktický: webové aplikace databázové systémy základy vývoje webových aplikací od návrhu databáze.
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
Databázové systémy Architektury DBS.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy Tomáš Skopal
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
Memento. Obnovení operačního systému ( Windows | Linux...) Všichni víme, co jsou transekce v databázi Memento – zálohování databáze.
Association table mapping Jakub Chalupa Naim Ashhab ČVUT FEL A7B36ASS – Architektura SW systémů LS 2014.
Jazyk PHP Programovací jazyk PHP (Hypertext preprocessor) je skriptovací jazyk, který běží na straně serveru. KLIENT - SERVER Server posílá do vašeho počítače.
HTML editory HTML editory se dělí na dva základní typy:
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Transakční zpracování v SQL P. Částek. Transakce Transakce = logická jednotka práce Podaří-li se všechny části transakce, potvrdíme je. COMMIT Jestliže.
Transakce Roman Špánek TU v Liberci Transakce Transakce = série příkazů čtení a zápisu do databáze A Atomic C Consistency I Isolation D Durability.
Databáze.
ADO.NET – Transakce Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Aplikační role Vít Ochozka. K čemu nám slouží Omezit přístup k databázi AKORD jen prostřednictvím konkrétní aplikace Jiné aplikace – MS excel, MS access,
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
123.
2005 Adobe Systems Incorporated. All Rights Reserved. 1 Inteligentní PDF formuláře Vladimír Střálka Territory Account Manager Adobe Řešení pro.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Foreign key mapping Jakub Chalupa Naim Ashhab ČVUT FEL
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
Optimistic and pessimistic offline lock. Naivní přístup:  Uživatel A načte data  Uživatel B načte (stejná) data  Uživatel A upraví data a uloží je.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY MVC vs MVP.
Databázové systémy přednáška 8 – Transakce
A5M33IZS – Informační a znalostní systémy
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
Souborové systémy 2 Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Lazy load Použity informace z knihy Patterns of Enterprise Application Architecture od M. Fowlera Jan Sládek.
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Paralelní přístup k databázi
Web Application Scanning
A5M33IZS – Informační a znalostní systémy
Přednášky z distribuovaných systémů
Přednáška 9 Triggery.
Přednášky z Distribuovaných systémů
Unit of Work vzor z P of EAA (Fowler) 1.
Monitor Object 1.
Transkript prezentace:

Offline concurrency patterns Petr Smrček Ondřej Svoboda ČVUT FEL A7B36ASS – Architektura SW sytémů LS 2013

Offline concurrency patterns Problém  systémové (databázové) transakce by měly být krátké  business transakce mohou být velmi dlouhé Příklad: editace záznamu  uživatel přečte z databáze záznam  v editačním formuláři upravuje data  data uloží, mezitím s nimi ale mohl pracovat někdo jiný Jak na to?  je třeba řešit aplikační logikou – business transaction Způsoby řešení  Optimistic offline lock  Pessimistic offline lock  Coarse-grained lock  Implicit lock

Optimistic offline lock

Kdy použít  kolize mezi transakcemi nejsou příliš očekávané  nevadí, pokud transakce na konci spadne a práce bude ztracena Princip  práce s daty je povolena všem  pokud by mělo dojít ke konfliktu, transakce je neúspěšná (rollback) Implementace  nejčastěji použitím verzí  každá úprava daného záznamu inkrementuje jeho verzi  konflikt nastane, pokud se má upravit záznam s vyšší verzí, než jakou měl při čtení  implementace je jednoduchá

Optimistic offline lock – příklad

Optimistic offline lock – SQL implementace UPDATE Customer SET..., version = (session’s version + 1) WHERE id = 129 AND version = (session’s version)

Optimistic offline lock – aplikační implementace Customer c = customerDao.getCustomer(); /* do application logic */ Transaction::begin(); if (customerDao.checkVersion(c.version)) { c.save(); Transaction::commit(); } else { Transaction::rollback(); }

Optimistic offline lock – nekonzistentní čtení dat Nekonzistentní čtení dat  kontrola verzí pouze při UPDATE nebo DELETE neřeší následující problém:  v transakci používáme i data, která neměníme, ale výsledek transakce na nich závisí Umělá úprava dat  nad těmito daty provedeme taktéž UPDATE, ale změníme pouze verzi  + není třeba žádná další zamykací logika  - zbytečný zápis, zbytečně označujeme pro ostatní transakce stejná data různou verzí Ruční kontrola verze  pro tato data si pomatujeme původní verzi a zvlášť jí kontrolujeme  + efektivní řešení  - je třeba dát pozor na stupeň izolace systémových transakcí (je potřeba repeatable read či silnější), aby nám neprezentovaly stejnou verzi Coarse-grained lock

Optimistic offline lock – použití Verzovací systémy  SVN, Git,...  při konfliktu řeší uživatel JPA 2.0 int version; MediaWiki

Pessimistic offline lock

Pravděpodobnost konfliktu je velká  preventivně zabránit vzniku konfliktu  nejobvyklejší implementace – zamykání zdrojů  business transakce musí získat zámek zdroje před tím, než se zdrojem začne pracovat Zamykání zdrojů  Exclusive Write Lock – nikdo nesmí data číst, ani zapisovat  Shared Read Lock  Data jsou zamknuta pro čtení  Více transakcí může číst, ale ne zapisovat  kompatibilita zámků: SH × SH ano, SH × EX ne, EX × EX ne Řešení zamítnutí  transakci zrušit  počkat na zámek

Pessimistic offline lock

Pessimistic offline lock – Lock manager Lock manager  udržuje v paměti seznam zamčených objektů  pokud aplikace běží na clusteru serverů, musí být tento seznam uložen v databázi  business transakce nemanipuluje se zámky přímo, ale pouze přes lock managera Práce lock managera  kdy zamknout – dříve než začnu se zdroji pracovat  jistota, že mám nejaktuálnější verzi zdroje  co zamknout – typicky ID zdroje  kdy odemknout – nejlépe na konci transakce  co dělat když nelze získat zámek – nejjednodušší je transakci zrušit (rollback)

Pessimistic offline lock - Deadlock Deadlock  transakce 1 drží lock na zdroj 1 a požaduje zámek na zdroj 2  transakce 2 drží lock na zdroj 2 a požaduje zámek na zdroj 1  protože obě transakce nemohou pokračovat dokud nebudou zdroje volné a obě transakce nemohou uvolnit zámky, vzniká deadlock Řešení  nečekat na zámky  zrušit transakci při prvním nedostupném zámku

Pessimistic offline lock – Lost transactions Lost transactions  klientský proces spadne uprostřed transakce  u webové aplikace typicky uživatel transakci nedokončí  transakce neuvolnila zámky Řešení  timeout na úrovni aplikace  timeout na úrovni aplikačního serveru  timeout http session  po timeoutu se uvolní / invalidují zámky

Pessimistic offline lock - Použití Použití  tam kde předpokládáme vznik konfliktů - nutnost řídit souběžné operace  nebo uživatel nesmí přijít ani o část své práce  rollback transakce nemusí být vždy možný Implementace  JPA 2 public void updateBalance(String id, BigDecimal amount) { Account acc = (Account) sessionFactory.getCurrentSession().get(Account.class, id, LockMode.UPGRADE); acc.setBalance(acc.getBalance().subtract(amount)); save(acc); }

Coarse-grained lock Implicit lock

Coarse-grained lock  zamykání skupin objektů jedním zámkem Výhody proti zamykání jednotlivých objektů  Optimistické zamykání – pro zamčení (načtení verzí) je potřeba načíst velké množství objektů  Pesimistické zamykání – rozsáhlá tabulka záznamů

Coarse-grained lock – optimistické zamykání Sdílený objekt verze

Coarse-grained lock – pesimistické zamykání Zamykání sdíleného objektu verze

Coarse-grained lock – pesimistické zamykání Zamykání kořene

Implicit lock Princip  Někdo hlídá přístup k datům a zajišťuje automatické zamykání  Eliminuje se tak spousta potenciálních chyb spojených s ručním hlídáním zámků

Offline concurrency patterns – shrnutí Co řeší?  dlouhé transakce na úrovni aplikační logiky Možnosti implementace  Optimistic offline lock – jednoduchá implementace, kolize nejsou moc očekávány  Pessimistic offline lock – kolize očekávány, preventivní ochrana  Coarse-grained lock – sjednocení více objektů pod jeden zámek  Implicit lock – zámky řešeny automaticky např. frameworkem Související vzory  Overly optimistic lock strategie spoléhající na to, že žádné kolize nenastanou  Identity map zajišťuje, že každý objekt bude načten pouze jednou

Zdroje Martin Fowler - Catalog of Patterns of Enterprise Application Architecture ( Enterprise Architecture Patterns ( The Addison-Wesley Signature Series (