Come distribuire i dati a livello globale con Azure Cosmos DBHow to distribute data globally with Azure Cosmos DB

Azure è ovunque, offre una copertura globale in oltre 50 aree geografiche ed è in continua espansione.Azure is ubiquitous - it has a global footprint across 50+ geographical regions and is continuously expanding. Ciò consente ad Azure di offrire in esclusiva agli sviluppatori la possibilità di creare, distribuire e gestire applicazioni distribuite a livello globale con la massima semplicità.With its global presence, one of the differentiated capabilities Azure offers to its developers is the ability to build, deploy, and manage globally distributed applications easily.

Azure Cosmos DB è il servizio di database multimodello distribuito a livello globale di Microsoft per applicazioni cruciali.Azure Cosmos DB is Microsoft's globally distributed, multi-model database service for mission-critical applications. Azure Cosmos DB offre distribuzione globale chiavi in mano, scalabilità elastica in termini di archiviazione e velocità effettiva ovunque nel mondo, latenze pari a singole unità di millisecondi al 99° percentile, cinque modelli di coerenza ben definiti e disponibilità elevata garantita, il tutto supportato da contratti di servizio completi leader del settore.Azure Cosmos DB provides turnkey global distribution, elastic scaling of throughput and storage worldwide, single-digit millisecond latencies at the 99th percentile, five well-defined consistency models, and guaranteed high availability, all backed by industry-leading comprehensive SLAs. Azure Cosmos DB indicizza automaticamente tutti i dati senza che sia necessario gestire manualmente indici o schemi.Azure Cosmos DB automatically indexes all your data without requiring you to deal with schema or index management. Si tratta di un servizio multimodello che supporta modelli di dati basati su documenti, coppie chiave-valore, grafi e famiglie di colonne.It is a multi-model service and supports document, key-value, graph, and column-family data models. In quanto originato in modalità nativa nel servizio cloud, Azure Cosmos DB è stato accuratamente progettato fin dall'inizio per gestire multi-tenancy e distribuzione globale.As a natively born in the cloud service, Azure Cosmos DB is carefully engineered with multi-tenancy and global distribution from the ground up.

Contenitore di Azure Cosmos DB partizionato e distribuito tra tre aree

Un singolo contenitore di Azure Cosmos DB partizionato e distribuito tra più aree di AzureA single Azure Cosmos DB container partitioned and distributed across multiple Azure regions

Durante lo sviluppo di Azure Cosmos DB, è emerso che non era possibile aggiungere la distribuzione globale a posteriori,As we have learned while building Azure Cosmos DB, adding global distribution cannot be an afterthought. perché non è una funzionalità che si può integrare su un sistema di database basato su "singolo sito".It cannot be "bolted-on" atop a "single site" database system. Le funzionalità offerte da un database distribuito a livello globale superano quelle del ripristino di emergenza con ridondanza geografica tradizionale offerte dai database basati su "singolo sito".The capabilities offered by a globally distributed database span beyond that of traditional geographical disaster recovery (Geo-DR) offered by "single-site" databases. Il database basati su singolo sito che offrono la funzionalità di ripristino di emergenza con ridondanza geografica rappresentano un sottoinsieme limitato dei database distribuiti a livello globale.Single site databases offering Geo-DR capability are a strict subset of globally distributed databases.

Grazie alla funzionalità di distribuzione globale chiavi in mano di Azure Cosmos DB, gli sviluppatori non devono creare i propri scaffolding di replica usando il modello lambda, ad esempio la replica di AWS DynamoDB, sul log del database oppure eseguendo "doppie scritture" tra più aree.With Azure Cosmos DB's turnkey global distribution, developers do not have to build their own replication scaffolding by employing either the Lambda pattern (for example, AWS DynamoDB replication) over the database log or by performing "double writes" across multiple regions. Questi approcci non sono consigliati perché la correttezza non è garantita e non offrono contratti di servizio affidabili.We do not recommend these approaches, since it is impossible to ensure correctness of such approaches and provide sound SLAs.

In questo articolo viene illustrata una panoramica delle funzionalità di distribuzione globale di Azure Cosmos DBIn this article, we provide an overview of Azure Cosmos DB's global distribution capabilities. e viene descritto l'approccio esclusivo di Azure Cosmos DB per l'offerta di contratti di servizio completi.We also describe Azure Cosmos DB's unique approach to providing comprehensive SLAs.

Abilitazione della distribuzione globale chiavi in manoEnabling turnkey global distribution

Azure Cosmos DB offre le funzionalità seguenti per consentire agli sviluppatori di scrivere applicazioni distribuite a livello globale in tutta semplicità.Azure Cosmos DB provides the following capabilities to enable you to easily write globally distributed applications. Queste funzionalità sono disponibili tramite API REST basate su provider di risorse di Azure Cosmos DB e tramite il portale di Azure.These capabilities are available via the Azure Cosmos DB's resource provider-based REST APIs as well as the Azure portal.

Guardare il video seguente per vedere la funzionalità di distribuzione globale chiavi in mano di Azure Cosmos DB in azione.Watch the following video to see the turnkey global distribution feature in Azure Cosmos DB in action.

Presenza in tutte le areeUbiquitous regional presence

La presenza geografica di Azure è in continuo aumento, grazie alla disponibilità di un crescente numero di nuove aree.Azure is constantly growing its geographical presence by bringing new regions online. Azure Cosmos DB viene classificato come servizio fondamentale in Azure ed è disponibile in tutte le nuove aree di Azure per impostazione predefinita.Azure Cosmos DB is classified as a foundational service in Azure and is available in all new Azure regions by default. In questo modo, è possibile associare un'area geografica all'account del database Azure Cosmos DB non appena Azure rende disponibile la nuova area.This allows you to associate a geographical region with your Azure Cosmos DB database account as soon as Azure opens the new region for business.

Associazione di un numero di aree illimitato all'account del database Azure Cosmos DBAssociating an unlimited number of regions with your Azure Cosmos DB database account

Azure Cosmos DB consente di associare tutte le aree desiderate all'account del database Azure Cosmos DB.Azure Cosmos DB allows you to associate any number of Azure regions with your Azure Cosmos DB database account. Ad eccezione delle limitazioni di geofencing, ad esempio Cina e Germania, non sono previsti limiti per il numero di aree che è possibile associare all'account del database Azure Cosmos DB.Outside of geo-fencing restrictions (for example, China, Germany), there are no limitations on the number of regions that can be associated with your Azure Cosmos DB database account. La figura seguente mostra un account del database configurato per estendersi su 25 aree di Azure.The following figure shows a database account configured to span across 25 Azure regions.

Account del database Azure Cosmos DB che si estende su 25 aree di Azure

Account del database Azure Cosmos DB di un tenant che si estende su 25 aree di AzureA tenant's Azure Cosmos DB database account spanning 25 Azure regions

Geofencing basato su criteriPolicy-based geo-fencing

Azure Cosmos DB è progettato per il supporto della definizione del recinto virtuale (geofencing) basata su criteri.Azure Cosmos DB is designed to support policy-based geo-fencing. Il geofencing è un componente importante che garantisce la governance dei dati e il rispetto delle limitazioni di conformità e che può impedire l'associazione di una determinata area all'account.Geo-fencing is an important component to ensure data governance and compliance restrictions and may prevent associating a specific region with your account. Tra gli esempi di geofencing sono inclusi, a titolo esemplificativo, la limitazione dell'ambito della distribuzione globale alle aree con cloud sovrano, come Cina e Germania, oppure all'interno dei confini di applicazione delle imposte governative, ad esempio l'Australia.Examples of geo-fencing include (but are not limited to) scoping global distribution to the regions within a sovereign cloud (for example, China and Germany) or within a government taxation boundary (for example, Australia). I criteri vengono controllati tramite i metadati della sottoscrizione di Azure.The policies are controlled using the metadata of your Azure subscription.

Aggiunta e rimozione di aree in modo dinamicoDynamically add and remove regions

Azure Cosmos DB consente di aggiungere (associare) o rimuovere (dissociare) aree dall'account del database in qualsiasi momento (vedere la figura precedente).Azure Cosmos DB allows you to add (associate) or remove (dissociate) regions from your database account at any point in time (see preceding figure). Grazie alla replica parallela dei dati tra le partizioni, Azure Cosmos DB garantisce che, quando viene aggiunta una nuova area, sarà disponibile per le operazioni entro 30 minuti in qualunque parte del mondo (supponendo che i dati siano di un massimo di 100 TB).By virtue of parallel replication of data across partitions, Azure Cosmos DB ensures that when a new region gets added, it is available for operations within 30 minutes anywhere in the world (assuming your data is 100 TBs or less).

Priorità di failoverFailover priorities

Per controllare la sequenza esatta dei failover a livello di area in caso di interruzione del servizio, Azure Cosmos DB consente di impostare una priorità per le varie aree associate all'account del database, come illustrato nella figura seguente.To control exact sequence of regional failovers in cases of an outage, Azure Cosmos DB enables you to associate a priority with various regions associated with the database account (see the figure below). Azure Cosmos DB garantisce che la sequenza di failover automatico venga eseguita in base all'ordine di priorità specificato.Azure Cosmos DB ensures that the automatic failover sequence occurs in the priority order you specified. Per altre informazioni su failover regionali, vedere Failover a livello di area automatici per la continuità aziendale in Azure Cosmos DB.For more information about regional failovers, see Automatic regional failovers for business continuity in Azure Cosmos DB.

Configurazione delle priorità di failover con Azure Cosmos DB

Un tenant di Azure Cosmos DB può configurare l'ordine di priorità di failover (riquadro a destra) per le aree associate a un account del databaseA tenant of Azure Cosmos DB can configure the failover priority order (right pane) for regions associated with a database account

Più modelli di coerenza ben definiti per i database distribuiti a livello globaleMultiple, well-defined consistency models for globally distributed databases

Azure Cosmos DB supporta più modelli di coerenza ben definiti, intuitivi e pratici supportati da contratti di servizio.Azure Cosmos DB supports multiple well-defined, intuitive, and practical consistency models backed by SLAs. È possibile scegliere un modello di coerenza specifico nell'elenco di opzioni disponibili, a seconda del carico di lavoro e degli scenari.You can choose a specific consistency model (from the available list of options) depending on the workload/scenarios.

Livelli di coerenza regolabili per i database con replica a livello globaleTunable consistency for globally replicated databases

Azure Cosmos DB consente di eseguire l'override a livello di codice e sostituire il livello di coerenza per singola richiesta in fase di esecuzione.Azure Cosmos DB allows you to programmatically override and relax the default consistency choice on a per request basis at runtime.

Aree di lettura e scrittura configurabili in modo dinamicoDynamically configurable read and write regions

Azure Cosmos DB consente di configurare le aree associate al database come aree di "lettura", "scrittura" o "lettura/scrittura".Azure Cosmos DB enables you to configure the regions (associated with the database) for "read", "write" or "read/write" regions.

Scalabilità elastica della velocità effettiva tra aree di AzureElastically scaling throughput across Azure regions

È possibile ridimensionare in modo elastico un contenitore di Azure Cosmos DB eseguendo il provisioning della velocità effettiva a livello di codice.You can elastically scale an Azure Cosmos DB container by provisioning throughput programmatically. La velocità effettiva viene applicata a tutte le aree in cui è distribuito il contenitore di Azure Cosmos DB.The throughput is applied to all the regions the Azure Cosmos DB container is distributed in.

Letture e scritture nell'area locale specificaGeo-local reads and writes

Il vantaggio principale di un database distribuito a livello globale è l'accesso a bassa latenza ai dati ovunque nel mondo.The key benefit of a globally distributed database is that it offers low latency access to data anywhere in the world. Azure Cosmos DB assicura letture e scritture a bassa latenza al 99° percentile.Azure Cosmos DB offers low latency reads and writes at the 99th percentile worldwide. Garantisce che tutte le letture siano gestite dall'area locale più vicina.It ensures that all reads are served from the closest (local) region. Per gestire una richiesta di lettura, viene usato il quorum locale dell'area in cui viene inviata la richiesta di lettura.To serve a read request, the quorum local to the region in which the read is issued is used. Lo stesso vale per le operazioni di scrittura.The same applies to writes. Un'operazione di scrittura viene riconosciuta solo dopo che la maggior parte delle repliche ha eseguito in modo durevole il commit della scrittura localmente, senza che sia vincolata al riconoscimento delle operazioni di scrittura da parte delle repliche remote.A write is acknowledged only after a majority of replicas have durably committed the write locally but without being gated on remote replicas to acknowledge the writes. In altre parole, il protocollo di replica di Azure Cosmos DB parte dal presupposto che i quorum di lettura e scrittura si trovino sempre nell'area in cui è stata inviata la richiesta.To put it differently, the replication protocol of Azure Cosmos DB operates under the assumption that the read and write quorums are always local to the region where the request has been issued.

Failover manualeManual failover

Azure Cosmos DB consente di attivare il failover di un account del database per convalidare le proprietà di disponibilità end-to-end dell'intera applicazione, oltre il database.Azure Cosmos DB allows you to trigger the failover of a database account to validate the end to end availability properties of the entire application (beyond the database). Poiché sia le proprietà di sicurezza e di attività del rilevamento di errori e dell'algoritmo di elezione sono garantite, Azure Cosmos DB garantisce una perdita di dati pari a zero per un'operazione di failover avviata manualmente dal tenant.Since both the safety and the liveness properties of the failure detection and leader election are guaranteed, Azure Cosmos DB guarantees zero-data-loss for a tenant-initiated manual failover operation.

Failover automaticoAutomatic failover

Azure Cosmos DB supporta il failover automatico nel corso di una o più interruzioni di servizio a livello di area.Azure Cosmos DB supports automatic failover during one or more regional outages. Durante un failover a livello di area, Azure Cosmos DB mantiene i contratti di servizio per latenza di lettura, disponibilità di tempo di attività, coerenza e velocità effettiva.During a regional failover, Azure Cosmos DB maintains its read latency, uptime availability, consistency, and throughput SLAs. Azure Cosmos DB prevede un limite superiore per la durata del completamento di un'operazione di failover automatico.Azure Cosmos DB provides an upper bound for the duration of an automatic failover operation to complete. Si tratta dell'intervallo di tempo della potenziale perdita di dati durante un'interruzione di servizio a livello di area.This is the window of potential data loss during a regional outage.

Progettato per varie granularità di failoverDesigned for different failover granularities

Attualmente le funzionalità di failover automatico e manuale sono esposte al livello di granularità dell'account del database.Currently the automatic and manual failover capabilities are exposed at the granularity of the database account. Si noti che internamente Azure Cosmos DB è progettato per offrire funzionalità di failover automatico a granularità più fini di un database, di un contenitore o persino di una partizione (di un contenitore proprietario di un intervallo di chiavi).Note, internally Azure Cosmos DB is designed to offer automatic failover at finer granularity of a database, a container, or even a partition (of a container owning a range of keys).

Multihosting in Azure Cosmos DBMulti-homing in Azure Cosmos DB

Azure Cosmos DB consente di interagire con un database tramite endpoint logici (indipendenti dall'area) o fisici (specifici dell'area).Azure Cosmos DB allows you to interact with a database using either logical (region-agnostic) or physical (region-specific) endpoints. L'uso di endpoint logici garantisce che l'applicazione possa usufruire del multihosting in modo trasparente in caso di failover.Using logical endpoints ensures that the application can transparently be multi-homed in case of a failover. Un endpoint fisico, invece, offre all'applicazione un controllo con granularità fine per reindirizzare le letture e le scritture ad aree specifiche.The latter, a physical endpoint, provides fine-grained control to the application to redirect reads and writes to specific regions.

Informazioni su come configurare le preferenze di lettura per l'API SQL, l'API Table e l'API MongoDB sono disponibili in questi articoli.You can find information on how to configure read preferences for the SQL API, Table API, and MongoDB API in these articles.

Migrazione di indici e di schemi del database trasparente e coerenteTransparent and consistent database schema and index migration

Azure Cosmos DB è completamente indipendente dallo schema.Azure Cosmos DB is fully schema-agnostic. La struttura esclusiva del motore di database consente ad Azure Cosmos DB di indicizzare automaticamente e in modo sincrono tutti i dati in fase di inserimento senza richiedere all'utente schemi o indici secondari.The unique design of the database engine allows Azure Cosmos DB to automatically and synchronously index all of the data upon ingestion, without requiring any schema or secondary indices from the user. In questo modo è possibile iterare rapidamente l'applicazione distribuita a livello globale senza preoccuparsi della migrazione dell'indice o dello schema del database o del coordinamento di implementazioni di modifiche dello schema dell'applicazione in più fasi.This enables you to iterate your globally distributed application rapidly without worrying about database schema and index migration or coordinating multi-phase application rollouts of schema changes. Azure Cosmos DB garantisce che qualsiasi modifica ai criteri di indicizzazione eseguita dall'utente non comporti un calo significativo di prestazioni o disponibilità.Azure Cosmos DB guarantees that any changes to indexing policies explicitly made by you do not result in either performance or availability degradation.

Contratti di servizio completi (oltre la disponibilità elevata)Comprehensive SLAs (beyond high availability)

In quanto servizio di database distribuito a livello globale, Azure Cosmos DB offre contratti di servizio ben definiti e completi per disponibilità, latenza, velocità effettiva e coerenza per il database in esecuzione su scala globale, indipendentemente dal numero di aree associate al database.As a globally distributed database service, Azure Cosmos DB offers well-defined and comprehensive SLAs for availability, latency, throughput, and consistency for the database running at global scale, regardless of the number of regions associated with the database.

Garanzie di latenzaLatency guarantees

Il vantaggio principale di un database distribuito a livello globale come Azure Cosmos DB è l'accesso a bassa latenza ai dati ovunque nel mondo.The key benefit of a globally distributed database service like Azure Cosmos DB is to offer low latency access to your data anywhere in the world. Azure Cosmos DB offre garanzie di bassa latenza al 99° percentile per varie operazioni su database.Azure Cosmos DB offers guaranteed low latency at the 99th percentile for various database operations. Il protocollo di replica usato da Azure Cosmos DB garantisce che le operazioni su database, sia in lettura che in scrittura, vengano sempre eseguite nell'area in cui si trova il client.The replication protocol that Azure Cosmos DB employs ensures that the database operations (both reads and writes) are always performed in the region local to that of the client. Il contratto di servizio per la latenza di Azure Cosmos DB offre garanzie al 99° percentile per letture, scritture indicizzate in modo sincrono e query per varie dimensioni di richiesta e risposta.The latency SLA of Azure Cosmos DB provides guarantees at the 99th percentile for both reads, (synchronously) indexed writes and queries for various request and response sizes. Le garanzie di latenza per le operazioni di scrittura includono i commit dei quorum di maggioranza durevoli all'interno dell'area locale.The latency guarantees for writes include durable majority quorum commits within the local region.

Relazione tra latenza e coerenzaLatency's relationship with consistency

Affinché un servizio distribuito a livello globale possa offrire coerenza assoluta in una configurazione distribuita a livello globale, deve replicare in modo sincrono le operazioni di scrittura oppure eseguire letture sincrone tra aree.For a globally distributed service to offer strong consistency in a globally distributed setup, it needs to synchronously replicate the writes or to synchronously perform cross-region reads. La velocità della luce e l'affidabilità della rete WAN indicano che la coerenza assoluta comporterà latenze elevate e disponibilità ridotta delle operazioni su database.The speed of light and the wide area network reliability dictates that strong consistency will result in higher latencies and reduced availability of database operations. Di conseguenza, per offrire basse latenze al 99° percentile e disponibilità del 99,99% garantite per tutti gli account in una singola area e per tutti gli account in più aree con coerenza flessibile, oltre a disponibilità del 99,999% per tutti gli account di database in più aree, il servizio deve usare la replica asincrona.Hence, in order to offer guaranteed low latencies at the 99th percentile and 99.99% availability for all single region accounts and all multi-region accounts with relaxed consistency, and 99.999% availability on all multi-region database accounts, the service must employ asynchronous replication. Questo, a sua volta, richiede che il servizio offra anche modelli di coerenza media ben definiti, meno efficienti rispetto alla coerenza assoluta (per offrire le garanzie di bassa latenza e disponibilità) ma più efficienti rispetto alla coerenza "finale" (con un modello di programmazione intuitivo).This in-turn requires that the service must also offer well-defined, relaxed consistency model(s) – weaker than strong (to offer low latency and availability guarantees) and ideally stronger than "eventual" consistency (with an intuitive programming model).

Azure Cosmos DB garantisce che un'operazione di lettura non sia tenuta a contattare le repliche estese su più aree per rispettare una garanzia del livello di coerenza specifico.Azure Cosmos DB ensures that a read operation is not required to contact replicas across multiple regions to deliver a specific consistency level guarantee. Allo stesso modo, assicura che un'operazione di scrittura non venga bloccata mentre è in corso la replica dei dati su tutte le aree, ovvero le operazioni di scrittura sono replicate in modo asincrono tra le aree.Likewise, it ensures that a write operation does not get blocked while the data is being replicated across all regions that is, writes are asynchronously replicated across regions). Per gli account del database in più aree è disponibile la coerenza assoluta, oltre a più livelli di coerenza media.For multi-region database accounts both strong as well as multiple relaxed consistency levels are available.

Relazione tra latenza e disponibilitàLatency's relationship with availability

Latenza e disponibilità sono le due facce della stessa medaglia.Latency and availability are the two sides of the same coin. Si parla di latenza di un'operazione in stato stabile e di disponibilità in presenza di errori e di partizioni di rete.Talking about latency of an operation in steady state and availability in the presence of failures and network partitions. Dal punto di vista dell'applicazione, un'operazione di database con esecuzione lenta non si distingue da un database non disponibile.From the application standpoint, a slow running database operation is indistinguishable from a database that is unavailable.

Per distinguere la latenza elevata dalla mancata disponibilità, Azure Cosmos DB consente un limite superiore per la latenza di varie operazioni su database.To distinguish high latency from unavailability, Azure Cosmos DB provides an absolute upper bound for latency of various database operations. Se il tempo necessario per completare un'operazione su database è maggiore del limite superiore, Azure Cosmos DB restituisce un errore di timeout.If the database operation takes longer than the upper bound to complete, Azure Cosmos DB returns a timeout error. Il contratto di servizio relativo alla disponibilità di Azure Cosmos DB garantisce che i timeout vengano conteggiati ai fini del contratto di servizio per la disponibilità.The Azure Cosmos DB availability SLA ensures that the timeouts are counted against the availability SLA.

Relazione tra latenza e velocità effettivaLatency's relationship with throughput

Con Azure Cosmos DB non è necessario scegliere tra latenza e velocità effettiva.Azure Cosmos DB does not make you choose between latency and throughput. Viene rispettato il contratto di servizio per latenza al 99° percentile e viene garantita la velocità effettiva di cui è stato effettuato il provisioning.It honors the SLA for both latency at the 99th percentile and delivers the throughput that you have provisioned.

Garanzie di coerenzaConsistency guarantees

Sebbene il modello di coerenza assoluta rappresenti lo standard di programmabilità dei dati più elevato, comporta una latenza elevata (in stato stabile) e una disponibilità ridotta (in caso di errori).While the strong consistency model is the gold standard of data programmability, it comes at a steep price of higher latency (in steady state) and reduced availability (in the face of failures).

Azure Cosmos DB offre un modello di programmazione ben definito che consente di valutare la coerenza dei dati replicati.Azure Cosmos DB offers a well-defined programming model for you to reason about replicated data's consistency. Per consentire la creazione semplificata di applicazioni distribuite a livello globale con funzionalità multihosting, i modelli di coerenza esposti da Azure Cosmos DB sono progettati per essere indipendenti dall'area e per non dipendere dall'area in cui vengono gestite le operazioni di lettura e scrittura.In order to enable you to easily build globally distributed applications with multi-homing capability, the consistency models exposed by Azure Cosmos DB are designed to be region-agnostic and independent from the region from where the reads and writes are being served.

Il contratto di servizio per la coerenza di Azure Cosmos DB garantisce che il 100% delle richieste di lettura soddisferà la garanzia di coerenza per il modello di coerenza specificato dall'utente a livello dell'account del database o della richiesta.Azure Cosmos DB's consistency SLA guarantees that 100% of read requests will meet the consistency guarantee for the consistency model specified by you (either at the database account or the request level). Si considera che una richiesta abbia soddisfatto il contratto di servizio per la coerenza se sono state soddisfatte tutte le garanzie di coerenza associate al livello di coerenza.A read request is considered to have met the consistency SLA, if all the consistency guarantees associated with the consistency level are satisfied. La tabella seguente mostra le garanzie di coerenza corrispondenti ai modelli di coerenza specifici offerti da Azure Cosmos DB.The following table captures the consistency guarantees that correspond to specific consistency models offered by Azure Cosmos DB.

Modello di coerenzaConsistency Model Caratteristiche di coerenzaConsistency Characteristics Contratto di servizioSLA
AssolutaStrong LinearizzabileLinearizable 100%100%
Obsolescenza associataBounded staleness Lettura monotonica (all'interno di un'area)Monotonic read (within a region) 100%100%
Prefisso coerenteConsistent prefix 100%100%
Decadimento ristretto < K,TStaleness bound < K,T 100%100%
sessioneSession Lettura delle proprie scrittureRead your own write 100%100%
Lettura monotonicaMonotonic read 100%100%
Prefisso coerenteConsistent prefix 100%100%
Prefisso coerenteConsistent prefix Prefisso coerenteConsistent prefix 100%100%

Garanzie di coerenza associate ai modelli di coerenza specifici in Azure Cosmos DBConsistency guarantees associated with a given consistency model in Azure Cosmos DB

Relazione tra coerenza e disponibilitàConsistency's relationship with availability

Il risultato di impossibilità determinato dal teorema CAP (Consistency, Availability, Partition Tolerance - Coerenza, Disponibilità, Tolleranza di partizione) dimostra che è impossibile che un sistema rimanga disponibile e offra coerenza linearizzabile in caso di errori.The impossibility result of the CAP theorem proves that it is indeed impossible for a system to remain available and offer linearizable consistency in the face of failures. Il servizio di database deve scegliere tra coerenza e tolleranza di partizione (CP) o tra disponibilità e tolleranza di partizione (AP). I sistemi CP rinunciano alla disponibilità a favore della coerenza linearizzabile, mentre i sistemi AP rinunciano alla coerenza linearizzabile a favore della disponibilità.The database service must choose to be either CP or AP, where CP systems forgo availability in favor of linearizable consistency while the AP systems forgo linearizable consistency in favor of availability. Azure Cosmos DB non viola mai il modello di coerenza necessario, di conseguenza può essere formalmente considerato un sistema CP.Azure Cosmos DB never violates the requested consistency model, which formally makes it a CP system. In pratica, però, la coerenza non è una soluzione del tipo "tutto o niente"; esistono più modelli di coerenza ben definiti tra la coerenza linearizzabile e la coerenza finale.However, in practice consistency is not an all or nothing proposition; there are multiple well-defined consistency models along the consistency spectrum between linearizable and eventual consistency. Per Azure Cosmos DB sono stati identificati vari modelli di coerenza media applicabili a scenari reali e intuitivi da usare.In Azure Cosmos DB identifies several relaxed consistency models that are applicable to real world scenarios and are intuitive to use. Azure Cosmos DB supera i compromessi relativi a coerenza e disponibilità offrendo più modelli di coerenza media ben definiti e una disponibilità del 99,99% per tutti gli account di database in una singola area, oltre a una disponibilità del 99,999% in lettura e scrittura per tutti gli account di database in più aree.Azure Cosmos DB navigates the consistency-availability tradeoffs by offering a multiple relaxed yet well-defined consistency models and a 99.99% availability for all single region database accounts and 99.999% read and write availability for all multi-region database accounts.

Relazione tra coerenza e latenzaConsistency's relationship with latency

Una variante più completa del teorema CAP è denominata PACELC e tiene in considerazione i compromessi tra latenza e coerenza in stato stabile.A more comprehensive variation of CAP theorem is called PACELC, which also accounts for latency and consistency tradeoffs in a steady state. Afferma che in uno stato stabile un sistema di database deve scegliere tra coerenza e latenza.It states that in a steady state, a database system must choose between consistency, and latency. Con più modelli di coerenza media (supportati da replica asincrona e quorum di lettura e scrittura locali), Azure Cosmos DB garantisce che tutte le operazioni di lettura e scrittura vengano eseguite rispettivamente nelle aree di lettura e scrittura locali specifiche.With multiple relaxed consistency models (backed by asynchronous replication and local read and write quorums), Azure Cosmos DB ensures that all reads and writes are local to the read and write regions respectively. Questo consente ad Azure Cosmos DB di offrire garanzie di bassa latenza all'interno dell'area per modelli di coerenza specifici.This allows Azure Cosmos DB to offer low latency guarantees within the region for the given consistency models.

Relazione tra coerenza e velocità effettivaConsistency's relationship with throughput

Poiché l'implementazione di un modello di coerenza specifico dipende dalla scelta di un tipo di quorum, anche la velocità effettiva varia in base al tipo di modello di coerenza scelto.Since the implementation of a specific consistency model depends on the choice of a quorum type, throughput also varies based on the choice of a consistency model. In Azure Cosmos DB, ad esempio, l'addebito delle unità richiesta con le letture con coerenza assoluta è pari al doppio di quella delle letture con coerenza finale.For instance, in Azure Cosmos DB, the RU charge for strongly consistent reads is roughly double that of eventually consistent reads. In questo caso, sarà necessario eseguire il provisioning del doppio delle unità richiesta per ottenere la stessa velocità effettiva.In this case, you will need to provision double the RUs to achieve the same throughput.

Relazione tra coerenza e velocità effettiva

Relazione della capacità di lettura per un modello di coerenza specifico in Azure Cosmos DB Relationship of read capacity for a specific consistency model in Azure Cosmos DB

Garanzie di velocità effettivaThroughput guarantees

Azure Cosmos DB consente di ridimensionare la velocità effettiva e lo spazio di archiviazione in modo elastico su un numero qualsiasi di aree a seconda delle esigenze o della domanda.Azure Cosmos DB allows you to scale throughput (as well as, storage), elastically across any number of regions depending on your needs or demand.

Contenitori di Azure Cosmos DB partizionati e distribuiti

Un singolo contenitore di Azure Cosmos DB con partizionamento orizzontale (su tre partizioni di risorse all'interno di un'area) distribuito a livello globale su tre aree di AzureA single Azure Cosmos DB container horizontally partitioned (across three resource partitions within a region) and then globally distributed across three Azure regions

Un contenitore di Azure Cosmos DB viene distribuito in due dimensioni (i) all'interno di un'area e (ii) in più aree.An Azure Cosmos DB container gets distributed in two dimensions (i) within a region and (ii) across regions. Ecco come:Here's how:

  • Distribuzione locale: all'interno di una singola area, la scalabilità orizzontale di un contenitore di Azure Cosmos DB viene garantita tramite l'aumento di partizioni di risorse.Local distribution: Within a single region, an Azure Cosmos DB container is horizontally scaled out in terms of resource partitions. Ogni partizione di risorsa gestisce un set di chiavi e offre coerenza assoluta e disponibilità elevata essendo rappresentata fisicamente da quattro repliche chiamate anche set di repliche e dalla replica della macchina a stati tra tali repliche.Each resource partition manages a set of keys and is strongly consistent and highly available being physically represented by four replicas also called a replica-set and state machine replication among those replicas. Azure Cosmos DB è un sistema completamente gestito da risorse, in cui una partizione di risorsa è responsabile della distribuzione della propria quota di velocità effettiva per il budget di risorse di sistema allocate.Azure Cosmos DB is a fully resource-governed system, where a resource partition is responsible to deliver its share of throughput for the budget of system resources allocated to it. Il ridimensionamento di un contenitore di Azure Cosmos DB è trasparente agli utenti.The scaling of an Azure Cosmos DB container is transparent to the users. Azure Cosmos DB gestisce le partizioni di risorse, dividendole e unendole in base alle esigenze di pari passo con l'evoluzione dei requisiti di archiviazione e di velocità effettiva.Azure Cosmos DB manages the resource partitions and splits and merges them as needed as storage and throughput requirements change.
  • Distribuzione globale: se si tratta di un database con più aree, ogni partizione di risorsa viene quindi distribuita in tali aree.Global distribution: If it is a multi-region database, each of the resource partitions is then distributed across those regions. Le partizioni di risorse proprietarie dello stesso set di chiavi in più aree formano un set di partizioni (vedere la figura precedente).Resource partitions owning the same set of keys across various regions form partition set (see preceding figure). Le partizioni di risorse in un set di partizioni sono coordinate tramite la replica della macchina a stati tra le aree associate al database.Resource partitions within a partition set are coordinated using state machine replication across multiple regions associated with the database. A seconda del livello di coerenza configurato, le partizioni di risorse in un set di partizioni sono configurate in modo dinamico con topologie diverse, ad esempio a stella, con collegamento in cascata, ad albero e così via.Depending on the consistency level configured, the resource partitions within a partition set are configured dynamically using different topologies (for example, star, daisy-chain, tree etc.).

Grazie a funzionalità di gestione delle partizioni a velocità di risposta elevata, bilanciamento del carico e governance delle risorse rigida, Azure Cosmos DB consente di ridimensionare in modo elastico la velocità effettiva in più aree di Azure associate a un contenitore o a un database di Azure Cosmos DB.By virtue of a highly responsive partition management, load balancing and strict resource governance, Azure Cosmos DB allows you to elastically scale throughput across multiple Azure regions associated with an Azure Cosmos DB container or database. La modifica della velocità effettiva di cui è stato effettuato il provisioning è un'operazione di runtime in Azure Cosmos DB.Changing provisioned throughput is a runtime operation in Azure Cosmos DB. Come per qualsiasi altra operazione su database, Azure Cosmos DB garantisce il limite superiore assoluto della latenza durante l'operazione di modifica della velocità effettiva di cui è stato effettuato il provisioning.Similar to other database operations, Azure Cosmos DB guarantees the absolute upper bound on latency for your request to change provisioned throughput. Ad esempio, la figura seguente mostra il contenitore di un cliente per il quale il provisioning della velocità effettiva (compresa tra 1 milione e 10 milioni di richieste al secondo in due aree) viene eseguito in modo elastico in base alla domanda.For example, the following figure shows a customer's container with elastically provisioned throughput (ranging from 1M-10M requests/sec across two regions) based on the demand.

Provisioning elastico della velocità effettiva di Azure Cosmos DB

Contenitore di un cliente con provisioning elastico della velocità effettiva (compresa tra 1 milione e 10 milioni di richieste al secondo)A customer's container with elastically provisioned throughput (varying from 1M-10M requests/sec)

Relazione tra velocità effettiva e coerenzaThroughput's relationship with consistency

È la stessa descritta in Relazione tra coerenza e velocità effettiva.It is the same as described in Consistency's relationship with throughput.

Relazione tra velocità effettiva e disponibilitàThroughput's relationship with availability

Azure Cosmos DB continua a mantenere la disponibilità elevata anche quando vengono apportate modifiche alla velocità effettiva di cui è stato effettuato il provisioning.Azure Cosmos DB continues to maintain its high availability when changes are made to provisioned throughput. Azure Cosmos DB gestisce le partizioni di risorse in modo trasparente (eseguendo operazioni di divisione, unione e clonazione) e garantisce che le operazioni non degradino le prestazioni o la disponibilità mentre l'applicazione aumenta o riduce la velocità effettiva in modo elastico.Azure Cosmos DB transparently manages resource partitions (and performs split, merge, and clone operations) and ensures that the operations do not degrade performance or availability, while the application elastically increases or decreases throughput.

Garanzie di disponibilitàAvailability guarantees

Azure Cosmos DB offre un contratto di servizio con disponibilità del 99,99% per tutti gli account di database in una singola area e tutti gli account in più aree con coerenza media e con disponibilità del 99,999% per tutti gli account di database in più aree.Azure Cosmos DB offers a 99.99% availability SLA for all single region database accounts and all multi-region accounts with relaxed consistency, and 99.999% availability on all multi-region database accounts. Come descritto in precedenza, le garanzie di disponibilità di Azure Cosmos DB includono un limite superiore assoluto di latenza per ogni operazione del piano dati e controllo.As described earlier, Azure Cosmos DB's availability guarantees include an absolute upper bound for latency for every data and control plane operations. Le garanzie di disponibilità non variano in base al numero di aree o alla distanza geografica tra le aree.The availability guarantees do not change with the number of regions or the geographical distance between regions. Le garanzie di disponibilità sono applicabili sia al failover manuale sia a quello automatico.Availability guarantees are applicable with respect to both manual as well as automatic failovers. Azure Cosmos DB offre API multihosting trasparenti che garantiscono che l'applicazione possa funzionare su endpoint logici e indirizzare le richieste in modo trasparente a una nuova area in caso di failover.Azure Cosmos DB offers transparent multi-homing APIs that ensure that your application can operate against logical endpoints and can transparently route the requests to a new region in case of a failover. Non è necessario ridistribuire l'applicazione in caso di failover in un'altra area e i contratti di servizio relativi alla disponibilità vengono mantenuti in qualsiasi momento.Your application does not need to be redeployed in case of a regional failover and the availability SLAs are preserved at all times.

Relazione tra disponibilità e coerenza, latenza e velocità effettivaAvailability's relationship with consistency, latency, and throughput

La relazione tra disponibilità e coerenza, latenza e velocità effettiva è descritta nelle sezioni Relazione tra coerenza e disponibilità, Relazione tra latenza e disponibilità e Relazione tra velocità effettiva e disponibilità.Availability’s relationship with consistency, latency, and throughput is described in the sections Consistency's relationship with availability, Latency's relationship with availability and Throughput's relationship with availability.

Metriche del contratto di servizio per il clienteCustomer-facing SLA metrics

Azure Cosmos DB espone in modo trasparente le metriche per velocità effettiva, latenza, coerenza e disponibilità.Azure Cosmos DB transparently exposes the throughput, latency, consistency, and availability metrics. Queste metriche sono accessibili a livello di codice e tramite il portale di Azure (vedere la figura seguente).These metrics are accessible programmatically and via the Azure portal (see the figure below). È anche possibile impostare avvisi per varie soglie usando Azure Application Insights.You can also set up alerts on various thresholds using Azure Application Insights.

Metriche del contratto di servizio di Azure Cosmos DB visibili per il cliente

Le metriche per coerenza, latenza, velocità effettiva e disponibilità sono disponibili in modo trasparente per ogni tenantConsistency, Latency, Throughput, and Availability metrics are transparently available to each tenant

Passaggi successiviNext steps

RiferimentiReferences

  1. Eric Brewer.Eric Brewer. Towards Robust Distributed Systems (Verso sistemi distribuiti affidabili)Towards Robust Distributed Systems
  2. Eric Brewer.Eric Brewer. CAP Twelve Years Later – How the rules have changed (Teorema CAP dodici anni dopo - Come sono cambiate le regole)CAP Twelve Years Later – How the rules have changed
  3. Gilbert, Lynch.Gilbert, Lynch. - Brewer's Conjecture and Feasibility of Consistent, Available, Partition Tolerant Web Services (Ipotesi e fattibilità dei servizi Web con coerenza, disponibilità e tolleranza di errore) - Brewer's Conjecture and Feasibility of Consistent, Available, Partition Tolerant Web Services
  4. Daniel Abadi.Daniel Abadi. Consistency Tradeoffs in Modern Distributed Database Systems Design (Compromessi sulla coerenza nella progettazione di sistemi di database distribuiti moderni)Consistency Tradeoffs in Modern Distributed Database Systems Design
  5. Martin Kleppmann.Martin Kleppmann. Please stop calling databases CP or AP (Non definire più i database come CP (coerenza e tolleranza di partizione) o AP (disponibilità e tolleranza di partizione))Please stop calling databases CP or AP
  6. Peter Bailis et al. Probabilistic Bounded Staleness (PBS) for Practical Partial Quorums (Decadimento ristretto probabilistico per quorum parziali pratici)Peter Bailis et al. Probabilistic Bounded Staleness (PBS) for Practical Partial Quorums
  7. Naor e Wool.Naor and Wool. Load, Capacity and Availability in Quorum Systems (Carico, capacità e disponibilità nei sistemi di quorum)Load, Capacity and Availability in Quorum Systems
  8. Herlihy e Wing.Herlihy and Wing. Lineralizability: A correctness condition for concurrent objects (Linearizzabilità: una condizione di correttezza per gli oggetti simultanei)Lineralizability: A correctness condition for concurrent objects
  9. Contratto di servizio Azure Cosmos DBAzure Cosmos DB SLA