A5M33IZS – Informační a znalostní systémy

Slides:



Advertisements
Podobné prezentace
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
Advertisements

Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
 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.
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
Transakční zpracování
Temporální databáze a TSQL
Možnosti implementace temporálních Databází v Caché Lukáš Rychnovský
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Radek Špinka Přepínače MSSQL výběr.
Databáze Jiří Kalousek.
Databázové systémy 2 Přednáška č. 2 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
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.
Analýza informačního systému
BEZPEČNOST DAT 2 Složky bezpečnosti dat  Integrita dat (Integrity)  Ochrana dat (Security)  Zotavení z chyb (Recovery)  Paralelní zpracování (Concurrency)
Modely konzistentnosti Ladislav Kotal PDS 2008Ladislav Kotal2 Konzistentnost Konzistentní = soudržný, neporušený, pevný Konzistenční model = dohoda.
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
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 I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
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í.
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
A3B33OSD (J. Lažanský) verze: Jaro 2013 Transakce a řízení souběhu 1 Obsah Téma 12 – Transakce, řízení souběhu a obnova dat 1.Transakce a jejich stavy.
DATABÁZOVÉ SYSTÉMY. 2 DATABÁZOVÝ SYSTÉM SYSTÉM ŘÍZENÍ BÁZE DAT (SŘBD) PROGRAM KTERÝ ORGANIZUJE A UDRŽUJE NASHROMÁŽDĚNÉ INFORMACE DATABÁZOVÁ APLIKACE PROGRAM.
PA152Notes 101 CS 245: Database System Principles Notes 10: More TP Hector Garcia-Molina Pavel Rychlý.
Srovnání Petriho sítí a HDA David Ježek. Vícedimensionální automaty Klasické automaty –nemají metodu jak vyjádřit „pravou“ souběžnost událostí A, B 0.
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ů.
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.
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
PA152Notes 091 CS 245: Database System Principles Notes 09: Concurrency Control Hector Garcia-Molina Pavel Rychlý.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
DATABÁZE.
24 Používání relačních databází (základní pojmy a principy z oblasti relačních databází, struktura databáze,oblasti použití relačních databází, vkládání.
Databázové systémy II Přednáška I Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Databázové systémy 2 Přednáška č. 2 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Databázové systémy přednáška 8 – Transakce
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
Informatika pro ekonomy přednáška 8
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Databázové systémy a SQL
A5M33IZS – Informační a znalostní systémy
Optimalizace SQL dotazů
Databázové systémy a SQL
Paralelní přístup k databázi
Správa disků
A5M33IZS – Informační a znalostní systémy
Přednášky z distribuovaných systémů
Přednáška 9 Triggery.
Databázové systémy a SQL
Přednášky z distribuovaných systémů
Transkript prezentace:

A5M33IZS – Informační a znalostní systémy Transakce 1

Paralelní přístup k databázi Motivační příklad: Bankovní převod 100,- Kč z účtu "A" na účet "B" a současný výběr 200 Kč z účtu "B". Transakce Hodnota A Hodnota B Stav účtu A Stav účtu B 1000,- T1: čti A T1: 1000 T1: čti B T1: uber 100 z A T1: 900 T1: přidej 100 k B T1: 1100 T1: zapiš stav A 900,- T2: čti B T2: 1000 T1: zapiš stav B 1100,- T2: uber 200 z B T2: 800 T2: zapiš stav B 800,- Výsledný stav Správně Při současném vykonávání transakcí by mohlo dojít k porušení konzistence databáze i když každá z transakcí by sama o sobě konzistenci zachovávala

Paralelní přístup k databázi Transakce: Vlastnost ACID: Atomicity: transakce atomická - buď se podaří a provede se celá nebo nic - nelze vykonat jen část transakce Consistency transakce - korektní transformace stavu - zachování invariant - integritních omezení Isolation (isolace = serializovatelnost). I když jsou transakce rozpracovány současně, výsledek je stejný, jako by byla vykonávána jedna po druhé Durability po úspěšném ukončení transakce (commit) jsou změny stavu databáze trvalé a to i v případě poruchy systému - zotavení z chyb.

Paralelní přístup k databázi První zákon řízení paralelismu: Současné vykonávání transakcí nesmí zapříčinit selhání programu. Sériové provádění transakcí Další transakce nezačne dříve, než předchozí skončila. Bylo by postačujícím řešením v případě, že: všechny transakce krátké všechna data v paměti všechna data zpracována jediným procesorem

Paralelní přístup k databázi Serializovatelné provádění transakcí: Více transakcí rozpracovaných současně (vyšší propustnost systému) Ale výsledek stejný jako při sériovém provádění. Druhý zákon řízení paralelismu: Metoda řízení paralelismu při současném vykonávání transakcí nesmí vést k nižší průchodnosti systému oproti sériovému vykonávání transakcí. Řešení serializovatelnosti: zamykání (locking) na různé úrovni granularity: zamykání celého systému (=> sériovost) jednotlivých tabulek Jednotlivých záznamů (vět) časové značky MVCC (multiversion concurrency control) predikátové zámky

Konsistentní stav databáze Dočasně nekonsistentní stav databáze Paralelní přístup k databázi Transakce = sekvence akcí read a write na objektech (insert a delete zatím nejuvažujme). čas BOT A1 A2 A3 . . . An COMMIT CHYBA ROLLBACK Konsistentní stav databáze Dočasně nekonsistentní stav databáze

Paralelní přístup k databázi Dvě akce read nad týmž objektem nemohou porušit konzistenci. Dvě akce write nad týmž objektem prováděné v rámci téže transakce netřeba uvažovat. Pokud by porušily konzistenci, je transakce nekorektní bez ohledu na paralelismus (porušeno C v ACID). Pouze akce typu read a write v rámci různých transakcí mohou porušit konzistenci.

Paralelní přístup k databázi Lost update T1 WRITE <o,1> Nezachová se. Jakoby T1 vůbec neběžela. T2 WRITE <o,2> T1 READ Dirty read T1 přečetla dočasnou (ne committed) hodnotu T2 ROLLBACK Unrepeatable read nereprodukovatelné čtení Phantom problem T1 SELECT predikát T2 INSERT o3 { o1, o2}

Paralelní přístup k databázi Příklad LOST UPDATE: Transakce T1 vybírá veškerý zůstatek z účtu A. Transakce T2 připisuje 3% úroků na účet A. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. BOT 2. 3. a1 := 0 4. READ(A, a2) 5. a2 := a2 * 1.03 6. WRITE(A, a1) 7. WRITE(A, a2) 8. COMMIT 9.

Paralelní přístup k databázi Příklad DIRTY READ: Transakce T1 převádí 300,- Kč z účtu A na účet B. Transakce T2 připisuje 3% úroků na účet A, který není v daném časovém okamžiku v konsistentním stavu. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. READ(A, a1) 2. a1 := a1 - 300 3. WRITE(A, a1) 4. READ(A, a2) 5. a2 := a2 * 1.03 6. WRITE(A, a2) 7. READ(B, b1) READ selhal, proto: 8. ROLLBACK ROLLBACK vrátí stav na začátek transakce T1, tím ale přijdeme o efekt transakce T2. To je problém transakce T2, že si přečetla údaj, který ještě nebyl potvrzen (commited)

Paralelní přístup k databázi Příklad UNREPEATABLE READ: Transakce T1 převádí 300,- Kč z účtu A na účet B. Transakce T2 připisuje 3% úroků na účet A, který není v daném časovém okamžiku v konsistentním stavu. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. READ(A, a1) 2. READ(A, a2) 3. a2 := a2 * 1.03 4. WRITE(A, a2) 5. a1 := a1 – 300 6. WRITE(A, a1) 7. READ(B, b1) 8 b1 := b1 + 300 8. WRITE(B, b1) T2 přepsala údaj, který má transakce T1 načtený a hodlá s ním nadále pracovat -> T1 bude pracovat s nekonzistentními daty! Proměnná a1 neodpovídá stavu databáze. Kdybychom znovu provedli READ(A,a1), byl by obsah proměnné a1 jiný!

(tak, že vznikne věta splňující P) Paralelní přístup k databázi Problém fantomu (Phantom problem) čas T1: BOT SELECT * FROM Table WHERE P … T2: INSERT INTO Table VALUES (splňující P) UPDATE Table (tak, že vznikne věta splňující P)

Paralelní přístup k databázi Příklad PHANTOM PROBLEM: V průběhu zpracování T2 zavede T1 do databáze nový údaj (větu), proto T2 pro dva totožné dotazy poskytne dvě různé odpovědi. Příklad transakční historie neboli rozvrhu: Krok T1 T2 1. SELECT sum(StavUctu) FROM Ucty 2. INSERT INTO Ucty VALUES (StavUctu, 1000) 3.

Serializovatelá historie Transakční historie (rozvrh transakcí) - posloupnost akcí několika transakcí, jež zachovává pořadí akcí, v němž byly prováděny. Historie (rozvrh) se nazývá sériová, pokud jsou všechny kroky jedné transakce provedeny před všemi kroky druhé transakce. Serializovatelá historie Sériová historie Krok T1 T2 1 BOT 2 READ(A) 3 WRITE(A) 4 READ(C) READ(B) 5 WRITE(B) 6 WRITE(C) COMMIT 7 8 9 10 11 12

Teorie SERIALIZOVATELNOSTI Nechť se transakce Ti skládá z následujících elementárních operací: READi(A) - čtení objektu A v rámci transakce Ti WRITEi(A) - zápis (přepis) objektu A v rámci transakce Ti ROLLBACKi - přerušení transakce Ti COMMITi - potvrzení transakce Ti Jsou možné následující 4 případy: READI(A) - READJ(A) Není konflikt Na pořadí nezávisí READI(A) - WRITEJ(A) Konflikt Pořadí má význam WRITEI(A) - READJ(A) WRITEI(A) - WRITEJ(A) Zajímavé jsou navzájem konfliktní operace: Dvě historie H1 a H2 (na téže množině transakcí) jsou ekvivalentní, pokud jsou všechny konfliktní operace (nepřerušených) transakcí provedeny v témže pořadí. To znamená, že pro dvě ekvivalentní historie a uspořádání <H1 indukované historií H1 a <H2 indukované historií H2 platí: pokud pi a qj jsou konfliktní operace takové, že pi <H1 qj , musí platit také pi <H2 qj . Pořadí nekonfliktních operací není zajímavé.

Neserializovatelá historie Ne každá historie je serializovatelná: Neserializovatelá historie Krok T1 T2 1 BOT 2 READ(A) 3 WRITE(A) 4 5 6 7 READ(B) 8 WRITE(B) 9 COMMIT 10 11 12 Důvod: Transakce T1 předchází transakci T2 při zpracování objektu A, ale transakce T2 předchází transakci T1 při zpracování objektu B. Tato historie není proto ekvivalentní ani sériovému provedení transakcí v pořadí T1T2 ani sériovému provedení transakcí v pořadí T2T1.

Stupně isolace (stále neuvažujeme fantomy – náš zjednodušený model) Transakce Názvy Protokol zamykání 0 0 T nepřepisuje dirty data jiné transakce, je-li tato stupně 1 a více anarchie dobře formulován pro WRITE 1 1 T nemá lost updates browse dvoufázový pro XLOCK a dobře formulovaný pro WRITE 2 2 nemá lost updates a dirty reads *stabilita kursoru* dvoufázový pro XLOCK a dobře formulovaný 3 3 nemá lost updates, dirty reads a má repeatable reads isolovaná transakce serializovatelná opakovatelné čtení dvoufázový a dobře formulovaný

SET TRANSACTION ISOLATION LEVEL [ READ UNCOMMITTED] [ READ COMMITTED ] [ REPEATABLE READ ] [ SERIALIZABLE ] READ UNCOMMITTED - 1 browse - pro read-only transakce READ COMMITTED - stabilita kursoru (vylepšený 2) REPEATABLE READ - 3 bez ochrany fantomů SERIALIZABLE - 3 včetně ochany fantomů

ISO: READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE Postgre SQL READ COMMITTED SERIALIZABLE READ COMMITED in PostreSQL: Snapshot se dělá na začátku SELECTU SERIALIZABLE in PostreSQL: Snapshot se dělá na začátku transakce.