Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de Wijzigingenfeed van Azure Cosmos DB kunt u grote gegevenssets efficiënt verwerken met grote schrijfvolumes. Het biedt een alternatief voor het opvragen van volledige gegevenssets om wijzigingen te identificeren. In dit artikel worden algemene ontwerppatronen voor wijzigingenfeeds, hun compromissen en beperkingen uitgelegd om u te helpen schaalbare oplossingen te bouwen.
Scenariën
Azure Cosmos DB is ideaal voor IoT-, gaming-, retail- en operationele logboekregistratietoepassingen. Een veelvoorkomend ontwerppatroon in deze toepassingen is het gebruik van wijzigingen in de gegevens om andere acties te activeren. Deze acties zijn onder andere:
- Een melding of een aanroep naar een API activeren wanneer een item wordt ingevoegd, bijgewerkt of verwijderd.
- Realtime stroomverwerking voor IoT of analyses op operationele gegevens.
- Gegevensverplaatsing, zoals synchroniseren met een cache, een zoekmachine, een datawarehouse of koude opslag.
Met de wijzigingenfeed in Azure Cosmos DB kunt u efficiënte, schaalbare oplossingen bouwen voor deze patronen, zoals wordt weergegeven in de volgende afbeelding:
Gebeurteniscomputing en meldingen
De Azure Cosmos DB-wijzigingenfeed vereenvoudigt scenario's die een melding activeren of een API aanroepen op basis van een specifieke gebeurtenis. Gebruik de wijzigingenfeedprocessor om uw container automatisch te peilen op wijzigingen en een externe API aan te roepen voor elke schrijf-, update- of verwijderbewerking.
Selectief een melding activeren of een API aanroepen op basis van specifieke criteria. Als u bijvoorbeeld leest uit de wijzigingenfeed met behulp van Azure Functions, voegt u logica toe aan de functie om alleen een melding te verzenden als aan een voorwaarde wordt voldaan. Hoewel de Azure Function-code voor elke wijziging wordt uitgevoerd, wordt de melding alleen verzonden als aan de voorwaarde wordt voldaan.
Streamverwerking in realtime
Met de Azure Cosmos DB-wijzigingenfeed kunt u realtime stroomverwerking uitvoeren voor IoT of realtime analyses op operationele gegevens. U ontvangt en bewaart bijvoorbeeld gebeurtenisgegevens van apparaten, sensoren, infrastructuur en toepassingen en verwerkt deze gebeurtenissen in realtime met behulp van Spark. In de volgende afbeelding ziet u hoe u een lambda-architectuur implementeert met behulp van de Azure Cosmos DB-wijzigingenfeed:
In veel gevallen ontvangen implementaties van stroomverwerking eerst een groot aantal binnenkomende gegevens in een tijdelijke berichtenwachtrij, zoals Azure Event Hubs of Apache Kafka. De wijzigingsfeed is een geweldig alternatief vanwege de mogelijkheid van Azure Cosmos DB om een duurzame hoge mate van gegevensopname te ondersteunen met gegarandeerde lage lees- en schrijflatentie.
Gegevenspersistentie
Gegevens die naar Azure Cosmos DB zijn geschreven, worden weergegeven in de wijzigingenfeed. In de nieuwste versiemodus blijven de gegevens in de wijzigingenfeed totdat ze worden verwijderd. Berichtenwachtrijen hebben meestal een maximale bewaarperiode. Azure Event Hubs biedt bijvoorbeeld een maximale gegevensretentie van 90 dagen.
Zoekfunctionaliteit
Naast het lezen vanuit de wijzigingenfeed van een Azure Cosmos DB-container, voert u SQL-query's uit op de gegevens die zijn opgeslagen in Azure Cosmos DB. De wijzigingenfeed is geen duplicatie van gegevens die zich al in de container bevinden, maar het is slechts een ander mechanisme voor het lezen van de gegevens. Als u daarom gegevens uit de wijzigingenfeed leest, zijn de gegevens altijd consistent met query's van dezelfde Azure Cosmos DB-container.
Hoge beschikbaarheid
Azure Cosmos DB biedt maximaal 99.999% beschikbaarheid van lezen en schrijven. In tegenstelling tot veel berichtenwachtrijen kunnen Azure Cosmos DB-gegevens wereldwijd worden gedistribueerd en geconfigureerd met een beoogde hersteltijd (RTO) van nul.
Nadat u items in de wijzigingenfeed hebt verwerkt, maakt u een gerealiseerde weergave en behoudt u geaggregeerde waarden terug in Azure Cosmos DB. Gebruik bijvoorbeeld de wijzigingenfeed van Azure Cosmos DB om realtime leaderboards te implementeren op basis van scores van voltooide games.
Gegevensverplaatsing
Lees uit de wijzigingenfeed voor realtime gegevensverplaatsing.
Met de wijzigingenfeed kunt u bijvoorbeeld de volgende taken efficiënt uitvoeren:
Een cache, zoekindex of datawarehouse bijwerken met gegevens die zijn opgeslagen in Azure Cosmos DB.
Voer migraties zonder downtime uit naar een ander Azure Cosmos DB-account of naar een andere Azure Cosmos DB-container met een andere logische partitiesleutel.
Implementeer gegevenslagen en archivering op toepassingsniveau. Sla bijvoorbeeld 'hot data' op in Azure Cosmos DB en verouder 'koude gegevens' naar andere opslagsystemen zoals Azure Blob Storage.
Wanneer u gegevens tussen partities en containers moet denormaliseren, kunt u de wijzigingenfeed van uw container lezen als bron voor deze gegevensreplicatie. Realtime gegevensreplicatie met de wijzigingenfeed garandeert alleen uiteindelijke consistentie. U kunt controleren hoe ver de processor van de wijzigingenfeed achterloopt bij het verwerken van wijzigingen in uw Azure Cosmos DB-container.
Gebeurtenisbronnen
Het patroon gebeurtenisbronnen maakt gebruik van een archief met alleen-toevoegen om de volledige reeks acties op gegevens vast te leggen. De Wijzigingenfeed van Azure Cosmos DB is een uitstekende keuze als een centraal gegevensarchief in gebeurtenisbronnen waarin alle gegevensopname wordt gemodelleerd als schrijfbewerkingen (geen updates of verwijderingen). In dit geval is elke schrijfbewerking naar Azure Cosmos DB een gebeurtenis, dus er is een volledige record van eerdere gebeurtenissen in de wijzigingenfeed. Typische toepassingen van de gebeurtenissen die door het centrale gebeurtenisarchief worden gepubliceerd, zijn het onderhouden van gerealiseerde weergaven of voor integratie met externe systemen. Omdat er geen tijdslimiet is voor retentie in de nieuwste versiemodus van de wijzigingenfeed, kunt u alle eerdere gebeurtenissen opnieuw afspelen door te lezen vanaf het begin van de wijzigingenfeed van uw Azure Cosmos DB-container. U kunt zelfs meerdere gebruikers van de wijzigingenfeed abonneren op de wijzigingenfeed van dezelfde container.
Azure Cosmos DB is een uitstekend centraal permanent gegevensarchief in het gebeurtenisbronnenpatroon vanwege de sterke punten in horizontale schaalbaarheid en hoge beschikbaarheid. Daarnaast biedt de verwerker van de wijzigingenfeed een garantie voor ten minste één keer , zodat u geen gebeurtenissen hoeft te verwerken.
Huidige beperkingen
De wijzigingenfeed heeft meerdere modi, elk met belangrijke beperkingen die u moet begrijpen. Er zijn verschillende gebieden waarmee u rekening moet houden wanneer u een toepassing ontwerpt die gebruikmaakt van de wijzigingenfeed in de nieuwste versiemodus of alle versies en de modus voor verwijderen.
Tussenliggende updates
In de nieuwste versiemodus wordt alleen de meest recente wijziging voor een specifiek item opgenomen in de wijzigingenfeed. Wanneer u wijzigingen verwerkt, leest u de meest recente versie van het beschikbare item. Als er in een korte periode meerdere updates voor hetzelfde item zijn, is het mogelijk om tussenliggende updates te missen. Als u afzonderlijke updates opnieuw wilt afspelen voor een item, modelleert u deze updates als een reeks schrijfbewerkingen of gebruikt u alle versies en verwijdert u de modus.
Verwijderen
In de nieuwste versiemodus van de wijzigingenfeed worden geen verwijderingen vastgelegd. Wanneer u een item uit uw container verwijdert, wordt het item verwijderd uit de wijzigingenfeed. De meest voorkomende methode voor het afhandelen van verwijderbewerkingen is door een zachte markering toe te voegen aan de items die worden verwijderd. U kunt een eigenschap genaamd deleted toevoegen en deze instellen op true tijdens het verwijderen. Deze documentupdate wordt weergegeven in de wijzigingenfeed. U kunt een TTL (Time to Live) instellen voor dit item, zodat het later automatisch kan worden verwijderd.
Retentie
De wijzigingenfeed in de nieuwste versiemodus heeft een onbeperkte retentie. Zolang er een item in uw container bestaat, is het beschikbaar in de wijzigingenfeed.
Gegarandeerde bestelling
Alle modi voor wijzigingenfeeds hebben een gegarandeerde volgorde binnen een partitiesleutelwaarde, maar niet tussen partitiesleutelwaarden. U moet een partitiesleutel selecteren die u een garantie biedt voor zinvolle volgorde.
Overweeg een retailtoepassing die gebruikmaakt van het ontwerppatroon voor gebeurtenisbronnen. In deze toepassing worden verschillende gebruikersacties ieder beschouwd als "gebeurtenissen," die zijn gemodelleerd als schrijfbewerkingen in Azure Cosmos DB. Stel dat er enkele voorbeeldgebeurtenissen zijn opgetreden in de volgende volgorde:
- Klant voegt Item A toe aan hun winkelwagen.
- Klant voegt Artikel B toe aan hun winkelwagen.
- Klant verwijdert Artikel A uit zijn winkelwagen.
- De klant checkt uit en de inhoud van winkelwagens wordt verzonden.
Voor elke klant wordt een gerealiseerde weergave van de huidige inhoud van winkelwagens bijgehouden. Deze toepassing moet ervoor zorgen dat deze gebeurtenissen worden verwerkt in de volgorde waarin ze plaatsvinden. Als het uitchecken van het winkelwagentje bijvoorbeeld moet worden verwerkt voordat item A wordt verwijderd, is het waarschijnlijk dat Item A naar de klant wordt verzonden in plaats van het item B dat de klant wilde. Om ervoor te zorgen dat deze vier gebeurtenissen op volgorde worden verwerkt, moeten ze binnen dezelfde partitiesleutelwaarde vallen. Als u selecteert username (elke klant heeft een unieke gebruikersnaam) als partitiesleutel, kunt u garanderen dat deze gebeurtenissen worden weergegeven in de wijzigingenfeed in dezelfde volgorde waarin ze naar Azure Cosmos DB worden geschreven.
Voorbeelden
Hier volgen voorbeelden van code voor wijzigingenfeeds in de praktijk voor de nieuwste versiemodus die buiten het bereik van de opgegeven voorbeelden vallen:
- Meer informatie vindt u in Inleiding tot de wijzigingenfeed.
- Meer informatie in ioT-use case gecentreerd rond de wijzigingenfeed.
- Meer informatie vindt u in de use-case retail gecentreerd rond de wijzigingenfeed.