Backfill für die Objekte eines Streams verwalten

Ein Stream in Datastream kann einen Backfill für Verlaufsdaten durchführen und laufende Änderungen an ein Ziel streamen. Beim Erstellen eines Streams haben Sie Informationen zur Quelldatenbank für den Stream konfiguriert.

Wenn Sie das Kästchen Backfill für Verlaufsdaten anklicken, streamt Datastream alle vorhandenen Daten sowie Änderungen an den Daten von der Quelle in das Ziel.

Wenn Sie dieses Kästchen nicht ausgewählt haben, streamt Datastream nur Änderungen an den Daten. Damit Datastream einen Snapshot aller vorhandenen Daten von der Quelle zum Ziel streamt, müssen Sie für die Objekte, die diese Daten enthalten, einen Backfill initiieren. Die Objekte liegen in Form von Datenbankschemas, Tabellen und Spalten vor.

Ein weiterer Grund für die Initiierung des Backfills für ein Objekt ist, wenn die Daten zwischen der Quelle und dem Ziel nicht synchron sind. Beispielsweise kann ein Nutzer versehentlich Daten im Ziel löschen und die Daten gehen nun verloren. In diesem Fall dient das Initiieren des Backfills für das Objekt als „Rücksetzungsmechanismus“, da alle Daten auf einmal an das Ziel gestreamt werden. Deshalb werden die Daten zwischen der Quelle und dem Ziel synchronisiert.

Nachdem Sie den Backfill für ein Objekt initiiert haben, können Sie den Backfill beenden. Im vorherigen Beispiel ändert der Nutzer das Datenbankschema und das Schema oder die Daten sind beschädigt. Da dieses Schema oder die Daten nicht an das Ziel gestreamt werden sollen, beenden Sie den Backfill für das Objekt.

Sie können den Backfill für Objekte auch zum Zweck des Load-Balancings beenden. Datastream kann mehrere Backfills parallel ausführen. Dies kann eine zusätzliche Belastung der Quelle bedeuten. Wenn die Last erheblich ist, beenden Sie den Backfill für die Objekte und initiieren Sie dann den Backfill für sie einzeln.

Objektstatus

Im Lebenszyklus des Initiierens und Beendens des Backfills für ein Objekt sind folgende Status möglich:

  • Kein Status (in der Benutzeroberfläche als - dargestellt): Gründe dafür, dass ein Objekt diesen Status erhält:

    • Der Stream wurde nicht gestartet.
    • Das Kästchen Backfill für Verlaufsdaten ist nicht aktiviert, sodass der Backfill als manuell definiert ist.
    • Das Objekt ist explizit von automatisch Backfills ausgeschlossen.
    • Der Stream ist so konfiguriert, dass zukünftige Tabellen enthalten sind. Wenn dies der Fall ist und keine neuen Tabellen zur Quelle hinzugefügt werden, wird keine automatische Backfill-Aufgabe für sie erstellt, da neue Tabellen in der Regel keine Verlaufsdaten für den Backfill haben.
  • Pending: Der Backfill für das Objekt wurde noch nicht gestartet.

  • Active: Backfill wird für das Objekt ausgeführt.

  • Completed: Der Backfill für das Objekt ist abgeschlossen.

  • Stopped: Der Backfill für das Objekt wurde gestoppt. Wird der Backfill für das Objekt noch einmal initiiert, streamt Datastream alle mit dem Objekt verknüpften Daten von der Quelle in das Ziel.

  • Failed: Der Backfill für das Objekt ist fehlgeschlagen und muss noch einmal initiiert werden.

Backfill initiieren

  1. Rufen Sie in der Google Cloud Console die Seite Streams auf.

    Zur Seite „Streams“

  2. Klicken Sie auf den Stream mit den Objekten, für die Sie einen Backfill initiieren möchten.

  3. Klicken Sie auf den Tab Objekte.

  4. Klicken Sie auf das Kästchen für jedes Objekt, für das Sie den Backfill initiieren möchten.

  5. Klicken Sie auf Backfill initiieren.

  6. Wenn Sie nur ein Objekt ausgewählt haben, klicken Sie im Dialogfeld auf OBJEKT-BACKFILL INITIIEREN. Wenn Sie mehrere Objekte ausgewählt haben, klicken Sie auf OBJEKT-BACKFILLS INITIIEREN.

    Datastream beginnt den Backfill für die ausgewählten Objekte. Der Status jedes Objekts ändert sich dann von Pending in Active in Completed. Wenn ein Objekt den Status Completed hat, bedeutet das, dass Datastream alle Daten für das Objekt gelesen hat. Die Daten werden aber möglicherweise noch in das Ziel geladen.

Teilweisen Backfill initiieren

Neben vollständigen Backfills können Sie auch einen partiellen Backfill durchführen, um eine bestimmte Teilmenge von Daten aus der Quelle in das Ziel zu laden. Dazu geben Sie eine SQL-WHERE-Klausel als benutzerdefinierten Filter an.

Datastream unterstützt den partiellen Backfill für die folgenden Quellen:

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL

So starten Sie ein partielles Backfill:

  1. Rufen Sie in der Google Cloud Console die Seite Streams auf.

    Zur Seite „Streams“

  2. Klicken Sie auf den Stream mit den Objekten, für die Sie einen Backfill initiieren möchten.

  3. Klicken Sie auf den Tab Objekte.

  4. Wählen Sie das Objekt aus, für das Sie den Backfill initiieren möchten.

  5. Klicken Sie auf Backfill initiieren.

  6. Markieren Sie im angezeigten Bereich das Kästchen Benutzerdefinierten Filter aktivieren.

  7. Geben Sie Ihre SQL-WHERE-Klausel ein. Beispiel: product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'.

  8. Klicken Sie auf Backfill initiieren.

Datastream validiert den Filter. Wenn die Validierung fehlschlägt, wird über dem Editor eine Fehlermeldung angezeigt. Wenn die Validierung erfolgreich ist, startet Datastream den Backfill-Job.

Unterstützte Syntax für benutzerdefinierte Filter

Wenn Sie einen benutzerdefinierten Filter angeben, unterstützt Datastream eine grundlegende Teilmenge der SQL-Syntax für die WHERE-Klausel. Zu den unterstützten Elementen gehören:

  • Logische Operatoren: AND, OR
  • Vergleichsoperatoren: =, <, >, <=, >=, !=
  • Bedingungen: IN, NOT IN, IS NULL, IS NOT NULL
  • Gruppierung: Klammern () zum Definieren von Bedingungsgruppen
  • Werte:

    • Strings: Text in einfachen Anführungszeichen, z. B. 'value',
    • Zahlen: Ganzzahlen (123), Dezimalzahlen (123.45), negative Zahlen (-10) und Zahlen mit Exponenten (1.2e3).
    • Boolesche Werte: TRUE oder FALSE (Groß- und Kleinschreibung wird berücksichtigt).
  • IDs:

    • Qualifizierung: Spaltennamen können mit Punkten vollständig qualifiziert werden, um das Schema oder die Tabelle anzugeben, z. B. myColumn, myTable.myColumn oder mySchema.myTable.myColumn.
    • Kennungen ohne Anführungszeichen: Sie können Buchstaben, Ziffern und Unterstriche enthalten und müssen mit einem Buchstaben oder Unterstrich beginnen. Die Berücksichtigung der Groß-/Kleinschreibung für Spalten- oder Tabellennamen hängt von der Zieldatenbank ab.
    • Kennungen in doppelten Anführungszeichen: müssen in doppelte Anführungszeichen (") gesetzt werden.

Einschränkungen bei der teilweisen Backfill-Auslieferung

Bestimmte Anweisungen, Operatoren und Keywords sind ausdrücklich verboten. Ihre Verwendung führt zu einem Fehler. Dazu gehören:

  • Kommentare wie -- oder /* */.
  • Funktionen wie UPPER(column) und NOW().
  • Arithmetische Ausdrücke, z. B. column + 1 > 10.
  • Der Operator LIKE. Platzhalter wie % oder _ werden mit LIKE nicht unterstützt.
  • Der Operator BETWEEN. Verwenden Sie stattdessen >= und <=.
  • Unterabfragen, z. B. (SELECT ...) in der WHERE-Klausel.
  • CASE-Anweisungen, z. B. CASE WHEN ... END.
  • Spaltenvergleiche, z. B. column1 = column2. Vergleiche müssen mit Literalen erfolgen.
  • DATE und TIME für bestimmte Typen oder Funktionen.
  • Array- oder JSON-spezifische Operatoren.
  • Explizite Typumwandlung: z. B. CAST(column AS INT).

Backfill beenden

  1. Rufen Sie in der Google Cloud Console die Seite Streams auf.

    Zur Seite „Streams“

  2. Klicken Sie auf den Stream mit den Objekten, für die Sie den Backfill beenden möchten.

  3. Klicken Sie auf den Tab Objekte.

  4. Klicken Sie auf das Kästchen für jedes Objekt, für das Sie den Backfill beenden möchten.

  5. Klicken Sie auf Backfill beenden.

  6. Wenn Sie nur ein Objekt ausgewählt haben, klicken Sie im Dialogfeld auf Objekt-Backfill beenden. Wenn Sie mehrere Objekte ausgewählt haben, klicken Sie auf Objekt-Backfills beenden.

    Datastream beendet den Backfill für die ausgewählten Objekte und der Status jedes Objekts ändert sich in Stopped.

    Wenn ein Objekt diesen Status hat, wird der Backfill für das Objekt gestoppt. Wird der Backfill für das Objekt noch einmal initiiert, streamt Datastream alle mit dem Objekt verknüpften Daten von der Quelle in das Ziel.

Nächste Schritte