Konzistence databáze v nekonzistentním světě



Podobné dokumenty
Podrobný postup pro vygenerování a zaslání Žádosti o podporu a příloh OPR přes Portál farmáře

SMLOUVA O POSKYTOVÁNÍ SOCIÁLNÍ SLUŽBY č.../2013

MĚSTO BENEŠOV. Rada města Benešov. Vnitřní předpis č. 16/2016. Směrnice k zadávání veřejných zakázek malého rozsahu. Čl. 1. Předmět úpravy a působnost

Vyvažování tuhého rotoru v jedné rovině přístrojem Adash Vibrio

Obchodní podmínky pro spolupráci se společností Iweol EU s.r.o.

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

Abeceda elektronického podpisu

Všeobecné obchodní podmínky společnosti Zdeněk Bečvář, IČ: , se sídlem Stráž nad Nežárkou, Hradecká 270, PSČ 37802

1.11 Vliv intenzity záření na výkon fotovoltaických článků

PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ

Operace nad celými tabulkami

Pravidla pro přidělování bytů v Domech s pečovatelskou službou v Počátkách

Modul Řízení objednávek.

SMLOUVA O PODMÍNKÁCH A PRAVIDLECH ÚČASTI NA ELEKTRONICKÝCH AUKCÍCH DŘÍVÍ

Seriál: Management projektů 7. rámcového programu

VŠEOBECNÉ OBCHODNÍ PODMÍNKY

Zadávací dokumentace k výběrovému řízení na Dodávku nábytku

VŠEOBECNÉ OBCHODNÍ PODMÍNKY E-SHOP (Doplňující podmínky k Všeobecným smluvním podmínkám užívání služeb Národního geoportálu INSPIRE)

Pardubický kraj Komenského náměstí 125, Pardubice SPŠE a VOŠ Pardubice-rekonstrukce elektroinstalace a pomocných slaboproudých sítí

záměr a podmínky výběrového řízení č. 309/2015 formou elektronické aukce na pronájem stavby - budovy bez čp/če s využitím jako garáž,

PUBLICITA v OP VK. Seminář pro příjemce v rámci globálních grantů Olomouckého kraje. Olomouc, 20. a 21. dubna 2009

Úplná pravidla spotřebitelské soutěže v rámci kampaně Continental - S námi za vítězstvím

SMLOUVA O POSKYTNUTÍ DOTACE Z ROZPOČTU MĚSTA NÁCHODA

VŠEOBECNÉ OBCHODNÍ PODMÍNKY SPECIFIKACE ZBOŽÍ A CENA ZBOŽÍ. Veškeré ceny jsou včetně DPH. PLATEBNÍ PODMÍNKY DODACÍ PODMÍNKY

Věc: VEŘEJNÁ ZAKÁZKA MALÉHO ROZSAHU NA STAVEBNÍ PRÁCE PRO AKCI: dodavatele k předložení nejvhodnější nabídky na výše uvedenou zakázku.

Obchodní podmínky. 1. Úvodní ustanovení. 2. Cena zboží a služeb a platební podmínky

Smluvní podmínky (KTv)

na sále Kulturního domu v Rudolticích dne 7. října 2013

Úplná pravidla spotřebitelské soutěže Jarní soutěž (dále jen Soutěž )

Ministerstvo školství, mládeže a tělovýchovy

Smlouva o ubytování. Článek I Smluvní strany

Smlouva o zájezdu- vzor

V Černošicích dne Výzva k podání nabídky na veřejnou zakázku malého rozsahu s názvem: Nákup a pokládka koberců OŽÚ.

Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016

Princip bydlení v bytech zvláštního určení pro seniory a osoby se zdravotním postižením

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Zásady pro nájem městských bytů č. 5/2014 ve znění dodatku č. 1 a 2

Rozšířená nastavení. Kapitola 4

ČEZ Prodej, s.r.o., sídlem Duhová 425/1, 14053, Praha, IČ , zast. David Jünger, Mgr., sídlem 28. října 438/219, 70900, Ostrava

Školkovné 2013/2014. Pro zápis dětí od 2 let.

Android Elizabeth. Verze: 1.3

modul Jízdy a Kniha jízd uživatelská příručka

ZADÁVACÍ DOKUMENTACE K VEŘEJNÉ ZAKÁZCE

SMLOUVA O POSKYTNUTÍ ÚČELOVÉ DOTACE Z ROZPOČTU STATUTÁRNÍHO MĚSTA OPAVY. uzavřená dle ust zákona č. 89/2012 Sb., občanského zákoníku

I. Všeobecná ustanovení

2008 Nokia. Všechna práva vyhrazena. Nokia, Nokia Connecting People a Nseries jsou ochranné známky nebo registrované ochranné známky společnosti

veřejná zakázka na stavební prace s názvem: Sdružená kanalizační přípojka - Město Lázně Bělohrad

Zabezpečení Uživatelská příručka

Vzdělávání v oblasti veřejných zakázek dle postupu uvedeného v Příručce pro příjemce

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

Zásady pro zřizování služebností inženýrských sítí na pozemcích ve vlastnictví města

Obchodní podmínky pro poskytování služby vydané na základe 273 zákona c. 513/1991 Sb., obchodní zákoník, ve znění pozdějších předpisů

Obecná ustanovení Rozsah a obsah předmětu plnění

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

Popis realizace- 41 Tísňová péče ŽIVOT 90.doc

4. Kdy nelze práva z vadného plnění uplatnit? Práva z vadného plnění Vám nenáleží, pokud:

Obecně závazná vyhláška obce Cvrčovice č. 1/2007 o místních poplatcích

Manuál pro zaměstnavatele, kteří mají zájem o zapojení do projektu Odborné praxe pro mladé do 30 let v Ústeckém kraji

VÝZVA K PODÁNÍ NABÍDKY A PROKÁZÁNÍ SPLN NÍ KVALIFIKACE ZADÁVACÍ DOKUMENTACE ZADÁVACÍ DOKUMENTACE

Podíl zdrojů informací

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina

1.7. Mechanické kmitání

Ing. Vladimír Šretr daňový poradce

o užívání služby elektronického dodávání dokumentů a dalších služeb kooperačního systému e-pk uzavřená mezi

Obchodní podmínky II. Objednávka, vznik kupní smlouvy

CENÍK SLUŽBA ETHERNET. Účinnost od Ceny uvedeny bez i s 20% DPH 1. PODMÍNKY

Uživatelská dokumentace

účetních informací státu při přenosu účetního záznamu,

Stanovy horolezeckého oddílu "ROT SPORT"

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Všeobecné obchodní podmínky společnosti Nakladatelství MatfyzPress MFF UK, IČ: , se sídlem Sokolovská 83, , Praha 8

PROGRAM OBNOVY VENKOVA VYSOČINY

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh

Všeobecné obchodní podmínky portálu pomocsukolem.cz platné dnem 5. ledna 2015

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

ROZCVIČKY. (v nižší verzi může být posunuta grafika a špatně funkční některé odkazy).

Město Frenštát pod Radhoštěm. OZV o místních poplatcích

VŠEOBECNÉ PODMÍNKY PRO POSKYTOVÁNÍ VEŘEJNĚ DOSTUPNÝCH SLUŽEB ELEKTRONICKÝCH KOMUNIKACÍ PROSTŘEDNICTVÍM VEŘEJNÝCH TELEFONNÍCH AUTOMATŮ

(dle ustanovení 566 an. zák. č. 513/1991 Sb., obchodního zákoníku, ve znění pozdějších předpisů)

Úklidové služby v objektu polikliniky

Objektově orientované databáze

POKYNY BOZP a EMS pro DODAVATELE

Vybavení pro separaci a svoz BRKO

VÝZVA K PODÁNÍ NABÍDKY

Obchodní podmínky e-shopu

Všeobecné obchodní podmínky pro užívání portálu (dále též jen Dražební řád )

Všeobecné obchodní podmínky portálu iautodíly společnosti CZ-Eko s.r.o.

SMLOUVA NA ZABEZPEČENÍ SLUŽBY čj ZÁVODNÍHO STRAVOVÁNÍ PRO VOJENSKÉ ZAŘÍZENÍ 1484 Libavá FORMOU STRAVOVACÍCH POUKÁZEK

Nabídka seminářů Finanční gramotnost

Ústavní sociální služby pro osoby s postižením v Moravskoslezském kraji

MMEE cv Stanovení množství obchodovatelného zboží mezi zákazníkem a dodavatelem

VYHLÁŠKA ČÁST PRVNÍ STÁTNÍ ZKOUŠKY Z GRAFICKÝCH DISCIPLÍN. Předmět úpravy

PŘÍLOHA 1.7 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI PROGRAM ZVYŠOVÁNÍ KVALITY

Jana Cífková - OBCHODNÍ PODMÍNKY platné k: , 18:44

Definice, metody měření a výpočtu

CZ.1.07/1.1.00/

č. A/0../10 Smlouva o poskytnutí sociální služby v Azylovém domě Samaritán

Petr Mazal, starosta. Osoba pověřená výkonem zadavatelských činností Název / obchodní firma: Okružní 963, Třebíč

Tekla Structures Multi-user Mode

Transkript:

Konzistence databáze v nekonzistentním světě Radim Bača Katedra informatiky Fakulta elektrotechniky a informatiky VŠB Technická univerzita Ostrava ŠKOMAM 2012-1- 2/2/2012

Obsah Vysvětĺıme si, co je transakce v databázích, konzistence, eventuální konzistence. ŠKOMAM 2012-2- 2/2/2012

Úvod Transakce v databázích Transakce v databázích Transakce představuje jednotku práce nad databází, kterou je potřeba vykonat bud to celou anebo vůbec. Transakce se obvykle skládá z více operací. Příklad: převod peněz mezi dvěmi bankovními učty. Taková transakce se skládá ze dvou operací: 1 odečtení požadované částky z jednoho účtu, 2 přičtení této částky na druhý účet. ŠKOMAM 2012-3- 2/2/2012

Úvod Transakce v databázích Transakce v databázích Transakce představuje jednotku práce nad databází, kterou je potřeba vykonat bud to celou anebo vůbec. Transakce se obvykle skládá z více operací. Příklad: převod peněz mezi dvěmi bankovními učty. Taková transakce se skládá ze dvou operací: 1 odečtení požadované částky z jednoho účtu, 2 přičtení této částky na druhý účet. ŠKOMAM 2012-3- 2/2/2012

Úvod Transakce v databázích Transakce v databázích Transakce představuje jednotku práce nad databází, kterou je potřeba vykonat bud to celou anebo vůbec. Transakce se obvykle skládá z více operací. Příklad: převod peněz mezi dvěmi bankovními učty. Taková transakce se skládá ze dvou operací: 1 odečtení požadované částky z jednoho účtu, 2 přičtení této částky na druhý účet. ŠKOMAM 2012-3- 2/2/2012

Úvod Transakce v databázích Transakce v databázích Transakce představuje jednotku práce nad databází, kterou je potřeba vykonat bud to celou anebo vůbec. Transakce se obvykle skládá z více operací. Příklad: převod peněz mezi dvěmi bankovními učty. Taková transakce se skládá ze dvou operací: 1 odečtení požadované částky z jednoho účtu, 2 přičtení této částky na druhý účet. ŠKOMAM 2012-3- 2/2/2012

Úvod Transakce v databázích Transakce v databázích Transakce představuje jednotku práce nad databází, kterou je potřeba vykonat bud to celou anebo vůbec. Transakce se obvykle skládá z více operací. Příklad: převod peněz mezi dvěmi bankovními učty. Taková transakce se skládá ze dvou operací: 1 odečtení požadované částky z jednoho účtu, 2 přičtení této částky na druhý účet. ŠKOMAM 2012-3- 2/2/2012

Úvod Transakce v databázích Výhody použití transakcí Hlavní výhody použití transakcí: korektní souběžný přístup při vykonávání operací, zotavení databáze při nějaké chybě. ŠKOMAM 2012-4- 2/2/2012

Úvod Transakce v databázích ACID Atomicity -- Consistency -- Isolation -- Durability Atomicita - jsou provedeny všechny operace transakce nebo vůbec žádná Konzistence - databáze je převedena z jednoho konzistentního stavu do druhého Izolace - transakce se během souběžného provádění nemohou nijak ovlivňovat Trvalost - jakmile je transakce korektně ukončena, pak změny v databázi zůstávají nehledě na chyby při běhu ŠKOMAM 2012-5- 2/2/2012

Úvod Transakce v databázích ACID Atomicity -- Consistency -- Isolation -- Durability Atomicita - jsou provedeny všechny operace transakce nebo vůbec žádná Konzistence - databáze je převedena z jednoho konzistentního stavu do druhého Izolace - transakce se během souběžného provádění nemohou nijak ovlivňovat Trvalost - jakmile je transakce korektně ukončena, pak změny v databázi zůstávají nehledě na chyby při běhu ŠKOMAM 2012-5- 2/2/2012

Úvod Transakce v databázích ACID Atomicity -- Consistency -- Isolation -- Durability Atomicita - jsou provedeny všechny operace transakce nebo vůbec žádná Konzistence - databáze je převedena z jednoho konzistentního stavu do druhého Izolace - transakce se během souběžného provádění nemohou nijak ovlivňovat Trvalost - jakmile je transakce korektně ukončena, pak změny v databázi zůstávají nehledě na chyby při běhu ŠKOMAM 2012-5- 2/2/2012

Úvod Transakce v databázích ACID Atomicity -- Consistency -- Isolation -- Durability Atomicita - jsou provedeny všechny operace transakce nebo vůbec žádná Konzistence - databáze je převedena z jednoho konzistentního stavu do druhého Izolace - transakce se během souběžného provádění nemohou nijak ovlivňovat Trvalost - jakmile je transakce korektně ukončena, pak změny v databázi zůstávají nehledě na chyby při běhu ŠKOMAM 2012-5- 2/2/2012

Úvod Transakce v databázích ACID Atomicity -- Consistency -- Isolation -- Durability Atomicita - jsou provedeny všechny operace transakce nebo vůbec žádná Konzistence - databáze je převedena z jednoho konzistentního stavu do druhého Izolace - transakce se během souběžného provádění nemohou nijak ovlivňovat Trvalost - jakmile je transakce korektně ukončena, pak změny v databázi zůstávají nehledě na chyby při běhu ŠKOMAM 2012-5- 2/2/2012

Úvod Konzistence Konzistence Konzistencí databáze rozumíme to, že v databázi máme korektní data, která odpovídají realitě. V našem příkladu s bankovním převodem to znamená, že celková suma peněz na účtech zůstává konstantní. Konzistence databáze většinou nemůže být vyjádřena takto jednoduše jednou větou a je obsažena v transakcích a operacích, které provádíme nad databází. ŠKOMAM 2012-6- 2/2/2012

Úvod Konzistence Konzistence Konzistencí databáze rozumíme to, že v databázi máme korektní data, která odpovídají realitě. V našem příkladu s bankovním převodem to znamená, že celková suma peněz na účtech zůstává konstantní. Konzistence databáze většinou nemůže být vyjádřena takto jednoduše jednou větou a je obsažena v transakcích a operacích, které provádíme nad databází. ŠKOMAM 2012-6- 2/2/2012

Úvod Konzistence Konzistence Konzistencí databáze rozumíme to, že v databázi máme korektní data, která odpovídají realitě. V našem příkladu s bankovním převodem to znamená, že celková suma peněz na účtech zůstává konstantní. Konzistence databáze většinou nemůže být vyjádřena takto jednoduše jednou větou a je obsažena v transakcích a operacích, které provádíme nad databází. ŠKOMAM 2012-6- 2/2/2012

Úvod Konzistence Další příklady konzistence Pokud hrajete nějakou on-line strategii, pak nechcete, aby jeden hráč viděl v určitém bodě krásného draka a druhý ošklivou princeznu. Počet kusů zboží v e-shopu by měl odrážet skutečný stav na skladu. ŠKOMAM 2012-7- 2/2/2012

Distribuované databáze a konzistence Konzistence v distribuovaných databázích (DD) Pokud data ukládáme na jednom místě, pak je konzistnce obvykle nejméně zajímavý atribut transakce. Zcela jiná situace ale nastává, pokud chceme data rozložit na více databázových serverů (tzv. distribuovaná databáze). V distribuované databázi jsou data vždy replikována na více serverech, aby bylo možné obsluhovat více paralelních čtení či dokonce zápisů stejných dat (čtení jednoho článku ze zpravodajského serveru) a v případě výpadku jednoho serveru byl obsah stále dostupný. Při změně hodnoty na jednom serveru musíme pro udržení konzistence změnit hodnotu i na všech jeho replikách. ŠKOMAM 2012-8- 2/2/2012

Distribuované databáze a konzistence Konzistence v distribuovaných databázích (DD) Pokud data ukládáme na jednom místě, pak je konzistnce obvykle nejméně zajímavý atribut transakce. Zcela jiná situace ale nastává, pokud chceme data rozložit na více databázových serverů (tzv. distribuovaná databáze). V distribuované databázi jsou data vždy replikována na více serverech, aby bylo možné obsluhovat více paralelních čtení či dokonce zápisů stejných dat (čtení jednoho článku ze zpravodajského serveru) a v případě výpadku jednoho serveru byl obsah stále dostupný. Při změně hodnoty na jednom serveru musíme pro udržení konzistence změnit hodnotu i na všech jeho replikách. ŠKOMAM 2012-8- 2/2/2012

Distribuované databáze a konzistence Konzistence v distribuovaných databázích (DD) Pokud data ukládáme na jednom místě, pak je konzistnce obvykle nejméně zajímavý atribut transakce. Zcela jiná situace ale nastává, pokud chceme data rozložit na více databázových serverů (tzv. distribuovaná databáze). V distribuované databázi jsou data vždy replikována na více serverech, aby bylo možné obsluhovat více paralelních čtení či dokonce zápisů stejných dat (čtení jednoho článku ze zpravodajského serveru) a v případě výpadku jednoho serveru byl obsah stále dostupný. Při změně hodnoty na jednom serveru musíme pro udržení konzistence změnit hodnotu i na všech jeho replikách. ŠKOMAM 2012-8- 2/2/2012

Distribuované databáze a konzistence Konzistence v distribuovaných databázích (DD) Pokud data ukládáme na jednom místě, pak je konzistnce obvykle nejméně zajímavý atribut transakce. Zcela jiná situace ale nastává, pokud chceme data rozložit na více databázových serverů (tzv. distribuovaná databáze). V distribuované databázi jsou data vždy replikována na více serverech, aby bylo možné obsluhovat více paralelních čtení či dokonce zápisů stejných dat (čtení jednoho článku ze zpravodajského serveru) a v případě výpadku jednoho serveru byl obsah stále dostupný. Při změně hodnoty na jednom serveru musíme pro udržení konzistence změnit hodnotu i na všech jeho replikách. ŠKOMAM 2012-8- 2/2/2012

Distribuované databáze a konzistence Příklad DD A B E C D Mějme distribuovanou databázi s 5 servery. ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD A Replikace B E C D Mějme distribuovanou databázi s pěti servery. Záznam v databázi vždy náleží jednomu serveru, ale zároveň jsou data replikována na 2 serverech po směru hodinových ručiček. ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD záznam x A B E C D Řekněme, že chceme zapsat záznam, který je uložen na serveru A. ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD záznam x A kopie záznamu x B E kopie záznamu x C D Řekněme, že chceme zapsat záznam, který je uložen na serveru A. Záznam je nejprve poslán na repliky a čeká na potvrzení úspěšného zapsání. ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD A ok B E ok C D Když dostaneme potvrzení, že všechny servery korektně zapsaly změny, ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD ok A B E C D Když dostaneme potvrzení, že všechny servery korektně zapsaly změny, pak potvrdíme provedení operace. ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD A ok B E error C D Pokud zápis na některém serveru selže, ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Příklad DD error A rollback B E C D Pokud zápis na některém serveru selže, musíme stornovat operace i na ostatních serverech a odeslat chybu při zápisu. ŠKOMAM 2012-9- 2/2/2012

Distribuované databáze a konzistence Problémy konzistence Základním problémem je, že komunikace i samotné servery mohou být nespolehlivé. Dále při zápisu dále dochází k zamykání záznamů. Servery musí znát topologie sítě a stav jednotlivých serverů, aby mohly spolehlivě vyloučit nekonzistenci při zápisu. Důsledkem je, že jednoduchá operace aktualizace článku může trvat neúměrně dlouho. Naštěstí existují řešení, takže mám o čem mít dnes přednášku. ŠKOMAM 2012-10- 2/2/2012

Distribuované databáze a konzistence Problémy konzistence Základním problémem je, že komunikace i samotné servery mohou být nespolehlivé. Dále při zápisu dále dochází k zamykání záznamů. Servery musí znát topologie sítě a stav jednotlivých serverů, aby mohly spolehlivě vyloučit nekonzistenci při zápisu. Důsledkem je, že jednoduchá operace aktualizace článku může trvat neúměrně dlouho. Naštěstí existují řešení, takže mám o čem mít dnes přednášku. ŠKOMAM 2012-10- 2/2/2012

Distribuované databáze a konzistence Problémy konzistence Základním problémem je, že komunikace i samotné servery mohou být nespolehlivé. Dále při zápisu dále dochází k zamykání záznamů. Servery musí znát topologie sítě a stav jednotlivých serverů, aby mohly spolehlivě vyloučit nekonzistenci při zápisu. Důsledkem je, že jednoduchá operace aktualizace článku může trvat neúměrně dlouho. Naštěstí existují řešení, takže mám o čem mít dnes přednášku. ŠKOMAM 2012-10- 2/2/2012

Distribuované databáze a konzistence Problémy konzistence Základním problémem je, že komunikace i samotné servery mohou být nespolehlivé. Dále při zápisu dále dochází k zamykání záznamů. Servery musí znát topologie sítě a stav jednotlivých serverů, aby mohly spolehlivě vyloučit nekonzistenci při zápisu. Důsledkem je, že jednoduchá operace aktualizace článku může trvat neúměrně dlouho. Naštěstí existují řešení, takže mám o čem mít dnes přednášku. ŠKOMAM 2012-10- 2/2/2012

Distribuované databáze a konzistence Problémy konzistence Základním problémem je, že komunikace i samotné servery mohou být nespolehlivé. Dále při zápisu dále dochází k zamykání záznamů. Servery musí znát topologie sítě a stav jednotlivých serverů, aby mohly spolehlivě vyloučit nekonzistenci při zápisu. Důsledkem je, že jednoduchá operace aktualizace článku může trvat neúměrně dlouho. Naštěstí existují řešení, takže mám o čem mít dnes přednášku. ŠKOMAM 2012-10- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Eventuální konzistence Když se vrátíme k příkladu se zpravodajským serverem: aktualizace článku na jednom serveru se propaguje na všechny repliky. Musíme skutečně okamžitě všichni vidět aktuální článek? Uživatel těžko postřehne, že má zrovna neaktuální článek, zejméne pokud je jen trochu neaktuální. Obecně platí, že u mnoha (zejména webových) aplikací na striktní konzistenci často vůbec nezáleží. Primární je dostat alespoň nějaká data, která se bĺıží skutečnosti. ŠKOMAM 2012-11- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Eventuální konzistence Když se vrátíme k příkladu se zpravodajským serverem: aktualizace článku na jednom serveru se propaguje na všechny repliky. Musíme skutečně okamžitě všichni vidět aktuální článek? Uživatel těžko postřehne, že má zrovna neaktuální článek, zejméne pokud je jen trochu neaktuální. Obecně platí, že u mnoha (zejména webových) aplikací na striktní konzistenci často vůbec nezáleží. Primární je dostat alespoň nějaká data, která se bĺıží skutečnosti. ŠKOMAM 2012-11- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Eventuální konzistence Když se vrátíme k příkladu se zpravodajským serverem: aktualizace článku na jednom serveru se propaguje na všechny repliky. Musíme skutečně okamžitě všichni vidět aktuální článek? Uživatel těžko postřehne, že má zrovna neaktuální článek, zejméne pokud je jen trochu neaktuální. Obecně platí, že u mnoha (zejména webových) aplikací na striktní konzistenci často vůbec nezáleží. Primární je dostat alespoň nějaká data, která se bĺıží skutečnosti. ŠKOMAM 2012-11- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Eventuální konzistence Když se vrátíme k příkladu se zpravodajským serverem: aktualizace článku na jednom serveru se propaguje na všechny repliky. Musíme skutečně okamžitě všichni vidět aktuální článek? Uživatel těžko postřehne, že má zrovna neaktuální článek, zejméne pokud je jen trochu neaktuální. Obecně platí, že u mnoha (zejména webových) aplikací na striktní konzistenci často vůbec nezáleží. Primární je dostat alespoň nějaká data, která se bĺıží skutečnosti. ŠKOMAM 2012-11- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Konzistence Striktní konzistence - klasická konzistence tak jak je chápána v ACID. Všechny změny provedené operací jsou uloženy v databázi a každé následné čtení vrací vždy novou hodnotu. Slabá konzistence - po provedení operace A existuje určitá prodleva, během které následné čtení může vracet nějakou hodnotu, která byla v poli před provedením změn operací A. Tato prodleva se nazývá okno nekonzistnce. Eventuální konzistence - jedná se o určitou formu slabé konzistence, kde je velikost okna nekonzistence dána parametry databáze a sítě. ŠKOMAM 2012-12- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Konzistence Striktní konzistence - klasická konzistence tak jak je chápána v ACID. Všechny změny provedené operací jsou uloženy v databázi a každé následné čtení vrací vždy novou hodnotu. Slabá konzistence - po provedení operace A existuje určitá prodleva, během které následné čtení může vracet nějakou hodnotu, která byla v poli před provedením změn operací A. Tato prodleva se nazývá okno nekonzistnce. Eventuální konzistence - jedná se o určitou formu slabé konzistence, kde je velikost okna nekonzistence dána parametry databáze a sítě. ŠKOMAM 2012-12- 2/2/2012

Distribuované databáze a konzistence Eventuální konzistence Konzistence Striktní konzistence - klasická konzistence tak jak je chápána v ACID. Všechny změny provedené operací jsou uloženy v databázi a každé následné čtení vrací vždy novou hodnotu. Slabá konzistence - po provedení operace A existuje určitá prodleva, během které následné čtení může vracet nějakou hodnotu, která byla v poli před provedením změn operací A. Tato prodleva se nazývá okno nekonzistnce. Eventuální konzistence - jedná se o určitou formu slabé konzistence, kde je velikost okna nekonzistence dána parametry databáze a sítě. ŠKOMAM 2012-12- 2/2/2012

Techniky Quorum systems Mějme N replik. Při zápisu rozešleme operaci na všechny repliky a operaci považujeme za úspěšnou, pokud se provede alespoň na W serverech. Při čtení pak musí odpovědět alespoň R serverů. Pokud nastavíme R + W > N, tak můžeme mít striktní konzistenci operace. ŠKOMAM 2012-13- 2/2/2012

Techniky Quorum systems Mějme N replik. Při zápisu rozešleme operaci na všechny repliky a operaci považujeme za úspěšnou, pokud se provede alespoň na W serverech. Při čtení pak musí odpovědět alespoň R serverů. Pokud nastavíme R + W > N, tak můžeme mít striktní konzistenci operace. ŠKOMAM 2012-13- 2/2/2012

Techniky Quorum systems Mějme N replik. Při zápisu rozešleme operaci na všechny repliky a operaci považujeme za úspěšnou, pokud se provede alespoň na W serverech. Při čtení pak musí odpovědět alespoň R serverů. Pokud nastavíme R + W > N, tak můžeme mít striktní konzistenci operace. ŠKOMAM 2012-13- 2/2/2012

Techniky Quorum systems Mějme N replik. Při zápisu rozešleme operaci na všechny repliky a operaci považujeme za úspěšnou, pokud se provede alespoň na W serverech. Při čtení pak musí odpovědět alespoň R serverů. Pokud nastavíme R + W > N, tak můžeme mít striktní konzistenci operace. ŠKOMAM 2012-13- 2/2/2012

Techniky Další používané techniky Dvoufázový protokol zamykání - zamykací protokol, který zajistí striktní konzistenci při zápisu. Paxos - další protokol, který zajištuje striktní konzistenci při zápisu. Protokol je flexibilnejší než dvoufázový protokol, jelikož nedochází k explicitnímu zamykání, ale při konfliktech muže dojít k odmítnutí zápisu (i opakovanému). Vektorové hodiny - technika pro řešení nekonzistence během čtení dat. ŠKOMAM 2012-14- 2/2/2012

Techniky Další používané techniky Dvoufázový protokol zamykání - zamykací protokol, který zajistí striktní konzistenci při zápisu. Paxos - další protokol, který zajištuje striktní konzistenci při zápisu. Protokol je flexibilnejší než dvoufázový protokol, jelikož nedochází k explicitnímu zamykání, ale při konfliktech muže dojít k odmítnutí zápisu (i opakovanému). Vektorové hodiny - technika pro řešení nekonzistence během čtení dat. ŠKOMAM 2012-14- 2/2/2012

Techniky Další používané techniky Dvoufázový protokol zamykání - zamykací protokol, který zajistí striktní konzistenci při zápisu. Paxos - další protokol, který zajištuje striktní konzistenci při zápisu. Protokol je flexibilnejší než dvoufázový protokol, jelikož nedochází k explicitnímu zamykání, ale při konfliktech muže dojít k odmítnutí zápisu (i opakovanému). Vektorové hodiny - technika pro řešení nekonzistence během čtení dat. ŠKOMAM 2012-14- 2/2/2012

Techniky Vektorové hodiny Vektorové hodiny Vektorové hodiny jsou v podstatě n-tice dvojic (server, počítadlo). Každý objekt na serveru má přiřazeny jedny vektorové hodiny. Umožňují vyřešit následnost operací a detekovat, že dva objekty jsou v konfliktu. ŠKOMAM 2012-15- 2/2/2012

Techniky Vektorové hodiny Vektorové hodiny Vektorové hodiny jsou v podstatě n-tice dvojic (server, počítadlo). Každý objekt na serveru má přiřazeny jedny vektorové hodiny. Umožňují vyřešit následnost operací a detekovat, že dva objekty jsou v konfliktu. ŠKOMAM 2012-15- 2/2/2012

Techniky Vektorové hodiny Vektorové hodiny Vektorové hodiny jsou v podstatě n-tice dvojic (server, počítadlo). Každý objekt na serveru má přiřazeny jedny vektorové hodiny. Umožňují vyřešit následnost operací a detekovat, že dva objekty jsou v konfliktu. ŠKOMAM 2012-15- 2/2/2012

Techniky Vektorové hodiny Příklad U nějakého příspěvku XY máme počítadlo, které udává, kolika lidem se příspěvek ĺıbil. Zároveň může kdokoli svůj zájem zrušit stiskem tlačítka Dislike. Číslo 4 je uloženo na serveru A a je replikováno na serverech B a C. ŠKOMAM 2012-16- 2/2/2012

Techniky Vektorové hodiny Příklad U nějakého příspěvku XY máme počítadlo, které udává, kolika lidem se příspěvek ĺıbil. Zároveň může kdokoli svůj zájem zrušit stiskem tlačítka Dislike. Číslo 4 je uloženo na serveru A a je replikováno na serverech B a C. ŠKOMAM 2012-16- 2/2/2012

Techniky Vektorové hodiny Příklad U nějakého příspěvku XY máme počítadlo, které udává, kolika lidem se příspěvek ĺıbil. Zároveň může kdokoli svůj zájem zrušit stiskem tlačítka Dislike. Číslo 4 je uloženo na serveru A a je replikováno na serverech B a C. ŠKOMAM 2012-16- 2/2/2012

Techniky Vektorové hodiny Příklad Při kliknutí na tlačítko Like se odešle na databázi událost inkrementace obĺıbenosti XY. Pokud požadavek zpracuje server A: inkrementuje se číslo 4 na 5 a vytvoří se k číslu vektorové hodiny (A,1). Pokud po dalším kliknutí (jiným uživatelem) požadavek opět zpracuje server A: inkrementuje se číslo 5 na 6 a vytvoří se k číslu vektorové hodiny (A,2). ŠKOMAM 2012-17- 2/2/2012

Techniky Vektorové hodiny Příklad Při kliknutí na tlačítko Like se odešle na databázi událost inkrementace obĺıbenosti XY. Pokud požadavek zpracuje server A: inkrementuje se číslo 4 na 5 a vytvoří se k číslu vektorové hodiny (A,1). Pokud po dalším kliknutí (jiným uživatelem) požadavek opět zpracuje server A: inkrementuje se číslo 5 na 6 a vytvoří se k číslu vektorové hodiny (A,2). ŠKOMAM 2012-17- 2/2/2012

Techniky Vektorové hodiny Příklad Při kliknutí na tlačítko Like se odešle na databázi událost inkrementace obĺıbenosti XY. Pokud požadavek zpracuje server A: inkrementuje se číslo 4 na 5 a vytvoří se k číslu vektorové hodiny (A,1). Pokud po dalším kliknutí (jiným uživatelem) požadavek opět zpracuje server A: inkrementuje se číslo 5 na 6 a vytvoří se k číslu vektorové hodiny (A,2). ŠKOMAM 2012-17- 2/2/2012

Techniky Vektorové hodiny Příklad Dochází k pravidelnému vyměňování informací mezi servery. Hodnota i s vektorovými hodinami se tedy rychle zpropaguje na další servery. Poté dojde k výpadku serveru A. ŠKOMAM 2012-18- 2/2/2012

Techniky Vektorové hodiny Příklad Dochází k pravidelnému vyměňování informací mezi servery. Hodnota i s vektorovými hodinami se tedy rychle zpropaguje na další servery. Poté dojde k výpadku serveru A. ŠKOMAM 2012-18- 2/2/2012

Techniky Vektorové hodiny Příklad Dochází k pravidelnému vyměňování informací mezi servery. Hodnota i s vektorovými hodinami se tedy rychle zpropaguje na další servery. Poté dojde k výpadku serveru A. ŠKOMAM 2012-18- 2/2/2012

Techniky Vektorové hodiny Příklad Dojdou dva paralelní požadavky na změnu hodnoty obĺıbenosti XY. Jeden požadavek zpracuje server B: inkrementuje se číslo 6 na 7 a vytvoří se k číslu vektorové hodiny (A,2)(B,1). Další požadavek zpracuje server C (tento požadavek naopak ruší předchozí událost Like ): dekrementuje se číslo 6 na 5 a vytvoří se k číslu vektorové hodiny (A,2)(C,1). ŠKOMAM 2012-19- 2/2/2012

Techniky Vektorové hodiny Příklad Dojdou dva paralelní požadavky na změnu hodnoty obĺıbenosti XY. Jeden požadavek zpracuje server B: inkrementuje se číslo 6 na 7 a vytvoří se k číslu vektorové hodiny (A,2)(B,1). Další požadavek zpracuje server C (tento požadavek naopak ruší předchozí událost Like ): dekrementuje se číslo 6 na 5 a vytvoří se k číslu vektorové hodiny (A,2)(C,1). ŠKOMAM 2012-19- 2/2/2012

Techniky Vektorové hodiny Příklad Na základě hodnot vektorových hodin lze detekovat, že hodnoty ze serverů B a C jsou v paralelních větvích. 5 (A,1) 6 (A,2) 7 (A,2)(B,1) 5 (A,2)(C,1) ŠKOMAM 2012-20- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Příklad Když si servery B a C vzájemně vymění hodnoty obĺıbenosti XY, pak musíme být schopni nějak sestavit skutečnou hodnotu. Stačí, když si zapamatujeme provedené operace nad hodnotou na serveru. Tyto operace se vždy zapisují do tzv. log souboru kvůli zotavení při pádu serveru. Oba servery tedy sestaví z těchto operací a původní společné hodnoty dvou paralelních verzí verzi novou a přiřadí výsledné hodnotě (6) vektorové hodiny (A,2)(B,1)(C,1). Když se server A zotaví, nejprve porovná své vektorové hodiny (A,2) s vektorovými hodinami (A,2)(B,1)(C,1), a protože jsou obsaženy v nových hodinách jeho sousedů, hodnota se jednoduše přepíše a vektorové hodiny se aktualizují. ŠKOMAM 2012-21- 2/2/2012

Techniky Vektorové hodiny Vektorové hodiny Překvapivě se tato metoda dá aplikovat na mnoho operací ve webovém prostředí: komentáře, přiřazování do skupin (nákupní košík). ŠKOMAM 2012-22- 2/2/2012

Techniky Vektorové hodiny Vektorové hodiny - nevýhody Vektorové hodiny mohou nepříjemě narůstat, což není žádoucí. Proto dochází k odstraňování starých částí hodin. K tomu se používá časové razítko pro jednotlivé části. Je nutné stanovit, jak bude probíhat slučování paralelních verzí. V uvedém příkladu může slučování probíhat automaticky; někdy ale mohou být konflikty komplikovanější, takže je nutný zásah uživatele. ŠKOMAM 2012-23- 2/2/2012

Techniky Vektorové hodiny Vektorové hodiny - nevýhody Vektorové hodiny mohou nepříjemě narůstat, což není žádoucí. Proto dochází k odstraňování starých částí hodin. K tomu se používá časové razítko pro jednotlivé části. Je nutné stanovit, jak bude probíhat slučování paralelních verzí. V uvedém příkladu může slučování probíhat automaticky; někdy ale mohou být konflikty komplikovanější, takže je nutný zásah uživatele. ŠKOMAM 2012-23- 2/2/2012

Závěr Závěr NoSQL Motivací pro databázové systémy využívající eventuální konzistenci jsou jednoduchá škálovatelnost a dostupnost. Tyto databázové systémy jsou základem mnoha velkých webových aplikací (sociální sítě, on-line hry, e-shopy, zpravodajské weby). ŠKOMAM 2012-24- 2/2/2012

Závěr Závěr NoSQL Motivací pro databázové systémy využívající eventuální konzistenci jsou jednoduchá škálovatelnost a dostupnost. Tyto databázové systémy jsou základem mnoha velkých webových aplikací (sociální sítě, on-line hry, e-shopy, zpravodajské weby). ŠKOMAM 2012-24- 2/2/2012

Závěr Závěr NoSQL Motivací pro databázové systémy využívající eventuální konzistenci jsou jednoduchá škálovatelnost a dostupnost. Tyto databázové systémy jsou základem mnoha velkých webových aplikací (sociální sítě, on-line hry, e-shopy, zpravodajské weby). ŠKOMAM 2012-24- 2/2/2012

Díky za pozornost! Google (BigTable) Amazon (Amazon DynamoDB) Facebook Last.fm Twitter BBC (CouchDB) Wiley, Springer, Oxford press, Elsevier (MarkLogic) SourceForge, Guardian (MongoDB) The New York Times (MongoDB) ŠKOMAM 2012-25- 2/2/2012