Share via


Változáscsatorna tervezési mintái az Azure Cosmos DB-ben

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Az Azure Cosmos DB változáscsatornája nagy mennyiségű írással rendelkező nagy adathalmazok hatékony feldolgozását teszi lehetővé. A változáscsatorna alternatívát is kínál a teljes adatkészlet lekérdezésére a megváltozott adatok azonosításához. Ez a cikk a változáscsatorna tervezési mintáival, a tervezési kompromisszumokkal és a változáscsatorna korlátozásával foglalkozik.

Az Azure Cosmos DB kiválóan alkalmas IoT-, játék-, kiskereskedelmi és üzemeltetési naplózási alkalmazásokhoz. Ezekben az alkalmazásokban gyakori tervezési minta az adatok módosításainak használata más műveletek aktiválásához. Ilyen műveletek például a következők:

  • Értesítés vagy API-hívás indítása elem beszúrása, frissítése vagy törlésekor.
  • Valós idejű streamfeldolgozás IoT-hez vagy valós idejű elemzési feldolgozáshoz az operatív adatokon.
  • Adatáthelyezés, például szinkronizálás gyorsítótárral, keresőmotorral, adattárházzal vagy hűtőtárolóval.

Az Azure Cosmos DB változáscsatornája lehetővé teszi, hogy hatékony és skálázható megoldásokat építsen ki ezekhez a mintákhoz, amint az az alábbi képen látható:

Az Azure Cosmos DB változáscsatornáinak valós idejű elemzési és eseményvezérelt számítási forgatókönyvekhez való használatát bemutató ábra.

Esemény-számítástechnika és értesítések

Az Azure Cosmos DB változáscsatornája leegyszerűsítheti azokat a forgatókönyveket, amelyeknek értesítéseket kell aktiválnia, vagy egy adott esemény alapján hívást kell küldenie egy API-nak. A változáscsatorna-feldolgozóval automatikusan lekérdezheti a tároló módosításait, majd meghívhat egy külső API-t minden egyes írási, frissítési vagy törlési alkalommal.

Az értesítéseket szelektíven is aktiválhatja, vagy adott feltételek alapján hívást küldhet egy API-nak. Ha például Azure Functions használatával olvas a változáscsatornából, a függvénybe logikát helyezhet, hogy csak egy feltétel teljesülése esetén küldjön értesítést. Bár az Azure-függvénykód minden módosításhoz végrehajtva lenne, az értesítés csak akkor lesz elküldve, ha a feltétel teljesül.

Valós idejű streamfeldolgozás

Az Azure Cosmos DB változáscsatornája használható valós idejű streamfeldolgozáshoz IoT- vagy valós idejű elemzési feldolgozáshoz az operatív adatokon. Előfordulhat például, hogy eseményadatokat fogad és tárol az eszközökről, érzékelőktől, infrastruktúrától és alkalmazásoktól, majd valós időben feldolgozhatja ezeket az eseményeket a Spark használatával. Az alábbi kép bemutatja, hogyan valósíthat meg lambda architektúrát az Azure Cosmos DB változáscsatorna használatával:

Egy Azure Cosmos DB-alapú lambdafolyamatot ábrázoló ábra a betöltéshez és a lekérdezéshez.

A streamfeldolgozási implementációk sok esetben először nagy mennyiségű bejövő adatot kapnak egy ideiglenes üzenetsorba, például Azure Event Hubs vagy Apache Kafkába. A változáscsatorna nagyszerű alternatíva, mivel az Azure Cosmos DB képes tartósan magas adatbetöltést támogatni a garantáltan alacsony olvasási és írási késéssel. Az Azure Cosmos DB változáscsatornájának előnyei az üzenetsorokkal szemben a következők:

Adatmegőrzés

Az Azure Cosmos DB-be írt adatok megjelennek a változáscsatornában. Az adatok mindaddig megmaradnak a változáscsatornában, amíg azok törlődnek, ha a legújabb verziómóddal olvas. Az üzenetsorok általában maximális megőrzési időtartamot rendelkeznek. A Azure Event Hubs például legfeljebb 90 napos adatmegőrzést biztosít.

Lekérdezési képesség

Az Azure Cosmos DB-tároló változáscsatornájából való olvasás mellett SQL-lekérdezéseket is futtathat az Azure Cosmos DB-ben tárolt adatokon. A változáscsatorna nem a tárolóban lévő adatok duplikálása, hanem az adatok beolvasásának egy másik mechanizmusa. Ezért ha adatokat olvas a változáscsatornából, az adatok mindig összhangban állnak ugyanazon Azure Cosmos DB-tároló lekérdezéseivel.

Magas rendelkezésre állás

Az Azure Cosmos DB akár 99,999%-os olvasási és írási rendelkezésre állást is biztosít. A sok üzenetsortól eltérően az Azure Cosmos DB-adatok globálisan egyszerűen terjeszthetők és konfigurálhatók nulla helyreállítási időkorláttal (RTO ).

Miután feldolgozta az elemeket a változáscsatornában, létrehozhat egy materializált nézetet, és megőrizheti az összesített értékeket az Azure Cosmos DB-ben. Ha például az Azure Cosmos DB-t használja egy játék létrehozásához, a változáscsatorna használatával valós idejű ranglistákat valósíthat meg a befejezett játékok pontszámai alapján.

Adatáthelyezés

A változáscsatornából is olvashat valós idejű adatáthelyezési célokra.

A változáscsatorna például segít a következő feladatok hatékony végrehajtásában:

  • Frissítsen egy gyorsítótárat, keresési indexet vagy adattárházat az Azure Cosmos DB-ben tárolt adatokkal.

  • Végezzen nulla állásidős migrálást egy másik Azure Cosmos DB-fiókba vagy egy másik, más logikai partíciókulcsot tartalmazó Azure Cosmos DB-tárolóba.

  • Alkalmazásszintű adatrétegezés és archiválás implementálása. Tárolhatja például a "gyakori elérésű adatokat" az Azure Cosmos DB-ben, és a "ritka elérésű adatokat" más tárolórendszerekbe, például Azure Blob Storage is el tudja idősíteni.

Ha denormalizálnia kell az adatokat a partíciók és tárolók között, a tároló változáscsatornájából olvashat az adatreplikáció forrásaként. A változáscsatorna valós idejű adatreplikálása csak a végleges konzisztenciát garantálja. Megfigyelheti, hogy a változáscsatorna feldolgozója mennyivel marad el a módosítások feldolgozása során az Azure Cosmos DB-tárolóban.

Esemény forráskezelése

Az eseményforrás-minta magában foglalja egy csak hozzáfűző tároló használatát az adatokon végrehajtott műveletek teljes sorozatának rögzítéséhez. Az Azure Cosmos DB változáscsatornája kiváló választás központi adattárként olyan eseményforrás-architektúrákban, amelyekben az összes adatbetöltés írásként van modellezve (frissítések és törlések nélkül). Ebben az esetben minden egyes írás az Azure Cosmos DB-be egy "esemény", így a változáscsatorna a korábbi események teljes rekordját tárolja. A központi eseménytár által közzétett események jellemző felhasználási módja a materializált nézetek fenntartása vagy a külső rendszerekkel való integráció. Mivel a változáscsatorna legújabb verziós módjában nincs időkorlát a megőrzésre, az összes korábbi eseményt lejátszhatja az Azure Cosmos DB-tároló változáscsatornájának elejétől kezdve. Akár több változáscsatorna-fogyasztó is feliratkozhat ugyanahhoz a tárolóhoz a változáscsatornára.

Az Azure Cosmos DB egy kiváló központi, csak hozzáfűzési állandó adattár az eseményforrási mintában, mivel erősségei a horizontális skálázhatóságban és a magas rendelkezésre állásban. Emellett a változáscsatorna-feldolgozó "legalább egyszer" garanciát is kínál, biztosítva, hogy ne maradjon le az események feldolgozásáról.

Aktuális korlátozások

A változáscsatorna több olyan móddal rendelkezik, amelyek mindegyike fontos korlátozásokkal rendelkezik, amelyeket érdemes megértenie. Több területet is figyelembe kell venni egy olyan alkalmazás tervezésekor, amely a változáscsatornát a legújabb verzió módban vagy az összes verzióban és törlési módban használja.

Köztes frissítések

A legújabb verzió módban csak egy adott elem legutóbbi módosítása szerepel a változáscsatornában. A módosítások feldolgozásakor a legújabb elérhető elemverziót olvassa el. Ha egy elemhez rövid idő alatt több frissítés is tartozik, előfordulhat, hogy a köztes frissítések feldolgozása kimarad. Ha vissza szeretné játszani egy elem korábbi egyes frissítéseit, ezeket a frissítéseket írási sorozatként modellezheti, vagy használhatja az összes verziót és törlési módot.

Törli

A változáscsatorna legújabb verziómódja nem rögzíti a törléseket. Ha töröl egy elemet a tárolóból, az is törlődik a változáscsatornából. A törlések kezelésének leggyakoribb módja egy helyreállítható jelölő hozzáadása a törölt elemekhez. Hozzáadhat egy nevű deleted tulajdonságot, és beállíthatja a true törlés időpontjában. Ez a dokumentumfrissítés megjelenik a változáscsatornában. Beállíthat egy élettartamot (TTL) ezen az elemen, hogy később automatikusan törölhető legyen.

Megőrzés

A legújabb verziómódú változáscsatorna korlátlan adatmegőrzéssel rendelkezik. Amíg egy elem megtalálható a tárolóban, az elérhető a változáscsatornában.

Garantált rendelés

Minden változáscsatorna-módnak garantált sorrendje van egy partíciókulcs-értéken belül, de a partíciókulcs-értékek között nem. Olyan partíciókulcsot kell választania, amely garantálja a megfelelő sorrendet.

Vegyük például egy olyan kiskereskedelmi alkalmazást, amely az eseményforrás tervezési mintáját használja. Ebben az alkalmazásban a különböző felhasználói műveletek mindegyike "esemény", amelyek az Azure Cosmos DB-be való írásként vannak modellezve. Képzelje el, hogy a következő sorrendben történt-e példaesemény:

  1. Az ügyfél hozzáadja az A elemet a bevásárlókocsihoz.
  2. Az ügyfél hozzáadja a B elemet a bevásárlókocsihoz.
  3. Az ügyfél eltávolítja az A elemet a bevásárlókocsiból.
  4. Az ügyfél kijelentkezik, és a kosár tartalmát kiszállítják.

Az aktuális bevásárlókocsi tartalmának materializált nézete minden ügyfél számára megmarad. Az alkalmazásnak gondoskodnia kell arról, hogy az események feldolgozása a folyamatuk sorrendjében történjen. Ha például az A elem eltávolítása előtt fel kellene dolgozni a kosár kivételét, akkor valószínű, hogy az A tételt az ügyfélnek szállították volna, és nem azt az elemet, amelyet az ügyfél inkább a B tételre szeretett volna. Annak biztosítása érdekében, hogy ez a négy esemény az előfordulásuk sorrendjében legyen feldolgozva, ugyanazon a partíciókulcs-értéken belül kell lennie. Ha a partíciókulcsot választja username (minden ügyfél egyedi felhasználónévvel rendelkezik), garantálhatja, hogy ezek az események ugyanabban a sorrendben jelenjenek meg a változáscsatornában, amelyben az Azure Cosmos DB-be vannak írva.

Példák

Íme néhány valós változáscsatornakód- példa a legújabb verziómódra, amely túlmutat a megadott minták hatókörén:

Következő lépések