Utiliser le Change Data Capture (CDC)



Le chargement du Data Warehouse(DW) se fait en deux étapes :

      1.      Chargement Initial : c’est le premier chargement qui se fait lorsqu’on veut alimenter le DW la première fois. Lors de ce chargement, on utilise des requêtes SQL sur la source directement car on va récupérer tout le lot de données nécessaires.

      2.      Chargement Incrémental : ce chargement se fait d’une manière périodique selon la fréquence de mise à jour de données qui est définie par la DSI et le métier. Il a pour objectif de ne charger que les nouvelles insertions ainsi que les mises à jour.

Donc, lors de chargement incrémental, au lieu d’interroger tous le lot de données de la source, il y a un moyen qui est la Change Data Capture.

C’est un moyen qui permet de capturer tous les changements qui surgissent sur la base de données source. Pour cela, il faut l’activer sur la source, mais il faut savoir que le CDC est nettoyé chaque jour par défaut, donc il faut penser à reprogrammer le nettoyage du  CDC selon votre besoin.

Sous SSIS, il y a des taches qui permettent de récupérer les données à partir du CDC directement. On peut l’utiliser et il est très efficace.

Comme on peut penser, à une autre solution : on peut interroger les tables de CDC (ce sont des tables système) au lieu des tables de la source. Il faut distinguer entre une insertion et modification. Ces tables contiennent tous les champs de table source sur laquelle on a activé le CDC et ceux qu’on veut capturer (il y a une possibilité de n’activer le CDC que sur les champs d’une table qu’on veut suivre), ainsi que d’autres colonnes propres au CDC, entre autre ([--operation])

      1.      Si code=2 : il s’agit d’une nouvelle ligne insérée dans la table
      2.      Si code= 3 alors c’est l’ancienne avant modification
      3.      Si code=4 alors la nouvelle valeur après modification
      4.      Si code=1 il s’agit d’une ligne supprimée.

Donc la même requêtes SQL qui fait le chargement à partir de la table source vous l’orienter vers le CDC au lieu de la table source directement et vous gardez votre ETL tel qu’il est.

Parfois, dans le cas des systèmes métiers qui connaissent beaucoup d’opération, le CDC peut contenir un grand lot de données vu le mouvement du système métier. Pour cela, parfois on pense à ne récupérer que les clés des lignes qui ont connu le changement et puis faire une jointure avec la table source et récupérer la dernière valeur insérée. C’est un moyen pour s’en passer des états de changement intermédiaires.

Pour conclure, c’est aux ingénieurs d’évaluer leurs besoins en termes d’information et décider de la façon qui les arrange le plus.


Comments

Popular posts from this blog