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ó:
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:
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:
- Az ügyfél hozzáadja az A elemet a bevásárlókocsihoz.
- Az ügyfél hozzáadja a B elemet a bevásárlókocsihoz.
- Az ügyfél eltávolítja az A elemet a bevásárlókocsiból.
- 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:
- Bevezetés a változáscsatornába
- Az IoT-használati eset középpontja a változáscsatorna körül van
- Kiskereskedelmi használati eset középpontja a változáscsatorna körül
Következő lépések
- Tekintse át a változáscsatorna áttekintését.
- További információ a változáscsatorna-módokról.
- Megtudhatja, hogy hogyan olvashatja el a változáscsatornát.
- Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
- Ha csak annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával.
- Ha ismeri az aktuális adatbázis számítási feladatainak tipikus kérési arányait, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervező használatával.