Nelle mie esperienze lavorative (nel campo dell'analisi Big Data e del Data Engineering), i progetti sono sempre diversi, ma seguono sempre uno schema consolidato: l'obiettivo è creare un piattaforma dati che raccoglie dati provenienti da diverse fonti, effettua una serie di elaborazioni, ed espone i dati consolidati a chi poi li utilizzerà.
Lo schema appena descritto viene spesso riassunto nei concetti di flussi Data Lake/Data Lakehouse e ETL (Extract-Transform-Load). Le diverse modalità di estrazione dei dati dai sistemi di origine rientrano in due categorie:
- lotto: l'intero set di dati viene estratto dalla sorgente in un'unica operazione
- streaming: l'estrazione viene effettuata in continuo, monitorando la fonte per eventuali variazioni. I dati vengono estratti non appena vengono modificati
Ogni anno emergono nuove tecnologie, nuove architetture e nuovi approcci, ma un metodo che continua ad essere utilizzato frequentemente lo è Modifica acquisizione dati.
Cos'è il Change Data Capture (CDC)? 🤓
Change Data Capture è un modello di progettazione che consente di acquisire le modifiche che si verificano in un'origine dati. Fornisce un flusso continuo di aggiornamenti dei dati, che possono essere utilizzati per vari scopi, come:
- Datalake/Data Lakehouse: Popolamento di un datalake con modifiche incrementali
- Analisi in tempo reale: Abilitazione dell'analisi in tempo reale delle modifiche dei dati
- Applicazioni guidate dagli eventi: Attivazione di azioni in base alle modifiche dei dati
- Replica dei dati: Mantenimento di più copie di dati sincronizzate
Come funziona il CDC? 🧐
Esistono molti approcci per implementare questo modello, ma quelli moderni sono l’unione di due concetti:
- Registro delle transazioni: i database creano un log con tutte le operazioni effettuate sui dati
- Code di pubblicazione/sottoscrizione: il sistema CDC esegue periodicamente il polling dell'origine dati per verificare le modifiche (nuove righe nel registro delle transazioni) e quindi pubblica le modifiche in una coda
Questo L'approccio prevede l'utilizzo di diversi componenti ed è ideale per i casi d'uso in cui il tempo reale e disaccoppiato…
Fonte: towardsdatascience.com