Het juiste consistentieniveau kiezen
Elk van de consistentiemodellen kan worden gebruikt voor specifieke praktijkscenario's. Elk biedt nauwkeurige beschikbaarheids- en prestatieafsplitsingen die worden ondersteund door uitgebreide SLA's. De volgende eenvoudige overwegingen helpen u bij het maken van de juiste keuze in veel veelvoorkomende scenario's.
Het standaardconsistentieniveau configureren
U kunt het standaardconsistentieniveau op elk gewenst moment configureren voor uw Azure Cosmos DB-account. Het standaardconsistentieniveau dat voor uw account is geconfigureerd, is van toepassing op alle Azure Cosmos DB-databases en -containers onder dat account. Alle lees- en query's die zijn uitgegeven voor een container of een database, gebruiken standaard het opgegeven consistentieniveau.
Leesconsistentie is van toepassing op één leesbewerking binnen een logische partitie. De leesbewerking kan worden uitgegeven door een externe client of een opgeslagen procedure.
Garanties die zijn gekoppeld aan consistentieniveaus
Azure Cosmos DB garandeert dat 100 procent van de leesaanvragen voldoet aan de consistentiegarantie voor het gekozen consistentieniveau. De exacte definities van de vijf consistentieniveaus in Azure Cosmos DB met behulp van de TLA+-specificatietaal worden geleverd in de GitHub-opslagplaats azure-cosmos-tla .
Grote consistentie
Sterke consistentie biedt garantie op linearisabiliteit. Lineariseerbaarheid verwijst naar het gelijktijdig verwerken van aanvragen. De leesbewerkingen retourneren gegarandeerd de meest recente vastgelegde versie van een item. Een client ziet nooit een niet-verzonden of gedeeltelijke schrijfbewerking. Gebruikers kunnen altijd gegarandeerd de meest recente vastgelegde schrijfbewerking lezen.
Consistentie Gebonden veroudering
In de consistentie gebonden veroudering is de vertraging van gegevens tussen twee regio's altijd kleiner dan een opgegeven hoeveelheid. De hoeveelheid kan 'K'-versies (dat wil wel 'updates') zijn van een item of met 'T'-tijdsintervallen, afhankelijk van wat het eerst wordt bereikt. Met andere woorden, wanneer u gebonden veroudering kiest, kunnen de maximum 'veroudering' van de gegevens in elke regio op twee manieren worden geconfigureerd:
- Het aantal versies (K) van het item
- De leesbewerkingen voor het tijdsinterval (T) kunnen achterblijven bij de schrijfbewerkingen
Gebonden veroudering is voornamelijk nuttig voor schrijfaccounts met één regio met twee of meer regio's. Als de gegevensvertraging in een regio (bepaald per fysieke partitie) de geconfigureerde verouderingswaarde overschrijdt, worden schrijfbewerkingen voor die partitie beperkt totdat veroudering weer binnen de geconfigureerde bovengrens valt.
Voor een account met één regio biedt Bounded Staleness dezelfde garanties voor schrijfconsistentie als sessie- en uiteindelijke consistentie. Met Gebonden veroudering worden gegevens gerepliceerd naar een lokale meerderheid (drie replica's in een vier replicaset) in één regio.
Consistentie Sessie
In sessieconsistentie, binnen één clientsessie, worden leesbewerkingen gegarandeerd voldaan aan de lees-uw-schrijfbewerkingen en garanties voor write-follows-reads. Hierbij wordt ervan uitgegaan dat er één 'writer'-sessie wordt gebruikt of dat het sessietoken voor meerdere schrijvers wordt gedeeld.
Net als alle consistentieniveaus die zwakker zijn dan Sterk, worden schrijfbewerkingen gerepliceerd naar minimaal drie replica's (in een vier replicaset) in de lokale regio, met asynchrone replicatie naar alle andere regio's.
Consistent Consistent voorvoegsel
In consistent voorvoegsel zien updates die zijn aangebracht als schrijfbewerkingen voor één document uiteindelijk consistentie. Updates die zijn gemaakt als een batch binnen een transactie, worden consistent geretourneerd voor de transactie waarin ze zijn doorgevoerd. Schrijfbewerkingen binnen een transactie van meerdere documenten zijn altijd samen zichtbaar.
Stel dat er twee schrijfbewerkingen worden uitgevoerd op documenten Doc 1 en Doc 2, binnen transacties T1 en T2. Wanneer de client een replica leest, ziet de gebruiker 'Doc 1 v1 en Doc 2 v1' of 'Doc 1 v2 en Doc 2 v2', maar nooit 'Doc 1 v1 en Doc 2 v2' of 'Doc 1 v2 en Doc 2 v1' voor dezelfde lees- of querybewerking.
Consistentie Uiteindelijk
In uiteindelijke consistentie is er geen bestelgarantie voor leesbewerkingen. Als er verder geen schrijfbewerkingen worden uitgevoerd, convergeren de replica's uiteindelijk.
Uiteindelijke consistentie is de zwakste vorm van consistentie, omdat een client mogelijk de waarden leest die ouder zijn dan de waarden die eerder zijn gelezen. Uiteindelijke consistentie is ideaal wanneer er geen garanties hoeven te worden gerangschikt voor de toepassing. Voorbeelden hiervan zijn het aantal Retweets, Vind-ik-leuks of niet-gelezen opmerkingen