Änderungsstreams – Übersicht

Bigtable bietet Change Data Capture (CDC) mit seinen Änderungsstreams. . Ein Änderungsstream erfasst Datenänderungen in einer Bigtable-Tabelle wenn die Änderungen eintreten, sodass Sie sie zur Verarbeitung streamen können. oder Analysen.

Dieses Dokument bietet einen Überblick über Bigtable-Änderungsstreams. Bevor Sie dieses Dokument lesen, sollten Sie mit den Bigtable-Übersicht

Änderungsstreams sind für CDC-Anwendungsfälle wertvoll, darunter:

  • Nachgelagerte Anwendungslogik auslösen, wenn angegebene Änderungen auftreten
  • In eine Datenanalysepipeline einbinden
  • Anforderungen an Audits und Archivierung erfüllen

Was ist ein Veränderungsstream?

Ein Änderungsstream verfolgt Änderungen auf Tabellenebene, die von einem Nutzer oder -Anwendung, die in der Regel eine der Cloud Bigtable-Clientbibliotheken verwendet. Änderungen der automatischen Speicherbereinigung werden ebenfalls erfasst.

Alle Änderungen, die auf eine Tabelle mit aktiviertem Änderungsstream angewendet werden, werden als Datenänderung gespeichert Datensätze. Datensätze zu Datenänderungen enthalten Datenänderungen, die durch Folgendes angewendet wurden:

  • Schreib-, Lösch- und Aktualisierungsvorgänge, die mit den Cloud Bigtable API-Methoden gesendet werden MutateRow, MutateRows, CheckAndMutateRow und ReadModifyWriteRow
  • Löschungen, die aufgrund der automatischen Speicherbereinigung erfolgen
  • Mit der Methode DropRowRange der Admin API gelöschte Zeilen

Weitere Informationen zu den Arten von Änderungen, die Sie an einen Bigtable-Tabelle, siehe Lesevorgänge, Schreibvorgänge, Löschungen, und Übersicht über die Müllabfuhr.

Mit Änderungsstreams werden keine Schemaänderungen erfasst, z. B. das Hinzufügen oder Ändern eines Spaltenfamilie oder Replikationstopologie zum Beispiel einen Cluster hinzufügen oder entfernen.

Datenänderungseinträge für jeden Zeilenschlüssel und jeden Cluster befinden sich im Commit-Zeitstempel Reihenfolge. Es gibt jedoch keine Bestellgarantie für Datenänderungsdatensätze für eine Zeilenschlüssel oder Cluster.

Sie aktivieren Änderungsstreams für eine Tabelle und geben eine Aufbewahrungsdauer von 1 bis 7 an Tage.

Inhalt eines Änderungsprotokolls

Jeder Datensatz für eine Datenänderung enthält alle Änderungen für eine Zeile, die angewendet wurden als Teil eines einzelnen RPC-Aufrufs.

Beim Überschreiben eines Werts wird der neu geschriebene Wert in den Daten aufgezeichnet. Change Record (Eintrag ändern). Der Datenänderungseintrag enthält nicht den alten Wert.

Ein Datenänderungseintrag erhält seinen Zeitstempel, der sogenannte Commit-Zeitstempel, an der Zeitpunkt, zu dem die Änderung auf den ersten Cluster angewendet wird. Für stellen wir uns eine Instanz mit zwei Clustern vor. Wenn Sie eine Schreibanfrage an In Tabelle 1 in Cluster A wird der Commit-Zeitstempel des Änderungseintrags zugewiesen, wenn der Schreibvorgang wird von Cluster A empfangen und der Datensatz für die Datenänderung auf Cluster B für hat dieser Schreibvorgang denselben Commit-Zeitstempel.

Jeder Datensatz für eine Datenänderung enthält Folgendes:

  • Einträge: Änderungen an der Zeile, darunter mindestens eines der folgenden Elemente: <ph type="x-smartling-placeholder">
      </ph>
    • Schreiben <ph type="x-smartling-placeholder">
        </ph>
      • Spaltenfamilie
      • Spaltenqualifizierer
      • Zeitstempel
      • Wert
    • Löschen von Zellen <ph type="x-smartling-placeholder">
        </ph>
      • Spaltenfamilie
      • Spaltenqualifizierer
      • Zeitstempelbereich
    • Löschen einer Spaltenfamilie <ph type="x-smartling-placeholder">
        </ph>
      • Spaltenfamilie
      • Löschen aus einer Zeile: Das Löschen aus einer Zeile wird in eine Liste umgewandelt. von Löschvorgängen aus Spaltenfamilien für jede Spaltenfamilie, die der Zeile enthält Daten.
  • Zeilenschlüssel: die Kennung der geänderten Zeile
  • Art der Änderung – entweder vom Nutzer initiiert oder durch automatische Speicherbereinigung
  • ID des Clusters, der die Änderung erhalten hat
  • Commit-Zeitstempel - serverseitige Zeit, zu der die Änderung per Commit an den übergeben wird. Tabelle
  • Tie Breaker: Ein Wert, der es der Anwendung ermöglicht, den Stream zu lesen. die integrierte Konfliktlösung von Bigtable verwenden Richtlinie
  • Token – wird von der verarbeitenden Anwendung verwendet, um den Stream fortzusetzen, falls unterbrochen
  • Geschätztes niedriges Wasserzeichen: die geschätzte Zeit seit der Partition des Eintrags die Replikation in allen Clustern. Weitere Informationen finden Sie unter Partitionen und Wasserzeichen.

Weitere Informationen zu den Feldern in einem Datensatz für Datenänderungen finden Sie in der API. Referenz für DataChange.

Streamspeicher ändern

Eine Tabelle und ihr Änderungsstream nutzen dieselben Ressourcen auf Clusterebene, einschließlich Knoten und Speicher. Daher ist die Datenspeicherung des Änderungsstreams Teil der Speicherplatz. In einer Instanz mit Replikation eine Kopie der Daten eines Änderungsstreams wird in jedem Cluster der Instanz gespeichert, die die Änderung enthält für Streams aktivierte Tabelle.

Der für Ihre Änderungsstreamdaten verwendete Speicherplatz wird nicht auf die Gesamtzahl Speicherauslastung (max. %). Daher müssen Sie keine Knoten zur Verarbeitung den erhöhten Speicherbedarf für Änderungsstreamdaten (auch wenn Sie um Knoten für zusätzliche Rechenleistung hinzuzufügen. Ihnen werden jedoch die den von den Änderungsstreamdaten verbrauchten Speicher. Weitere Informationen finden Sie unter Kostengesichtspunkte:

Änderungsstream lesen

Zum Lesen (Streamen) eines Änderungsstreams müssen Sie ein Anwendungsprofil verwenden, das für Single-Cluster-Routing. Wenn Sie mit Dataflow streamen, müssen Sie Transaktionen für einzelne Zeilen aktivieren.

Weitere Informationen zu Routingrichtlinien finden Sie unter Routingoptionen.

Weitere Informationen zu Transaktionen für einzelne Zeilen finden Sie unter Transaktionen für einzelne Zeilen.

Änderungsstreammethoden werden von der Cloud Bigtable API (Data API) bereitgestellt. Wir empfehlen, eine der folgenden Optionen zu verwenden, anstatt die API ohne Verwendung einer Clientbibliothek oder eines Connectors aufzurufen:

  • Dataflow-Vorlagen
  • Bigtable Beam-Connector
  • Java-Clientbibliothek

Mit allen Optionen können Sie vermeiden, dass Sie Partitionsänderungen aufgrund von Aufteilungen und Zusammenführungen verfolgen und verarbeiten müssen.

Weitere Informationen finden Sie unter ReadChangeStream.

Dataflow-Vorlagen

Sie können eine der folgenden Dataflow-Vorlagen von Google verwenden:

Bigtable Beam-Connector

Mit dem Bigtable Beam-Connector können Sie eine Pipeline erstellen:

Wenn Sie keine eigene Pipeline erstellen möchten, können Sie die Codebeispiele aus das Bigtable-Tutorial oder die Bigtable-Kurzanleitung als Ausgangspunkt für Ihre Code:

Java-Clientbibliothek

Partitionen

Um einen hohen Lesedurchsatz zu erhalten, der einer hohen Schreib- oder Änderungsrate entspricht, Bigtable teilt einen Änderungsstream in mehrere Partitionen auf, die kann verwendet werden, um den Änderungsstream parallel zu lesen. Jede Änderungsstreampartition mit einem Tablet verknüpft ist. Tablets sind Unterabschnitte einer Tabelle, nach Bedarf neu verteilt, um die Anfragearbeitslast der Tabelle auszugleichen. Weitere Informationen finden Sie unter Load-Balancing

Mit der Java-Clientbibliothek können Sie jede Partition nach Änderungen abfragen die Informationen, die zum Verwalten von Änderungen an fälligen Partitionen erforderlich sind für Aufteilungen und Zusammenführungen.

Wasserzeichen

Ein Wasserzeichen ist ein Zeitstempel, der angibt, wann zuletzt eine Partition mit Replikation über alle Cluster hinweg. Das Wasserzeichen für die Partition fortlaufend aktualisiert, wenn die Replikation erfolgt, was sich im Laufe der Zeit vorantreibt.

Jeder ChangeStreamMutation (Datensatz für Datenänderung) enthält ein estimatedLowWatermark, das Wasserzeichen für die Partition ist, die mit dem Data Change Record verknüpft sind. Dieses Gerät (estimatedLowWatermark) ist ein Schätzung und ist keine Garantie dafür, dass noch keine Daten in den Stream aufnehmen.

Wasserzeichen für replizierte Tabellen

Das estimatedLowWatermark (niedriges Wasserzeichen) einer Partition fährt nicht fort, wenn die Replikation für die Partition nicht vollständig abgedeckt ist. Die streamweite Tiefsttemperatur Wasserzeichen – der niedrigste Wert aller geschätzten niedrigen Wasserzeichen auf Partitionsebene – stoppt das Vorantreiben, wenn sich ein Wasserzeichen einer Partition nicht weiter bewegt. A Wasserzeichen, das nicht weiterläuft, wird als verzögert betrachtet. Wenn diese Wenn Sie Ihren Änderungsstream in einer Pipeline streamen, Verkaufsstände.

Viele Faktoren können dazu führen, dass ein oder mehrere Wasserzeichen auf Partitionsebene unter anderem folgende:

  • Überlastung eines Clusters mit Traffic, der zu einem Rückgang der Replikation führt für eine oder mehrere Partitionen
  • Netzwerkverzögerungen
  • Cluster-Nichtverfügbarkeit

Der Bigtable Beam-Connector übernimmt dies, indem der für alle Daten den Ausgabezeitstempel auf null setzen. Weitere Informationen finden Sie unter Daten ohne Ereigniszeiten gruppieren:

Monitoring

Informationen dazu, wie sich das Aktivieren eines Änderungsstreams auf die CPU und den Speicher auswirkt für eine Instanz mit für Änderungsstreams aktivierten Tabellen, stellen zwei Messwerte für den Änderungsstream bereit. Sie können die Messwerte auf der Bigtable-Monitoringseite oder die Cloud Monitoring-Suite verwenden von Tools.

Weitere Informationen zu diesen Messwerten finden Sie unter Monitoring:

Kostengesichtspunkte

Das Aktivieren eines Änderungsstreams für eine Tabelle führt zu höheren Kosten für Knoten und Speicherplatz. Insbesondere können Sie mit mehr Speicherplatz Kosten.

Knoten

In der Regel müssen Sie einem Cluster Knoten hinzufügen (oder die maximale Anzahl Knoten, wenn Sie Autoscaling verwenden), um den zusätzlichen Traffic durch Aktivieren und Deaktivieren die Datenänderungsdatensätze verarbeitet werden.

Durch die Aktivierung eines Änderungsstreams kann die CPU-Nutzung um etwa 10 % bevor Sie mit der Verarbeitung beginnen. Verarbeitung eines Änderungsstreams, z. B. Lesen mit einer Dataflow-Pipeline die CPU-Auslastung um etwa 20 bis 30%, je nach Grad der Änderungsaktivität und der Art und Weise, wie die gelesen wird.

Speicher

Ihnen wird die Standardgebühr in Rechnung gestellt Preise für Bigtable-Speicher zum Speichern der Datenänderungseinträge Ihrer Tabelle. Außerdem fallen Kosten für das Speichern der die zum Nachverfolgen der Metadaten des Änderungsstreams erstellt wird. Die Aufbewahrungsdauer, die die von Ihnen angegebenen Auswirkungen auf die Speicherkosten haben.

In der Regel werden die Änderungseinträge eines Tages, die nur die die an diesem Tag erfolgt sind – etwa 1,5-mal so viel Speicher wie die an diesem Tag geschriebenen Daten auf die Festplatte verbraucht werden.

Netzwerk-Datenübertragung

Wenn Sie einen Änderungsstream über mehrere Regionen hinweg lesen, können Kosten dafür anfallen. Zugriffe. Weitere Informationen finden Sie im Abschnitt „Netzwerk“ Bigtable-Preise finden Sie eine vollständige Liste der Netzwerk-Datenübertragungsraten.

Verarbeitungskosten

Je nachdem, wie Sie die Datensätze zu Datenänderungen lesen, können zusätzliche Kosten für gelten andere Dienste als Bigtable. Wenn Sie beispielsweise Dataflow zahlen Sie für die verarbeiteten Byte und den Worker die den Job verarbeiten. Weitere Informationen finden Sie unter Dataflow-Preise.

Zeilenbereiche löschen

Vermeiden Sie es nach Möglichkeit, eine Zeile Bereich aus einer Tabelle, für die ein Änderungsstream aktiviert ist. Wenn Sie einen Zeilenbereich löschen müssen, wissen, dass es lange dauern kann, und die CPU-Auslastung nimmt während des Vorgangs zu.

Nächste Schritte