Utilizzare Datastream con una tabella BigQuery esistente

Questa pagina descrive le best practice per i casi d'uso in cui:

  • Gli utenti hanno una tabella esistente in BigQuery e devono replicare i propri dati utilizzando Change Data Capture (CDC) nella stessa tabella BigQuery.
  • Gli utenti devono copiare i dati in una tabella BigQuery esistente senza utilizzare la funzionalità di backfill di Datastream, a causa del tempo necessario o delle limitazioni del prodotto.

Problema

Una tabella BigQuery compilata utilizzando l'API BigQuery Storage Write non consente operazioni di Data Manipulation Language (DML) standard. Ciò significa che, una volta che uno stream CDC inizia a scrivere in una tabella BigQuery, non è possibile aggiungere dati storici che non sono già stati precompilati nella tabella.

Considera il seguente scenario:

  1. TIMESTAMP 1: viene avviata l'operazione di copia della tabella.
  2. TIMESTAMP 2: durante la copia della tabella, le operazioni DML all'origine provocano modifiche ai dati (le righe vengono aggiunte, aggiornate o rimosse).
  3. TIMESTAMP 3: il CDC è avviato, le modifiche apportate in TIMESTAMP 2 non vengono acquisite, con conseguente discrepanza nei dati.

Soluzione

Per garantire l'integrità dei dati, il processo CDC deve acquisire tutte le modifiche all'origine che si sono verificate dal momento immediatamente successivo all'ultimo aggiornamento eseguito e che è stato copiato nella tabella BigQuery.

La soluzione che segue ti consente di assicurarti che il processo CDC acquisisca tutte le modifiche a partire da TIMESTAMP 2, senza bloccare l'operazione di copia che scrive i dati nella tabella BigQuery.

Prerequisiti

  • La tabella di destinazione in BigQuery deve avere lo stesso schema e la stessa configurazione come se fosse stata creata da Datastream. Puoi utilizzare il Datastream BigQuery Migration Toolkit per farlo.
  • Per le origini MySQL e Oracle, l'utente deve essere in grado di identificare la posizione del log al momento dell'avvio dell'operazione di copia.
  • Il database deve avere spazio di archiviazione e criteri di conservazione dei log sufficienti per consentire il completamento della procedura di copia delle tabelle.

Origini MySQL e Oracle

  1. Crea, ma non avviare lo stream che intendi utilizzare per la replica del CDC in corso. Lo stream deve essere in stato CREATO.
  2. Quando è tutto pronto per iniziare l'operazione di copia della tabella, identifica la posizione corrente del log del database:
    • Per MySQL, consulta la documentazione di MySQL per scoprire come ottenere le coordinate del log binario di replica. Una volta identificata la posizione del log, chiudi la sessione per rilasciare eventuali blocchi sul database.
    • Per Oracle, esegui la seguente query: SELECT current_scn FROM V$DATABASE
  3. Copia la tabella dal database di origine in BigQuery.
  4. Al termine dell'operazione di copia, segui i passaggi descritti nella pagina Gestisci stream per avviare lo stream dalla posizione del log identificata in precedenza.

Origini PostgreSQL

  1. Quando è tutto pronto per iniziare a copiare la tabella, crea lo slot di replica. Per ulteriori informazioni, consulta Configurare un database PostgreSQL di origine.
  2. Copia la tabella dal database di origine in BigQuery.
  3. Al termine dell'operazione di copia, crea e avvia lo stream.