Változáscsatorna az Azure Cosmos DB-ben

ÉRINTETT KIADÁSOK: SQL API Cassandra API Gremlin API MongoDB-hez készült Azure Cosmos DB API

Az Azure Cosmos DB változáscsatornája egy tároló módosításainak állandó rekordja a sorrendjükben. A változáscsatorna támogatása az Azure Cosmos DB-ben egy Azure Cosmos-tároló változásainak figyelésével működik. Ezután a módosításuk sorrendjében felsorolja a módosított dokumentumokat. A megőrzött módosítások aszinkron módon és növekményesen is feldolgozhatók, és a kimenet elosztható egy vagy több felhasználó között párhuzamos feldolgozás céljából.

További információ a változáscsatorna tervezési mintáiról.

Támogatott API-k és ügyféloldali SDK-k

Ezt a funkciót jelenleg az alábbi Azure Cosmos DB API-k és ügyféloldali SDK-k támogatják.

Ügyfélillesztők SQL API Cassandrához készült Azure Cosmos DB API MongoDB-hez készült Azure Cosmos DB API Gremlin API Table API
.NET Igen Igen Igen Igen Nem
Java Igen Igen Igen Igen Nem
Python Igen Igen Igen Igen Nem
Node/JS Igen Igen Igen Igen Nem

Változáscsatorna és különböző műveletek

Ma az összes beszúrás és frissítés megjelenik a változáscsatornában. A változáscsatorna nem szűrhető egy adott művelettípusra. Az egyik lehetséges alternatíva az, hogy hozzáadunk egy "helyreállítható jelölőt" az elemhez a frissítésekhez, és az alapján szűrünk, amikor a változáscsatornában feldolgozunk elemeket.

A változáscsatorna jelenleg nem naplózza a törléseket. Az előző példához hasonlóan hozzáadhat egy helyreállítható jelölőt a törölt elemekhez. Hozzáadhat például egy "törölt" nevű attribútumot, és beállíthatja "true" értékre, és beállíthat egy TTL-t az elemen, hogy az automatikusan törölhető legyen. Elolvashatja az előzményelemek változáscsatornáját (az elemnek megfelelő legutóbbi módosítás nem tartalmazza a köztes módosításokat), például az öt évvel ezelőtt hozzáadott elemeket. A változáscsatornát a tároló eredetéig olvashatja, de ha töröl egy elemet, az el lesz távolítva a változáscsatornából.

Elemek rendezési sorrendje a változáscsatornában

A változáscsatorna elemei a módosítási időpontjuk sorrendjében jelennek meg. Ez a rendezési sorrend logikai partíciókulcsonként garantált.

Konzisztenciaszint

A változáscsatorna végleges konzisztenciaszinten történő felhasználása közben ismétlődő események lehetnek a változáscsatorna későbbi olvasási műveletei között (az egyik olvasási művelet utolsó eseménye a következő elsőként jelenik meg).

Változáscsatorna többrégiós Azure Cosmos-fiókokban

Többrégiós Azure Cosmos-fiókban, ha egy írási régió feladatátvételt hajt végre, a változáscsatorna a manuális feladatátvételi művelet során is működni fog, és az egybefüggő lesz.

Változáscsatorna és élettartam (TTL)

Ha egy TTL (élettartam) tulajdonság egy elemen -1 értékre van állítva, a változáscsatorna örökre megmarad. Ha az adatok nem törlődnek, a változáscsatornában maradnak.

Változáscsatorna és _etag, _lsn vagy _ts

A _etag formátum belső, és nem szabad attól függenie, mert bármikor megváltozhat. _ts módosítás vagy létrehozási időbélyeg. A _ts időrendben összehasonlítható. _lsn egy kötegazonosító, amely csak a változáscsatornához van hozzáadva; A a tranzakcióazonosítót jelöli. Sok elemnek ugyanaz a _lsn. A FeedResponse eTagje eltér az elemen látható _etag. _etag egy belső azonosító, és az egyidejűség-vezérléshez használatos. A _etag tulajdonság az elem verziójáról tájékoztat, míg az ETag tulajdonság a hírcsatorna szekvenálására szolgál.

Változáscsatorna használata

A változáscsatornával az alábbi lehetőségeket használhatja:

A változáscsatorna a tárolón belül minden logikai partíciókulcshoz elérhető, és elosztható egy vagy több fogyasztó között párhuzamos feldolgozás céljából, ahogy az az alábbi képen látható.

Distributed processing of Azure Cosmos DB change feed

A változáscsatorna jellemzői

  • A változáscsatorna alapértelmezés szerint engedélyezve van az összes Azure Cosmos-fiókhoz.

  • A kiosztott átviteli sebességgel ugyanúgy olvashat a változáscsatornából, mint bármely más Azure Cosmos DB-művelet, az Azure Cosmos-adatbázishoz társított bármely régióban.

  • A változáscsatorna a tároló elemeire vonatkozó beszúrási és frissítési műveleteket is tartalmaz. A törléseket egy "helyreállítható törlés" jelző beállításával rögzítheti az elemeken (például dokumentumokon) a törlés helyett. Azt is megteheti, hogy a TTL-képességgel véges lejárati időt állít be az elemekhez. Például 24 óra, és ennek a tulajdonságnak az értékével rögzítheti a törléseket. Ezzel a megoldással a módosításokat a TTL lejárati időszakánál rövidebb időintervallumban kell feldolgoznia.

  • Csak az adott elem legutóbbi módosítása szerepel a változásnaplóban. Előfordulhat, hogy a köztes módosítások nem érhetők el.

  • A változásnaplóban szereplő minden módosítás pontosan egyszer jelenik meg a változáscsatornában, és az ügyfeleknek kezelnie kell az ellenőrzőpont-logikát. Ha el szeretné kerülni az ellenőrzőpontok kezelésének összetettségét, a változáscsatorna feldolgozója automatikus ellenőrzőpontokat és "legalább egyszer" szemantikát biztosít. változáscsatorna használata a változáscsatorna feldolgozójával.

  • A változáscsatorna az egyes logikai partíciókulcs-értékek módosítási sorrendje szerint van rendezve. A partíciókulcs-értékek között nincs garantált sorrend.

  • A módosítások bármely időpontból szinkronizálhatók, vagyis nincs rögzített adatmegőrzési időszak, amelyre a módosítások elérhetők.

  • A módosítások párhuzamosan érhetők el az Azure Cosmos-tároló összes logikai partíciókulcsához. Ez a képesség lehetővé teszi, hogy a nagyméretű tárolók módosításait több felhasználó párhuzamosan dolgozza fel.

  • Az alkalmazások egyszerre több változáscsatornát is kérhetnek ugyanazon a tárolón. A ChangeFeedOptions.StartTime használható kezdeti kiindulási pont megadására. Például egy adott óraidőnek megfelelő folytatási jogkivonat megkereséséhez. Ha meg van adva a ContinuationToken érték, elsőbbséget élvez a StartTime és a StartFromBeginning értékekkel szemben. A ChangeFeedOptions.StartTime pontossága ~5 másodperc.

Változáscsatorna a Cassandrához és a MongoDB-hez készült API-kban

A változáscsatorna funkció változásfolyamként érhető el a MongoDB API-ban és a Lekérdezésben a Cassandra API predikátumával. A MongoDB API implementálási részleteiről további információt a MongoDB-hez készült Azure Cosmos DB API streamjeinek módosítása című témakörben talál.

A natív Apache Cassandra módosítási adatrögzítést (CDC) biztosít, amely meghatározott táblákat jelöl meg az archiváláshoz, valamint elutasítja a táblákba való írást, miután elérte a CDC-napló konfigurálható lemezméretét. A Cassandra-hoz készült Azure Cosmos DB API változáscsatorna funkciója növeli a módosítások CQL-n keresztüli predikátummal történő lekérdezésének képességét. Az implementáció részleteiről további információt a Cassandra-hoz készült Azure Cosmos DB API változáscsatornájában talál.

Következő lépések

A változáscsatornáról az alábbi cikkekben tudhat meg többet: