PACELC věta - PACELC theorem - Wikipedia
v teoretická informatika, PACELC věta je rozšíření k Věta CAP. Uvádí, že v případě síťového rozdělení (P) v a distribuovaný počítačový systém, je třeba si vybrat mezi dostupností (A) a konzistencí (C) (podle věty CAP), ale jinak (E), i když systém běží normálně bez chybějících oddílů, je třeba volit mezi latencí (L ) a konzistence (C).
Přehled
PACELC staví na Věta CAP. Obě věty popisují, jak mají distribuované databáze omezení a kompromisy týkající se konzistence, dostupnosti a tolerance oddílů. PACELC však jde dále a uvádí, že existuje i další kompromis: tentokrát mezi latencí a konzistencí, a to i při absenci oddílů, což poskytuje úplnější zobrazení potenciálních kompromisů konzistence pro distribuované systémy.[1]
Požadavek vysoké dostupnosti znamená, že systém musí replikovat data. Jakmile distribuovaný systém replikuje data, nastane kompromis mezi konzistencí a latencí.
Teorém PACELC poprvé popsal Daniel J. Abadi z univerzita Yale v roce 2010 v příspěvku na blogu,[2] kterou později formalizoval v článku v roce 2012.[1] Účelem PACELC je zabývat se jeho tezí, že „Ignorování kompromisu konzistence / latence replikovaných systémů je hlavním dohledem [v CAP], protože je přítomen po celou dobu provozu systému, zatímco CAP je relevantní pouze v pravděpodobně vzácném případě síťového oddílu. "
Hodnocení databáze PACELC
Hodnocení databáze PACELC jsou z [3]
- Výchozí verze DynamoDB, Cassandra, Riak a Kosmos DB jsou systémy PA / EL: pokud dojde k rozdělení, vzdají se konzistence dostupnosti a za normálního provozu se vzdají konzistence pro nižší latenci.
- Plně ACID systémy jako např VoltDB / H-Store, Megastore a Cluster MySQL jsou PC / EC: odmítají se vzdát konzistence a budou za to platit náklady na dostupnost a latenci. Velká tabulka a související systémy jako např HBase jsou také PC / EC.
- Couchbase poskytuje řadu možností konzistence a dostupnosti během oddílu a stejně řadu možností latence a konzistence bez oddílu. Na rozdíl od většiny ostatních databází Couchbase nemá jedinou sadu API ani homogenně škáluje / replikuje všechny datové služby. Pro zápisy Couchbase upřednostňuje konzistenci před dostupností, což formálně CP, ale při čtení existuje větší variabilita řízená uživatelem v závislosti na replikaci indexu, požadované úrovni konzistence a typu přístupu (vyhledávání jednoho dokumentu vs skenování rozsahu vs. fulltextové vyhledávání atd.) . Kromě toho existuje další variabilita v závislosti na replikaci mezi datovými centry (XDCR), která přebírá více klastrů CP a spojuje je s asynchronní replikací a Couchbase Lite, což je vložená databáze a vytváří plně multi-master (se sledováním revizí) ) distribuovaná topologie.
- Kosmos DB podporuje pět nastavitelných úrovní konzistence, které umožňují kompromisy mezi C / A během P a L / C během E. Kosmos DB nikdy neporušuje zadanou úroveň konzistence, takže je to formálně CP.
- MongoDB lze klasifikovat jako systém PA / EC. V základním případě systém zaručuje konzistentní čtení a zápis.
- PNUTS je systém PC / EL.
- Hazelcast IMDG a většina datových mřížek v paměti jsou implementací systému PA / EC; Hazelcast lze nakonfigurovat tak, aby byl spíše EL než EC.[4] Souběžná primitiva (Lock, AtomicReference, CountDownLatch atd.) Mohou být buď PC / EC nebo PA / EC.[5]
- FaunaDB nářadí Calvin, transakční protokol vytvořený Dr. Danielem Abadi a autorem[1] věty PACELC a nabízí uživatelům nastavitelné ovládací prvky pro LC kompromis. Je to PC / EC pro striktně serializovatelné transakce a EL pro serializovatelné čtení.
DDBS | P + A | P + C | E + L | E + C |
---|---|---|---|---|
DynamoDB | ![]() | ![]() | ||
Cassandra | ![]() | ![]() | ||
Kosmos DB | ![]() | ![]() | ||
Couchbase | ![]() | ![]() | ![]() | |
Riak | ![]() | ![]() | ||
VoltDB / H-Store | ![]() | ![]() | ||
Megastore | ![]() | ![]() | ||
BigTable / HBase | ![]() | ![]() | ||
Cluster MySQL | ![]() | ![]() | ||
MongoDB | ![]() | ![]() | ||
PNUTY | ![]() | ![]() | ||
Hazelcast IMDG[6][5] | ![]() | ![]() | ![]() | ![]() |
FaunaDB[7] | ![]() | ![]() | ![]() |
Viz také
- Věta CAP
- Model konzistence
- Klam distribuovaného výpočtu
- Paxos (počítačová věda)
- Trojúhelník řízení projektu
- Raft (počítačová věda)
- Trilema
Poznámky
Reference
- ^ A b C Abadi, Daniel J. „Konzistenční kompromisy v moderním designu distribuovaného databázového systému“ (PDF). Univerzita Yale.
- ^ Abadi, Daniel J. (2010-04-23). „DBMS Musings: Problémy s CAP a málo známým systémem NoSQL od Yahoo“. Citováno 2016-09-11. Citovat má prázdný neznámý parametr:
|1=
(Pomoc) - ^ A b Souhrn snímků „Konzistence kompromisů v moderním designu distribuovaného databázového systému“ od Arinta Murdopa, výzkumného inženýra
- ^ Abadi, Daniel (08.10.2017). „DBMS Musings: Hazelcast and the Mythical PA / EC System“. DBMS Musings. Citováno 2017-10-20.
- ^ A b „Referenční příručka Hazelcast IMDG“. docs.hazelcast.org. Citováno 2020-09-17.
- ^ Abadi, Daniel (08.10.2017). „DBMS Musings: Hazelcast and the Mythical PA / EC System“. DBMS Musings. Citováno 2017-10-20.
- ^ Abadi, Daniel (2018-09-21). „DBMS Musings: Databázové systémy NewSQL nedokáží zaručit konzistenci a já za to viním Spannera“. DBMS Musings. Citováno 2019-02-23.
externí odkazy
- „Konzistentní kompromisy v moderním designu distribuovaného databázového systému“, Daniel J. Abadi, Yale University Originální papír, který formalizoval PACELC
- „Problémy s CAP a málo známým systémem Yahoo NoSQL“, Daniel J. Abadi, Yale University. Původní blogový příspěvek, který jako první popsal PACELC