Delen via


Conflicttypen en oplossingsbeleid bij gebruik van meerdere schrijfregio's

VAN TOEPASSING OP: NoSQL MongoDB Cassandra Gremlin Tafel

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. Als er conflicten zijn bij het verwijderen betrokken, wint de verwijderde versie altijd over invoeg- of vervangingsconflicten. Dit resultaat doet zich voor, ongeacht de waarde van het pad voor conflictoplossing.

    Notitie

    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.

    Zie voorbeelden voor het gebruik van beleidsregels voor conflictoplossing met LWW voor meer informatie.

  • 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.

    Notitie

    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: