Gestione del backfill per gli oggetti di un flusso

Uno stream in Datastream può eseguire il backfill dei dati storici e trasmettere in streaming le modifiche in corso a una destinazione. Durante la creazione di uno stream, hai configurato le informazioni sul database di origine per lo stream.

Se hai selezionato la casella di controllo Esegui il backfill dei dati storici, Datastream trasmette in streaming tutti i dati esistenti, oltre alle modifiche ai dati, dall'origine alla destinazione.

Se non hai selezionato questa casella di controllo, Datastream trasmette in streaming solo le modifiche ai dati. Per fare in modo che Datastream trasmetta in streaming uno snapshot di tutti i dati esistenti dall'origine alla destinazione, devi avviare il backfill per gli oggetti che contengono questi dati. Gli oggetti sono sotto forma di schemi di database, tabelle e colonne.

Un altro motivo per avviare il backfill di un oggetto è se i dati non sono sincronizzati tra l'origine e la destinazione. Ad esempio, un utente può eliminare inavvertitamente i dati nella destinazione e i dati vengono persi. In questo caso, l'avvio del backfill per l'oggetto funge da meccanismo di reimpostazione perché tutti i dati vengono trasmessi in streaming alla destinazione in un'unica operazione. Di conseguenza, i dati vengono sincronizzati tra l'origine e la destinazione.

Dopo aver avviato il backfill per un oggetto, puoi arrestarlo. Nell'esempio precedente, l'utente modifica lo schema del database e lo schema o i dati vengono danneggiati. Non vuoi che questo schema o questi dati vengano trasmessi in streaming alla destinazione, quindi arresti il backfill per l'oggetto.

Puoi anche arrestare il backfill degli oggetti per scopi di bilanciamento del carico. Datastream può eseguire più backfill in parallelo. Questa operazione può aumentare il carico sull'origine. Se il carico è significativo, arresta il backfill degli oggetti e poi avvialo per ciascun oggetto.

Stati degli oggetti

I vari stati del ciclo di vita dell'avvio e dell'arresto del backfill per un oggetto includono:

  • Nessuno stato (rappresentato nell'interfaccia utente come -): i motivi per cui un oggetto riceve questo stato includono:

    • Lo stream non è stato avviato.
    • La casella di controllo Esegui il backfill dei dati storici non è stata selezionata (quindi il backfill è definito come manuale).
    • L'oggetto è escluso esplicitamente dal backfill automatico.
    • Lo stream è configurato per includere le tabelle future. In questo caso, quando vengono aggiunte nuove tabelle all'origine, non viene creato automaticamente un'attività di backfill per queste tabelle (perché in genere le nuove tabelle non hanno dati storici di cui eseguire il backfill).
  • Pending: il backfill non è ancora iniziato per l'oggetto.

  • Active: il backfill è in corso per l'oggetto.

  • Completed: il backfill è stato completato per l'oggetto.

  • Stopped: il backfill è stato arrestato per l'oggetto. Se il backfill viene avviato di nuovo per l'oggetto, Datastream trasmetterà in streaming tutti i dati esistenti associati all'oggetto dall'origine alla destinazione.

  • Failed: il backfill non è riuscito per l'oggetto e deve essere avviato di nuovo.

Avvia backfill

  1. Vai alla pagina Stream nella Google Cloud console.

    Vai alla pagina Stream

  2. Fai clic sullo stream che contiene gli oggetti per i quali vuoi avviare il backfill.

  3. Fai clic sulla scheda Oggetti.

  4. Seleziona la casella di controllo per ogni oggetto per il quale vuoi avviare il backfill.

  5. Fai clic su Avvia backfill.

  6. Se hai selezionato un solo oggetto, nella finestra di dialogo fai clic su AVVIA BACKFILL OGGETTO. In caso contrario, se hai selezionato più oggetti, fai clic su AVVIA BACKFILL OGGETTI.

    Datastream avvierà il backfill per gli oggetti selezionati e lo stato di ogni oggetto cambierà da Pending a Active a Completed. Quando un oggetto ha lo stato Completed, significa che Datastream ha letto tutti i dati dell'oggetto, ma i dati potrebbero essere ancora in fase di caricamento nella destinazione.

Avvia backfill parziale

Oltre ai backfill completi, puoi eseguire un backfill parziale per caricare un sottoinsieme specifico di dati dall'origine alla destinazione. Per farlo, fornisci una clausola SQL WHERE come filtro personalizzato.

Datastream supporta il backfill parziale per le seguenti origini:

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL

Per avviare un backfill parziale:

  1. Vai alla pagina Stream nella Google Cloud console.

    Vai alla pagina Stream

  2. Fai clic sullo stream che contiene gli oggetti per i quali vuoi avviare il backfill.

  3. Fai clic sulla scheda Oggetti.

  4. Seleziona l'oggetto per il quale vuoi avviare il backfill.

  5. Fai clic su Avvia backfill.

  6. Nel riquadro visualizzato, seleziona la casella di controllo Attiva filtro personalizzato.

  7. Inserisci la clausola SQL WHERE. Ad esempio, product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'.

  8. Fai clic su Avvia backfill.

Datastream convalida il filtro. Se la convalida non riesce, sopra l'editor viene visualizzato un messaggio di errore. Se la convalida ha esito positivo, Datastream avvia il job di backfill.

Sintassi del filtro personalizzato supportata

Quando fornisci un filtro personalizzato, Datastream supporta un sottoinsieme fondamentale della sintassi della clausola SQL WHERE. Gli elementi supportati includono:

  • Operatori logici: AND, OR
  • Operatori di confronto: =, <, >, <=, >=, !=
  • Condizioni: IN, NOT IN, IS NULL, IS NOT NULL
  • Raggruppamento: parentesi () per definire i gruppi di condizioni
  • Valori:

    • Stringhe: testo racchiuso tra virgolette singole, ad esempio 'value',
    • Numeri: numeri interi (123), numeri decimali (123.45), numeri negativi (-10) e numeri con esponenti (1.2e3).
    • Valori booleani: parole chiave sensibili alle maiuscole TRUE o FALSE.
  • Identificatori:

    • Qualificazione: i nomi delle colonne possono essere qualificati completamente utilizzando i punti per specificare lo schema o la tabella, ad esempio myColumn, myTable.myColumn, o mySchema.myTable.myColumn.
    • Identificatori senza virgolette: possono contenere lettere, numeri e trattini bassi e devono iniziare con una lettera o un trattino basso. La distinzione tra maiuscole e minuscole per i nomi di colonne o tabelle dipende dal database di destinazione.
    • Identificatori tra virgolette doppie: devono essere racchiusi tra virgolette doppie (").

Limitazioni del backfill parziale

Alcune istruzioni, operatori e parole chiave sono esplicitamente vietati e il loro utilizzo genera un errore. Questi includono:

  • Commenti, ad esempio -- o /* */.
  • Funzioni, ad esempio UPPER(column) e NOW().
  • Espressioni aritmetiche, ad esempio column + 1 > 10.
  • L'operatore LIKE. I caratteri jolly come % o _ non sono supportati con LIKE.
  • L'operatore BETWEEN. Utilizza invece >= e <=.
  • Subquery, ad esempio (SELECT ...) all'interno della clausola WHERE.
  • Istruzioni CASE, ad esempio CASE WHEN ... END.
  • Confronti tra colonne, ad esempio column1 = column2. I confronti devono essere eseguiti con valori letterali.
  • Tipi o funzioni specifici di DATE e TIME.
  • Operatori specifici di array o JSON.
  • Casting esplicito: ad esempio, CAST(column AS INT).

Arresta backfill

  1. Vai alla pagina Stream nella Google Cloud console.

    Vai alla pagina Stream

  2. Fai clic sullo stream che contiene gli oggetti per i quali vuoi arrestare il backfill.

  3. Fai clic sulla scheda Oggetti.

  4. Seleziona la casella di controllo per ogni oggetto per il quale vuoi arrestare il backfill.

  5. Fai clic su Arresta backfill.

  6. Se hai selezionato un solo oggetto, nella finestra di dialogo fai clic su Arresta backfill oggetto. In caso contrario, se hai selezionato più oggetti, fai clic su Arresta backfill oggetti.

    Datastream arresterà il backfill per gli oggetti selezionati e lo stato di ogni oggetto cambierà in Stopped.

    Quando un oggetto ha questo stato, il backfill viene arrestato per l'oggetto. Se il backfill viene avviato di nuovo per l'oggetto, Datastream trasmetterà in streaming tutti i dati esistenti associati all'oggetto dall'origine alla destinazione.

Passaggi successivi