Řízení souběžného přístupu k datům v systémech řízení báze dat

Rozměr: px
Začít zobrazení ze stránky:

Download "Řízení souběžného přístupu k datům v systémech řízení báze dat"

Transkript

1 Bankovní institut vysoká škola Praha Katedra matematiky, statistiky a informačních technologií Řízení souběžného přístupu k datům v systémech řízení báze dat Bakalářská práce Autor: Petr Havlas Informační technologie, správce informačních systémů Vedoucí práce: Ing. Michal Valenta, Ph.D. Praha Červen, 2012

2 Prohlášení: Prohlašuji, ţe jsem bakalářskou práci zpracoval samostatně a v seznamu uvedl veškerou pouţitou literaturu. Svým podpisem stvrzuji, ţe odevzdaná elektronická podoba práce je identická s její tištěnou verzí, a jsem seznámen se skutečností, ţe se práce bude archivovat v knihovně BIVŠ a dále bude zpřístupněna třetím osobám prostřednictvím interní databáze elektronických vysokoškolských prací. V Praze, dne Podpis autora

3 Poděkování: Děkuji Ing. Michalu Valentovi Ph.D. za podporu a odborné vedení během mé práce.

4 Anotace Bakalářská práce Řízení souběţného přístupu k datům v systémech řízení báze dat je zaměřena na představení základních mechanismů pouţívaných pro řízení paralelního přístupu k datům v systémech řízení báze dat a provádí porovnání implementace v databázovém systému Oracle a PostgreSQL. Klíčová slova Řízení souběţného přístupu, dvoufázové zamykání, multiversion concurrency control, transakce, uváznutí, uspořádatelnost rozvrhu, ekvivalence rozvrhu Annotation Bachelor s thesis Concurrency control in database management systems is dealing with basic technics used in database management systems and compare implementation of these technics in Oracle and PostgreSQL databases. Key words Concurrency control, two-phase locking, multiversion concurrency control, transaction, deadlock, schedule serializability, schedule equivalence

5 Obsah 1 ÚVOD TRANSAKCE USPOŘÁDATELNOST Rozvrhovač a rozvrh transakcí Uspořádatelný versus sériový rozvrh IZOLACE TRANSAKCÍ Anomálie Úroveň izolace podle SQL standardu ŘÍZENÍ SOUBĚŢNÉHO PŘÍSTUPU Optimistické a pesimistické metody řízení souběžného přístupu UVÁZNUTÍ Prevence Timeout Detekce a zotavení METODY POUŽÍVANÉ PRO ŘÍZENÍ SOUBĚŽNÉHO PŘÍSTUPU ZÁMKY Dvoufázové zamykání (2PL) Strukturované zamykání TIMESTAMP ORDERING Thomas Write Rule MULTIVERSION CONCURRENCY CONTROL Multiversion timestamp ordering Multiversion 2PL VALIDATION-BASED CONCURRENCY CONTROL ORACLE RDBMS IMPLEMENTACE CONCURRENCY CONTROL V RDBMS ORACLE Zámky MVCC a Undo segment ÚROVNĚ IZOLACE V ORACLE DATABÁZI CHYBY SPOJENÉ SE SOUBĚŢNÝM PŘÍSTUPEM POSTGRESQL IMPLEMENTACE CONCURRENCY CONTROL V POSTGRESQL Zámky Implementace MVCC ÚROVNĚ IZOLACE V POSTGRESQL ZÁVĚR

6 1 Úvod Tato práce se zabývá problematikou řízení souběţného přístupu (concurrency control) v databázovém stroji, jejím cílem je přinést přehled základních technik, postupů a protokolů - první část obsahuje úvod do problematiky, přehled základních termínů z oblasti transakčního zpracování a řízení souběţného přístupu, druhá část je jiţ zaměřena na konkrétní protokoly vyuţívané pro řízení souběţného přístupu a poslední část práce se věnuje implementaci ve vybraných relačních databázích pro porovnání jsem vybral RDBMS Oracle, jako jednoho z hlavních představitelů komerčního databázového software a PostgreSQL, jako zástupce pokročilých Open source řešení. 1.1 Transakce Transakce je obvykle definována jako logická jednotka databázového zpracování, obsahuje jednu nebo více operací přístupu k databázi (vloţení, smazání, modifikace, a nebo čtení dat). Pro zajištění integrity dat musí transakce splňovat tzv. ACID vlastnosti, kde ACID jsou první písmena vlastností Atomicity (atomičnost), Consistency (konzistence), Isolation (izolovanost) a Durability (trvalost). Atomicita určuje, ţe transakce je vţdy vykonána jako jedna operace, jako celek. Znamená to tedy, ţe všechny operace v transakci jsou buď úspěšně provedeny, nebo se neprovede ţádná - účelem je zajistit konzistentní data v případě poruchy databázového stroje. Konzistence zajišťuje, ţe pokud je databáze konzistentní před započetím transakce, úspěšné provedení transakce uvede databázi opět do konzistentního stavu. Toto je zodpovědností vývojáře nebo uţivatele, který transakci sestavuje. Izolovanost umoţňuje paralelní provádění transakcí, musí zajistit, ţe výsledek paralelně prováděných transakcí bude stejný jako při sekvenčním zpracování, nesmí tedy docházet k ovlivňování mezi současně běţícími transakcemi. Trvalost znamená, ţe změny provedené úspěšně dokončenou transakcí jsou persistentní, nesmí dojít k jejich ztrátě při poruše databázového systému. 6

7 1.2 Uspořádatelnost Pro databázové zpracování je typické, ţe probíhají stovky nebo tisíce transakcí za vteřinu a je tedy velmi pravděpodobné, ţe dvě nebo více operací budou pracovat se stejnými daty. Jedním z důleţitých úkolů databázového stroje tedy je zajištění konzistence dat při souběţném zpracování, aby výsledek zpracování souběţných transakcí byl shodný jako při jejich sekvenčním průběhu. Vlastnost provést paralelní transakce tak, ţe výsledek odpovídá sériovému zpracování, se nazývá uspořádatelnost (serializability). Obecně lze uvést, ţe rozvrh transakcí je uspořádatelný, pokud je efekt změn v databázi stejný, jako v případě sériového rozvrhu Rozvrhovač a rozvrh transakcí Rozvrh (schedule) je časově uspořádaná sekvence akcí prováděná jednou nebo vice transakcemi, pro zápis rozvrhu se pouţívají pouze operace READ a WRITE. Nyní předpokládejme rozvrh S, který obsahuje transakce T i a T j, kde i j. Transakce T i obsahuje pouze jednu operaci I j, T j pouze operaci I j a všechny operace pracují se stejný datovým objektem O - existují tedy čtyři moţné kombinace, které musíme brát v úvahu: I i =READ(O), I j =READ(O) - v tomto případě nezáleţí na pořadí, protoţe v obou případech je čtený stejný objekt. I i =READ(O), I j =WRITE(O) kdyţ I i proběhne před I j, tak transakce Ti přečte obsah O ještě před jeho změnou transakcí T j. Pokud se pořadí prohodí, T i přečte hodnotu O změněnou transakcí T j - výsledek tedy záleţí na pořadí instrukcí. I i =WRITE(O), I j =READ(O) jedná se o obdobný případ jako v předchozím bodu, na pořadí záleţí. I i =WRITE(O), I j =WRITE(O) pořadí operací přímo ovlivňuje hodnotu O uloţenou v databázi, protoţe se projeví pouze poslední provedená instrukce WRITE. O operacích, jejichţ pořadí nelze vyměnit, říkáme, ţe jsou konfliktní - instrukce I i a I j jsou konfliktní, pokud patří k různým transakcím, pracují se stejným objektem a alespoň jedna z nich je instrukcí WRITE. Tabulka 1 obsahuje přehledně uspořádané všechny kombinace. 7

8 READ(X) WRITE(X) READ(X) Kompatibilita Konflikt WRITE(X) Konflikt Konflikt Tabulka 1: Kompatibilita operací READ a WRITE Zdroj: (9) Pokud po sobě jdoucí operace I i a I j nejsou konfliktní, můţeme jejich pořadí vyměnit a vytvořit tak rozvrh S' říkáme, ţe rozvrh S' je ekvivalentní rozvrhu S, pokud pořadí všech operací je stejné, s výjimkou těch, na jejichţ pořadí nezáleţí. Pokorný (9) potom definuje ekvivalenci (vzhledem ke konfliktům) rozvrhů S a S' pomocí dvojice podmínek: 1) Pokud se v rozvrhu S vyskytuje READ(O) v transakci T i a tato hodnota vznikla z WRITE (O) v transakci T j, potom toto musí být zachováno i v rozvrhu S'. 2) Jestliţe se v rozvrhu S vyvolává poslední operace WRITE(O) v transakci T i, pak totéţ je nutné zachovat i v rozvrhu S'. Zotavitelnost rozvrhu rozvrh nazýváme zotavitelným (recoverable) pokud v případě transakci T i a T j platí, ţe operace WRITE(X) v T i předchází operaci READ(X) transakce T j, ale potvrzení (COMMIT) transakce T j nastane dříve neţ ukončení transakce T i, pokud by potom došlo ke zrušení (ABORT) transakce T i, transakce T j uţ by byla potvrzena a nebylo by moţné obnovit konzistenci dat. Na obrázku 1 je jednoduchá ukázka nezotavitelného rozvrhu transakcí T 1 a T 2, obrázek 2 potom obsahuje tentýţ rozvrh, upravený tak, aby splňoval podmínky zotavitelnosti. T 1 T 2 WRITE(X) READ(X) WRITE(X) COMMIT ABORT Obrázek 1: Nezotavitelný rozvrh Zdroj: autor T 1 T 2 WRITE(X) READ(X) WRITE( ABORT COMMIT Obrázek 2: Zotavitelný rozvrh Zdroj: autor V některých případech můţe zrušení jedné transakce vést k nutnosti zrušit také další transakce, toto chování se nazývá kaskádové rušení (cascading aborts). Zabránit tomuto chování se dá tím, ţe transakce čte pouze potvrzené změny. Pokud je rozvrh odolný proti kaskádovému rušení, znamená to, ţe je také zotavitelný, ale pro zotavitelný rozvrh jiţ nemusí 8

9 platit, ţe je zároveň odolný proti kaskádovému rušení. Na obrázku 3a je zotavitelný rozvrh, ale pokud provedeme zrušení transakce T 1, musíme také provést zrušení transakce T 2, protoţe pracovala s neplatnou hodnotou X. Upravený rozvrh 3b jiţ tento problém řeší. T 1 T 2 WRITE() READ(X) WRITE(X) ABORT ABORT Obrázek 3: Kaskádové rušení Zdroj: autor T 1 T 2 READ(X) WRITE(X) WRITE(X) ABORT COMMIT a) b) Uspořádatelný versus sériový rozvrh O sériovém rozvrhu mluvíme v případě, ţe všechny operace transakce T x jsou dokončeny před první operací transakce T y atd. T 1 T 2 X (X=100) Y (Y=100) READ(X); X=X+10 WRITE(X) 110 READ(Y); Y=Y-5 WRITE(Y) 95 READ(X); X=X*2 WRITE(X) 220 READ(Y); Y=Y+45 WRITE(Y) Obrázek 4: Sériový rozvrh 1 Zdroj: autor T1 T2 X (X=100) Y (Y=100) READ(X); X=X*2 WRITE(X) 200 READ(Y); Y=Y+45 WRITE(Y) 145 READ(X); X=X+10 WRITE(X) 210 READ(Y); Y=Y-5 WRITE(Y) Obrázek 5: Sériový rozvrh 2 Zdroj: autor Korektním rozvrhem označujeme rozvrh, po jehoţ dokončení je databáze ve stejném stavu, jako po dokončení některého sériového rozvrhu. Korektnost rozvrhu zajišťuje jeho 9

10 uspořádatelnost. Uspořádatelností rozvrhu rozumíme fakt, ţe rozvrh je nějakým způsobem ekvivalentní se sériovým rozvrhem (dále si představíme pohledovou a konfliktovou ekvivalenci). Platí, ţe kaţdý sériový rozvrh je uspořádatelný, ale jiţ neplatí, ţe kaţdý uspořádatelný rozvrh je sériový. O dvojici rozvrhů S a S' můţeme prohlásit, ţe jsou pohledově ekvivalentní, pokud splňují následující trojici podmínek (10): 1. Pokud transakce T i čte úvodní hodnotu objektu O v rozvrhu S, musí ji číst také v rozvrhu S'. 2. Pokud transakce T i čte v rozvrhu S objekt O zapsaný transakcí T j, tak v rozvrhu S' musí T i také číst O zapsaný transakcí T j. 3. Pro kaţdý objekt O platí, ţe transakce, která tento objekt zapsala poslední v S, musí ho poslední zapsat také v S'. Pokud je rozvrh pohledově ekvivalentní se sériovým rozvrhem, říkáme o něm, ţe je pohledově uspořádatelný. Dvojice rozvrhů je konfliktově ekvivalentní, pokud relativní pořadí konfliktních operací (viz Tabulka 1) je stejné v obou rozvrzích (12), rozvrh označujeme jako konfliktově uspořádatelný, pokud je konfliktově ekvivalentní s nějakým sériovým rozvrhem. Můţe platit, ţe korektní rozvrh není podle uvedené definice ekvivalentní s ţádným sériovým rozvrhem. Test na konfliktovou uspořádatelnost se skládá ze dvou kroků: Krok 1: zjištění konfliktních párů víme, ţe konflikt vzniká, pokud různé transakce provedou operace nad stejným objektem a alespoň jedna z těchto operací je WRITE, sledujeme tedy situace, kdy transakce Ti čte objekt, který předtím transakce Tj zapsala, transakce Ti zapisuje objekt, který předtím přečetla transakce Tj, a nebo transakce Ti zapisuje objekt, který jiţ předtím zapsala transakce Tj. 10

11 Mějme rozvrh S trojice transakcí T1,T2 a T3 T1 T2 T3 READ(X) WRITE(X) WRITE(X) READ(Y) WRITE(Y) WRITE(Y) WRITE(X) V rozvrhu S můţeme nalézt celkem pět konfliktních párů: 1. Transakce T2 zapisuje objekt X poté co transakce T1 tento objekt přečetla. 2. Transakce T1 zapsala X po zápisu X transakcí T2. 3. Transakce T1 čte Y, který jiţ předtím zapsala transakce T3. 4. Transakce T1 zapisuje Y poté, co Y zapsala transakce T3. 5. Transakce T3 zapisuje X po transakci T1. Krok 2: vytvoření a vyhodnocení precedenčního grafu - začneme zakreslením uzlů pro transakce T1, T2 a T3, poté jednotlivé konfliktní operace zakreslíme jako hrany orientovaného grafu. T1 RW(X) WW(X) T2 WW(Y) WW(X) WR(Y) T3 Obrázek 6: Precedenční graf rozvrhu transakcí Zdroj: autor Pokud je vytvořený graf acyklický, znamená to, ţe daný rozvrh je konfliktově ekvivalentní se sériovým rozvrhem (je konfliktově uspořádatelný). V našem případě je vytvořený precedenční graf cyklický, daný rozvrh tedy není konfliktově uspořádatelný. 11

12 Pokud bych měl shrnout vztah mezi vlastnostmi transakčních rozvrhů uvedenými v předchozím textu, lze to přehledně provést pomocí Vennova diagramu: všechny rozvrhy uspořádatelné rozvrhy pohledově uspořádatelné rozvrhy konfliktově uspořádatelné rozvrhy zotavitelné rozvrhy rozvrhy odolné proti kaskádovému rušení sériové rozvrhy Jak je z diagramu zřejmé, platí, ţe kaţdý sériový rozvrh splňuje všechny dříve uvedené vlastnosti je uspořádatelný (i pohledově a konfliktově), je odolný proti kaskádovému rušení a je zotavitelný. Na druhou stranu jiţ neplatí, ţe kaţdý uspořádatelný rozvrh je zotavitelný a odolný proti kaskádovému rušení, nebo ţe zotavitelný rozvrh je nutně také uspořádatelný. Obrázek 7: Vztah mezi různými druhy rozvrhů Zdroj: upraveno podle (1) a (5) 1.3 Izolace transakcí Jedním z nejdůleţitějších úkolů databázového stroje je zajistit izolaci transakcí, v této kapitole na tuto vlastnost nahlédneme z pohledu SQL standardu (19). V SQL standardu se izolace a úroveň izolace definuje za pomocí anomálií (phenomena), které databázový systém umoţňuje. 12

13 1.3.1 Anomálie Rozlišujeme čtyři základní druhy anomálií ztráta aktualizace (lost update), dočasná aktualizace (dirty read), neopakovatelné čtení (non-repeatable read) a fantóm (phantom read) Ztráta aktualizace T1 a ztraceny. Ztráta aktualizace nastane v případě, ţe jedna transakce přepíše výsledek druhé. T1 READ(A); A=A+20 WRITE(A) COMMIT T2 READ(A); A=A+10 WRITE(A) COMMIT Obrázek 8: Ztráta aktualizace Zdroj: autor Jak je vidět z rozvrhu transakcí T 1 a T 2, změny transakce T 2 jsou přepsány transakcí Dočasná aktualizace Zdrojem této anomálie je čtení nepotvrzených dat - na jednoduchém příkladu si můţeme předvést, jak k tomuto problému dojde uvaţujme dvě transakce T 1 a T 2 : T 1 sníţí obsah A o 5, následně transakce T 2 přečte obsah A dříve, neţ dojde k potvrzení transakce T 1 a navýší B o hodnotu A. T1 READ(A); A=A-5 WRITE(A) ROLLBACK T2 READ(A) READ(B);B=B+A WRITE(B) COMMIT Obrázek 9: Rozvrh s výskytem dirty read Zdroj: autor Pokud v dalším kroku dojde ke zrušení transakce T 1, nastane problém - transakce T 2 obsahuje nyní jiţ neplatná data, protoţe hodnota A se kterou pracovala, vlastně nikdy neexistovala. 13

14 Neopakovatelné čtení Podstatou této anomálie je čtení dat před změnou a po potvrzení této změny - transakce T 1 přečte řádek, transakce T 2 tento řádek změní a je potvrzena. Kdyţ nyní transakce T 1 přečte opět stejný řádek, dostane jinou hodnotu, neţ při prvním čtení. T1 READ(A) READ(A) COMMIT T2 READ(A); A=A+10 WRITE(A) COMMIT Obrázek 10: Rozvrh s neopakovatelným čtením Zdroj: autor Fantóm Jedná se o podobný problém, jako v případu neopakovatelného čtení, jenom s tím rozdílem, ţe se změní počet vrácených řádků transakce T 1 přečte mnoţinu řádků, která odpovídá nějaké podmínce, potom transakce T 2 smaţe nebo vloţí řádek, který také odpovídá podmínce z transakce T 1 a je potvrzena. Pokud nyní T 1 zopakuje původní dotaz, vrátí se jí rozdílný počet řádků, neţ v prvním případu Úroveň izolace podle SQL standardu SQL standard rozlišuje čtyři úrovně izolace transakcí READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ a SERIALIZABLE. Úroveň izolace SQL transakce určuje úroveň, po jakou jsou data v této transakci ovlivňována paralelně běţícími transakcemi, a po jakou úroveň můţe tato transakce ovlivňovat data ostatních transakcí. Podle SQL standardu je ve všech čtyřech úrovních zaručeno, ţe transakce proběhne buď celá, nebo vůbec a ţe nemůţe dojít k fenoménu ztracené aktualizace. Implicitní úrovní izolace transakce je podle standardu SERIALIZABLE. Dirty reads Non-repeatable read Phantom READ UNCOMMITTED možné možné možné READ COMMITTED nemožné možné možné REPEATABLE READ nemožné nemožné možné SERIALIZABLE nemožné nemožné nemožné Tabulka 2: Úrovně izolace a fenomény podle standardu SQL Zdroj: (19) 14

15 1.4 Řízení souběžného přístupu Databázi lze zjednodušeně definovat také jako konečnou mnoţinu zdrojů, ke kterým paralelně přistupují uţivatelé (8). Uţivatelé interagují s databázovým systémem pomocí transakcí, coţ jak jsme si ukázali dříve, jsou sekvence operací čtení a zápisu. Transakci je v případě paralelního zpracování nutné brát nejen jako jednotku zpracování nebo práce, ale také jako jednotku konzistence, ve smyslu, ţe databázi dostává z jednoho konzistentního stavu do druhého. Řízení souběţného přístupu (Concurrency Control) má potom za úkol zajistit, ţe je konzistence zachována také při paralelním zpracování a přístupu ke zdrojům databáze Optimistické a pesimistické metody řízení souběžného přístupu Jedním z mechanismů poţívaným pro řízení souběţného přístupu jsou zámky. Transakce musí před přístupem k objektu získat zámek nad tímto objektem, příkladem těchto protokolů můţe být např. dvoufázové zamykání (podrobněji se budu těmito protokoly zabývat v kapitole 2.1). Protoţe tyto protokoly implicitně předpokládají, ţe můţe dojít ke konfliktu transakcí a předcházejí tomu tím, ţe objekt uzamknou, i kdyţ ke konfliktu nemusí dojít (a objekt uvolní, aţ kdyţ tato moţnost vyprší), označujeme je jako metody pesimistické (Pessimistic concurrency control). Tento přístup je vhodnější pro prostředí s vyšším výskytem konfliktů. Druhá skupina protokolů je postavena na předpokladu, ţe konflikt je málo častá situace a akce nutné k zajištění integrity databáze se tedy spouští pouze v případu, ţe k tomuto konfliktu dojde. Tento přístup se označuje jako optimistický (Optimistic concurrency control). Protokoly postavené na tomto přístupu neblokují ţádné operace a odsouvají test korektnosti transakce aţ na její závěr, pokud při závěrečném testu zjistí problém, transakci zruší, aby nedošlo k porušení integrity databáze. Protokoly s tímto přístupem jsou vhodné pro nasazení v systémech s malým mnoţstvím konfliktů a s vysokým podílem read-only transakcí. Příkladem tohoto přístupu jsou Validation-based protokoly (viz kapitola 2.3). 15

16 1.5 Uváznutí Korth a Silberschatz (11) definuje uváznutí (deadlock) jako stav systému, kde existuje taková mnoţina transakcí, ţe kaţdá transakce z této mnoţiny čeká na jinou transakci z této mnoţiny. Dále to upřesňuje - existuje mnoţina čekajících transakcí {T 0, T 1,...,T n } taková, ţe T 0 čeká na datový objekt, který drţí T 1, T 1 čeká na objekt drţený transakcí T 2,..., T n-1 čeká na objekt, který drţí T n, která čeká na objekt drţený T 0. V této situaci nemůţe pokračovat ţádná z transakcí. V okamţiku, kdy jiţ k uváznutí dojde, má databáze jedinou moţnost a to je zrušení některé z uváznutých transakcí. Existují dvě základní metody, jak se s problémem uváznutí vypořádat prvním z nich je prevence (deadlock prevention), kde se snaţíme předejít samotnému vzniku uváznutí a druhá moţnost je dopustit vznik uváznutí, následně ho detekovat a zotavit se z tohoto stavu (deadlock detection and deadlock recovery). T1 SHARE_LOCK(X) READ(X) LOCK(Y) T2 SHARE_LOCK(Y) READ(Y) LOCK(X) Obrázek 11: Jednoduchá ukázka uváznutí (deadlock) Zdroj: autor Prevence Existují dva základní přístupy k prevenci uváznutí jedním z nich je zabránění vzájemnému čekání pomocí řazení poţadavků na zámky nebo vyţadováním, aby všechny zámky byly získány najednou. Druhý přístup je částečně podobný detekci uváznutí a v případě, ţe by mohlo dojít k uváznutí, provede zrušení transakce. 16

17 Nejjednodušší realizací prvního přístupu je poţadavek na uzamčení všech datových objektů, které transakce bude vyuţívat, ještě před začátkem jejího běhu budou tedy zamčeny všechny poţadované datové objekty, nebo ţádný. Nevýhodou této metody je například, ţe před začátkem transakce je velmi náročné predikovat objekty k uzamčení, nebo nízké vyuţití datových objektů, protoţe je mnoho z nich často zamčeno a to i po velmi dlouhou dobu. Tato metoda je pouţívána například v konzervativním dvoufázovém zamykání (Conservative 2PL, C2PL). Druhý protokol zaloţený na tomto přístupu vyţaduje setřídění všech datových objektů (např. pokud dochází k zamykání po datových blocích, můţeme pouţít třídění podle jejich fyzické adresy) a zajištění, ţe transakce zamyká objekty podle tohoto pořadí. Pokud transakce uzamkne objekt O n, jiţ nemůţe dojít k poţadavku na uzamčení objektu O n-1, který podle setřídění tomuto objektu předchází. Předpokládejme transakci T 1, která čeká na zámek objektu O 0, drţený T 0 ; T 2 čeká na zámek O 1, drţený T 1 ;...;T n čeká na zámek na objektu O n-1, drţený transakcí T n-1 a T 1 čeká na zámek objektu O n, drţený transakcí T n. Pokud T 1 drţí zámek objektu O 1 a čeká na zámek O 0, musí platit, ţe O 1 <O 0 podle pořadí objektů. Podobně O i <O i-1 pro i=2,3,...,n. Protoţe T 0 drţí zámek na O 0 a zároveň čeká na O n, tak plyne, ţe A 0 <A n. Máme tedy A 0 <A n <A n-1 <...<A 1 <A 0 a to je nemoţné, protoţe by muselo platit, ţe A0<A0 k uváznutí tedy nemůţe dojít. Jak je jiţ dříve uvedeno, ve druhém přístupu se systém rozhoduje, jestli transakci nechá čekat, nebo ji zruší. Vyuţívá se koncept časových razítek (timestamp) transakcí, která jednoznačně identifikují kaţdou transakci, typicky jsou časová razítka zaloţena na pořadí startu transakcí, takţe platí, ţe pokud transakce T i startuje před transakcí T j, potom časové razítko Ts(T i ) < Ts(T j ). Pro rozhodnutí, jestli transakci zrušit nebo nechat čekat, se vyuţívá dvojice algoritmů wait-die a wound-wait. 17

18 Wait-die Jedná se o nepreemtivní techniku kdyţ transakce T i datový objekt drţený transakcí T j, transakci T i bude umoţněno čekání pouze v případě, ţe její časová značka je niţší neţ časová značka transakce T j, tedy transakce Ti musí být starší neţ transakce Tj. Pokud toto neplatí, transakce Ti je zrušena a provede se rollback. T1 T2 T3 T4 LOCK(A); READ(A) LOCK(B);WRITE(B) UNLOCK(A); UNLOCK(B) LOCK(A); Dies LOCK(A); Waits LOCK(A);WRITE(A) LOCK(B);READ(B) LOCK(C);WRITE(C) UNLOCK(B);UNLOCK(C) Obrázek 12: Prevence uváznutí s algoritmem wait-die Zdroj: upraveno podle (6) LOCK(A); Dies LOCK(A);LOCK(D) READ(D);WRITE(A) UNLOCK(A);UNLOCK(D) Typické pro wait-die algoritmus je, ţe starší transakce čeká, aţ mladší uvolní poţadovaný datový objekt, takţe čím je transakce starší, tím je více náchylná k čekání. Pokud je ve wait-die algoritmu transakce T i zrušena a je proveden rollback, protoţe poţadovala data drţená transakcí T j, můţe T i, pokud je restartována, opět spustit stejnou sekvenci operací a pokud jsou data stále uzamčena transakcí T j, dojde opět ke zrušení transakce T i a tato situace se můţe stále opakovat, dokud nedojde k uvolnění poţadovaných dat Wound-wait Je preemptivní technika, jedná se o opak algoritmu wait-die - pokud transakce T i poţaduje data drţená transakcí T j, T i bude čekat pouze v případě, ţe její časové razítko je vyšší neţ časové razítko T j (tedy T i je mladší neţ T j ), jinak je T j zrušena (v algoritmu se pouţívá termín wounded) a je proveden její rollback. Na rozdíl od algoritmu wait-die, v algoritmu wound-wait starší transakce nikdy nečeká na mladší. 18

19 T1 T2 T3 T4 LOCK(A); READ(A) LOCK(B);WRITE(B) UNLOCK(A); UNLOCK(B) LOCK(A); Waits LOCK(A); Waits LOCK(A);WRITE(A) LOCK(B);READ(B) Wounded Obrázek 13: Prevence uváznutí s algoritmem wound-wait Zdroj: upraveno podle (6) LOCK(A); Waits LOCK(A);LOCK(D) READ(D);WRITE(A) UNLOCK(A);UNLOCK(D) Pokud transakce T j poţaduje data drţená starší transakcí T i, je transakce T i zrušena a je proveden rollback. Pokud dojde k restartu transakce T i, ta nyní čeká na uvolnění dat transakcí T j, oproti algoritmu wait-die tedy můţe docházet k niţšímu výskytu operace rollback Timeout Řešení uváznutí pomocí časového limitu (timeout) je metodou na rozmezí mezi prevencí, kde k uváznutí nemůţe dojít, a detekcí. Funguje na jednoduchém principu, kdy je stanoven časový limit pro získání zámku a pokud se to transakci nepodaří, dojde ke zrušení transakce a je proveden rollback. Pokud tedy de facto jiţ došlo k uváznutí, po zrušení jedné z transakcí dojde k uvolnění a ostatní transakce mohou pokračovat. Tento algoritmus je poměrně jednoduchý na implementaci, ale je vhodný spíše pro systémy s kratšími transakcemi a je také citlivý na správné nastavení hodnoty čekání na získání zámku Detekce a zotavení Uváznutí se většinou týká pouze malého počtu transakcí, takţe můţe být výhodné, místo prevence, řešit tento problém aţ v případě, ţe k němu dojde. Aby to bylo moţné, musí databázový stroj periodicky monitorovat informace o zámcích, musí existovat algoritmus pro identifikaci uváznutí a systém musí provést zotavení z tohoto uváznutí. Pro popis a detekci uváznutí se pouţívá orientovaný graf, který se nazývá graf čekání (wait-for graph). 19

20 Wait-for graph Mnoţina uzlů tohoto grafu odpovídá mnoţině všech aktivních transakcí v systému, hranou je potom orientovaná dvojice T i T j, kde transakce T i čeká na uvolnění zámku drţeného transakcí T j. Manaţer zámků periodicky upravuje graf podle aktivních transakcí i jejich zámků (drţených i poţadovaných) a pokud v grafu vznikne cyklus, znamená to, ţe v systému došlo k uváznutí. Nejlépe si pouţití grafu čekání předvedeme na konkrétním příkladu - máme rozvrh čtveřice transakcí T1, T2, T3 a T4 (obrázek 9). T1 T2 T3 T4 1 LOCK(A) 2 LOCK(B) 3 LOCK(C) 4 LOCK(D) 5 LOCK(B) 6 LOCK(C) 7 LOCK(D) 8 LOCK(A) Obrázek 14: Rozvrh ilustrující vznik uváznutí Zdroj: autor Nejprve vytvoříme graf čekání po provedení kroku 7, tedy přesně před vznikem uváznutí (obrázek 15). T1 T2 T4 T3 Obrázek 15: Graf čekání před vznikem uváznutí Zdroj: autor Pokud vytvoříme graf po provedení kroku 8 (obrázek 16), vidíme, ţe přibyla hrana T4 T1 a došlo ke vzniku cyklu systém se tedy nyní nachází ve stavu uváznutí. 20

21 T1 T2 T4 T3 Obrázek 16: Graf čekání po vzniku uváznutí Zdroj: autor Zotavení z uváznutí Pokud systém zjistí, ţe se nachází v uváznutí, musí se z této situace nějakým způsobem zotavit nejčastějším řešením potom bývá zrušení některé z transakcí zapojených v uváznutí. Prvním krokem je obvykle výběr vhodné oběti (victim selection) měla by se vybrat transakce, jejíţ zrušení bude mít nejniţší nároky na zdroje. Zde se můţe projevit mnoho faktorů, např. jak dlouho jiţ transakce běţí, s kolika datovými objekty pracuje, kolik jich bude potřebovat pro své dokončení, kolik transakcí ovlivní případný rollback apod. Příkladem můţe být např. patent US společnosti Oracle Victim selection for deadlock detection. Druhým krokem je samotné zrušení, rollback transakce. Nejjednodušším řešení je úplný rollback, tedy zrušení transakce a její restart. Efektivnější je zrušení pouze některých kroků transakce (partial rollback), ale to samozřejmě klade další nároky na systém - je nutné udrţovat dodatečné informace o stavu běţících transakcí (např. sekvence poţadavků a přidělení zámků) a samozřejmě musí být transakce po tomto částečném rollbacku schopna opět pokračovat. Problémem, který je nutné během zotavení řešit, je moţné stárnutí transakcí (starvation). K tomu můţe dojít, pokud je ke zrušení opakovaně vybrána stejná transakce, je tedy nutné zajistit, aby transakce mohla být vybrána pouze v konečném (a malém) počtu případů. 21

22 2 Metody používané pro řízení souběžného přístupu 2.1 Zámky Jedním ze způsobů, jak zajistit uspořádatelnost, je vyţadovat, aby přístup k datovým objektům (v případě databázového stroje jsou to většinou datové bloky nebo řádky v tabulce) byl exkluzivní, tedy pokud jedna transakce přistupuje k objektu, ţádná další ho nemůţe modifikovat. Nejobvyklejším způsobem, jak toto vynutit, je umoţnit transakci přistup k objektu pouze, pokud má v drţení zámek k tomuto objektu. Rozlišujeme dva základní módy uzamčení objektu sdílený, který pokud transakce obdrţí, můţe objekt číst, ale nemůţe ho modifikovat. Exkluzivní zámek potom umoţňuje operace čtení i zápisu. Tabulka 3 zobrazuje moţnou kompatibilitu zámků poţadovaných různými transakcemi nad jedním objektem - pokud si tuto informaci spojíme s informací, jaká operace vyţaduje jaký zámek, asi nás nepřekvapí, ţe kompatibilita operací odpovídá kompatibilitě z tabulky 1 v kapitole o uspořádatelnosti, zvláště pokud si uvědomíme, ţe cílem zámků je zajistit uspořádatelnost transakčního rozvrhu. sdílený exkluzivní sdílený ANO NE exkluzivní NE NE Tabulka 3: Matice kompatibility zámků Zdroj: (11) Pokud transakce T i chce přistupovat k objektu O, musí nejprve získat zámek nad objektem O, pokud objekt O je jiţ uzamčen v nekompatibilním módu jinou transakcí, musí transakce T i čekat, dokud nejsou všechny nekompatibilní zámky uvolněny. Vezměme dvě transakce T 1 ={READ(A), WRITE(A)}a T 2 ={READ(A)}, jejich rozvrh by s vyuţitím zámků mohl vypadat například jako na obrázku

23 T 1 T 2 LOCK-S(A) READ(A) LOCK-S(A) READ(A) UNLOCK(A) LOCK-X(A) WRITE(A) UNLOCK(A) Obrázek 17: Rozvrh transakcí s využitím zamykání Zdroj: autor Je vidět, ţe transakce T 2 mohla získat sdílený zámek na objektu A, protoţe sdílené zámky jsou vzájemně kompatibilní, ale transakce T 1 jiţ musela čekat na získání exkluzivního zámku, dokud transakce T 2 svůj sdílený zámek neuvolnila Dvoufázové zamykání (2PL) Jedním z reálných protokolů zaloţených na zámcích a zajišťujících uspořádatelnost je tzn. dvoufázové zamykání (two-phase locking 2PL). Jedná se protokol široce rozšířený v komerčních databázových systémech, například v databázích Oracle, kde je vyuţíván ve spojení s multiverzováním (viz kapitoly 2.4 a 3). Základem 2PL protokolu jsou tři pravidla (1): 1. Pokud rozvrhovač obdrţí poţadavek na operaci, nejprve otestuje, jestli zámek potřebný pro tuto operaci není v konfliktu s jiţ existujícím zámkem. Pokud ano, rozvrhovač přinutí transakci čekat, dokud se nepodaří zámek přidělit. 2. Kdyţ transakce získá zámek, zámek nemůţe být uvolněn přinejmenším do doby, neţ byla dokončena operace vyţadující zámek. 3. Pokud byl jednou zámek uvolněn, nemůţe transakce jiţ transakce ţádný další zámek získat. Pravidlo tři je příčinou, proč se tento protokol nazývá dvoufázovým. Dělí totiţ transakci na dvě fáze fázi zamykání (growing phase) a fázi odemykání (shrinking phase). V první fázi, fázi zamykání, můţe transakce získávat zámky, ale ţádný zámek nemůţe uvolnit. Ve druhé fázi můţe transakce zámky jiţ pouze uvolňovat (5). Tato základní varianta 23

24 dvoufázového zamykání není odolná proti uváznutí, ani proti kaskádovému abortu a také nezajišťuje zotavitelnost rozvrhu, ale jak si ukáţeme dále, zajišťuje jeho uspořádatelnost. Předpokládejme, ţe existuje mnoţina transakcí T 0,T 1,,T n, které splňují pravidla 2PL a mají neuspořádatelný rozvrh. Neuspořádatelný rozvrh znamená, ţe musí existovat cyklický precedenční graf, předpokládejme tady, ţe existuje precedenční graf obsahující cyklus T 0 T 1 T n-1 T n T 0. Ať t i je čas, kdy transakce T i získala svůj poslední zámek (tento okamţik se nazývá lock point). Pro všechny transakce kde T i T j tedy platí t i <t j. Pro cyklus potom musí platit t 0 <t 1 <t 2 < <t n-1 <t n <t 0 a protoţe nemůţe platit t 0 <t 0, nemůţe ani nastat situace, kdy by pří dodrţeni 2PL v precedenčním grafu vznikl cyklus. Tímto lze tedy dokázat, ţe 2PL vţdy produkuje uspořádatelný rozvrh. Existují různé varianty 2PL, já se alespoň stručně zmíním o dvou z nich konzervativním 2PL (C2PL) a striktním 2PL (S2PL). C2PL se od základního 2PL liší v tom, ţe transakce musí získat všechny zámky, ještě předtím neţ začne. Tímto je zaručeno, ţe transakce, která jiţ získala zámky, nemůţe být blokována jinou transakcí. Toto chování sice v průměru zkracuje čas, po který transakce uzamyká objekt, ale na druhou stranu zase drţí více zámků, neţ v daný okamţik potřebuje. Tím, ţe C2PL musí získat všechny zámky v jednom kroku před začátkem transakce, je odolné vůči uváznutí a také zotavitelné a odolné proti kaskádovému abortu. Poměrně významným omezením C2PL je fakt, ţe pokud transakce nemůţe získat všechny zámky při svém úvodním poţadavku, nezíská ţádný a také to, ţe kaţdá transakce musí na svém počátku deklarovat všechny objekty, které bude číst nebo zapisovat (read a write set) a to není vţdy moţné pro tyto omezení se C2PL příliš nepouţívá. Většina implementací 2PL vyuţívá modifikaci S2PL - tato modifikace se od základního 2PL liší v tom, ţe uvolňuje všechny zámky najednou, při konci transakce (správněji řečeno, je v případě S2PL nutné do konce transakce drţet pouze exkluzivní zámky, varianta, která drţí všechny zámky, se někdy nazývá rigorous 2PL). Tato modifikace není odolná proti vzniku uváznutí, ale zajišťuje zotavitelnost rozvrhu a odolnost proti kaskádovému abortu. 24

25 2.1.2 Strukturované zamykání Zatím jsme uvaţovali zamykání pouze na úrovni určitého objektu, v některých případech pro nás ovšem můţe být výhodnější seskupit objekty do větších celků a umoţnit zamčení těchto celků, tím minimalizovat počet zámků a sníţit reţii spojenou s jejich správou. Pro tyto účely se pouţívá tzv. strukturované zamykání (Multiple granularity locking), pro ilustraci uvaţujme například strukturu jako na obrázku 18. DB A1 A2 F a F b F c r a1 r a2 r an Obrázek 18: Strukturované zamykání Zdroj: upraveno podle (11) Máme databázi, která se dělí na oblasti, kaţdá oblast obsahuje několik souborů, kaţdý soubor obsahuje záznamy. Kaţdý z uzlů je moţné zamknout individuálně, stejně jako v případě 2PL, budeme pouţívat sdílený a exkluzivní zámek. Pokud nyní transakce získá explicitně zámek na některém uzlu, všichni jeho potomci jsou implicitně také zamčeni a to ve stejném módu, jako tento uzel. Předpokládejme transakci T i, která uzamkla celý soubor F a, implicitně jsou také zamčeny všechny záznamy v tomto souboru. Následně chce transakce T j zamknout záznam r a2, ale tento záznam není explicitně uzamčen! Systém tedy, aby zjistil, jestli je moţné záznam zamknout, musí projít hierarchický strom od jeho kořene aţ po záznam r a2 a pokud je některý z uzlů uzamčen v nekompatibilním módu, T j musí čekat. Dále předpokládejme transakci T k, která chce uzamknout celou databázi jak ale systém pozná, ţe někde v celé struktuře není nekompatibilní zámek? Jednou z moţností je prohledat celý strom, tím se ale připravíme o výhodu tohoto konceptu. Lepší je zavést novou kategorii zámků intenční zámky (intention lock) (1). Pokud je uzel uzamčen v intenčním módu, znamená to, ţe některý z potomků tohoto uzlu je explicitně uzamčen intenční zámek je umístěn na všechny předchůdce uzlu dříve, 25

26 neţ je uzel explicitně uzamčen. Rozlišujeme tři nové druhy zámků: intenční sdílený (intention- shared) - explicitní zámky na niţší úrovni jsou pouze sdílené; intenční exkluzivní (intention-exclusive) některý z explicitních zámků na niţší úrovni je exkluzivní; sdílený a intenčně exkluzivní zámek (shared and intention-exclusive) - podstrom tohoto uzlu je explicitně uzamčen sdíleným zámkem a některý z objektů na niţší úrovni je zamčen exkluzivním zámkem. IS IX S SIX X IS Ano Ano Ano Ano Ne IX Ano Ano Ne Ne Ne S Ano Ne Ano Ne Ne SIX Ano Ne Ne Ne Ne X Ne Ne Ne Ne Ne Tabulka 4: kompatibilita zámků při strukturovaném zamykání Zdroj: (11) 2.2 Timestamp Ordering Tyto protokoly vyuţívají pro zajištění uspořádatelnosti techniku časových razítek (timestamp). Kaţdá transakce v okamţik svého vzniku obdrţí unikátní značku TS(T i ). Pokud transakce T i obdrţí timestamp TS(T i ) a transakce T j, která začne po transakci T i, obdrţí timestamp TS(T j ), potom platí, ţe TS(T i ) < TS(T j ). Pro získání časového razítka se obvykle vyuţívají systémové hodiny nebo čítač, který se s kaţdou transakcí navýší, respektive kombinace obou těchto metod. Základním pravidlem Timestamp Ordering protokolu je: pokud operace I i a I j jsou konfliktní, potom je operace I i provedena před I j pokud platí, ţe TS(T i ) < TS(T j ). Představme si precedenční graf rozvrhu S, pokud existuje hrana precedenčního grafu T i T j, tak musí existovat dvojice konfliktních operací I i a I j, kde I i < I j. Jinak řečeno, podle pravidla Timestamp Ordering protokolu platí TS(T i ) < TS(T j ). Pokud v grafu existuje cyklus T 0 T 1 T n-1 T n T 0, potom musí také platit TS(T 0 ) < TS(T 0 ) a to není moţné, takţe není moţný ani vznik cyklu v precedenčním grafu a je zřejmé, ţe tento protokol zaručuje uspořádatelnost. 26

27 Časové razítko není přiřazováno pouze transakcím, ale také pro kaţdý objekt je definována dvojice časových razítek: W-TS(O) obsahuje časovou značku poslední transakce, která provedla úspěšný zápis do objektu O. R-TS(O) obsahuje časovou značku poslední transakce, která provedla úspěšné čtení objektu O. Předpokládejme transakci T i, která chce provést operaci čtení na objektu O, vzhledem k moţným konfliktním operacím mohou nastat dvě situace: TS(T i ) < W-TS(O), to znamená, ţe transakce T i poţaduje hodnotu O, která jiţ byla přepsána, transakce bude tedy zrušena. TS(T i ) W-TS(O), transakce je novější neţ poslední modifikace objektu O, objekt O bude přečten a do R-TS(O) je přiřazena vyšší hodnota z R-TS(O) a TS(T i ). Předpokládejme, ţe transakce T i chce modifikovat (zapsat) objekt O, tedy vyvolat operaci WRITE(O): TS(T i ) < R-TS(O), novější transakce přečetla objekt O, nemůţeme tedy provést modifikaci, protoţe tím by se data přečtená novější transakcí stala neplatná. Transakce bude zrušena. TS(T i ) < W-TS(O), transakce T i se pokouší zapsat zastaralou hodnotu objektu O, dojde tedy ke zrušení transakce. V ostatních případech systém provede zápis a do W-TS(T i ) je vloţena hodnota TS(T i ). Jak jsme si jiţ dříve dokázali, Timestamp Ordering protokoly zajišťují uspořádatelnost, kromě toho také zajišťují odolnost proti uváznutí, protoţe v tomto protokolu nedochází k čekání. Na druhou stranu můţe docházet ke stárnutí transakcí (starvation), pokud sekvence krátkých konfliktních transakcí opakovaně způsobí restart dlouhé transakce. Protokol také můţe vygenerovat nezotavitelený rozvrh, ale dá se rozšířit tak, aby tomuto problému bránil to lze udělat například provedením všech operací WRITE najednou, aţ na konci transakce. 27

28 2.2.1 Thomas Write Rule Představme si, ţe rozvrhovač obdrţel operaci zápisu W i (O) transakce T i poté, co jiţ odeslal ke zpracování operaci zápisu W j (O) pocházející od transakce T j, ale zároveň platí TS(T i )<TS(T j ). Pravidla řazení podle časových razítek vyţadují, aby operace W i (O) byla odmítnuta, ale pokud se jedná o synchronizaci pouze operací zápisu, není toto zamítnutí nutné v Timestamp Ordering protokolech odpovídá sekvence zápisů podle pořadí časových razítek operaci zápisu s nejvyšším časovým razítkem, ostatní operace mohou být ignorovány. Toto zjištění vede k pravidlu, které se nazývá Thomas' Write Rule (Thomasovo pravidlo zápisu). Toto pravidlo říká: nechť transakce T j je transakcí s nejvyšším časovým razítkem, která zapsala do objektu O předtím, neţ rozvrhovač obdrţel poţadavek W i (O). Pokud platí TS(T i )>TS(T j ), provede se operace W i (O) a změní se časové razítko W-TS(O), jinak se operace W i (O) neprovede a dojde pouze ke změně časového razítka W-TS(O). 2.3 Multiversion concurrency control Cílem těchto protokolů je zajistit, aby transakce nikdy nečekala na operaci čtení (nebo dokonce nebyla zrušena). Princip je poměrně jednoduchý během operace zápisu vyniká vţdy nová verze objektu, kaţdý zápis Wi(O) vytvoří vlastní verzi objektu Oi, starší verze objektů nejsou mazány, ale jsou k dispozici pro operace čtení. Jak se tyto nové vlastnosti projeví na konfliktních operacích? Víme, ţe dvě operace jsou konfliktní, pokud kaţdá náleţí k jiné transakci, obě pracují se stejným objektem a alespoň jedna z nich je WRITE. Pro potřeby mutliverzovacího protokolu je nutné tuto definici pouze lehce upravit s tím, ţe aby došlo ke konfliktu, musí obě operace přistupovat ke stejné verzi datového objektu (1)(2). Jaké konflikty jsou tedy moţné podle této upravené definice? Vezměme první typ konfliktu, kdy operace čtení předchází operaci zápisu: Ri(Oj) < Wj(Oj), je zřejmé, ţe k tomuto konfliktu dojít nemůţe, protoţe verze objektu nad kterou by k němu mohlo dojít, v okamţiku čtení ještě ani neexistuje. Konflikt mezi dvěma operacemi WRITE, Wi(Oi) < Wj(Oi) není také moţná, protoţe kaţdý zápis vytváří vlastní verzi objektu. Konflikt je moţný pouze v posledním případu, kdy operace WRITE předchází operaci READ, Wi(Oi) < Rj(Oi). Aby bylo moţné dokázat, ţe rozvrh podle MVCC je uspořádatelný, je třeba rozšířit teorii uspořádatelnosti o další dva typy rozvrhu nebo historie: více-verzový rozvrh (MV) a 28

29 jedno-verzový rozvrh (1V), který je interpretací uţivatelského pohledu na MV rozvrh jako na jednu verzi. Sériový 1V rozvrh je to, co uţivatel vnímá jako správné, je tedy třeba dokázat, ţe kaţdý z MV rozvrhů, které rozvrhovač můţe vytvořit, je ekvivalentní sériovému 1V rozvrhu (1). Vyjděme z definice konfliktové ekvivalence, která říká, ţe MV rozvrh S MV je ekvivalentní 1V rozvrhu S 1V, pokud platí, ţe kaţdý pár konfliktních operací v S MV je ve stejném pořadí také v S 1V. Nyní vezměme jednoduchý rozvrh S MV =W 0 (x 0 ) C 0 W 1 (x 1 ) C 1 R 2 (x 0 ) W 2 (y 2 ) C 2 Vidíme, ţe jediné konfliktní operace jsou W 0 (x 0 ) a R 2 (x 0 ), nyní mapováním verzí objektu na korespondující objekt vytvoříme odpovídající 1V rozvrh S 1V =W 0 (x) C 0 W 1 (x) C 1 R 2 (x) W 2 (y) C 2 Je vidět, ţe jediné dvě konfliktní operace jsou ve stejném pořadí jako v MV rozvrhu, takţe podle definice konfliktové ekvivalence by rozvrhy mely být ekvivalentní. Kdyţ ale prozkoumáme, co čte transakce T 2 v MV a co v 1V rozvrhu, zjistíme, ţe je zde rozpor v MV rozvrhu čte T 2 po T 0, ale v 1V rozvrhu čte po T 1. Konfliktovou ekvivalenci tedy nelze pouţít, protoţe operace v MC a 1V jsou z hlediska konfliktů rozdílné. Protoţe tedy konfliktová ekvivalence nejde pouţít, pouţijeme ekvivalenci pohledovou. Ta říká, ţe dva rozvrhy S a S' jsou pohledově ekvivalentní, pokud platí: transakce T i čte první v S, tak musí číst první také v S', transakce T i čte z T j, tak musí stejně číst také v S' a pokud T i poslední zapisuje v S, musí poslední zapisovat také v S'. Pokud nyní porovnáme oba rozvrhy, vidíme, ţe v S MV čte T 2 z T 0, ale v S 1V čte z T 1, tedy rozvrhy nejsou pohledově ekvivalentní. Jako další krok je nutné dokázat, ţe kaţdý MV rozvrh je ekvivalentní sériovému 1V rozvrhu. Bohuţel, jak si ukáţeme na příkladu, nelze jednoduše pouţít precedenční graf, protoţe existují takové MV rozvrhy, pro které neexistuje ekvivalentní 1V rozvrh. Představme si například MV rozvrh S1 S1=W0(x0) C0 R1(x0) W1(x1) C1 R2(x0) C2 29

30 Pokud kaţdou verzi objektu x budeme brát jako nezávislou, dostaneme precedenční graf na obrázku 18. T2 T1 T3 Nyní vytvořme sériový 1V rozvrh S2: S2=W0(x) C0 R1(X) W1(x) C1 R2(x) C2 Obrázek 19: Precedenční graf MV rozvrhu Zdroj: autor Přestoţe S1 je sériový rozvrh a graf je acyklický, není rozvrh S1 pohledově ekvivalentní sériovému 1V rozvrhu S2, protoţe T2 čte v S1 z T0, ale v S2 čte z T1. Pouze podmnoţina sériových MV rozvrhů, která se označuje jako monoversion (v některé literatuře také jako 1-serial) rozvrhy, je ekvivalentní sériové 1V rozvrhu. Monoversion rozvrhem označujeme takový MV rozvrh, kde Ti čte x z Tj a Tj je nejnovější transakce před Ti, která zapsala nějakou verzi x. Všechny multiversion rozvrhy jsou ekvivalentní sériovým 1V rozvrhům, takţe abychom prokázali, ţe MVCC je korektní, musíme ukázat, ţe MV rozvrhy jsou ekvivalentní monoversion rozvrhům. Aby to bylo moţné, je třeba vyuţít tzv. multiversion precedenční graf a platí, ţe MV rozvrh je ekvivalentní monoversion rozvrhu, pokud jeho multiversion precedenční graf je acyklický 1. 1 Formální důkaz např. (1)(2)(12) 30

31 2.3.1 Multiversion timestamp ordering Jako v kaţdém protokolu pracujícím na principu řazení časových razítek, je kaţdé transakci T i před její exekucí přiřazen jedinečný timestamp TS(T i ). Kaţdý zápis datového objektu x vygeneruje novou verzi objektu x i a ke kaţdé verzi je přiřazeno časové razítko transakce, která ji vytvořila. Operace na datovém objektu rozvrhovač překládá do operací nad verzí tohoto objektu: při operaci R i (x) nalezne verzi x k objektu x, kde T k má nejvyšší timestamp TS(T k ) niţší neţ TS(T i ) a tuto verzi přečte. Operace čtení nemůţe nikdy čekat nebo být zrušena. W i (x), pokud existuje operace čtení R j (x k ), kde platí TS(T k ) <=TS(T i ) <=TS(T j ), je operace W i (x) zrušena a proveden restart transakce T i. V ostatních případech je proveden zápis nové verze, nebo v případě i=k je přepsána verze x k. Jak je vidět, operace zápisu můţe být zrušena. Verze, které jiţ nejsou potřeba, jsou odstraňovány - verze x k a x j jsou verze objektu x, pokud platí TS(T k ) < TS(T i ) a zároveň TS(T j ) < TS(T i ), kde TS(T i ) je timestamp nejstarší transakce v systému, potom starší z verzí x j a x k je smazána. Tato základní verze protokolu není zotavitelná, ani odolná proti kaskádovému rušení. Rozšíření, které by tomuto bránilo, je moţné podobně jako u Timestamp protokolu Multiversion 2PL V klasickém 2PL protokolu můţe exkluzivní (pro zápis) zámek na objektu x zabránit transakci v získání sdíleného (pro čtení) zámku. Multiversion 2PL tento konflikt řeší pouţitím více verzí x stejně jako pro ostatní MV protokoly platí, ţe operace zápisu vytvoří novou verzi objektu x a neblokuje tedy čtení. Kaţdá transakce dostane přiřazenu unikátní hodnotu transakčního čítače (jedná se vlastně opět o časové razítko), který se navyšuje s kaţdým potvrzením (commit) v databázi (příkladem tohoto čítače můţe být třeba SCN v databázích Oracle). Pokud transakce provádí operaci čtení, transakce získá sdílený zámek nad objektem a přečte verzi vytvořenou transakcí s hodnotou čítače nejvyšší niţší nebo rovnou čítači transakce, která čte. Pokud transakce provádí zápis, musí nejprve získat exkluzivní zámek, poté zapíše novou verzi, jejíţ čítač zatím nastaví na. Po vykonání všech akcí transakce dojde k jejímu potvrzení čítač se navýší o 1 a hodnota čítače se přiřadí verzi zapsané touto transakcí, dojde k uvolnění všech zámků. 31

32 Potvrzení můţe v daný okamţik provádět vţdy pouze jedna transakce. Mazání starých verzí probíhá obdobným způsobem jako v případě multiversion timestamp ordering protokolu. Popsaný protokol je zotavitelný a je odolný proti kaskádovému rušení, popsaná implementace je postavena na striktním 2PL, ale stejně jako striktní 2PL není odolná proti uváznutí. 2.4 Validation-based concurrency control V případech, kdy většina transakcí je read-only, můţe být počet konfliktů poměrně nízký a reţie spojená s řízením souběţného přístupu, jak jsme si ho ukázali v předchozích kapitolách zbytečně vysoká. V těchto případech tedy můţe být vhodné pouţít protokol, který je zaloţen na optimistickém přístupu, ţe ke konfliktu mezi transakcemi nedochází a případný konflikt řeší aţ na konci běhu transakce. V tomto protokolu kaţdá transakce proběhne ve třech fázích a v pořadí - čtení, validace a zápis: 1. Ve fáze čtení (read phase) jsou provedeny všechny operace transakce, data jsou přečtena z databáze a případné zápisy proběhnou do privátního pracovního prostoru. 2. V okamţiku potvrzení transakce (commit) nastává validační fáze. V jejím průběhu je otestováno, jestli by transakce mohla být v konfliktu s některou z paralelně běţících transakcí. Pokud je to moţné, transakce je zrušena, pracovní prostor je vyčištěn a transakce je restartována. 3. Pokud ve validační fázi není zjištěna moţnost konfliktu, nastává poslední fáze, zápis provedených změn. Data zapsaná do pracovního prostoru transakce jsou zkopírována do databáze. 32

33 Rozvrhovač pro validaci vyuţívá časová razítka transakcí a také informace o průběhu jednotlivých fází. Pro kaţdý pár transakcí T i a T j, kde TS(T i )<TS(T j ) potom musí platit alespoň jedna z trojice podmínek: 1. T i ukončila všechny tři fáze před začátkem T j. 2. T i byla dokončena dříve, neţ T j započala fázi zápisu a zároveň T i nezapisuje ţádná data, která čte T j. 3. T i dokončila svou fázi čtení dříve, neţ ji dokončila T j a T i nezapsala ţádná data, která čte nebo zapisuje T j. První podmínka znamená, ţe transakce proběhnou sériově. Druhá podmínka umoţňuje transakci T j číst data v době, kdy transakce T i ještě modifikovala objekty, ale nemůţe dojít ke konfliktu, protoţe T j nečte stejná data, jako T i modifikuje. T j můţe přepsat data zapsaná transakcí T i, všechny operace WRITE transakce T i proběhly před zápisy transakce T j. Třetí podmínka umoţňuje transakcím T i a T j zapisovat ve stejnou dobu, ale kaţdá z transakcí pracuje s rozdílnou mnoţinou objektů (mezi oběma mnoţinami není ţádný průnik). Validace těchto podmínek také vyţaduje, aby systém pro kaţdou transakci udrţoval seznam čtených a zapisovaných objektů. V průběhu validace také nemůţe dojít k potvrzení ţádné další transakce. Je zřejmé, ţe také existuje nějaká reţie spojená s tímto protokolem, ale pokud je v databázi malé mnoţství konfliktů, můţe tento přístup vést k lepší výkonosti, neţ u protokolů zaloţených na pesimistickém přístupu. Pokud je ovšem počet konfliktů vysoký, má neustálé restartování transakcí velmi negativní dopad na výkon databázového stroje. 33

34 3 Oracle RDBMS Relační databáze firmy Oracle je dnes nejrozšířenějším komerčním databázovým systémem a od verze 1 z roku 1978 dospěla aţ k aktuálně pouţívané verzi Implementace Concurrency Control v RDBMS Oracle Oracle pro zajištění konzistence a paralelního zpracování vyuţívá protokolu na základě dvoufázových zámků a udrţování více verzí (Multiversion 2PL) - Oracle podporuje konzistenci čtení jak na úrovni příkazu, tak na úrovni transakce (záleţí na pouţitém stupni izolace). Jako časové razítko (viz kapitola 2.3 Multiversion Concurrency Control) slouţí tzv. System Change Number (SCN). Zjednodušeně se jedná o číslo, které v čase definuje potvrzenou verzi databáze. Maximální hodnotou tohoto čísla je 2 48 a v okamţiku, kdy dosáhne maxima, dojde k vynulování. Toto má za následek vznik nové inkarnace databáze a s tím spojené následky jako zneplatnění předchozích záloh apod. V následujících kapitolách si ukáţeme, jaké zámky databáze vyuţívá, jak je implementováno MVCC a která omezení jsou s Oracle implementací spjaté. Začátkem transakce je v Oracle databázi vţdy začátek DML nebo DDL operace s výjimkou příkazu SELECT (pokud se nejedná o distribuovaný dotaz). Ukončení se v případu DML musí provést explicitně příkazem COMMIT nebo ROLLBACK, DML příkazy provedou potvrzení implicitně. Při sestavování transakcí je třeba si uvědomit, ţe dojde k potvrzení i provedením DDL operace a nakládat s nimi tedy opatrně Zámky Databáze Oracle pouţívá dvoufázové zamykání, v databázi jsou tedy dva základní módy zámků sdílené a exkluzivní, kde nad daným objektem můţe existovat více sdílených zámků, ale pouze jediný exkluzivní. Oracle umoţňuje zamykat data jak na úrovni celé tabulky, tak na úrovni řádku. Exkluzivní zámek brání sdílení zdrojů a je nutné ho získat, pokud transakce potřebuje modifikovat data, tedy pouze transakce, která tento zámek získá, můţe tato data měnit. Ostatní transakce musí čekat, dokud není zámek uvolněn. Sdílený zámek umoţňuje sdílení zdrojů, více transakcí můţe získat tento zámek nad jedním objektem. Přístup k datům 34

9. Transakční zpracování

9. Transakční zpracování 9. Transakční zpracování 9.1. Transakce... 3 9.1.1. Vlastnosti transakce... 3 9.1.2. Stavy transakce... 4 9.2. Transakce v SQL... 6 9.3. Zotavení po chybách a poruchách... 10 9.3.1. Zotavení využívající

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 15. Otázka : Paralelní procesy v databázích. Transakce, zamykání, uváznutí. Dvoufázový protokol, časová razítka. Obsah : 1 Úvod 2 Paralelní procesy v databázích

Více

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 3 PARALELNÍ PROCESY V DATABÁZÍCH

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 3 PARALELNÍ PROCESY V DATABÁZÍCH Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 3 PARALELNÍ PROCESY V DATABÁZÍCH 1 teorie dosud -aplikace jednouživatelské praxe - databáze současně přístupná více uživatelům, paralelní běh aplikací příklady

Více

Transakční zpracování

Transakční zpracování Transakční zpracování Transakční zpracování Dva základní požadavky na SŘBD: chránit data organizovaná pod daným SŘBD, poskytnout korektní a rychlý asynchronní přístup většímu množství uživatelů. Řešení:

Více

Paralelní přístup k databázi

Paralelní přístup k databázi 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,- 1000,- T1:

Více

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík Transakce a zamykání Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík Základní pojmy Databázová transakce je skupina příkazů, které převedou databázi z jednoho konzistentního stavu do druhého. Transakční

Více

Architektura SW pro transakční zpracování se skládá ze 3 modulů: - manažer dat - rozvrhovač - manažer transakcí

Architektura SW pro transakční zpracování se skládá ze 3 modulů: - manažer dat - rozvrhovač - manažer transakcí Transakce = programová jednotka, která: - zachovává konzistenci databáze - končí v konečném čase - se provede celá nebo vůbec Architektura SW pro transakční zpracování se skládá ze 3 modulů: - manažer

Více

DBS transakční zpracování

DBS transakční zpracování DBS transakční zpracování Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2010 BI-DBS, ZS 2010/11 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal

Více

Transakční zpracování Bezpečnost databází. Vladimíra Zádová, KIN, EF TUL- DBS 1

Transakční zpracování Bezpečnost databází. Vladimíra Zádová, KIN, EF TUL- DBS 1 Transakční zpracování Bezpečnost databází Vladimíra Zádová, KIN, EF TUL- DBS 1 Transakce Transakce systém zpracování transakcí vlastnosti ACID stavy transakce SŘBD a transakční zpracování Řešení transakcí

Více

9. Transakční zpracování

9. Transakční zpracování 9. Transakční zpracování 9.1. Transakce... 3 9.1.1. Vlastnosti transakce... 3 9.1.2. Stavy transakce... 4 9.2. Transakce v SQL... 6 9.3. Zotavení po chybách a poruchách... 10 9.3.1. Zotavení využívající

Více

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti - 13.1 - Kapitola 13: Transakce Koncept transakce Stavy transakce Implementace atomičnosti a trvanlivosti Souběžné spouštění Serializovatelnost Koncept transakce Transakce je posloupnost operací (část

Více

Transakce a zamykání Jiří Tomeš

Transakce a zamykání Jiří Tomeš Transakce a zamykání Jiří Tomeš Administrace MS SQL Serveru (NDBI039) O čem to dnes bude Úvodní opakování základních pojmů Jištění transakcí Speciální konstrukce Typy transakcí Závěrečný souhrn, použité

Více

Transakce. Ing. Marek Sušický, RNDr. Ondřej Zýka

Transakce. Ing. Marek Sušický, RNDr. Ondřej Zýka Transakce Ing. Marek Sušický, RNDr. Ondřej Zýka 1 Obsah Definice Savepoint, autonomní transakce Transakční módy Izolační úrovně Implementace pomocí zámků Implementace pomocí snapshotů Oracle, Microsoft

Více

Databázové systémy. transakce. Tomáš Skopal. * uzamykací protokoly * alternativní protokoly * zotavení

Databázové systémy. transakce. Tomáš Skopal. * uzamykací protokoly * alternativní protokoly * zotavení Databázové systémy Tomáš Skopal transakce * uzamykací protokoly * alternativní protokoly * zotavení Osnova uzamykací protokoly 2PL striktní 2PL uváznutí, prevence fantom alternativní protokoly optimistické

Více

10. blok Logický návrh databáze

10. blok Logický návrh databáze 10. blok Logický návrh databáze Studijní cíl Tento blok je věnován převodu konceptuálního návrhu databáze na návrh logický. Blok se věnuje tvorbě tabulek na základě entit z konceptuálního modelu a dále

Více

Databáze II. 2. přednáška. Helena Palovská

Databáze II. 2. přednáška. Helena Palovská Databáze II 2. přednáška Helena Palovská palovska@vse.cz SQL a aplikace Program přednášky Řízení transakcí v SQL Integritní omezení v SQL Triggery a uložené procedury Zpracování množin záznamů Řízení

Více

Aplikace DBS. Osnova:

Aplikace DBS. Osnova: Aplikace DBS Osnova: 1. Úvod - Co je to informační systém (IS), vazba na DBS? 1.0. Obsah přednášky 1.1. Základní pojmy databází 1.2. Komerční databázové systémy 1.3. Realizace IS 2. OLTP 2.0. Charakteristika

Více

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE FAKULTA INFORMATIKY A STATISTIKY Hlavní specializace: Ekonometrie a operační výzkum Název diplomové práce Optimalizace trasy při revizích elektrospotřebičů Diplomant: Vedoucí

Více

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ZÁLOHOVÁNÍ DAT V DATABÁZI Ing. Lukáš OTTE, Ph.D. Ostrava 2013 Tento studijní materiál vznikl za finanční podpory Evropského

Více

DEFEND LOCATOR FLEET MANAGER v1.8+

DEFEND LOCATOR FLEET MANAGER v1.8+ Strana 1 (celkem 27) DEFEND LOCATOR FLEET MANAGER SOFTWARE sledování a správy vozového parku NÁVOD K POUŽITÍ pro verzi v1.8 a vyšší Rev. 1 / 2011 Návod na pouţití Rev. 1/2011 Strana 2 (celkem 27) Obsah

Více

Obecné zásady účetnictví

Obecné zásady účetnictví Bankovní institut vysoká škola Praha Obecné zásady účetnictví Diplomová práce Bc. Natália Gregušová Červen, 2011 1 Bankovní institut vysoká škola Praha Katedra sociálních a ekonomických věd Obecné zásady

Více

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry. Kapitola Ohodnocené grafy V praktických aplikacích teorie grafů zpravidla graf slouží jako nástroj k popisu nějaké struktury. Jednotlivé prvky této struktury mají často přiřazeny nějaké hodnoty (může jít

Více

DOPLNĚK. Projekt Informační systém základních registrů je spolufinancován Evropskou unií z Evropského fondu pro regionální rozvoj.

DOPLNĚK. Projekt Informační systém základních registrů je spolufinancován Evropskou unií z Evropského fondu pro regionální rozvoj. GLOBÁLNÍ ARCHITEKTURA ZÁKLADNÍCH REGISTRŮ DOPLNĚK Projekt Informační systém základních registrů je spolufinancován Evropskou unií z Evropského fondu pro regionální rozvoj. Obsah 1 Cíle dokumentu...3 2

Více

Sebury F007-EM. Manuál. otisk prstu + čtečka karet. samostatný provoz / Wiegand 26

Sebury F007-EM. Manuál. otisk prstu + čtečka karet. samostatný provoz / Wiegand 26 Sebury F007-EM Manuál otisk prstu + čtečka karet samostatný provoz / Wiegand 26 VARIANT plus, spol. s.r.o., U Obůrky 5, 674 01 TŘEBÍČ, tel.: 568 841 440 technická linka 777 55 77 02 (pracovní doba 7:30

Více

Zotavení z chyb. Databázové systémy

Zotavení z chyb. Databázové systémy Zotavení z chyb Databázové systémy Zotavení z chyb v DBS Úloha: Po chybě obnovit poslední konzistentní stav databáze Třídy chyb: 1. Lokální chyba v ještě nepotvrzené transakci 2. Chyba se ztrátou hlavní

Více

BAKALÁŘSKÁ PRÁCE Společenství vlastníků jednotek

BAKALÁŘSKÁ PRÁCE Společenství vlastníků jednotek VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE FAKULTA MEZINÁRODNÍCH VZTAHŮ Obor: Podnikání a právo BAKALÁŘSKÁ PRÁCE Společenství vlastníků jednotek Autor: Hana Koblížková Vedoucí práce: Mgr. Květoslav Žák PROHLÁŠENÍ

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy 1. Teorie normálních forem Pojem normálních forem se používá ve spojitosti s dobře navrženými tabulkami. Správně vytvořené tabulky splňují 4 základní normální formy, které

Více

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např. 2 přednáška 2 října 2012 10:32 Souborově orientované uchování dat Slabý HW Není možné uchovávat "velká data" - maximálně řádově jednotky MB Na každou úlohu samostatná aplikace, která má samostatná data

Více

Zpráva o šetření. A. Obsah podnětu

Zpráva o šetření. A. Obsah podnětu V Brně dne 9. listopadu 2007 Sp. zn.: 4111/2007/VOP/MBČ Zpráva o šetření postupu ÚMČ Brno-Žabovřesky a Magistrátu města Brna v řízení o poskytnutí ochrany proti zásahu do pokojného stavu ( 5 občanského

Více

Téma 11 Transakce a řízení souběhu

Téma 11 Transakce a řízení souběhu 1 Téma 11 Transakce a řízení souběhu Obsah 1. Transakce a jejich stavy 2. Souběh transakcí 3. Sériovost, serializovatelnost, obnovitelnost 4. Řízení souběhu 5. Úrovně konzistence 6. Řídicí protokoly se

Více

Transakce. 2014 Profinit. All rights reserved.

Transakce. 2014 Profinit. All rights reserved. Transakce RNDr. Ondřej Zýka ndrej.zyka@prfinit.eu 2014 Prfinit. All rights reserved. Obsah Definice Savepint, autnmní transakce Transakční módy Izlační úrvně Implementace pmcí zámků Implementace pmcí snapshtů

Více

STUDIJNÍ A ZKUŠEBNÍ ŘÁD MORAVSKÉ VYSOKÉ ŠKOLY OLOMOUC, O.P.S.

STUDIJNÍ A ZKUŠEBNÍ ŘÁD MORAVSKÉ VYSOKÉ ŠKOLY OLOMOUC, O.P.S. STUDIJNÍ A ZKUŠEBNÍ ŘÁD MORAVSKÉ VYSOKÉ ŠKOLY OLOMOUC, O.P.S. Verze: 3 Platnost od: dnem registrace Ministerstvem školství, mládeže a tělovýchovy ČR Zpracoval: právní oddělení Předkladatel: RNDr. Josef

Více

SMLOUVA. o provozování kanalizace pro veřejnou potřebu v obci Chocerady (dále jen Smlouva )

SMLOUVA. o provozování kanalizace pro veřejnou potřebu v obci Chocerady (dále jen Smlouva ) Příloha G Koncesní dokumentace SMLOUVA o provozování kanalizace pro veřejnou potřebu v obci Chocerady (dále jen Smlouva ) uzavřená mezi smluvními stranami: Obec Chocerady Sídlo: Chocerady 267, PSČ: 257

Více

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE 1 KONZISTENCE DATABÁZE Jedním z velkých nebezpečí při provozu IS je porušení konzistence databáze. Konzistence databáze je vzájemný

Více

UŢIVATELSKÁ PŘÍRUČKA MODUL MECHANIZAČNÍ PROSTŘEDKY APLIKACE - HLÁŠENÍ O PROVEDENÝCH TECHNICKÝCH KONTROLÁCH ZÁKLADNÍ POPIS

UŢIVATELSKÁ PŘÍRUČKA MODUL MECHANIZAČNÍ PROSTŘEDKY APLIKACE - HLÁŠENÍ O PROVEDENÝCH TECHNICKÝCH KONTROLÁCH ZÁKLADNÍ POPIS UŢIVATELSKÁ PŘÍRUČKA MODUL MECHANIZAČNÍ PROSTŘEDKY APLIKACE - HLÁŠENÍ O PROVEDENÝCH TECHNICKÝCH KONTROLÁCH ZÁKLADNÍ POPIS 25.02.2011 Brno Variex Uţivatelská příručka pro provoz aplikace Hlášení o provedených

Více

PRAVIDLA PRO POSKYTOVÁNÍ OSOBNÍ ASISTENCE V TRENDU VOZÍČKÁŘŮ

PRAVIDLA PRO POSKYTOVÁNÍ OSOBNÍ ASISTENCE V TRENDU VOZÍČKÁŘŮ PRAVIDLA PRO POSKYTOVÁNÍ OSOBNÍ ASISTENCE V TRENDU VOZÍČKÁŘŮ 1. Trend vozíčkářů a jeho služby Spolek Trend vozíčkářů Olomouc je občanské sdruţení zaloţené v roce 1994 samotnými lidmi se zdravotním postiţením

Více

Veřejný ochránce práv JUDr. Pavel Varvařovský V Brně dne 17. srpna 2011 Sp. zn.: 2273/2011/VOP/PP

Veřejný ochránce práv JUDr. Pavel Varvařovský V Brně dne 17. srpna 2011 Sp. zn.: 2273/2011/VOP/PP I. Požadavek, aby žadatelé o dlouhodobý a trvalý pobyt podávali žádosti výlučně cestou Visapointu, nemá oporu v zákoně. Ustanovení 170 odst. 2 zákona o pobytu cizinců se vztahuje pouze na žádosti o dlouhodobá

Více

MINISTERSTVO PRO MÍSTNÍ ROZVOJ ČESKÉ REPUBLIKY Odbor řízení a koordinace NSRR Staroměstské náměstí 6 110 15 Praha 1. E-mail: nok@mmr.

MINISTERSTVO PRO MÍSTNÍ ROZVOJ ČESKÉ REPUBLIKY Odbor řízení a koordinace NSRR Staroměstské náměstí 6 110 15 Praha 1. E-mail: nok@mmr. NÁRODNÍ ORGÁN PRO KOORDINACI ZÁVAZNÉ POSTUPY PRO ZADÁVÁNÍ ZAKÁZEK SPOLUFINANCOVANÝCH ZE ZDROJŮ EU, NESPADAJÍCÍCH POD APLIKACI ZÁKONA Č. 137/2006 SB., O VEŘEJNÝCH ZAKÁZKÁCH, V PROGRAMOVÉM OBDOBÍ 2007-2013

Více

Databáze I. 5. přednáška. Helena Palovská

Databáze I. 5. přednáška. Helena Palovská Databáze I 5. přednáška Helena Palovská palovska@vse.cz SQL jazyk definice dat - - DDL (data definition language) Základní databáze, schemata, tabulky, indexy, constraints, views DATA Databáze/schéma

Více

NEZÁVISLÉ TESTY UKAZUJÍ VEDOUCÍ POZICI TIGO ENERGY V TECHNOLOGII A VE VÝKONU ŘEŠENÍ.

NEZÁVISLÉ TESTY UKAZUJÍ VEDOUCÍ POZICI TIGO ENERGY V TECHNOLOGII A VE VÝKONU ŘEŠENÍ. NEZÁVISLÉ TESTY UKAZUJÍ VEDOUCÍ POZICI TIGO ENERGY V TECHNOLOGII A VE VÝKONU ŘEŠENÍ. Materiál zpracován dle výstupů testů nezávislých laboratoří odborného časopisu Photon. Výsledky byly zveřejněny v německém

Více

Principy operačních systémů. Lekce 6: Synchronizace procesů

Principy operačních systémů. Lekce 6: Synchronizace procesů Principy operačních systémů Lekce 6: Synchronizace procesů Kritická sekce Při multitaskingu (multithreadingu) různé procesy často pracují nad společnou datovou strukturou (např. zápis a čtení do/z fronty)

Více

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK listopad 2009 souhrn v1 Červené dobře (nejspíš), modré možná Oracle Internet Directory OID: Databáze nemůže z OID přebírat seznam uživatelů *Databáze může získat z OID seznam

Více

NEXIS 32 rel. 3.50. Generátor fází výstavby TDA mikro

NEXIS 32 rel. 3.50. Generátor fází výstavby TDA mikro SCIA CZ, s. r. o. Slavíčkova 1a 638 00 Brno tel. 545 193 526 545 193 535 fax 545 193 533 E-mail info.brno@scia.cz www.scia.cz Systém programů pro projektování prutových a stěnodeskových konstrukcí NEXIS

Více

PŘÍRUČKA KVALITY MĚSTSKÉHO ÚŘADU OTROKOVICE ---------------------------------

PŘÍRUČKA KVALITY MĚSTSKÉHO ÚŘADU OTROKOVICE --------------------------------- PŘÍRUČKA KVALITY MĚSTSKÉHO ÚŘADU OTROKOVICE --------------------------------- Tato má pro veřejnost informativní charakter a odkazy v ní uvedené slouţí pro práci zaměstnanců MěÚ. kopírován, upravován nebo

Více

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615) IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná

Více

Úplné znění Směrnice rektora č. 17/2008 Zabezpečení a organizace bezpečnosti a ochrany zdraví při práci a poţární ochrany na VUT v Brně

Úplné znění Směrnice rektora č. 17/2008 Zabezpečení a organizace bezpečnosti a ochrany zdraví při práci a poţární ochrany na VUT v Brně Vysoké učení technické v Brně Úplné znění Směrnice rektora č. 17/2008 Zabezpečení a organizace bezpečnosti a ochrany zdraví při práci a poţární ochrany na VUT v Brně (ve znění dodatku č. 1 a 2) ČÁST PRVNÍ

Více

PODMÍNKY DEBETNÍCH VIRTUÁLNÍCH KARET

PODMÍNKY DEBETNÍCH VIRTUÁLNÍCH KARET PODMÍNKY DEBETNÍCH VIRTUÁLNÍCH KARET Tyto Podmínky virtuálních karet obsahují bliţší úpravu práv a povinností vyplývajících z uzavřené smlouvy, na základě které je vydána debetní virtuální platební karta

Více

EU peníze školám Příručka pro základní školy - ţadatele a příjemce 1.4 Operačního programu Vzdělávání pro konkurenceschopnost

EU peníze školám Příručka pro základní školy - ţadatele a příjemce 1.4 Operačního programu Vzdělávání pro konkurenceschopnost EU peníze školám Příručka pro základní školy - ţadatele a příjemce 1.4 Operačního programu Vzdělávání pro konkurenceschopnost VERZE: 2 VYDAL: Řídicí orgán OP VK DATUM PLATNOSTI: 28. ČERVNA 2012 DATUM ÚČINNOSTI:

Více

10. Transakce, řízení konkurenčních přístupů.

10. Transakce, řízení konkurenčních přístupů. 10. Transakce, řízení konkurenčních přístupů. Jedním kritériem klasifikace databázových systémů je počet uživatelů, kteří současně využívají systém. Jednouživatelský systém SŘBD - v daném okamžiku může

Více

Optimalizace dotazů a databázové transakce v Oracle

Optimalizace dotazů a databázové transakce v Oracle Optimalizace dotazů a databázové transakce v Oracle Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 22. dubna 2015 Marek Rychlý

Více

ORGANIZAČNÍ ŘÁD ŠKOLY

ORGANIZAČNÍ ŘÁD ŠKOLY Základní škola Josefa Václava Myslbeka a Mateřská škola Ostrov, Myslbekova 996, okres Karlovy Vary ORGANIZAČNÍ ŘÁD ŠKOLY součást č. 23 - SMĚRNICE K ZAJIŠTĚNÍ BEZPEČNOSTI A OCHRANY ZDRAVÍ ŢÁKŮ ŠKOLY Číslo

Více

Tento příklad popíše asi nejzákladnější promoci. Kdyţ si zákazník koupí 3 kusy, dva kusy zaplatí a jeden dostane zdarma.

Tento příklad popíše asi nejzákladnější promoci. Kdyţ si zákazník koupí 3 kusy, dva kusy zaplatí a jeden dostane zdarma. 3.5.11 PŘÍKLADY PROMOCÍ Tato kapitola neslouţí k popisu nějaké zvláštní agendy nebo funkce, ale měla by slouţit k objasnění a ukázaní práce s promocemi. Promoce jsou poměrně logicky sloţitá záleţitost,

Více

Management procesu II Mgr. Josef Horálek

Management procesu II Mgr. Josef Horálek Management procesu II Mgr. Josef Horálek Vlákna = Vlákna (Threads) = proces je definován množinou zdrojů výpočetního systému, které používá a umístěním, kde je spuštěn; = vlákno (thread) nazýváme lehký

Více

Elektromagnetická kompatibilita (EMC)

Elektromagnetická kompatibilita (EMC) Elektromagnetická kompatibilita (EMC) Tento výrobek vyhovuje směrnici č. 89/336/EEC je-li instalován a pouţíván v souladu s relevantními návody a předpisy. Servis a technická podpora SPOJTE SE PROSÍM S

Více

HODNOCENÍ KVALITY A KONKURENCESCHOPNOSTI NEMOCNIČNÍCH STOLKŮ A NÁSLEDNÁ INOVACE NEMOCNIČNÍHO STOLKU SVOČ FST 2011

HODNOCENÍ KVALITY A KONKURENCESCHOPNOSTI NEMOCNIČNÍCH STOLKŮ A NÁSLEDNÁ INOVACE NEMOCNIČNÍHO STOLKU SVOČ FST 2011 HODNOCENÍ KVALITY A KONKURENCESCHOPNOSTI NEMOCNIČNÍCH STOLKŮ A NÁSLEDNÁ INOVACE NEMOCNIČNÍHO STOLKU SVOČ FST 2011 ANOTACE Tomáš Kocourek Západočeská univerzita v Plzni, Univerzitní 8, 306 14 Plzeň Česká

Více

Pravidla soutěţe Mistrovství České republiky ţatstva a dorostu v záchranném sportu VZS ČČK.

Pravidla soutěţe Mistrovství České republiky ţatstva a dorostu v záchranném sportu VZS ČČK. Pravidla soutěţe Mistrovství České republiky ţatstva a dorostu v záchranném sportu VZS ČČK. Námět soutěţe : Srovnání fyzické výkonnosti a dovednosti se zaměřením na zvyšování dovednosti v záchranářské

Více

Zápis ze zasedání KR ze dne 31. 5. 2010. Zasedání se konalo 31. 5. 2010 od 14.30 v televizní místnosti koleje Jednota.

Zápis ze zasedání KR ze dne 31. 5. 2010. Zasedání se konalo 31. 5. 2010 od 14.30 v televizní místnosti koleje Jednota. Zápis ze zasedání KR ze dne 31. 5. 2010 Zasedání se konalo 31. 5. 2010 od 14.30 v televizní místnosti koleje Jednota. Zasedání řídila Lucie Králová, předsedkyně KR. Přítomní členové: Lucie Králová, Martin

Více

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

Umělá inteligence I. Roman Barták, KTIML. roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak

Umělá inteligence I. Roman Barták, KTIML. roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Umělá inteligence I Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Na úvod Agent s reflexy pouze převádí současný vjem na jednu akci. Agent s cílem umí plánovat několik akcí

Více

Databázové systémy. transakce. Tomáš Skopal. * vlastnosti transakcí * rozvrhy

Databázové systémy. transakce. Tomáš Skopal. * vlastnosti transakcí * rozvrhy Databázové systémy Tomáš Skopal transakce * vlastnosti transakcí * rozvrhy Osnova motivace co je a proč je transakce vlastnosti transakcí rozvrhy ( prokládané zpracování transakcí) uspořádatelnost konflikty

Více

Právnická fakulta Masarykovy univerzity Obor Právo a právní věda Katedra občanského práva. Diplomová práce. Odpočet DPH.

Právnická fakulta Masarykovy univerzity Obor Právo a právní věda Katedra občanského práva. Diplomová práce. Odpočet DPH. Právnická fakulta Masarykovy univerzity Obor Právo a právní věda Katedra občanského práva Diplomová práce Odpočet DPH Jan Škopek 2012/2013 Prohlášení Prohlašuji, že jsem diplomovou práci na téma: Odpočet

Více

Závěrečná zpráva Akreditační komise o hodnocení Evropského polytechnického institutu, s.r.o., Kunovice

Závěrečná zpráva Akreditační komise o hodnocení Evropského polytechnického institutu, s.r.o., Kunovice Závěrečná zpráva Akreditační komise o hodnocení Evropského polytechnického institutu, s.r.o., Kunovice červen 2012 Úvod Akreditační komise (dále jen AK) rozhodla na svém zasedání č. 3/2010 ve dnech 21.

Více

Zateplení budov v majetku města Hronova ZŠ Nám. ČSA, ZŠ Palackého a SOU a SOŠ Hotelnictví

Zateplení budov v majetku města Hronova ZŠ Nám. ČSA, ZŠ Palackého a SOU a SOŠ Hotelnictví ZADAVATEL: Město Hronov náměstí Čs. Armády 5 547 31 Hronov IČ: 00272680 zastoupený: Hana Nedvědová, starostka města VÝZVA K PODÁNÍ NABÍDKY Pověřená osoba pro organizační zajištění zakázky: DABONA s.r.o.

Více

KODEX CHOVÁNÍ SCHVÁLENÝ SKUPINOU KOORDINÁTORŮ PRO SMĚRNICI 2005/36/ES O UZNÁVÁNÍ ODBORNÝCH KVALIFIKACÍ 1

KODEX CHOVÁNÍ SCHVÁLENÝ SKUPINOU KOORDINÁTORŮ PRO SMĚRNICI 2005/36/ES O UZNÁVÁNÍ ODBORNÝCH KVALIFIKACÍ 1 KODEX CHOVÁNÍ SCHVÁLENÝ SKUPINOU KOORDINÁTORŮ PRO SMĚRNICI 2005/36/ES O UZNÁVÁNÍ ODBORNÝCH KVALIFIKACÍ 1 VNITROSTÁTNÍ SPRÁVNÍ SPADAJÍCÍ DO OBLASTI PŮSOBNOSTI SMĚRNICE 2005/36/ES Prohlášení o vyloučení

Více

Odstoupení od smlouvy a nekalé praktiky obchodníků

Odstoupení od smlouvy a nekalé praktiky obchodníků Bankovní institut vysoká škola Praha Katedra práva Odstoupení od smlouvy a nekalé praktiky obchodníků Bakalářská práce Autor: Kamila Šestalová Právní administrativa v podnikatelské sféře Vedoucí práce:

Více

Příprava na vyučování oboru Člověk a jeho svět s cíli v oblastech EV a čtenářství

Příprava na vyučování oboru Člověk a jeho svět s cíli v oblastech EV a čtenářství Rostliny stavba těla Příprava na vyučování oboru Člověk a jeho svět s cíli v oblastech EV a čtenářství Název učební jednotky (téma) Rostliny stavba těla Stručná anotace učební jednotky Ţáci se seznamují

Více

ČÁST PRVNÍ Změna zákona o veřejném zdravotním pojištění. Čl. I

ČÁST PRVNÍ Změna zákona o veřejném zdravotním pojištění. Čl. I ZÁKON ze dne 2011, kterým se mění zákon č. 48/1997 Sb., o veřejném zdravotním pojištění a o změně a doplnění některých souvisejících zákonů, ve znění pozdějších předpisů, a další související zákony Parlament

Více

Integrovaná prevence a omezování znečištění (IPPC)

Integrovaná prevence a omezování znečištění (IPPC) EVROPSKÁ KOMISE GENERÁLNÍ ŘEDITELSTVÍ JRC SPOJENÉ VÝZKUMNÉ STŘEDISKO (JRC) Institut pro perspektivní technologické studie (Seville) Technologie pro udrţitelný rozvoj Evropský úřad IPPC Integrovaná prevence

Více

Naučit se, jak co nejsnadněji přejít od verze TopoLu pro Windows k verzi TopoL xt. Cílem není vysvětlení všech možností programu.

Naučit se, jak co nejsnadněji přejít od verze TopoLu pro Windows k verzi TopoL xt. Cílem není vysvětlení všech možností programu. Školení programu TopoL xt Přechod na TopoL xt z programu TopoL pro Windows Cíl: Obsah: Naučit se, jak co nejsnadněji přejít od verze TopoLu pro Windows k verzi TopoL xt. Cílem není vysvětlení všech možností

Více

Databázové systémy I. 7. Přednáška

Databázové systémy I. 7. Přednáška Databázové systémy I. 7. Přednáška Co nás dnes čeká Uživatelské pohledy (Views) Optimalizace SQL dotazů Zpracování dotazu Naplnění tabulek daty (DML) Sekvence Transakce Indexy Pohledy (views) představují

Více

Organizační struktura a finanční analýza příspěvkové organizace Česká zemědělská akademie v Humpolci

Organizační struktura a finanční analýza příspěvkové organizace Česká zemědělská akademie v Humpolci Vysoká škola polytechnická Jihlava Studijní obor: Finance a řízení Organizační struktura a finanční analýza příspěvkové organizace Česká zemědělská akademie v Humpolci Bakalářská práce Vedoucí práce: Ing.

Více

2. Konceptuální model dat, E-R konceptuální model

2. Konceptuální model dat, E-R konceptuální model 2. Konceptuální model dat, E-R konceptuální model Úvod Databázový model souhrn prostředků, pojmů a metod, jak na logické úrovni popsat data a jejich strukturu výsledkem je databázové schéma. Databázové

Více

REGIONÁLNÍ DISPARITY V DOSTUPNOSTI BYDLENÍ,

REGIONÁLNÍ DISPARITY V DOSTUPNOSTI BYDLENÍ, Vysoká škola báňská Technická univerzita Ostrava Fakulta Stavební REGIONÁLNÍ DISPARITY V DOSTUPNOSTI BYDLENÍ, JEJICH SOCIOEKONOMICKÉ DŮSLEDKY A NÁVRHY OPATŘENÍ NA SNÍŢENÍ REGIONÁLNÍCH DISPARIT Projekt

Více

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko Strategie testování, validace a verifikace. Testování v průběhu životního cyklu SW díla. Testování jednotek, integrační testování, validační testování, systémové testování, ladění. Principy testování,

Více

FTC08 instalační manuál k dotykovému panelu systému Foxys

FTC08 instalační manuál k dotykovému panelu systému Foxys FTC08 instalační manuál k dotykovému panelu systému Foxys Foxtron spol. s r.o. Jeseniova 1522/53 130 00 Praha 3 tel/fax: +420 274 772 527 E-mail: info@foxtron.cz www: http://www.foxtron.cz Verze dokumentu

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTHOR SUPERVISOR

BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTHOR SUPERVISOR Bezpečnost práce jako součást integrovaného systému řízení stavebního podniku Safety at work as part of an integrated management system of construction company BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR

Více

Hospodářská komora České republiky Odbor Informačních míst pro podnikatele OBOROVÁ PŘÍRUČKA. pro ţivnosti

Hospodářská komora České republiky Odbor Informačních míst pro podnikatele OBOROVÁ PŘÍRUČKA. pro ţivnosti Hospodářská komora České republiky Odbor Informačních míst pro podnikatele OBOROVÁ PŘÍRUČK pro ţivnosti VELKOOBCHOD SKLDOVÁNÍ ZBOŢÍ MNIPULCE S NÁKLDEM Pro Hospodářskou komoru ČR, odbor InMP připravilo

Více

GRAFY A GRAFOVÉ ALGORITMY

GRAFY A GRAFOVÉ ALGORITMY KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO GRAFY A GRAFOVÉ ALGORITMY ARNOŠT VEČERKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ

Více

DOPAD ÚČETNÍ REFORMY DO ÚČETNÍHO SYSTÉMU OBCE ROPICE IMPACT OF ACCOUNTING REFORM IN THE ACCOUNTING SYSTEM OF MUNICIPALITY ROPICE

DOPAD ÚČETNÍ REFORMY DO ÚČETNÍHO SYSTÉMU OBCE ROPICE IMPACT OF ACCOUNTING REFORM IN THE ACCOUNTING SYSTEM OF MUNICIPALITY ROPICE VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV FINANCÍ FACULTY OF BUSINESS AND MANAGEMENT INSTITUTE OF FINANCES DOPAD ÚČETNÍ REFORMY DO ÚČETNÍHO SYSTÉMU OBCE ROPICE

Více

Porovnání nabídky hypotečních úvěrů a úvěrů ze stavebního spoření v ČR

Porovnání nabídky hypotečních úvěrů a úvěrů ze stavebního spoření v ČR Bankovní institut vysoká škola Praha Management firem a institucí Porovnání nabídky hypotečních úvěrů a úvěrů ze stavebního spoření v ČR (Comparison of Mortgage Credit Offer and Building Savings Credit

Více

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí: Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.

Více

Právnická fakulta Masarykovy univerzity

Právnická fakulta Masarykovy univerzity Právnická fakulta Masarykovy univerzity Veřejná správa Katedra obchodního práva Bakalářská práce Obec jako podnikatel Markéta Jehličková 2010/2011 1 Prohlašuji, ţe jsem bakalářskou práci na téma: Obec

Více

Řád německé maturitní zkoušky konané v zahraničí

Řád německé maturitní zkoušky konané v zahraničí Řád německé maturitní zkoušky konané v zahraničí Usnesení Konference ministrů školství z 27.1.1995 ve znění z 24. 3.2004 O B S A H I. Obecná ustanovení 1 Druh zkoušky, konání zkoušky 2 Doba a členění zkoušky

Více

Distribuované transakce

Distribuované transakce Distribuované transakce Lukáš Petrlík luki@kiv.zcu.cz Úvod Pojem transakce pochází původně z obchodního světa. Předpokládejme, že firma A hledá dodavatele pro jistou zakázku. V úvahu přichází firma B,

Více

Zadávací dokumentace a pokyny ke zpracování nabídky

Zadávací dokumentace a pokyny ke zpracování nabídky Zadávací dokumentace a pokyny ke zpracování nabídky název veřejné zakázky: Výběr zhotovitele zakázky Stavební úpravy č.p. 61 v Proseči rozšíření expozice muzea dýmek druh zadávacího řízení: zakázka malého

Více

K čemu transakce. Spolehlivost. Transakce. Petr Tůma petr.tuma@mff.cuni.cz http://nenya.ms.mff.cuni.cz/~ceres/txy/main.

K čemu transakce. Spolehlivost. Transakce. Petr Tůma petr.tuma@mff.cuni.cz http://nenya.ms.mff.cuni.cz/~ceres/txy/main. Transakce Petr Tůma petr.tuma@mff.cuni.cz http://nenya.ms.mff.cuni.cz/~ceres/txy/main.php maillist, wiki zkouška: bodovaná písemka, polovina zhruba stačí na trojku zdroje Grey, Reuter: Transaction Processing

Více

VNITŘNÍ ÚČETNÍ SMĚRNICE PODNIKU

VNITŘNÍ ÚČETNÍ SMĚRNICE PODNIKU Masarykova univerzita Ekonomicko-správní fakulta Studijní obor: Finance VNITŘNÍ ÚČETNÍ SMĚRNICE PODNIKU Internal Accounting Rules of the Company Bakalářská práce Vedoucí bakalářské práce: Ing. Zuzana KŘÍŢOVÁ,

Více

PB153 Operační systémy a jejich rozhraní

PB153 Operační systémy a jejich rozhraní PB153 Operační systémy a jejich rozhraní Uváznutí 1 Problém uváznutí Existuje množina blokovaných procesů, každý proces vlastní nějaký prostředek (zdroj) a čeká na zdroj držený jiným procesem z této množiny

Více

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly Matice Matice typu (m, n) je uspořádaná m-tice prvků z řádky matice.. Jednotlivé složky této m-tice nazýváme Matice se zapisují Speciální typy matic Nulová matice všechny prvky matice jsou nulové Jednotková

Více

Mgr. Karel Pazourek. online prostředí, Operační program Praha Adaptabilita, registrační číslo CZ.2.17/3.1.00/31165.

Mgr. Karel Pazourek. online prostředí, Operační program Praha Adaptabilita, registrační číslo CZ.2.17/3.1.00/31165. Mnohočleny z různých stran Mgr. Karel Pazourek Kurz vznikl v rámci projektu Rozvoj systému vzdělávacích příležitostí pro nadané žáky a studenty v přírodních vědách a matematice s využitím online prostředí,

Více

Univerzita Pardubice Fakulta ekonomicko-správní. Současný stav fulltextového vyhledávání v MySQL Ivana Broklová

Univerzita Pardubice Fakulta ekonomicko-správní. Současný stav fulltextového vyhledávání v MySQL Ivana Broklová Univerzita Pardubice Fakulta ekonomicko-správní Současný stav fulltextového vyhledávání v MySQL Ivana Broklová Bakalářská práce 2011 Prohlašuji: Tuto práci jsem vypracovala samostatně. Veškeré literární

Více

UNIVERZITA PALACKÉHO V OLOMOUCI

UNIVERZITA PALACKÉHO V OLOMOUCI UNIVERZITA PALACKÉHO V OLOMOUCI PEDAGOGICKÁ FAKULTA Bakalářská práce 2014 Lenka Koutná UNIVERZITA PALACKÉHO V OLOMOUCI PEDAGOGICKÁ FAKULTA Katedra technické a informační výchovy Bakalářská práce Lenka

Více

356/2003 Sb. ZÁKON ze dne 23. září 2003. o chemických látkách a chemických přípravcích a o změně některých zákonů ČÁST PRVNÍ

356/2003 Sb. ZÁKON ze dne 23. září 2003. o chemických látkách a chemických přípravcích a o změně některých zákonů ČÁST PRVNÍ 356/2003 Sb. ZÁKON ze dne 23. září 2003 o chemických látkách a chemických přípravcích a o změně některých zákonů Změna: 186/2004 Sb. Změna: 125/2005 Sb. Změna: 345/2005 Sb. Změna: 345/2005 Sb. (část) Změna:

Více

UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE

UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE UNICORN COLLEGE Katedra informačních technologií BAKALÁŘSKÁ PRÁCE Mechanismy konkurenčního přístupu v relačních databázových systémech Autor BP: Martin Vajsar Vedoucí BP: Mgr. Pavel Zeman 2018 Praha UNrconN

Více

Relační databáze a povaha dat

Relační databáze a povaha dat Relační databáze a povaha dat Roman Bartoš Copyright istudium, 2005, http://www.istudium.cz Žádná část této publikace nesmí být publikována a šířena žádným způsobem a v žádné podobě bez výslovného svolení

Více

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

RiJ ŘÍZENÍ JAKOSTI L 1 1-2

RiJ ŘÍZENÍ JAKOSTI L 1 1-2 RiJ ŘÍZENÍ JAKOSTI ML 1-2 Normy řady ISO 9000 0 Úvod 1 Předmět QMS podle ISO 9001 2 Citované normativní dokumenty 3 Termíny a definice 4 Systém managementu kvality 5 Odpovědnost managementu 6 Management

Více

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný DJ2 rekurze v SQL slajdy k přednášce NDBI001 Jaroslav Pokorný 1 Obsah 1. Úvod 2. Tvorba rekurzívních dotazů 3. Počítaní v rekurzi 4. Rekurzívní vyhledávání 5. Logické hierarchie 6. Zastavení rekurze 7.

Více

ZÁKON. č. 258/2000 Sb. ČÁST PRVNÍ PRÁVA A POVINNOSTI OSOB A VÝKON STÁTNÍ SPRÁVY V OCHRANĚ VEŘEJNÉHO ZDRAVÍ

ZÁKON. č. 258/2000 Sb. ČÁST PRVNÍ PRÁVA A POVINNOSTI OSOB A VÝKON STÁTNÍ SPRÁVY V OCHRANĚ VEŘEJNÉHO ZDRAVÍ ZÁKON č. 258/2000 Sb. o ochraně veřejného zdraví a o změně některých souvisejících zákonů ve znění novel č. 254/2001 Sb., 274/2001 Sb., 86/2002 Sb., 13/2002 Sb., 120/2002 Sb., 76/2002 Sb., 320/2002 Sb.,

Více