Ä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
undReadModifyWriteRow
- 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.
- Schreiben
<ph type="x-smartling-placeholder">
- 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 garantiert nicht, dass es noch keine Daten gibt,
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.
- Von den Änderungsstreameinträgen verwendete Byte (
change_stream_log_used_bytes
) - CPU-Auslastung nach Änderungsstreams ( verwendet
cpu_load_by_app_profile_by_method_by_table
)
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
- In dieser Kurzanleitung erfahren Sie, wie Sie einen Änderungsstream aktivieren und Änderungen aufrufen.
- Änderungsstreams konfigurieren
- Verwenden Sie den Bigtable Beam-Connector, um einen Änderungsstream mit Dataflow
- Cloud Bigtable-Clientbibliothek für Java verwenden, um Änderungsstreams zu lesen
- Anleitung zum Verarbeiten eines Änderungsstreams