Stream in Azure DocumentDB ändern

Änderungsstreams sind ein Echtzeitdatenstrom von Datenbankänderungen, die von Ihrer Datenbank zu Ihrer Anwendung fließen. Mit diesem Feature können Sie reaktive Anwendungen erstellen, indem Sie Datenbankänderungen abonnieren, ohne dass eine kontinuierliche Abfrage erforderlich ist, um Änderungen zu erkennen.

Note

Azure DocumentDB unterstützt derzeit Change Streams in einzelnen Shard-Clustern. Wir arbeiten aktiv an der Bereitstellung von Change Stream-Unterstützung für Multi-Shard-Cluster in naher Zukunft.

Azure DocumentDB erzwingt ein Vom System verwaltetes Protokolllimit von 400 MB für Änderungsstreams. Kunden sollten Change Streams kontinuierlich verarbeiten, um fehlende historische Änderungsereignisse zu vermeiden. Änderungsstreams verwenden vom System verwaltete Protokolle mit einer Größenbeschränkung von 400 MB. Wenn sich ein Fortsetzungstoken auf ein Änderungsereignis bezieht, das aus dem Protokoll entfernt wurde, kann der Change Stream von diesem Punkt aus nicht fortgesetzt werden und muss neu gestartet werden. Wir planen eine Vorabversion für den erweiterten Support in naher Zukunft.

Änderungsstreams aktivieren

Sie können dieses Feature mithilfe der Azure CLI oder einer ARM-Vorlage aktivieren oder deaktivieren. Der Portalsupport wird in Kürze hinzugefügt.

Schritte zum Aktivieren von Änderungsstreams im Cluster über CLI

  1. Melden Sie sich bei Azure CLI an
az login
  1. Rufen Sie die aktuellen Einstellungen für die Featurekennzeichnungen in Ihrem Cluster ab. Dadurch wird sichergestellt, dass Beim Hinzufügen des neuen Features vorhandene Flags beibehalten werden.
az resource show --ids "/subscriptions/<sub id>/resourceGroups/<resource group name>/providers/Microsoft.DocumentDB/mongoClusters/<resource name of your Azure DocumentDB cluster>" --api-version 2024-10-01-preview
  1. Patch-Anforderung senden, um das Feature zu aktivieren.
az resource patch --ids "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>" --api-version 2024-10-01-preview --properties "{\"previewFeatures\": [ \"ChangeStreams\"]}"
  1. Ergebnis überprüfen:
    • Stellen Sie sicher, dass die Antwortnutzlast "previewFeatures": ["ChangeStreams"] enthält.
    • Wenn bei diesem Cluster der Fehler "Änderungsstreams werden auf diesem Cluster nicht unterstützt" auftritt, erstellen Sie eine Supportanfrage.

Konfigurieren von Änderungsstreams

Dieser Beispielcode initiiert einen Änderungsstream in der exampleCollection Auflistung und überwacht kontinuierlich alle Änderungen. Wenn eine Änderung erkannt wird, ruft sie das Änderungsereignis ab und druckt es im JSON-Format.

// Open a change stream
const changeStream = db.exampleCollection.watch();

// Listen for changes
while (changeStream.hasNext()) 
    {
        const change = changeStream.next();
        printjson(change);
    }

Important

Änderungsdatenströme sind fortsetzbar, indem ein Fortsetzungstoken als resumeAfter angegeben wird, wenn der Cursor geöffnet wird. Es wird jedoch erwartet, dass genügend Verlauf vorhanden ist, um den mit dem Token verknüpften Vorgang zu finden. Das dokument, das im Änderungsdatenstrom im _id Feld beobachtet wurde, stellt das resumierbare Token dar.

cursor = db.exampleCollection.watch(resume_after=resume_token)

Überwachen von Datenbankänderungen mit Change Stream

Lassen Sie uns die Ausgabe des Änderungsstreams anhand eines Beispiels verstehen.

In diesem Änderungsdatenstromereignis wurde am neuen Datensatz die Aktion inserted in die exampleCollection-Sammlung innerhalb der cs-Datenbank vorgenommen, und die Ereignisdetails enthalten den vollständigen Inhalt des neu hinzugefügten Dokuments.

{
  "_id": { "_data": "AeARBpQ/AAAA" }, // "resume_token"
  "operationType": "insert",
  "fullDocument": {
    "_id": { "$oid": "66e6f63e6f49ecaabf794958" },
    "employee_id": "17986",
    "name": "John",
    "position": "Software Engineer",
    "department": "IT",
    "rating": 4
  },
  "ns": { "db": "cs", "coll": "exampleCollection" },
  "documentKey": { "_id": { "$oid": "66e6f63e6f49ecaabf794958" } }
}

Personalisieren von Daten in Change Stream

Passen Sie die Ausgabe des Änderungsdatenstroms an, indem Sie während der Konfiguration ein Array einer oder mehrerer Pipelinephasen angeben. Die unterstützten Operatoren umfassen Folgendes.

  • $addFields
  • $match
  • $project
  • $set
  • $unset

Einschränkungen

  • Change-Stream-Ereignisse auf Multi-Shard-Clustern werden noch nicht unterstützt.
  • Änderungsstreamcursor müssen nach einem Fail-Over-Ereignis im aktuellen Zustand erneut initialisiert werden.
  • Das Update-Ereignis unterstützt derzeit noch keine Updatebeschreibung.
  • pre-image ist eine nicht unterstützte Option.
  • $changestream als verschachtelte Pipeline eines anderen Stadiums wird noch nicht unterstützt.