Che cos'è Change Data Capture?

Change Data Capture (CDC) è un processo utilizzato per monitorare e acquisire le modifiche apportate ai dati in un sistema di origine, come un database transazionale, un data warehouse o un'applicazione SaaS. Registrando le modifiche in tempo reale, il CDC ti consente di mantenere i sistemi sincronizzati, potenziare l'analisi, addestrare modelli di AI e supportare migrazioni di dati senza interruzioni.

Sapere quali modifiche si verificano in un database è essenziale per mantenere l'integrità dei dati, ottimizzare i workflow e sbloccare insight in tempo reale. Un esempio tipico è quello della vendita al dettaglio: quando un cliente effettua un ordine, CDC acquisisce la vendita dal database transazionale nel momento in cui avviene. Un servizio CDC come Datastream di Google Cloud può replicare le modifiche da un database PostgreSQL on-premise in un data warehouse BigQuery, alimentando una dashboard di analisi quasi in tempo reale ed eliminando l'attesa per i lenti job batch notturni.

Introduzione a Datastream per BigQuery

Concetti fondamentali

Change Data Capture (CDC) è un processo utilizzato per identificare e acquisire le modifiche ai dati, come inserimenti, aggiornamenti ed eliminazioni, da un sistema di origine, spesso quasi in tempo reale. La tecnologia CDC è rinomata per:

  • Sostituzione di job batch lenti e notturni: consente di acquisire le modifiche ai dati man mano che si verificano, anziché estrarre interi set di dati in un secondo momento
  • Casi d'uso efficaci: CDC supporta migrazioni di database senza interruzioni, analisi in tempo reale e addestramento dell'AI

Qual è la differenza tra ETL e CDC?

Il processo ETL, che sta per "estrazione, trasformazione e caricamento", prevede l'estrazione dei dati non elaborati dal sistema di origine, la loro trasformazione nella struttura necessaria e quindi il loro caricamento nel sistema di destinazione, in genere un data warehouse. L'ETL aiuta a garantire che i dati siano organizzati, puliti e pronti per l'uso a valle nell'analisi o nelle applicazioni.

Tradizionalmente, l'ETL viene eseguito in batch di grandi dimensioni e programmati, spesso durante la notte. Ciò significa che i dati nel sistema di destinazione sono aggiornati solo fino all'ultima esecuzione batch.

La differenza principale sta nel modo in cui la CDC estrae i dati. Invece di estrarre il set di dati in batch, CDC acquisisce le modifiche man mano che si verificano, consentendo di eseguire sempre query sui dati più recenti anziché affidarsi all'elaborazione batch periodica. Questo può aiutarti a rispondere più rapidamente ai cambiamenti e a ottenere informazioni più accurate.

Qual è la differenza tra SCD e CDC?

Change Data Capture è principalmente un processo incentrato sull'estrazione efficiente di tutte le modifiche incrementali da un database di origine, spesso quasi in tempo reale, per ridurre al minimo il carico sul sistema di origine.

Al contrario, le dimensioni a variazione lenta (SCD) sono una tecnica di modellazione dei dati applicata nel data warehouse di destinazione o nel sistema analitico, che si concentra su come archiviare e gestire lo stato storico dei dati delle dimensioni (come i record dei clienti o gli attributi dei prodotti) nel tempo.

Sebbene CDC sia lo strumento per il trasporto efficiente dei dati delle modifiche, queste modifiche vengono in genere applicate utilizzando una strategia dimensioni a variazione lenta (SCD, slowly changing dimensions) specifica per mantenere una cronologia completa e accurata all'interno del sistema di destinazione.

Origini e destinazioni CDC comuni

L'acquisizione delle modifiche ai dati può essere un ponte efficace per collegare i diversi sistemi che compongono uno stack di dati moderno o un cloud di dati. Anziché essere limitati a database specifici, gli strumenti CDC sono progettati per funzionare con un'ampia varietà di origini e destinazioni.

I database transazionali sono le origini più comuni per la CDC, in quanto acquisiscono ogni inserimento, aggiornamento ed eliminazione dai sistemi che eseguono le operazioni aziendali quotidiane.

Spesso la destinazione principale dei dati CDC, questi sistemi consolidano le informazioni provenienti da più fonti per la business intelligence, l'analisi e l'AI.

  • Esempi: BigQuery, Snowflake, Amazon Redshift, Databricks

Utilizza il CDC per estrarre i dati di modifica dalle piattaforme aziendali critiche (spesso tramite API o webhook) per sincronizzare i dati dei clienti, delle vendite o dell'assistenza in tutta l'organizzazione.

  • Esempi: Salesforce, SAP, Stripe, HubSpot

Le piattaforme di flussi di dati e messaggistica spesso fungono da bus di messaggistica in tempo reale, ricevendo eventi di modifica da un'origine e distribuendoli contemporaneamente a più consumer downstream.

  • Esempi: Apache Kafka, Pub/Sub, Amazon Kinesis

Una destinazione comune per i log degli eventi CDC non elaborati, poiché l'archiviazione a oggetti fornisce una base scalabile ed economicamente vantaggiosa per la creazione di un data lake.

Casi d'uso principali per Change Data Capture

Il CDC può sbloccare un'ampia gamma di casi d'uso critici, dalla garanzia della continuità dei dati all'alimentazione dell'analisi in tempo reale e dell'AI.

  • Replica: i database secondari o i backup rimangono coerenti con il sistema primario acquisendo le modifiche in tempo reale. Questo è fondamentale per le architetture di disaster recovery e ad alta affidabilità.
  • Migrazione: le migrazioni di database sono semplificate grazie al monitoraggio delle modifiche in corso e alla garanzia che il sistema di destinazione rifletta accuratamente l'origine, anche durante le migrazioni live.
  • Analisi in tempo reale: alimentando i sistemi di analisi con dati live, il CDC ti aiuta a rispondere a tendenze e cambiamenti nel momento in cui si verificano, offrendo insight aggiornati.
  • Dati per l'addestramento dell'AI: CDC fornisce i dati più aggiornati, consentendo l'addestramento di modelli di AI e machine learning con informazioni accurate e pertinenti, migliorando le previsioni e il processo decisionale.
  • Creazione di un cloud di dati: il CDC è un servizio essenziale per la creazione di un cloud di dati unificato, che trasmette flussi di modifiche in tempo reale da origini diverse e isolate (come database transazionali e applicazioni SaaS) a una piattaforma di analisi centrale e viceversa. Ciò contribuisce ad abbattere le barriere dei dati e a creare un'unica fonte attendibile.

Domande frequenti sul Change Data Capture (CDC)

Acquisendo e propagando le modifiche man mano che si verificano, CDC garantisce che più sistemi (come un database primario più un backup o un database primario più una piattaforma di analisi) siano sempre sincronizzati. In questo modo si eliminano le discrepanze dei dati e si mantiene l'integrità dei dati su tutte le piattaforme.

Il Change Data Capture funziona identificando, monitorando ed estraendo le modifiche apportate ai dati in un database di origine utilizzando vari approcci, tra cui i seguenti:

  • CDC basato su log, che legge il log delle transazioni interno del database (il record di tutte le modifiche) per trasmettere in flussi queste modifiche specifiche a un sistema di destinazione quasi in tempo reale, riducendo al minimo il carico delle risorse
  • La CDC basata su trigger prevede la creazione di trigger di database sulle tabelle per registrare le modifiche in tabelle shadow separate ogni volta che si verifica una modifica, anche se ciò può aggiungere overhead all'elaborazione delle transazioni del database di origine
  • Il CDC basato su timestamp è il metodo più semplice ma meno performante, in quanto si basa su una colonna timestamp o versione nella tabella di origine per eseguire periodicamente query sulle righe in cui l'ora di modifica è più recente rispetto all'ultima ora di estrazione.

Come funziona CDC con i database

I database sono la fonte più comune e affidabile per l'acquisizione dei dati di modifica grazie a un componente fondamentale che tutti condividono: il log delle transazioni. Questo log è un record immutabile e ordinato di ogni modifica, il che lo rende la base perfetta per acquisire le modifiche ai dati in modo accurato ed efficiente senza influire sulle prestazioni del database. Ecco un'analisi più approfondita dei concetti chiave.

Comprendere il log delle transazioni del database

Prima che i dati vengano scritti nelle tabelle del database effettivo, la modifica (un inserimento, un aggiornamento o un'eliminazione) viene registrata in un log delle transazioni. Gli strumenti CDC moderni sfruttano questo log per acquisire le modifiche in modo non intrusivo. Si tratta di una parte fondamentale della tecnologia di replica del database e, sebbene il concetto sia universale, il nome di questo log varia a seconda dei database più diffusi. Alcuni esempi notevoli:

  • PostgreSQL: log write-ahead (WAL)
  • Oracle: redo log
  • SQL Server: log delle transazioni
  • MySQL: log binario (Binlog)

Combinazione di caricamenti iniziali con CDC

Per i database esistenti di grandi dimensioni, la lettura dell'intera cronologia dal log delle transazioni può essere impraticabile a causa delle prestazioni della rete e di altri vincoli. Un pattern comune nel mondo reale è quello di eseguire prima un caricamento bulk e poi utilizzare la CDC per la sincronizzazione. La procedura prevede:

  1. Creazione di uno snapshot o di un backup coerente del database in un momento specifico.
  2. Caricamento di questo grande snapshot nel sistema di destinazione.
  3. Avvio del flusso CDC dalla posizione esatta del log in cui è stato eseguito lo snapshot.

Questo metodo "snapshot and catch-up" garantisce che la destinazione sia completamente popolata con i dati storici e quindi mantenuta perfettamente sincronizzata con tutte le successive modifiche live. È così che servizi gestiti come Datastream e Database Migration Service di Google Cloud eseguono backfill affidabili e senza interruzioni.

Posizionamento e recupero con numeri di sequenza di log

Per gestire questo processo in modo affidabile, la CDC si basa su identificatori univoci all'interno del log delle transazioni, in genere chiamati numeri di sequenza del log (LSN, log sequence numbers). Questi numeri fungono da indicatori precisi per il flusso di modifiche. Sono fondamentali per:

  • Posizionamento: sapere esattamente dove iniziare o interrompere un flusso nel log
  • Recupero: se un processo CDC non riesce, può riavviarsi dall'ultimo LSN elaborato correttamente, garantendo che ogni modifica venga acquisita esattamente una volta senza perdita o duplicazione di dati

Questi meccanismi, ovvero il log delle transazioni, lo snapshot iniziale e il numero di sequenza di log, funzionano in modo concertato per rendere il CDC del database altamente efficiente e affidabile.

Vantaggi del Change Data Capture

La CDC può offrire diversi vantaggi che la rendono indispensabile nei moderni workflow dei dati:

Coerenza dei dati tra i sistemi

Sincronizza le modifiche man mano che vengono apportate, riducendo le discrepanze e garantendo dati più accurati tra le piattaforme.

Spostamento efficiente dei dati

Garantisce che vengano acquisite solo le modifiche anziché interi set di dati, contribuendo a ridurre significativamente il carico del sistema e l'utilizzo della rete.

Integrazione perfetta

Collega i tuoi sistemi utilizzando una libreria di connettori predefiniti. Molte piattaforme forniscono interfacce no-code per configurare le pipeline e gestire automaticamente attività di backend complesse come il rilevamento della deviazione dello schema e le trasformazioni dei dati in transito, garantendo che i dati fluiscano senza interruzioni.

Resilienza operativa

Supporta le attività di disaster recovery e replica mantenendo automaticamente allineati sistemi e backup senza intervento manuale.

Insight in tempo reale

Fornisce accesso ai dati più recenti quasi istantaneamente, consentendo un processo decisionale più rapido e informato. Questa agilità può fornire un vantaggio fondamentale in ambienti frenetici come il trading finanziario, l'e-commerce e la logistica, dove il valore dei dati decade in pochi secondi.

Alternative e tecnologie concorrenti

Diverse tecnologie si sovrappongono o si integrano con CDC, offrendo approcci diversi alla gestione delle modifiche dei dati e consentendo l'elaborazione in tempo reale. Ecco un confronto tra il CDC e altri approcci importanti:

Elaborazione transazionale e analitica ibrida (HTAP)

HTAP combina workload transazionali (OLTP) e analitici (OLAP) in un unico sistema, fornendo analisi immediate sui dati. Sebbene ciò renda l'HTAP adatto all'analisi unificata in un ambiente autonomo, può avere difficoltà a sincronizzarsi con le diverse origini dati distribuite esistenti in un'organizzazione. La CDC, d'altra parte, eccelle nel mantenere la coerenza dei dati tra più sistemi e nell'abilitare workflow distribuiti.

Query federate

Le query federate (e un approccio simile chiamato "tabelle esterne") consentono a un data warehouse o a un motore di query di leggere i dati direttamente da un sistema di origine esterno, come un database transazionale, nel momento in cui viene eseguita una query. Questo approccio evita la necessità di copiare o spostare i dati, fornendo l'accesso in tempo reale alle informazioni dove risiedono.

Questo metodo può essere eccellente per l'analisi ad hoc o le query occasionali, in quanto offre un accesso immediato senza la necessità di configurare una pipeline di replica. Tuttavia, per le query utilizzate regolarmente o sensibili alle prestazioni, può essere inefficiente, poiché ogni query pone un carico diretto sul sistema operativo di origine. A differenza del CDC, che esegue il push proattivo di un flusso di modifiche verso una destinazione per un'analisi ottimizzata, la federazione esegue il pull dei dati su richiesta, il che potrebbe non essere adatto per workload ad alta frequenza.

Piattaforme di flussi di dati

Kafka è una piattaforma open source progettata per l'elaborazione e il flusso di dati a throughput elevato. Sebbene gestisca in modo efficiente i flussi di dati su larga scala, Kafka integra il CDC anziché sostituirlo. CDC si concentra sull'acquisizione di modifiche precise al database in tempo reale, mentre Kafka trasmette flussi di dati di eventi più ampi, come un clic su un sito web, la lettura di un sensore IoT o l'aggiunta di un articolo a un carrello della spesa. Insieme, queste tecnologie possono creare una combinazione potente per i workflow in tempo reale.

Integrazione a livello di applicazione

Mentre la CDC utilizza un approccio no-code per replicare i dati, le tecnologie di integrazione che si connettono a livello di applicazione collegano sistemi e piattaforme SaaS utilizzando un approccio low-code. Se vuoi avere la possibilità di trasformare i dati mentre si spostano tra le piattaforme, i prodotti di integrazione a livello di applicazione, come Application Integration di Google Cloud, possono essere uno strumento migliore per questo lavoro.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.

Inizia a utilizzare CDC su Google Cloud

Datastream è il servizio di replica e Change Data Capture (CDC) serverless, affidabile e facile da usare di Google Cloud. Riduce al minimo la latenza consentendo la sincronizzazione dei dati tra diversi database e applicazioni. Di seguito sono riportate alcune risorse utili per iniziare

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud