Un flusso in Datastream può eseguire il backfill dei dati storici, nonché trasmettere in streaming le modifiche in corso in 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, tabelle e colonne di database.
Un altro motivo per avviare il backfill per 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 ora i dati sono persi. In questo caso, l'avvio del backfill per l'oggetto funge da meccanismo di ripristino 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 interrompi il backfill per l'oggetto.
Puoi anche interrompere il backfill degli oggetti per scopi di bilanciamento del carico. Datastream può eseguire più backfill in parallelo. Ciò potrebbe aumentare il carico sull'origine. Se il carico è significativo, interrompi il backfill per gli oggetti e poi avvialo per ciascuno di essi, uno alla volta.
Stati degli oggetti
I vari stati del ciclo di vita di avvio e interruzione del backfill per un oggetto includono:
Nessuno stato (rappresentato nella UI come
-): i motivi per cui un oggetto riceve questo stato includono:- Lo streaming 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.
- Il flusso è configurato per includere le tabelle future. In questo caso, quando vengono aggiunte nuove tabelle all'origine, non viene creata alcuna attività di backfill automatico (perché in genere le nuove tabelle non hanno dati storici da riempire).
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 interrotto per l'oggetto. Se viene avviato di nuovo il backfill 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
Vai alla pagina Stream nella console Google Cloud .
Fai clic sul flusso che contiene gli oggetti per i quali vuoi avviare il riempimento.
Fai clic sulla scheda Oggetti.
Seleziona la casella di controllo per ogni oggetto per cui vuoi avviare il backfill.
Fai clic su Avvia backfill.
Se hai selezionato un solo oggetto, nella finestra di dialogo fai clic su AVVIA RIEMPIMENTO OGGETTO. In caso contrario, se hai selezionato più oggetti, fai clic su AVVIA RIEMPIMENTI PREGRESSI DEGLI OGGETTI.
Datastream inizierà il backfill per gli oggetti selezionati e lo stato di ciascun oggetto cambierà da
PendingaActiveaCompleted. Quando un oggetto ha lo statoCompleted, significa che Datastream ha letto tutti i dati dell'oggetto, ma i dati potrebbero essere ancora in fase di caricamento nella destinazione.
Avvia il 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
- MySQL
Per avviare un backfill parziale:
Vai alla pagina Stream nella console Google Cloud .
Fai clic sul flusso che contiene gli oggetti per i quali vuoi avviare il riempimento.
Fai clic sulla scheda Oggetti.
Seleziona l'oggetto per il quale vuoi avviare il backfill.
Fai clic su Avvia backfill.
Nel riquadro visualizzato, seleziona la casella di controllo Abilita filtro personalizzato.
Inserisci la clausola SQL
WHERE. Ad esempio,product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'.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 dei filtri personalizzati 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), decimali (123.45), negativi (-10) e con esponenti (1.2e3). - Valori booleani: parole chiave sensibili alle maiuscole
TRUEoFALSE.
- Stringhe: testo racchiuso tra virgolette singole, ad esempio
Identificatori:
- Qualifica: i nomi delle colonne possono essere completi utilizzando i punti per specificare
lo schema o la tabella, ad esempio
myColumn,myTable.myColumnomySchema.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 (
").
- Qualifica: i nomi delle colonne possono essere completi utilizzando i punti per specificare
lo schema o la tabella, ad esempio
Limitazioni del backfill parziale
Alcune istruzioni, operatori e parole chiave sono esplicitamente vietati e il loro utilizzo genera un errore. tra cui:
- Commenti, ad esempio
--o/* */. - Funzioni, ad esempio
UPPER(column)eNOW(). - Espressioni aritmetiche, ad esempio
column + 1 > 10. - L'operatore
LIKE. I caratteri jolly come%o_non sono supportati conLIKE. - L'operatore
BETWEEN. Utilizza invece>=e<=. - Sottoquery, ad esempio
(SELECT ...)all'interno della clausolaWHERE. CASE, ad esempioCASE WHEN ... END.- Confronti tra colonne, ad esempio
column1 = column2. I confronti devono essere effettuati con valori letterali. DATEeTIMEtipi o funzioni specifici.- Operatori specifici per array o JSON.
- Cast esplicito: ad esempio,
CAST(column AS INT).
Arresta backfill
Vai alla pagina Stream nella console Google Cloud .
Fai clic sul flusso che contiene gli oggetti per i quali vuoi interrompere il backfill.
Fai clic sulla scheda Oggetti.
Seleziona la casella di controllo per ogni oggetto per cui vuoi interrompere il backfill.
Fai clic su Interrompi riempimento.
Se hai selezionato un solo oggetto, nella finestra di dialogo fai clic su Interrompi riempimento pregresso oggetto. Altrimenti, se hai selezionato più oggetti, fai clic su Interrompi riempimenti degli oggetti.
Datastream interromperà il backfill per gli oggetti selezionati e lo stato di ciascun oggetto cambierà in
Stopped.Quando un oggetto ha questo stato, il backfill viene interrotto per l'oggetto. Se viene avviato di nuovo il backfill per l'oggetto, Datastream trasmette tutti i dati esistenti associati all'oggetto dall'origine alla destinazione.
Passaggi successivi
- Per saperne di più sugli stream, consulta Ciclo di vita dello stream.
- Per scoprire come visualizzare le informazioni sul tuo stream, consulta Visualizzare uno stream.
- Per scoprire come modificare uno stream, consulta Modificare uno stream.
- Per scoprire come monitorare uno stream, consulta Monitorare uno stream.
- Per scoprire come recuperare uno stream non riuscito, consulta Recuperare uno stream.