Řízení paralelního zpracování se využívá v oblasti informačních technologií a výpočetní techniky, zejména v oblasti počítačového programování (viz také souběžné programování, paralelní programování), operační systémy (viz také paralelní výpočty), multiprocesory a databáze, kde souběžné řízení zajišťuje správné výsledky pro souběžné operace, které jsou vytvářeny, při získávání těchto výsledků.
Počítačové systémy, softwary i hardwary, se skládají z modulů nebo komponent. Každá komponenta je navržen tak, aby fungovala správně, tj. aby se podřídila nebo splňovala určitá pravidla konzistence. Když komponenty, současně komunikují prostřednictvím zpráv nebo sdíleného přístupu dat (v paměti nebo v úložišti), může být určitá konzistence komponent porušena další komponentou. Obecné oblasti kontroly shodnosti se stanoví pravidly, metodami, metodologií návrhu a teoriemi k udržení konzistence složek působících při interakci současně, a také konzistencí a správností celého systému.
Například, selhání v řízení souběžnosti má za následek poškození dat z čtení nebo zápisu.
Souběžné řízení v databázích
Při souběžném zpracování transakcí se samozřejmě může stát, že různé transakce zpracovávají v jeden okamžik stejná data. Pokud se různé transakce pokusí aktualizovat stejné údaje, může dojít ke ztrátě informace v případě, že změněná data jsou opětovně změněna jinou transakcí dříve, než je původní změna potvrzena. K problémům ovšem může dojít i v případě že transakce data pouze čte, pokud se je jiná transakce zároveň pokouší změnit nebo nová data přidává. V takovém případě může transakce načíst doposud nepotvrzené změny, případně změny sice potvrzené, ovšem nekonzistentní s daty transakce (fantómové řádky, nereprodukovatelné čtení). To může způsobit problémy především u dlouhotrvajících transakcí, které zpracovávají velké množství dat.
Databázové transakce a ACID pravidla V aplikacích se používá pojem transakce, což je skupina operací prováděných nad databází. Transakce musí splňovat vlastnosti ACID:
Atomicity (nedělitelnost) – transakce se tváří jako jeden celek, tedy je vykonána celá, nebo vůbec Consistency (konzistence) – transakce může měnit databázi pouze z jednoho konzistentního stavu do druhého konzistentního stavu Isolation (izolace) – transakce je izolovaná od probíhajících změn (jsou viditelné pouze potvrzené (commited) změny), tj. dílčí efekty transakce nejsou viditelné ostatním Durability (trvanlivost) – změny v databázi provedené potvrzenou transakcí musí být trvanlivé
Proč je Kontrola souběžnosti potřeba? Proč vlastně kontrola souběžnosti transakcí? V případě kdy běží několik transakcí současně, může se stát, že tyto transakce mění tentýž databázový záznam. Pokud by tento souběžný běh transakcí nebyl kontrolován, mohl by nastat problém, jakým je nekonzistentní databáze. Proto v další části popíšeme tři problémy, které mohou nastat při nekontrolovaném běhu souběžných transakcí.
Problém zvaný „Lost Update“ Tento problém nastane v případě, kdy dvě transakce přistupující ke stejnému záznamu v databázi a po jejich ukončení je hodnota v záznamu nesprávná.
Problém dočasné změny „Temporary Update“ Ten nastane v případě, kdy jedna transakce mění záznam v databázi a poté skončí chybou. Ke změněnému záznamu přistupuje jiná transakce dřív, než dojde k vrácení původní hodnoty.
Problém nesprávného součtu „Incorrect Summary“ Dalším problémem, který může nastat při nekontrolovaném spouštění souběžných transakcí je, pokud jedna transakce počítá součet hodnot a během tohoto výpočtu druhá transakce provádí změny některých těchto hodnot používaných ve výpočtu transakce první. Funkce může počítat s některými hodnotami před tím, než jsou změněny a s některými až po změně, tedy výsledek funkce není správný.
Mechanismy, kontroly souběžnosti Protokoly kontroly souběžnosti se používají k omezení spouštění souběžných transakcí v centralizovaném databázovém systému a v distribuovaném pouze k serializovatelnému spouštění.
Kategorie Protokoly kontroly souběžnosti se dělí na dvě kategorie: pesimistické optimistické
Pesimistické protokoly U těchto protokolů dochází ke kontrole před tím, než je databázová operace provedena. Tedy předchází nekonzistencím zamítnutím potenciálních neserializovatelných spouštění a zajištěním, že výsledek potvrzených transakcí musí být zaznamenán do databáze nebo anulován.
Příkladem tohoto protokolu je komerčně široce používaný Dvoufázový uzamykací protokol a dále Uspořádání podle časových razítek.
Optimistické protokoly
U těchto protokolů nedochází ke kontrolám v době běhu transakce, a tedy dovolují neserializovatené spouštění. Prováděné změny nejsou hned aplikovány přímo v databázi, ale v lokání paměti. Na konci běhu transakce validační fáze zkontroluje, zda změny prováděné transakcí nejsou v rozporu se serializovatelností. Pokud ne, transakce se potvrdí a změny se promítnou do databáze, jinak je ukončena a spuštěna později. Tedy transakce s detekovanými anomáliemi jsou ukončeny během validační fáze před tím, než je výsledek transakce zviditelněn.
Metody Existuje mnoho metod řízení souběžnosti, tyto metody mají mnoho variant a v některých případech se mohou i překrývat a kombinovat.
Zamykání – Jedna z nejzákladnějších technik pro řízení běhu souběžných transakcí je založená na zamykání databázového záznamu. Zámek je proměnná asociovaná s datovým záznamem, která vyjadřuje status záznamu s ohledem na možné operace, která mohou být nad záznamem použity. Pro zamykání je možné použít několik typů zámků.
Časová razítka (Time Stamps) – Další technikou pro řízení souběžného běhu transakcí a zajištění serializovatelnosti transakcí je používání časových razítek. Časové razítko je jedinečný identifikátor, který je přiřazen transakci. Typicky je časovým razítkem hodnota, která odpovídá pořadí spuštění transakce v systému, nebo čas nastartování transakce.
Jiné hlavní typy kontroly shodnosti, které jsou využívány ve spojení s výše uvedenými metodami jsou: Multiversion concurrency kontrol – Dalším protokolem pro řízení konkurenčního běhu transakcí, který může také používat koncept časových razítek, udržuje staré hodnoty dat, když jsou tato data měněna. Tento způsob je znám jako Multiversion concurrency control., protože je udržováno několik verzí hodnot dat. Když transakce požaduje přístup k záznamu, časové razítko transakce je porovnáno s časovými razítky různých verzí záznamu. Příslušná hodnota je vybrána, aby byla udržena serializovatelnost právě spuštěného rozvrhu, pokud je možná.
Timestamp ordering (uspořádání podle časových razítek) – Tato metoda je založena na uspořádání transakcí podle časových razítek. Rozvrh, ve kterém transakce se účastní, je pak serializovatelný a ekvivalentní sériový rozvrh má transakce uspořádány podle časových razítek. Na rozdíl od dvoufázového zamykání, kde je rozvrh serializovatelný tím, že je ekvivalentní nějakému sériovému rozvrhu, který povoluje zamykání, je u uspořádání časových razítek rozvrh ekvivalentní konkrétnímu sériovému uspořádání odpovídajícímu uspořádání podle časových razítek.
Hlavní cíle mechanizmů kontroly souběžnosti Za prvé je nutné u každé transakce udržovat integritu pravidel, zatímco transakce běží souběžně a tím i integritu celého systému. Dále je potřeba dosahovat potřebného výkonu. Další subjekty, které mohou mít vliv na řízení souběžnosti jsou obnova a replikace.
Správnost
Sériovost Úroveň sériovosti zabraňuje všem interferencím mezi transakcemi stejným způsobem, jako by transakce byly prováděny postupně a nikoliv souběžně. Ostatní transakce sice mohou číst data ze zpracovávaných tabulek, ale nemohou je měnit ani přidávat nové údaje. Z důvodu značného blokování ostatních transakcí je vhodné používat tuto úroveň izolace pouze v nezbytných případech (např. přecenění skladu, účetní uzávěrka). Různé databázové platformy mohou pro jednotlivé izolační úrovně používat odlišné názvy (nebo i stejné ale v jiném významu), případně nemusí podporovat všechny úrovně definované standardem, a lišit se může i dopad jednotlivých úrovní na propustnost transakcí. Je tedy vždy nezbytné prostudovat dokumentaci konkrétního produktu.
Obnovitelnost Poznámka: Zatím co v oblasti systémů termín obnovitelnost, může odkazovat na schopnost systému obnovit se ze stavu selhání nebo z nesprávného/zakázaného stavu, v rámci řízení souběžnosti databázových systémů tento termín získal specifický význam. V každém SŘBD jsou moduly řízeni souběžného zpracování a zotaveni po poruše, které každému uživateli poskytuji data v konzistentním stavu databáze (vyhovuji všem integritním omezením ve schématu databáze), i když se stejnými daty paralelně pracuje několik uživatelů nebo došlo k poruše či chybě v softwaru, hardwaru, výpadku napájení atd..
Transakce je posloupnost akci nebo specifikace operací (jako jsou čteni a zápis dat, výpočty), které se buď provedou všechny, nebo se neprovedou vůbec. Z hlediska aplikace je to logická i programová jednotka práce, odpovídající nějakému procesu v realitě. Př.: Převod peněz z jednoho učtu na jiný při platbě faktury. Její provádění je zabezpečeno a řízeno tak, že jsou splněny následující podmínky. Při čtení potřebných dat musí byt databáze konzistentní, během operaci transakce je dočasně i v nekonzistentním stavu, ale nakonec při potvrzeni transakce musí byt databáze opět konzistentní. Po výpadku se databáze uvede do stavu na počátku transakce. Aby systém mohl splnit tyto úkoly, udržuje vlastními prostředky historii změn dat v přiměřeném časovém intervalu v žurnálu (log file).
Distribuce Technické možnosti komunikačních systémů a vzájemného propojování počítačů umožňují spojovat i původně samostatně pracující počítače do distribuovaných systémů. Speciálně u Distribuovaných databázových systémů (DDBS) se s komunikační technologií spojí databáze. Obecná charakteristika systémů: Tvoří je množina uzlů (míst), propojených komunikačními kanály Každý uzel je autonomní SŘBD, ve všech službách se nespoléhá na centrální uzel Uživatel nic neví o síťové struktuře systému, ale systém umožní transparentně zpřístupnit data z libovolného uzlu a opačně zpracovává vlastní data pro distribuované dotazy ostatních. Práce jednoho uzlu nenarušuje celý systém, který nepřetržitě pracuje. Nezávislost na hardware, operačním systému, síti i SŘBD.
To má řadu výhod, jako Vysoká efektivita zpracování a racionalizace provozu – data jsou umístěna v místech, kde jsou nejčastěji využívána, vyšší výkonnost – zátěž zpracování je díky paralelismu rozdělena na více počítačů, větší dostupnost – možnost sdílení společných informačních fondů, DDBS se snadno škáluje – rozšíření konfigurace. Snižuje se cena komunikace vhodným rozmístěním dat v uzlech.(data, která uzel používá má lokálně k dispozici). Větší spolehlivost a tolerance k chybám (zotavení po chybách díky replikám), možnost zálohování počítačů.
Ale i nevýhod Větší složitost – návrhu databáze, katalogu dat a jeho správy, transakčního zpracování s problémy uváznutí, optimalizaci dotazů, územní distribucí dat, šíření aktualizace při replikaci, heterogennost dat na jednotlivých uzlech vede k transformacím, komunikace v počítačových sítích – minimalizace počtu a velikost zpráv, výpadky. Obtížnější dosazení bezpečnosti a utajení. Distribuce řízení. Relativní nedostatek standardů, nástrojů a zkušeností.
Jsou to komplikované a vzájemně propojené problémy a dosavadní distribuované báze jsou prozatím jen unikátními řešeními. Dosud neexistuje obecný model či návod pro jejich tvorbu. Jednotné řízení distribuované báze může být realizováno různými formami na různém stupni centralizace řízení.