Share via


Ütközéstípusok és feloldási szabályzatok több írási régió használatakor

A KÖVETKEZŐKRE VONATKOZIK: Nosql MongoDB Cassandra Gremlin Táblázat

Ütközések és ütközésfeloldási szabályzatok akkor alkalmazhatók, ha az Azure Cosmos DB-fiók több írási régióval van konfigurálva.

A több írási régióval konfigurált Azure Cosmos DB-fiókok esetében frissítési ütközések fordulhatnak elő, ha az írók egyszerre frissítik ugyanazt az elemet több régióban. A frissítési ütközések a következő három típusba sorolhatók:

  • Ütközések beszúrása: Ezek az ütközések akkor fordulhatnak elő, ha egy alkalmazás egyidejűleg két vagy több, azonos egyedi indexű elemet szúr be két vagy több régióban. Ez az ütközés például egy ID tulajdonsággal fordulhat elő.

  • Ütközések cseréje: Ezek az ütközések akkor fordulhatnak elő, ha egy alkalmazás egyszerre frissíti ugyanazt az elemet két vagy több régióban.

  • Ütközések törlése: Ezek az ütközések akkor fordulhatnak elő, ha egy alkalmazás egyszerre töröl egy elemet az egyik régióban, és frissíti azt egy másik régióban.

Ütközésfeloldási szabályzatok

Az Azure Cosmos DB rugalmas szabályzatalapú mechanizmust kínál az írási ütközések megoldásához. Egy Azure Cosmos DB-tárolóban két ütközésfeloldási szabályzat közül választhat:

  • Utolsó írási győzelem (LWW): Ez a feloldási szabályzat alapértelmezés szerint egy rendszer által definiált időbélyeg-tulajdonságot használ. Ez az időszinkronizálási óraprotokollon alapul. Ha a NoSQL API-t használja, bármely más egyéni numerikus tulajdonságot (például az időbélyeg saját fogalmát) megadhatja az ütközések feloldásához. Az egyéni numerikus tulajdonságot ütközésfeloldási útvonalnak is nevezik.

    Ha két vagy több elem ütközik a beszúrási vagy csereműveletek során, az ütközésfeloldási útvonal legmagasabb értékével rendelkező elem lesz a győztes. A rendszer határozza meg a nyertest, ha több elem azonos numerikus értékkel rendelkezik az ütközésfeloldási útvonalhoz. Minden régió egyetlen nyerteshez fog közeledni, és a véglegesített elem azonos verziójával fog végződni. Törlési ütközések esetén a törölt verzió mindig az ütközések beszúrása vagy cseréje során nyer. Ez az eredmény nem számít az ütközésfeloldási útvonal értékétől függetlenül.

    Megjegyzés

    A Last Write Wins az alapértelmezett ütközésfeloldási szabályzat, amely időbélyeget _ts használ a következő API-khoz: SQL, MongoDB, Cassandra, Gremlin és Table. Az egyéni numerikus tulajdonság csak a NoSQL API-hoz érhető el.

    További információért tekintse meg az LWW-ütközésfeloldási szabályzatokat használó példákat.

  • Egyéni: Ez a feloldási szabályzat alkalmazás által definiált szemantikákhoz készült az ütközések egyeztetéséhez. Amikor beállítja ezt a szabályzatot az Azure Cosmos DB-tárolón, regisztrálnia kell egy egyesítési tárolt eljárást is. Ezt az eljárást a rendszer automatikusan meghívja, ha ütközéseket észlel egy adatbázis-tranzakcióban a kiszolgálón. A rendszer pontosan egyszer biztosít garanciát az egyesítési eljárás végrehajtására a kötelezettségvállalási protokoll részeként.

    Ha egyéni feloldási beállítással konfigurálja a tárolót, és nem tud egyesítési eljárást regisztrálni a tárolón, vagy az egyesítési eljárás kivételt jelez futásidőben, az ütközések az ütközések hírcsatornába lesznek írva. Az alkalmazásnak ezután manuálisan kell feloldania az ütközések hírcsatornájában lévő ütközéseket. További információ: Példák az egyéni feloldási szabályzat használatára és az ütközések hírcsatornájának használatára.

    Megjegyzés

    Az egyéni ütközésfeloldási szabályzat csak a NoSQL-fiókok API-hoz érhető el, és csak létrehozáskor állítható be. Egy meglévő tárolón nem lehet egyéni feloldási szabályzatot beállítani.

Következő lépések

Ismerje meg, hogyan konfigurálhat ütközésfeloldási szabályzatokat: