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] :

  1. Pořadí čtení a zápisů na uzlu určuje místní kauzální pořadí.
  2. 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.
  3. 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] :

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

  1. Odintsov I. O. Profesionální programování. Systémový přístup. - 2. - Petrohrad. : BHV-Petersburg, 2004. - S. 520-521.
  2. Vijay K. Garg Souběžné a distribuované výpočty v Javě. John Wiley & Sons, 28. ledna 2005 - Počítače - 336 stran. p60
  3. Kshemkalyani, Singhal, 2011 , pp. 420-423.
  4. Kshemkalyani, Singhal, 2011 , 12.2.3 Kauzální konzistence.
  5. 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