Backfill für die Objekte eines Streams verwalten

Mit einem Stream in Datastream können Verlaufsdaten per Backfill hinzugefügt und laufende Änderungen in ein Ziel gestreamt werden. Beim Erstellen eines Streams haben Sie Informationen zur Quelldatenbank für den Stream konfiguriert.

Wenn Sie das Kästchen Verlaufsdaten per Backfill hinzufügen angeklickt haben, werden alle vorhandenen Daten und Änderungen an den Daten aus der Quelle in das Ziel gestreamt.

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

Ein weiterer Grund für das Initiieren eines Backfills für ein Objekt ist, wenn die Daten zwischen Quelle und Ziel nicht synchron sind. Ein Nutzer kann beispielsweise versehentlich Daten im Ziel löschen, wodurch die Daten verloren gehen. In diesem Fall dient das Starten des Backfills für das Objekt als Reset-Mechanismus, da alle Daten auf einmal in das Ziel gestreamt werden. Dadurch 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 werden beschädigt. Sie möchten nicht, dass dieses Schema oder diese Daten in das Ziel gestreamt werden, und beenden daher 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. Dadurch kann die Quelle zusätzlich belastet werden. Wenn die Last erheblich ist, beenden Sie das Backfill für die Objekte und starten Sie es dann für jedes Objekt einzeln.

Objektstatus

Die verschiedenen Status im Lebenszyklus des Initiierens und Beendens des Backfills für ein Objekt sind:

  • Kein Status (in der Benutzeroberfläche als - dargestellt): Gründe für diesen Status:

    • Der Stream wurde nicht gestartet.
    • Das Kästchen Verlaufsdaten-Backfill war nicht ausgewählt. Der Backfill wird also als manuell definiert.
    • Das Objekt ist explizit von automatisch Backfills ausgeschlossen.
    • Der Stream ist so konfiguriert, dass zukünftige Tabellen enthalten sind. In diesem Fall wird keine automatische Backfill-Aufgabe für neue Tabellen erstellt, die der Quelle hinzugefügt werden, da neue Tabellen in der Regel keine Verlaufsdaten für den Backfill enthalten.
  • Pending: Der Backfill für das Objekt hat noch nicht begonnen.

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

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

  • Stopped: Der Backfill für das Objekt wurde beendet. Wenn der Backfill für das Objekt noch einmal initiiert wird, streamt Datastream alle vorhandenen Daten, die mit dem Objekt verknüpft sind, aus 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, der Objekte enthält, für die Sie einen Backfill starten möchten.

  3. Klicken Sie auf den Tab Objekte.

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

  5. Klicken Sie auf Backfill initiieren.

  6. Wenn Sie nur ein Objekt ausgewählt haben, klicken Sie im Dialogfeld auf OBJECT BACKFILL INITIATE (Objekt-Backfill starten). Wenn Sie mehrere Objekte ausgewählt haben, klicken Sie auf INITIATE OBJECT BACKFILLS (Objekt-Backfills starten).

    Datastream startet den Backfill für die ausgewählten Objekte. Der Status der einzelnen Objekte ändert sich von Pending zu Active zu Completed. Wenn ein Objekt den Status Completed hat, bedeutet das, dass der 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
  • MySQL

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, der Objekte enthält, für die Sie einen Backfill starten 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. Folgende Elemente werden unterstützt:

  • 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.
    • Nicht in Anführungszeichen gesetzte Bezeichner: Sie können Buchstaben, Zahlen und Unterstriche enthalten und müssen mit einem Buchstaben oder Unterstrich beginnen. Ob bei Spalten- oder Tabellennamen die Groß-/Kleinschreibung berücksichtigt wird, 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-Funktion

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

  • Kommentare wie -- oder /* */.
  • Funktionen, z. B. 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-Anweisung.
  • CASE-Anweisungen, z. B. CASE WHEN ... END.
  • Spaltenvergleiche, z. B. column1 = column2. Vergleiche müssen mit Literalen erfolgen.
  • DATE und TIME sind spezifische 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 das Kästchen für jedes Objekt an, 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.

    Der Backfill für die ausgewählten Objekte wird beendet und der Status der einzelnen Objekte ändert sich zu Stopped.

    Wenn ein Objekt diesen Status hat, wird der Backfill für das Objekt beendet. Wenn der Backfill für das Objekt noch einmal gestartet wird, streamt Datastream alle vorhandenen Daten, die mit dem Objekt verknüpft sind, aus der Quelle in das Ziel.

Nächste Schritte