On sauvegarde tous les imports de données
Contexte
On voudrait pouvoir une trace de tous les imports et les exports de données que l’on fait.
Contenu
Pour faire cela on change pas mal de chose notamment les tables SQL que l’on utilise pour suivre les imports : meta
et meta_imports
et exsitu
.
Dans un premier temps on crée un schema meta
pour distinguer ces tables de travail des tables dans lesquelles on stocke la donnée, puis on crée de nouvelles tables.
Nouvelles tables SQL
meta.datasets
On met ici les définitions des datasets.
Il y a une contrainte d’unicité sur le couple nom de la table, version de la configuration. On pourrait faire porter la contrainte sur la spécification, c’est à réfléchir.
colonne | type | commentaire |
---|---|---|
id | SERIAL | Identifiant SQL de la définition du dataset |
spec | JSONB | Définition de la table, on prend le yaml et on le stocke en JSONB |
table_name | TEXT | Nom de la table qui est liée |
filesource | TEXT | Nom du fichier qui a été utilisé pour l’import |
config_version | TEXT | Version git qui a été utilisé pour l’import |
date | TIMESTAMPTZ | Quand la définition a été ajoutée à la table |
deleted | BOOLEAN | Est-ce que cette définition a été effacée |
meta.imports
On garde maintenant une trace de tous les imports et on a une référence à de la définition du dataset que l’on a utilisé
colonne | type | commentaire |
---|---|---|
id | SERIAL | Identifiant d’import |
dataset_id | SERIAL | Référence à la définition du dataset utilisé |
last_modified | DATE | Date de modification du fichier |
expires | DATE | Si le fichier expire à une date on la stocke |
imported_by | TEXT | Nom de la personne ayant effectué l’import |
insitu_version | TEXT | Version git d’insitu utilisé pour l’import |
date | TIMESTAMPTZ | Date de l’import |
meta.exsitu
On remplace le booléen processing par une date de fin de traitement qui donne la même information et plus encore !
colonne | type | commentaire |
---|---|---|
import_id | SERIAL | Identifiant d’import associé |
start_time | TIMESTAMPTZ | Horodatage du début d’import |
end_time | TIMESTAMPTZ | Horodatage de la fin d’import |
Nouvelle vue SQL
meta.current_import
Cette vue comprend pour chaque jeu de donnée le dernier import fait, elle renvoie toutes les colonnes des tables meta.dataset
et meta.import
Gros du travail
Je ne vais pas détailler ici, mais il a fallu après modifier tout le code et les tests pour prendre en compte tout ça, il n’y a pas de changement fonctionnel pour l’instant