Informazioni sulle scritture in più aree in Azure Cosmos DB
SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella
Il modo migliore per ottenere tempi di inattività quasi zero in uno scenario di interruzione parziale o totale in cui la coerenza delle letture non deve essere garantita, consiste nel configurare l'account per le scritture in più aree. Questo articolo illustra i concetti chiave da tenere presenti durante la configurazione di un account di scrittura in più aree.
Area dell'hub
In un account di database in più aree con due o più aree, la prima area in cui è stato creato l'account è denominata area "hub". Tutte le altre aree che vengono quindi aggiunte all'account sono denominate aree "satellite". Se l'area hub viene rimossa dall'account, l'area successiva, nell'ordine in cui sono state aggiunte, viene scelta automaticamente come area hub.
Tutte le scritture in arrivo nelle aree satellite vengono sottoposte a commit quorum nell'area locale e quindi inviate successivamente all'area hub per la risoluzione dei conflitti in modo asincrono. Una volta che una scrittura passa all'area dell'hub e viene risolto un conflitto, diventa una scrittura "confermata". Fino ad allora, viene chiamato scrittura "provvisoria" o scrittura "non confermata". Qualsiasi scrittura servita dall'area hub diventa immediatamente una scrittura confermata.
Informazioni sui timestamp
Una delle principali differenze in un account di scrittura in più aree è la presenza di due valori di timestamp del server associati a ogni entità. Il primo è il periodo del server in cui l'entità è stata scritta in tale area. Questo timestamp è disponibile sia in account di scrittura in un'area singola che in account di scrittura in più aree. Il secondo valore timestamp del server è associato al periodo in cui è stata confermata l'assenza di un conflitto oppure il conflitto è stato risolto nell'area dell'hub. Una scrittura confermata o risolta in conflitto ha un timestamp di risoluzione dei conflitti (crts
) assegnato, mentre una scrittura non confermata o provvisoria non ha crts
. Esistono due timestamp in Cosmos DB impostati dal server. La differenza principale è se la configurazione dell'area dell'account è a scrittura singola o a scrittura multipla.
Timestamp: | significato | Quando esposto |
---|---|---|
_ts |
Periodo del server in cui è stata scritta l'entità. | Sempre esposto da tutte le API di lettura e query. |
crts |
Periodo in cui è stato risolto il conflitto multi-scrittura o l'assenza di un conflitto è stata confermata. Per la configurazione dell'area in più scrittura, questo timestamp definisce l'ordine delle modifiche per il feed di modifiche:
|
Esposto in risposta alle richieste del feed di modifiche e solo quando "Nuovo modello wire" è abilitato dalla richiesta. Questa è l'impostazione predefinita per Tutte le versioni ed elimina la modalità Feed di modifiche. |
Passaggi successivi
Successivamente si possono leggere gli articoli seguenti: