PACELC-sats
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 17 maj 2021; kontroller kräver
6 redigeringar .
PACELC-satsen är en förlängning av CAP-satsen , som säger att vid nätverksseparation (P) i ett distribuerat datorsystem måste man välja mellan tillgänglighet (A) och konsistens (C) (enligt CAP-satsen), men i alla fall, även om systemet fungerar normalt i frånvaro av separation (E), måste man välja mellan fördröjningar (L) och konsistens (C).
Beskrivning
PACELC-satsen bygger på CAP-satsen . Båda satserna beskriver de begränsningar och avvägningar som distribuerade databaser har när det gäller konsekvens, tillgänglighet och partitionering. PACELC-satsen säger dock att det finns en avvägning mellan latens och konsistens även i frånvaro av partitionering, vilket ger en mer komplett bild av de möjliga avvägningarna för distribuerade system. [ett]
Kravet på hög tillgänglighet innebär att systemet måste replikera data. Medan ett distribuerat system replikerar data finns det en avvägning mellan konsistens och latens.
PACELC-teoremet beskrevs första gången av Daniel J. Abadi från Yale University 2010 i ett blogginlägg [2] och även som en artikel 2012 [1] . Huvudsyftet med PACELC-satsen är att ta itu med hans avhandling "Att ignorera behovet av att välja mellan konsistens och latens i replikerade system är en stor utelämnande [inom CAP], eftersom behovet av detta val alltid är närvarande under driften av systemet, medan CAP endast är relevant för det diskuterade sällsynta fallet med nätverksseparation.
Utvärdering av huvud-DBMS enligt PACELC-satsen
DBMS- uppskattningar för [3]
- Som standard är Dynamo, Cassandra , Riak och Cosmos DB PA/EL-system: när de delar nätverket förlorar de koherens för högre tillgänglighet, och under normal drift förlorar de koherens för lägre latens.
- Helt ACID-system som VoltDB /H-Store och Megastore är PC/EC: de ger inte upp om konsekvens och kommer att vara villiga att betala med tillgänglighet och latens för att uppnå detta. BigTable och relaterade system som HBase är också PC/EC.
- Couchbase tillhandahåller en rad olika konsistens- och tillgänglighetsalternativ för mellantid, samt en rad latens- och icke-delad konsistensalternativ. Till skillnad från de flesta andra databaser har Couchbase inte en enda uppsättning API:er och replikerar inte alla datatjänster enhetligt. För skrivning föredrar Couchbase konsistens framför tillgänglighet, vilket gör det formellt CP, men för läsning finns det mer användarkontrollerad variation beroende på indexreplikering, önskad konsistensnivå och typ av åtkomst (sökning av enstaka dokument kontra skanning av intervall kontra fulltext sök etc.) .) . Utöver det finns det ytterligare variation beroende på korsdatacenterreplikering (XDCR), som tar flera CP-kluster och länkar dem till asynkron replikering, och Couchbase Lite, som är en inbäddad databas och skapar en helt multi-master (med versionshantering) ) distribuerad topologi.
- Cosmos DB stöder fem konfigurerbara konsistensnivåer som låter dig välja mellan C/A under nätverkspartitionering och L/C under normal drift. Cosmos DB bryter aldrig mot den angivna konsistensnivån, varför det formellt är en CP.
- MongoDB kan klassificeras som ett PA/EC-system. I basfallet garanterar systemet att läsning och skrivning är konsekventa.
- PNUTS är ett PC/EL-system.
DDBS
|
P+A
|
P+C
|
E+L
|
E+C
|
Dynamo
|
Ja
|
|
ja [a]
|
|
Cassandra
|
Ja
|
|
ja [a]
|
|
Cosmos DB
|
Ja
|
|
Ja
|
|
Soffbas
|
|
Ja
|
Ja
|
Ja
|
Riak
|
Ja
|
|
ja [a]
|
|
VoltDB/H Store
|
|
Ja
|
|
Ja
|
Mega butik
|
|
Ja
|
|
Ja
|
MongoDB
|
Ja
|
|
|
Ja
|
PNUTS
|
|
Ja
|
Ja
|
|
Se även
Anteckningar
- ↑ 1 2 3 Dynamo, Cassandra och Riak har inställningar för att styra valet mellan L och C [3]
Källor
- ↑ 1 2 Daniel J. Abadi. Konsistensavvägningar i modern distribuerad databassystemdesign // Yale University. - 2012. - 25 januari. Arkiverad från originalet den 16 maj 2017.
- ↑ Daniel J. Abadi. DBMS Musings: Problem med CAP och Yahoos föga kända NoSQL-system . dbmsmusings.blogspot.ie (23 april 2010). Hämtad 11 september 2016. Arkiverad från originalet 6 september 2016. (obestämd)
- ↑ 1 2 Arinto Murdopo. Konsistensavvägningar i modern distribuerad databassystemdesign . - 2012. - 17 april. Arkiverad från originalet den 22 augusti 2016.
Länkar