Kauzální konzistence
Kauzální konzistence je model konzistence , který nevyžaduje, aby všechny procesy viděly stejnou sekvenci záznamů v paměti, přičemž se rozlišuje mezi potenciálně závislými (záznam jednoho může záviset na výsledku čtení jiné buňky) a potenciálně nezávislými (paralelními) operacemi zápisu [ 1] .
Systém dosahuje kauzální konzistence, pokud jsou paměťové operace, které spolu potenciálně kauzálně souvisí, uvažovány všemi uzly v systému ve stejném pořadí. Operace simultánního zápisu (tj. ty, které spolu kauzálně nesouvisejí) mohou být uvažovány v různém pořadí různými uzly. Tento druh konzistence je slabší než sekvenční konzistence , která vyžaduje, aby všechny uzly viděly všechny záznamy ve stejném pořadí [2] , ale silnější než konzistence PRAM , ve které by byly ve stejném pořadí viditelné pouze záznamy vytvořené jedním uzlem. jakýmkoli jiným uzlem [3] .
Kauzální vztahy mezi operacemi (událostmi) pro systémy distribuované sdílené paměti lze definovat následovně [4] :
- Pořadí čtení a zápisů na uzlu určuje místní kauzální pořadí.
- Operace zápisu kauzálně předchází operaci čtení na jiném uzlu, pokud čtení vrací hodnotu zapsanou touto operací zápisu. Jedná se o meziprocesní objednávkový vztah.
- A konečně, kauzální pořadí je považováno za tranzitivní : to znamená, pokud operace A (kauzálně) následuje B a B - před C, pak A je v pořadí kauzality před C. To znamená, tranzitivní uzavření vztahů místních a meziprocesové objednávky určují globální kauzální pořadí.
Výhody a nevýhody
Díky zachování vlastnosti zaručených operací s nízkou latencí je kauzální konzistence lepší než konečná konzistence pro uživatele i programátory. Bere v úvahu vztahy příčiny a následku mezi operacemi a zajišťuje, že každý uzel vidí operace v určeném pořadí. Kauzální konzistence také usnadňuje programování tím, že eliminuje potřebu zvažovat irelevantní operace [5] .
Nicméně kauzální konzistence má také některé nevýhody [5] :
- ne všechny kauzální vztahy lze vytvořit v rámci systému,
- není vždy možné požadovat splnění globálních invariantů ,
- logiku pro implementaci simultánních zápisů může být obtížné implementovat.
Zejména je nutné stanovit, zda stačí pouhé přepsání starých údajů nebo zda jsou nutné samostatné mechanismy pro řešení konfliktních záznamů.
Poznámky
- ↑ Odintsov I. O. Profesionální programování. Systémový přístup. - 2. - Petrohrad. : BHV-Petersburg, 2004. - S. 520-521.
- ↑ Vijay K. Garg Souběžné a distribuované výpočty v Javě. John Wiley & Sons, 28. ledna 2005 - Počítače - 336 stran. p60
- ↑ Kshemkalyani, Singhal, 2011 , pp. 420-423.
- ↑ Kshemkalyani, Singhal, 2011 , 12.2.3 Kauzální konzistence.
- ↑ 1 2 Wyatt Lloyd, Michael J. Freedman, Michael Kaminsky, David G. Andersen. A Short Primer on Causal Consistency ; přihlášení: The USENIX Magazine, svazek 38, číslo 4, srpen 2013.
Literatura
- Kryukov V. A. Přednáškový kurz "Distribuované operační systémy" 6. Distribuovaná sdílená paměť
- Pradeep K. Sinha. Model kauzální konzistence // Distribuované operační systémy: koncepty a design . — PHI Learning Pvt. Ltd., 1998. - S. 239-240. — 761 s. — ISBN 9788120313804 .
- Kshemkalyani, AD a Singhal, M. Distributed Computing: Principles, Algorithms, and Systems. - Cambridge University Press, 2011. - ISBN 9781139470315 .
- M. Ahamad, G. Neiger, J. E. Burns, P. Kohli a P. Hutto. Kauzální paměť: Definice, implementace a programování. Distributed Computing, 9(1), 19
- Bailis, Peter a Ghodsi, Ali a Hellerstein, Joseph M. a Stoica, Ion (2013). Bolt-on kauzální konzistence . Sborník příspěvků z mezinárodní konference ACM SIGMOD o správě dat 2013 . SIGMOD '13. New York, New York, USA: ACM. str. 761-772. DOI : 10.1145/2463676.2465279 . Staženo 2013-12-06 .