Conflicttypen en oplossingsbeleid bij gebruik van meerdere schrijfregio's

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin Tabel

Beleidsregels voor conflicten en conflictoplossing 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 updateconflicten optreden wanneer schrijvers gelijktijdig hetzelfde item in meerdere regio's bijwerken. Updateconflicten kunnen van de volgende drie typen zijn:

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

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

  • Conflicten verwijderen: deze conflicten kunnen optreden wanneer een toepassing tegelijkertijd een item in de ene regio 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 klokprotocol voor tijdsynchronisatie. Als u de API voor NoSQL gebruikt, kunt u een andere aangepaste numerieke eigenschap opgeven (bijvoorbeeld uw eigen notie van een tijdstempel) die moet worden gebruikt voor conflictoplossing. Een aangepaste numerieke eigenschap wordt ook wel het pad voor conflictoplossing genoemd.

    Als twee of meer items een conflict veroorzaken bij het invoegen of vervangen van bewerkingen, wordt het item met de hoogste waarde voor het conflictoplossingspad 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 krijgen uiteindelijk dezelfde versie van het vastgelegde item. Wanneer er sprake is van verwijderingsconflicten, wint de verwijderde versie altijd van 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 die gebruikmaken van LWW-conflictoplossingsbeleid voor meer informatie.

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

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

    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 beleidsregels voor conflictoplossing: