Suivre et capturer les modifications de la base de données en temps réel pour permettre la synchronisation des données, la réplication et les pipelines de flux.
La capture de données modifiées (CDC) est une technique d'intégration de données qui identifie et enregistre les changements au niveau des lignes apportés à un dataset, tels que les insertions, les mises à jour et les suppressions. Au lieu d'extraire de manière répétée des tables entières, la CDC ne capture que les enregistrements modifiés et les applique aux systèmes en aval. Cette approche incrémentielle permet de maintenir les plateformes d'analytique, les applications opérationnelles et les pipelines de machine learning alignés sur les informations actuelles, sans le coût ou le délai des refreshs complètes.
Les pipelines de traitement par lots traditionnels reposent sur des tâches d'ingestion périodiques qui effectuent des analyses complètes ou rechargent de grands ensembles de données. Ces flux de travail sont simples et rentables, mais inefficaces lorsque l'on monte en charge, car ils ajoutent de la latence et traitent de manière répétée des données inchangées. La CDC résout ces limitations en détectant en continu les modifications grâce à des mécanismes tels que les journaux de transactions, les déclencheurs, les horodatages ou les flux de modifications natifs, ce qui permet aux plateformes d'architecture data lakehouse de fonctionner avec des données plus récentes et une surcharge de calcul réduite.
Au sein d'un pipeline ETL, le CDC est le mécanisme qui extrait uniquement les données qui ont changé depuis le dernier chargement. Plutôt que d'exécuter des extractions planifiées de tables complètes, la CDC capture les lignes nouvelles ou modifiées au fur et à mesure qu'elles apparaissent dans la base de données source. En modifiant uniquement les événements collectés à partir des journaux, des déclencheurs ou des deltas d'instantanés, il peut former un stream incrémentiel représentant l'évolution continue du dataset via des processus d'extraction, de transformation et de chargement (ETL).
Une fois que les événements entrent dans le pipeline, le processus ETL prend le relais, avec tout nettoyage, enrichissement ou validation exécuté sur chaque enregistrement modifié, et non sur l'ensemble du dataset. L'étape de chargement finale n'applique que ces mises à jour incrémentielles à la table ou au référentiel cible, ce qui se traduit par une ingestion légère et continue. Cette approche réduit les E/S et maintient les systèmes en aval étroitement alignés sur la source.
En permettant l'extraction, la transformation et le chargement en continu, le CDC modernise l'ETL, qui passe d'un workflow orienté batch à un pipeline en temps réel. L'analytique, les tableaux de bord et les pipelines de machine learning reflètent de manière cohérente les données les plus récentes sans dépendre de Jobs de longue durée ou de fenêtres de maintenance, grâce à l'analytique en streaming.
Les écosystèmes de données modernes dépendent d'informations précises et opportunes circulant entre les systèmes opérationnels, les plateformes d'analytique et les pipelines de machine learning. Dans des environnements tels que l'e-commerce, la banque ou la logistique, les données changent constamment à mesure que de nouvelles données sont créées par des actions comme des achats, des mises à jour de profil ou des ajustements de stock. Sans le CDC, ces mises à jour restent isolées dans les systèmes sources jusqu'à la prochaine tâche ETL batch, ce qui peut obliger les tableaux de bord, les rapports et les modèles à s'appuyer sur des datasets obsolètes.
Le CDC résout ce problème en permettant une synchronisation en temps réel, garantissant que tous les systèmes connectés restent alignés sur la même source unique de vérité.
Ce processus prend également en charge les migrations sans interruption, qui sont un élément clé de la modernisation du cloud. Au lieu de geler les écritures ou d'effectuer des basculements risqués, le CDC réplique en continu les changements entre les anciens et les nouveaux systèmes afin de permettre des migrations transparentes.
Bien que les pipelines ETL traditionnels restent essentiels pour de nombreuses charges de travail analytiques, leur fonctionnement est très différent de celui du CDC. L'ETL déplace généralement les données par lots planifiés, par exemple toutes les heures, toutes les nuits ou à un autre intervalle fixe. Chaque exécution extrait des données du système source, les transforme et les recharge dans des plateformes en aval optimisées par Databricks Data Engineering. Ce modèle est prévisible, mais il peut introduire de la latence et exiger que le système analyse des tables entières ou de grandes partitions, même si seule une petite partie des enregistrements a changé.
En capturant les changements au moment où ils se produisent, le CDC élimine le décalage entre le moment où les données changent dans le système source et celui où elles deviennent disponibles pour l'analytique ou les opérations.
L'importance du CDC devient encore plus évidente lorsque l'on compare la manière dont le CDC et l'ETL gèrent le mouvement des données. Alors que l'ETL traditionnel repose souvent sur des analyses de tables complètes ou des rechargements en masse, le CDC ne transmet que les changements incrémentiels. Cela réduit considérablement le compute et améliore l'efficacité globale de votre pipeline de données.
L'ETL par batch dépend également des fenêtres de maintenance pour garantir des lectures cohérentes. La CDC supprime cette dépendance en capturant les changements sans interrompre l'activité normale de la base de données. La CDC est donc une solution idéale pour les systèmes qui nécessitent des données très à jour, comme les tableaux de bord en temps réel, les moteurs de recommandation ou les analyses opérationnelles. Cependant, l'ETL reste adapté aux remplissages historiques volumineux ou aux transformations périodiques, et ensemble, la CDC et l'ETL peuvent former une stratégie d'ingestion complémentaire dans les architectures modernes.
La CDC permet aux données de circuler de manière continue et fiable entre les data warehouse, les lakehouses et les plateformes de streaming. Comme chaque changement est capturé dans l'ordre où il se produit, les tableaux de bord et les applications restent synchronisés avec les systèmes opérationnels. La CDC prend également en charge l'auditabilité et la gouvernance en conservant un enregistrement clair de l'évolution des données, ce qui est une exigence essentielle pour les Secteurs d'activité réglementés tels que la finance et la santé, en particulier lors de la mise en œuvre de stratégies de migration du data warehouse vers le lakehouse.
La CDC et la SCD jouent des rôles différents au sein d'un pipeline de données. La CDC est responsable de la détection et de l'extraction des changements au niveau des lignes d'un système source, tandis que la SCD détermine comment ces changements sont stockés dans le système cible.
Lorsque le CDC identifie un changement, tel qu'un client qui met à jour son adresse, le SCD de type 1 écrase l'enregistrement existant car les valeurs historiques ne sont pas nécessaires. Le SCD de type 2 crée plutôt un nouvel enregistrement versionné avec des horodatages de début et de fin pour préserver l'historique complet. En d'autres termes, le CDC fournit les événements de changement incrémentiels ; le SCD applique les règles qui déterminent la manière dont ces événements sont représentés, soit sous forme d'instantanés de l'état actuel, soit sous forme de chronologies historiques.
Les organisations peuvent mettre en œuvre le CDC de plusieurs manières, en fonction des performances de leur système, de sa complexité et de leurs besoins métier. Les méthodes les plus courantes que les organisations exploitent détectent les changements différemment.
CDC basé sur les journaux : ce processus lit directement les journaux de transactions de la base de données, tels que le binlog MySQL, le WAL PostgreSQL ou les journaux redo d'Oracle. Parce qu'il fonctionne au niveau de la base de données au lieu d'interroger des tables actives, il minimise l'impact sur les systèmes de production tout en capturant toutes les insertions, mises à jour et suppressions en temps réel. Des frameworks comme Debezium et l'intégration d'Apache Kafka utilisent cette méthode pour fournir des flux de données fiables et à haut volume.
CDC basé sur des Triggers : cette méthode utilise des Triggers de base de données ou des procédures stockées pour enregistrer les changements dans des tables de suivi. Bien qu'elle introduise une légère surcharge d'écriture, elle offre un contrôle précis et peut inclure une logique ou des transformations personnalisées, ce qui peut être utile pour les charges de travail réglementées.
CDC basée sur les requêtes : cette méthode identifie les enregistrements modifiés à l'aide de Timestamps ou de numéros de version. Elle est simple et fonctionne bien pour les systèmes plus petits ou hérités, mais elle peut manquer des suppressions et être moins efficace pour monter en charge.
Une fois les changements capturés par le système, les modèles de dimensions à variation lente (SCD) définissent la manière dont ils sont appliqués. Cela peut se produire de deux manières différentes :
Le SCD de type 1 écrase les enregistrements existants pour ne conserver que la version la plus récente. C'est idéal pour les corrections ou les mises à jour non critiques, comme la correction d'un nom de client mal orthographié ou la mise à jour de l'adresse e-mail d'un utilisateur. Dans les pipelines déclaratifs Spark, cela peut être configuré avec seulement quelques lignes de code, tandis que Lakeflow gère automatiquement le séquençage, les dépendances et les événements désordonnés.
Le SCD de type 2 préserve l'historique complet avec une gestion automatique des colonnes _START_AT et _END_AT, prenant en charge les audits et les analyses temporelles avec les transactions ACID de Delta Lake, garantissant que les états passés restent disponibles pour l'analyse. Ceci est idéal pour des tâches telles que le suivi de l'adresse d'un client au fil du temps, le monitoring des changements de prix des produits ou la conservation de pistes d'audit à des fins de conformité.
En combinant les méthodes CDC avec les pipelines déclaratifs Spark, les utilisateurs peuvent créer des pipelines CDC prêts pour la production et à faible maintenance, qui montent en charge à travers les environnements de traitement par lots et de streaming.