Architetture di database multimaster replicate a livello globale con Microsoft Azure Cosmos DBMulti-master at global scale with Azure Cosmos DB

Lo sviluppo di applicazioni distribuite a livello globale che rispondono con latenze in locale durante la gestione di visualizzazioni coerenti dei dati in tutto il mondo è un problema complesso.Developing globally distributed applications that respond with local latencies while maintaining consistent views of data worldwide is a challenging problem. I clienti usano i database distribuiti a livello globale perché hanno bisogno di ridurre la latenza dell'accesso ai dati, ottenere la disponibilità elevata dei dati, garantirsi l'eventuale ripristino di emergenza e soddisfare i requisiti aziendali.Customers use globally distributed databases, because they need to improve data access latency, achieve high data availability, ensure guaranteed disaster recovery, and to meet their business requirements. L'architettura di database multimaster in Microsoft Azure Cosmos DB offre alti livelli di disponibilità (99,999%), una latenza in millisecondi a una cifra per scrivere i dati e una scalabilità con il supporto della risoluzione dei conflitti flessibile, completo e integrato.Multi-master in Azure Cosmos DB provides high levels of availability (99.999%), single-digit millisecond latency to write data and scalability with built-in comprehensive and flexible conflict resolution support. Queste funzionalità semplificano notevolmente lo sviluppo di applicazioni da distribuire a livello globale.These features significantly simplify development of globally distributed applications. Per le applicazioni distribuite globalmente il supporto multimaster è fondamentale.For globally distributed applications, multi-master support is crucial.

Architettura multimaster

Con il supporto multimaster offerto da Azure Cosmo DB, è possibile eseguire operazioni di scrittura in contenitori di dati, ad esempio raccolte, grafici e tabelle, distribuiti ovunque nel mondo.With Azure Cosmos DB multi-master support, you can perform writes on containers of data (for example, collections, graphs, tables) distributed anywhere in the world. È possibile aggiornare i dati in qualsiasi area che sia associata all'account di database.You can update data in any region that is associated with your database account. Questi aggiornamenti di dati possono essere propagati in modo asincrono.These data updates can propagate asynchronously. Oltre a offrire accesso rapido e latenza di scrittura breve ai dati, l'architettura multimaster rappresenta inoltre una soluzione pratica ai problemi di bilanciamento del carico e di failover.In addition to providing fast access and write latency to your data, multi-master also provides a practical solution for failover and load-balancing issues. Microsoft Azure Cosmos DB offre, in altre parole, una latenza di scrittura di < 10 ms al 99° percentile, una disponibilità di lettura e scrittura del 99,999% e la possibilità di scalare la velocità effettiva di lettura e scrittura ovunque nel mondo.In summary, with Azure Cosmos DB you get write latency of <10 ms at the 99th percentile anywhere in the world, 99.999% write and read availability anywhere in the world, and the ability to scale both write and read throughput anywhere around the world.

Importante

Il supporto dell'architettura multimaster è in anteprima privata. Per usare la versione di anteprima, iscriversi ora.Multi-master support is in private preview, to use the preview version, sign up now.

Effettuare l'iscrizione per il supporto multimasterSign up for multi-master support

Se si dispone già di una sottoscrizione di Azure, è possibile iscriversi per partecipare al programma di anteprima multimaster nel portale di Azure.If you already have an Azure subscription, you can sign up to join the multi-master preview program in the Azure portal. Se non si ha familiarità con Azure, registrarsi per una versione di prova gratuita che prevede 12 mesi di accesso libero ad Azure Cosmos DB.If you’re new to Azure, sign up for a free trial where you get 12 months of free access to Azure Cosmos DB. Per richiedere l'accesso al programma di anteprima multimaster, completare i passaggi seguenti.Complete the following steps to request access to the multi-master preview program.

  1. Nel portale di Azure fare clic su Crea una risorsa > Database > Azure Cosmos DB.In the Azure portal, click Create a resource > Databases > Azure Cosmos DB.

  2. Nella pagina Nuovo account, specificare un nome per l'account di Azure Cosmos DB e quindi scegliere API, sottoscrizione, gruppo di risorse e località.In the New Account page, provide a name for your Azure Cosmos DB account, choose the API, Subscription, Resource Group and Location.

  3. Selezionare poi Iscrizione immediata all'anteprima nel campo Multi Master Preview.Next select Sign up to preview today under the Multi Mater Preview field.

    Effettuare l'iscrizione per l'anteprima multimaster

  4. Nel riquadro Iscrizione immediata all'anteprima fare clic su OK.In the Sign up to preview today pane, click OK. Dopo aver inviato la richiesta, nel riquadro di creazione dell'account lo stato diventa In attesa di approvazione.After you submit the request, the status changes to Pending approval in the account creation blade.

Dopo l'invio della richiesta, si riceverà una notifica di approvazione della richiesta tramite posta elettronica.After you submit the request, you will receive an email notification that your request has been approved. A causa dell'elevato volume di richieste, si riceverà una notifica entro una settimana.Due to the high volume of requests, you should receive notification within a week. Non è necessario creare un ticket di supporto per completare la richiesta.You do not need to create a support ticket to complete the request. Le richieste verranno esaminate nell'ordine in cui sono state ricevute.Requests will be reviewed in the order in which they were received.

Esempio semplice di architettura multimaster: pubblicazione di contenutoA simple multi-master example – content publishing

Esaminiamo ora uno scenario reale per illustrare il modo in cui si può usare il modello multimaster con Microsoft Azure Cosmos DB.Let's look at a real-world scenario that describes how to use multi-master support with Azure Cosmos DB. Esaminare una piattaforma di pubblicazione di contenuti creata in Cosmos DB.Consider a content publishing platform built on Azure Cosmos DB. Ecco alcuni requisiti che devono essere rispettati da questa piattaforma per offrire un'esperienza utente ottimale per server di pubblicazione e consumer.Here are some requirements that this platform must meet for a great user experience for both publishers and consumers.

  • Sia gli autori che i sottoscrittori sono distribuiti in tutto il mondo.Both authors and subscribers are spread all over the world.

  • Gli autori devono pubblicare (scrivere) articoli nella rispettiva area locale (più vicina).Authors must publish (write) articles to their local (closest) region.

  • Gli autori hanno lettori/sottoscrittori degli articoli distribuiti in tutto il mondo.Authors have readers/subscribers of their articles who are distributed across the globe.

  • I sottoscrittori ricevono una notifica quando vengono pubblicati nuovi articoli.Subscribers should get a notification when new articles are published.

  • I sottoscrittori devono essere in grado di leggere articoli dalla rispettiva area locale.Subscribers must be able to read articles from their local region. Devono anche potere aggiungere revisioni per questi articoli.They should also be able to add reviews to these articles.

  • Qualunque utente, incluso l'autore degli articoli, deve potere visualizzare tutte le revisioni allegate agli articoli da un'area locale.Anyone including the author of the articles should be able view all the reviews attached to articles from a local region.

Supponendo che siano presenti milioni di consumer e server di pubblicazione con miliardi di articoli, sarà presto necessario affrontare i problemi relativi alla scalabilità, oltre a garantire l'accesso locale.Assuming millions of consumers and publishers with billions of articles, soon we have to confront the problems of scale along with guaranteeing locality of access. Un caso d'uso di questo tipo è un candidato ideale per il modello multimaster di Microsoft Azure Cosmos DB.Such a use case is a perfect candidate for Azure Cosmos DB multi-master.

Vantaggi offerti dal supporto multimasterBenefits of having multi-master support

Per le applicazioni distribuite a livello globale il supporto multimaster è fondamentale.Multi-master support is essential for globally distributed applications. Il modello multimaster è costituito da molteplici aree master che partecipano in ugual misura a un modello di scrittura ovunque (modello attivo-attivo) e viene usato per assicurare la disponibilità dei dati sempre e ovunque.Multi-master is composed of multiple master regions that equally participate in a write-anywhere model (active-active pattern) and it is used to ensure that data is available at any time where you need it. Eventuali aggiornamenti che vengono apportati a una singola area vengono propagati in modo asincrono a tutte le altre aree, che a loro volta fungono da aree master.Updates made to an individual region are asynchronously propagated to all other regions (which in turn are master regions in their own). Le aree di Microsoft Azure Cosmos DB che fungono da aree master in una configurazione multimaster operano automaticamente in modo da convergere i dati di tutte le repliche e assicurare la coerenza globale e l'integrità dei dati.Azure Cosmos DB regions operating as master regions in a multi-master configuration automatically work to converge the data of all replicas and ensure global consistency and data integrity. La figura seguente mostra la replica in lettura/scrittura in uno scenario a master singolo e in uno multimaster.The following image shows the read/write replication for a single-master and mult-master.

Master singolo e multimaster

I clienti che tentano di implementare il modello multimaster autonomamente aggiungono carico di lavoro agli sviluppatori.Implementing multi-master on your own adds burden on developers. Questi clienti possono impiegare centinaia di ore a configurare e testare una configurazione multimaster a livello globale e molti dispongono di un team di ingegneri dedicato il cui unico compito consiste nel monitorare e gestire la replica multimaster.Large-scale customers who try to implement multi-master on their own may spend hundreds of hours configuring and testing a worldwide multi-master configuration, and many have a dedicated set of engineers whose sole job is to monitor and maintain the multi-master replication. Quando si crea e si gestisce in modo autonomo una configurazione multimaster, si tolgono tempo e risorse all'innovazione dell'applicazione stessa e i costi aumentano.Creating and managing multi-master setup on your own takes the time, resources away from innovating in the application itself and results in much higher costs. Microsoft Azure Cosmos DB offre supporto multimaster "pronto all'uso" ed evita il sovraccarico di lavoro per gli sviluppatori.Azure Cosmos DB provides multi-master support “out-of-the-box” and removes this overhead from developers.

Il supporto multimaster offre in pratica i vantaggi seguenti:In summary, multi-master provides the following benefits:

  • Miglioramenti nel ripristino di emergenza, nella disponibilità in scrittura e nel failover - È possibile usare il supporto multimaster per conservare in misura maggiore la disponibilità elevata di un database di importanza strategica.Better disaster recovery, write availability and failover- Multi-master can be used to preserve the high-availability of a mission-critical database to a greater extent. Un database multimaster può, ad esempio, replicare i dati di un'area verso un'area di failover quando l'area primaria diventa non disponibile a causa di un'interruzione del servizio o una situazione di emergenza.For example, a multi-master database can replicate data from one region to a failover region when the primary region becomes unavailable due to an outage or a regional disaster. L'area di failover funge a questo punto da area master pienamente funzionale per supportare l'applicazione.Such a failover region will serve as a fully functional master region to support application. Il modello multimaster offre una "possibilità di sopravvivenza" e una protezione maggiori al verificarsi di disastri naturali, interruzioni di elettricità o sabotaggi, o di tutte queste situazioni insieme in quanto le aree rimanenti possono trovarsi in multimaster posti in luoghi geografici diversi con una disponibilità di scrittura garantita maggiore del 99,999%.Multi-master provides greater “survivability” protection with regards to natural disasters, power outages, or sabotage, or both because remaining regions can be in a geographically different multi-masters with a guaranteed write availability > 99.999%.

  • Miglioramento della latenza in scrittura per gli utenti finali - Più sono vicini i dati (offerti dal servizio) all'utente finale, migliore è l'esperienza dell'utente.Improved write latency for end users - The closer your data (that you are serving) is to the end users, the better the experience will be. Se, ad esempio, gli utenti si trovano in Europa ma il database risiede negli Stati Uniti o in Australia, la latenza aggiunta è di circa 140 ms e 300 ms per le rispettive aree.For example, if you have users in Europe but your database is in the US or Australia, the added latency is approximately 140 ms and 300 ms for the respective regions. Per molti giochi popolari, servizi bancari o applicazioni interattive (Web o per dispositivi mobili) i ritardi non sono un buon inizio.Delays are unacceptable to start with for many popular games, banking requirements, or interactive applications (web or mobile). La latenza ha un'enorme importanza nella percezione che un cliente ha di un'esperienza di alta qualità. È stato inoltre dimostrato che la latenza ha un notevole impatto sul comportamento degli utenti.Latency plays a huge part in customer’s perception of a high-quality experience and was proved to impact the behavior of users to some noticeable extent. Con l'evoluzione della tecnologia e soprattutto con l'avvento di AR, VR e MR, che richiedono esperienze ancora più immersive e realistiche, gli sviluppatori devono ora creare sistemi software con requisiti di latenza rigorosi.As technology improves and especially with the advent of AR, VR and MR, requiring even more immersive and lifelike experiences, developers now need to produce software systems with stringent latency requirements. Diventa quindi ancora più importante avere applicazioni e dati (contenuto per le applicazioni) disponibili localmente.Therefore, having locally available applications and data (content for the apps) is more important. Con il supporto multimaster di Microsoft Azure Cosmos DB, le prestazioni sono veloci quanto le normali operazioni di lettura e scrittura in locale e sono avanzate a livello globale grazie alla distribuzione geografica.With multi-master in Azure Cosmos DB, performance is as fast as regular local reads and writes and enhanced globally by geo-distribution.

  • Miglioramento della scalabilità in scrittura e della velocità effettiva di scrittura - Il supporto multimaster consente di ottenere una velocità effettiva più elevata e un utilizzo maggiore offrendo al contempo più modelli di coerenza con garanzia di correttezza e supportati da contratti di servizio.Improved write scalability and write throughput - Multi-master will give higher throughput, and greater utilization while offering multiple consistency models with correctness guarantees and backed up by SLAs.

    Scalabilità della velocità effettiva di scrittura con il supporto multimaster

  • Miglioramento del supporto per ambienti disconnessi (ad esempio, i dispositivi periferici) - Il supporto multimaster consente agli utenti di replicare tutti i dati o un subset di questi da un dispositivo periferico all'area più vicina in un ambiente disconnesso.Better support for disconnected environments (for example, edge devices) - Multi-master enables users to replicate all or a subset of data from an edge device to a closest region in a disconnected environment. Questo scenario è tipico dei sistemi di automazione della forza vendita, dove il portatile di un individuo (un dispositivo disconnesso) memorizza un subset di dati correlati al singolo venditore.This scenario is typical of sales force automation systems, where an individual's laptop (a disconnected device) stores a subset of data related to the individual salesperson. Le aree master nel cloud che si trovano in un posto qualsiasi nel mondo possono fungere da destinazione della copia dei dispositivi periferici remoti.Master regions in the cloud that are located anywhere in the world can operate as the target of the copy from the remote edge devices.

  • Bilanciamento del carico - Con il supporto multimaster, il carico nell'applicazione può essere ribilanciato spostando utenti/carichi di lavoro da un'area sovraccarica ad aree in cui il carico viene distribuito in modo uniforme.Load balancing - With multi-master, the load across the application can be rebalanced by moving users/workloads from a heavily loaded region to regions where load is evenly distributed. È possibile estendere la capacità di scrittura facilmente aggiungendo una nuova area e successivamente spostandovi alcune scritture.Write capacity can be easily extended by adding a new region and then switching some writes to the new region.

  • Migliore uso della capacità predisposta - Con il supporto multimaster, per carichi di lavoro misti e con intensa attività di scrittura, si può saturare la capacità predisposta in più regioni.Better use of provisioned capacity - With multi-master, for write-heavy and mixed workloads, you can saturate the provisioned capacity across multiple regions.. In alcuni casi si può ridistribuire le attività di lettura e scrittura in modo più equo. In questo modo è richiesta una minore velocità effettiva e i clienti hanno un maggiore risparmio sui costi.In some cases you can redistribute reads and writes more equally, so it requires less throughput to be provisioned, and leads to more cost savings for customers.

  • Applicazioni con architetture più semplici e più resilienti - Le applicazioni che vengono spostate in una configurazione multimaster ottengono la garanzia della resilienza dei dati.Simpler and more resilient app architectures - Applications moving to multi-master configuration get guaranteed data resilience. Poiché Microsoft Azure Cosmos DB nasconde tutta la complessità, la progettazione e l'architettura delle applicazioni diventano notevolmente più semplici.With Azure Cosmos DB hiding all the complexity, it can substantially simplify the application design and architecture.

  • Test di failover privo di rischi - Il test di failover non subisce alcuna riduzione delle prestazioni nella velocità effettiva di scrittura.Risk-free failover testing - Failover testing will not have any degradation on write throughput. Nel modello multimaster, tutte le altre aree sono master completi, pertanto il failover non ha molto impatto sulla velocità effettiva di scrittura.With multi-master, all other regions are full-masters, so failover will not have much impact on the write throughput.

  • Costo totale di proprietà (TCO) e DevOps più bassi - Il raggiungimento degli obiettivi di scalabilità, prestazioni, distribuzione globale e tempi di ripristino è spesso costoso a causa dell'elevato costo dei componenti aggiuntivi o al mantenimento di un'infrastruttura di backup che opera solo in casi di emergenza.Lower Total Cost of Ownership(TCO) and DevOps - Meeting scalability, performance, global distribution, recovery time objectives are often expensive due to expensive add-ons or maintaining a back-up infrastructure that is at rest until disaster strikes. Con il modello multimaster di Microsoft Azure Cosmos DB supportato da ottimi contratti di servizio, non sono più gli sviluppatori a dover creare e mantenere "la logica collante del back-end" e quindi possono gestire con più tranquillità i carichi di lavoro di importanza strategica.With Azure Cosmos DB multi-master backed up by industry-leading SLAs, developers no longer require building and maintaining the “backend glue logic” themselves and get a peace of mind running their mission-critical workloads.

Casi d'uso che richiedono il supporto multimasterUse-cases where multi-master support is needed

Esistono molti casi d'uso che richiedono il supporto multimaster in Microsoft Azure Cosmos DB:There are numerous use cases for multi-master in Azure Cosmos DB:

  • IoT - Il supporto multimaster di Microsoft Azure Cosmos DB Azure consente l'implementazione distribuita semplificata dell'elaborazione dei dati IoT.IoT - Azure Cosmos DB multi-master allows for simplified distributed implementation of IoT data processing. Le distribuzioni periferiche geograficamente distribuite che usano tipi di dati replicati privi di conflitti con CRDT spesso devono tenere traccia dei dati delle serie temporali provenienti da più posizioni.Geo-distributed edge deployments that use CRDT- conflict-free replicated data types often need to track time series data from multiple locations. Ogni dispositivo può essere disponibile in una delle aree più vicine e un dispositivo può viaggiare (ad esempio un'auto) ed essere dinamicamente reso disponibile per la scrittura in un'altra area.Each device can be homed to one of the closest regions, and a device can travel (for example, a car) and can dynamically be rehomed to write to another region.

  • E-commerce - Per garantire un'esperienza utente ottimale negli scenari di e-commerce, sono necessarie la disponibilità elevata e la resilienza agli errori.E-Commerce - Assuring great user experience in ecommerce scenarios needs high availability and resilience to failure scenarios. Se in un'area si verifica un errore, le sessioni degli utenti, i carrelli acquisti e gli elenchi delle preferenze attivi devono essere rilevati senza problemi da un'altra area senza che si verifichi la perdita dello stato.In case a region fails, user sessions, shopping carts, active wish lists need to be seamlessly picked up by another region without loss of state. Gli aggiornamenti eseguiti nel frattempo dall'utente devono essere gestiti in modo adeguato (ad esempio, le aggiunte e le rimozioni dal carrello acquisti devono essere trasferite).In the interim, updates made by the user must be handled appropriately (example, adds, and removes from the shopping cart must transfer over). Con il supporto multimaster, Microsoft Azure Cosmos DB è in grado di gestire questi scenari senza problemi, con una facile transizione tra aree attive mantenendo al contempo una visualizzazione coerente dal punto di vista dell'utente.With multi-master, Azure Cosmos DB can handle such scenarios gracefully, with a smooth transition between active regions while maintaining a consistent view from the user’s standpoint.

  • Rilevamento di frodi/anomalie - Le applicazioni che monitorano le attività degli utenti o degli account spesso sono distribuite a livello globale e devono tenere traccia di numerosi eventi contemporaneamente.Fraud/Anomaly Detection - Often applications that monitor user activity or account activity are globally distributed and must keep track of several events simultaneously. Mentre si creano e si gestiscono i punteggi per un utente, azioni da aree geografiche differenti devono aggiornare simultaneamente i punteggi per mantenere le metriche di rischio in linea.While creating and maintaining scores for a user, actions from different geographic regions must simultaneously update scores to keep the risk metrics inline. Microsoft Azure Cosmos DB fa in modo che gli sviluppatori non debbano gestire scenari di conflitto a livello di applicazione.Azure Cosmos DB can assure developers don’t have to handle conflict scenarios at the application level.

  • Collaborazione - Per le applicazioni che vengono valutate in base alla popolarità degli articoli, ad esempio prodotti in vendita o supporti da usare e così via. Il monitoraggio della popolarità in tutte le aree geografiche può diventare complicato, in particolare quando è necessario pagare le royalty o prendere decisioni sulla pubblicità in tempo reale.Collaboration - For applications that rank based on popularity of articles such as goods on sale or media to be consumed etc. Tracking popularity across geographic regions can get complicated, particularly when royalties need to be paid or real time advertising decisions to be made. La classificazione, l'ordinamento e la creazione di report in molte aree distribuite globalmente in tempo reale con Microsoft Azure Cosmos DB consentono agli sviluppatori di offrire funzionalità con poco sforzo e senza compromessi in termini di latenze.Ranking, sorting, and reporting across many regions worldwide, in real time with Azure Cosmos DB allows developers to deliver features with little effort and without compromising on latencies.

  • Misurazione - Il conteggio e la regolazione dell'uso (ad esempio chiamate API, transazioni/secondo, minuti usati) possono essere implementati a livello globale con semplicità usando il supporto multimaster di Microsoft Azure Cosmos DB.Metering - Counting and regulating usage (such as API calls, transactions/second, minutes used) can be implemented globally with simplicity using Azure Cosmos DB multi-master. La risoluzione dei conflitti integrata assicura sia l'accuratezza dei conteggi che la regolazione in tempo reale.Built-in conflict resolution assures both accuracy of counts and regulation in real time.

  • Personalizzazione - Che si stia gestendo contatori geograficamente distribuiti che attivano azioni, ad esempio punti fedeltà, o che si stiano implementando visualizzazioni personalizzate delle sessioni degli utenti, il conteggio a disponibilità elevata e geograficamente distribuito e semplificato offerto da Microsoft Azure Cosmos DB consente di ottenere dalle applicazioni prestazioni elevate con semplicità.Personalization - Whether you’re maintaining geographically distributed counters that trigger actions such as loyalty points awards or implementing personalized user session views, the high availability and simplified geo-distributed counting provided by Azure Cosmos DB, allows applications deliver high performance with simplicity.

Risoluzione dei conflitti con il supporto multimasterConflict resolution with multi-master

La sfida che spesso il modello multimaster deve affrontare è che due o più repliche dello stesso record potrebbero venire aggiornate simultaneamente da utenti diversi in due o più aree diverse.With multi-master, the challenge is often that two (or more) replicas of the same record may be updated simultaneously by different writers in two or more different regions. Le scritture simultanee possono generare due versioni diverse dello stesso record e, senza risoluzione dei conflitti integrata, l'applicazione deve eseguire da sola la risoluzione dei conflitti per risolvere questa incoerenza.Simultaneous writes may lead to two different versions of the same record and without built-in conflict resolution, and the application itself must perform conflict resolution to resolve this inconsistency.

Esempio - Si supponga di usare Microsoft Azure Cosmos DB come archivio di salvataggi permanenti per un'applicazione di carrelli acquisti e che questa applicazione sia distribuita in due aree, Stati Uniti orientali e Stati Uniti occidentali.Example - Let’s assume that you are using Azure Cosmos DB as the persistence store for a shopping cart application and this application is deployed in two regions: East US and West US. Approssimativamente nello stesso momento, un utente a San Francisco aggiunge un articolo al proprio carrello acquisti, ad esempio un libro, mentre un processo di gestione magazzino negli Stati Uniti orientali invalida un altro articolo del carrello acquisti (ad esempio un nuovo smartphone) dello stesso utente in risposta a una notifica da parte del fornitore relativa a un ritardo nella data di uscita del prodotto.If approximately at the same time, a user in San Francisco adds an item to his shopping cart (for example, a book) while an inventory management process in the East US invalidates a different shopping cart item (for example, a new phone) for that same user in response to a supplier notification that the release date had been delayed. All'ora T1, i record del carrello acquisti nelle due aree sono diversi.At time T1, the shopping cart records in the two regions are different. Il database usa il proprio meccanismo di replica e di risoluzione dei conflitti per risolvere questa incoerenza e, alla fine, viene selezionata una delle due versioni del carrello acquisti.The database will use its replication and conflict resolution mechanism to resolve this inconsistency and eventually one of the two versions of the shopping cart will be selected. Usando l'euristica della risoluzione dei conflitti applicata nella maggior parte dei casi dai database multimaster (ad esempio, la precedenza all'ultima scrittura), è impossibile per l'utente o l'applicazione prevedere quale versione viene selezionata.Using the conflict resolution heuristics most often applied by multi-master databases (for example, last write wins), it is impossible for the user or application to predict which version will be selected. In entrambi i casi si verifica una perdita dei dati o un comportamento imprevisto.In either case, data is lost or unexpected behavior may occur. Se viene selezionata la versione dell'area orientale, la selezione di un nuovo articolo (il libro) da parte dell'utente viene persa e se viene selezionata la versione dell'area occidentale, l'articolo precedentemente scelto (lo smartphone) rimane nel carrello.If the East region version is selected, then the user’s selection of a new purchase item (that is, a book) is lost and if the West region is selected, then the previously chosen item (that is, phone) is still in the cart. In ogni caso, alcune informazioni vengono perse.Either way, information is lost. Qualsiasi altro processo che analizza il carrello acquisti nel periodo compreso tra T1 e T2 si trova di fronte a un comportamento non deterministico.Finally, any other process inspecting the shopping cart between times T1 and T2 is going to see non-deterministic behavior as well. Un processo in background che seleziona il magazzino per l'evasione e aggiorna i costi del carrello acquisti produce risultati che sono in conflitto con l'eventuale contenuto del carrello.For example, a background process that selects the fulfillment warehouse and updates the cart shipping costs would produce results that conflict with the eventual contents of the cart. Se il processo è in esecuzione nell'area occidentale e l'alternativa 1 diventa realtà, il processo calcola i costi di spedizione per due articoli, anche se il carrello presto potrebbe avere un solo articolo, vale a dire il libro.If the process is running in the West region and alternative 1 becomes reality, it would compute the shipping costs for two items, even though the cart may soon have just one item, the book.

Microsoft Azure Cosmos DB implementa la logica per la gestione delle scritture in conflitto all'interno del motore del database stesso.Azure Cosmos DB implements the logic for handling conflicting writes inside the database engine itself. Azure Cosmos DB offre supporto per la risoluzione dei conflitti completo e flessibile offrendo vari modelli di risoluzione dei conflitti, tra cui Automatico (tipi di dati replicati senza conflitti), Priorità dell'ultima scrittura (LWW) e Personalizzato (stored procedure) per la risoluzione dei conflitti automatica.Azure Cosmos DB offers comprehensive and flexible conflict resolution support by offering several conflict resolution models, including Automatic (CRDT- conflict-free replicated data types), Last Write Wins (LWW), and Custom (Stored Procedure) for automatic conflict resolution. I modelli di risoluzione dei conflitti offrono garanzie di correttezza e coerenza e alleviano il carico di lavoro degli sviluppatori, i quali non devono più preoccuparsi della coerenza, la disponibilità, le prestazioni, la latenza di replica e le complesse combinazioni di eventi in caso di failover geografici e conflitti di scrittura tra più aree.The conflict resolution models provide correctness and consistency guarantees and remove the burden from developers to have to think about consistency, availability, performance, replication latency, and complex combinations of events under geo-failovers and cross-region write conflicts.

Risoluzione dei conflitti nel modello multimaster

Microsoft Azure Cosmos DB offre 3 tipi di modelli di risoluzione dei conflitti.You will have 3 types of conflict resolution models offered by Azure Cosmos DB. Le semantiche dei modelli di risoluzione dei conflitti sono le seguenti:The semantics of the conflict resolution models are as follows:

Automatico - Criteri di risoluzione dei conflitti predefiniti.Automatic - This is the default conflict resolution policy. Se si seleziona questo tipo di criteri, Microsoft Azure Cosmos DB risolve automaticamente gli aggiornamenti in conflitto sul lato server e garantisce una coerenza assoluta.Selecting this policy causes Azure Cosmos DB to automatically resolve the conflicting updates on the server side and provide strong-eventual-consistency guarantees. Microsoft Azure Cosmos DB implementa internamente la risoluzione dei conflitti automatica sfruttando i tipi di dati replicati privi di conflitti (CRDT) nel motore di database.Internally, Azure Cosmos DB implements automatic conflict resolution by leveraging Conflict-Free-Replicated-Data Types (CRDTs) inside the database engine.

Priorità dell'ultima scrittura (LWW) - Questi criteri consentono di risolvere i conflitti in base alla proprietà di timestamp sincronizzata definita dal sistema o a una proprietà personalizzata definita nella versione dei record in conflitto.Last-Write-Wins (LWW) - Choosing this policy will allow you to resolve conflicts based on either the system defined synchronized timestamp property or a custom property defined on the conflicting version of the records. La risoluzione dei conflitti avviene sul lato server e viene selezionata come prioritaria la versione con il timestamp più recente.The conflict resolution happens on the server side and the version with the latest timestamp is selected as the winner.

Personalizzato - È possibile registrare una logica di risoluzione dei conflitti definita dall'applicazione tramite la registrazione di una stored procedure.Custom - You can register an application defined conflict resolution logic by registering a stored-procedure. La stored procedure viene richiamata quando viene rilevato un conflitto tra aggiornamenti a cura di una transazione di database, sul lato server.The stored-procedure will get invoked upon detection of update conflicts under the auspices of a database transaction, on the server side. Se si seleziona l'opzione ma non si registra una stored procedure (o se la stored procedure genera un'eccezione in fase di esecuzione), è possibile accedere a tutte le versioni in conflitto tramite il feed dei conflitti e risolverle singolarmente.If you select the option but fail to register a stored procedure (or if the stored procedure throws an exception at runtime), you can access all of the conflicting versions via the Conflicts Feed and resolve them individually.

Passaggi successiviNext steps

In questo articolo è stato spiegato come usare il supporto multimaster distribuito a livello globale con Microsoft Azure Cosmos DB.In this article you learnt how to use globally distributed multi-master with Azure Cosmos DB. Esaminare quindi le risorse seguenti:Next, take a look at the following resources: