Conflicttypen en oplossingsbeleid bij gebruik van meerdere schrijfregio's

Conflicten en conflictoplossingsbeleid zijn van toepassing als uw Azure Cosmos DB-account is geconfigureerd met meerdere schrijfregio's.

Voor Azure Cosmos DB-accounts die zijn geconfigureerd met meerdere schrijfregio's, kunnen er updateconflicten optreden wanneer schrijvers hetzelfde item in meerdere regio's gelijktijdig bijwerken. Updateconflicten kunnen van de volgende drie typen zijn:

  • Conflicten invoegen: deze conflicten kunnen optreden wanneer een toepassing twee of meer items tegelijk invoegt met dezelfde unieke index in twee of meer regio's. Dit conflict kan bijvoorbeeld optreden met een id-eigenschap.

  • Conflicten vervangen: deze conflicten kunnen optreden wanneer een toepassing hetzelfde item tegelijk bijwerken in twee of meer regio's.

  • Conflicten verwijderen: deze conflicten kunnen optreden wanneer een toepassing een item in de ene regio tegelijk verwijdert en bijwerken in een andere regio.

Beleid voor conflictoplossing

Azure Cosmos DB biedt een flexibel op beleid gebaseerd mechanisme om schrijfconflicten op te lossen. U kunt kiezen uit twee beleidsregels voor conflictoplossing in een Azure Cosmos DB-container:

  • Last Write Wins (LWW):dit oplossingsbeleid maakt standaard gebruik van een door het systeem gedefinieerde tijdstempeleigenschap. Het is gebaseerd op het tijdsynchronisatieklokprotocol. Als u de API voor NoSQL gebruikt, kunt u elke andere aangepaste numerieke eigenschap (bijvoorbeeld uw eigen notie van een tijdstempel) opgeven die moet worden gebruikt voor conflictoplossing. Een aangepaste numerieke eigenschap wordt ook wel het pad voor conflictoplossing genoemd.

    Als twee of meer items conflicteren bij het invoegen of vervangen van bewerkingen, wordt het item met de hoogste waarde voor het pad voor conflictoplossing de winnaar. Het systeem bepaalt de winnaar als meerdere items dezelfde numerieke waarde hebben voor het pad voor conflictoplossing. Alle regio's worden geconvergeerd naar één winnaar en eindigen met dezelfde versie van het vastgelegde item. Wanneer er verwijderconflicten zijn, heeft de verwijderde versie altijd voorrang op invoeg- of vervangingsconflicten. Dit resultaat doet zich voor, ongeacht de waarde van het pad voor conflictoplossing.

    Opmerking

    Last Write Wins is het standaardbeleid voor conflictoplossing en gebruikt tijdstempel _ts voor de volgende API's: SQL, MongoDB, Cassandra, Gremlin en Table. Aangepaste numerieke eigenschap is alleen beschikbaar voor API voor NoSQL.

    Voor meer informatie, zie voorbeelden die gebruik maken van LWW-conflictoplossingsbeleid.

  • Aangepast: dit oplossingsbeleid is ontworpen voor door de toepassing gedefinieerde semantiek voor het afstemmen van conflicten. Wanneer u dit beleid instelt in uw Azure Cosmos DB-container, moet u ook een opgeslagen samenvoegprocedure registreren. Deze procedure wordt automatisch aangeroepen wanneer conflicten worden gedetecteerd onder een databasetransactie op de server. Het systeem biedt precies eenmaal garantie voor de uitvoering van een samenvoegprocedure als onderdeel van het toezeggingsprotocol.

    Als u uw container configureert met de aangepaste oplossingsoptie en u een samenvoegprocedure niet registreert op de container of als de samenvoegprocedure tijdens runtime een uitzondering genereert, worden de conflicten naar de conflictenfeed geschreven. Uw toepassing moet vervolgens de conflicten in de conflictenfeed handmatig oplossen. Zie voor meer informatie voorbeelden van het gebruik van het aangepaste oplossingsbeleid en het gebruik van de conflictenfeed.

    Opmerking

    Aangepast conflictoplossingsbeleid is alleen beschikbaar voor API voor NoSQL-accounts en kan alleen worden ingesteld tijdens het maken. Het is niet mogelijk om een aangepast oplossingsbeleid in te stellen voor een bestaande container.

Volgende stappen 

Meer informatie over het configureren van conflictoplossingsbeleid: