Vous êtes sur la page 1sur 31

ANF « Sciences des données : un nouveau challenge pour les

métiers liés aux bases de données », 5-7 novembre 2018, Sète

Atelier
Traçabilité des données
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution - Partage dans les Mêmes Conditions 4.0 International.

Vous êtes autorisé à :

Partager — copier, distribuer et communiquer le matériel par tous moyens et sous tous formats
Adapter — remixer, transformer et créer à partir du matériel

Selon les conditions suivantes :

Attribution — Vous devez mentionner le nom de l'auteur de la manière suivante :


« Marie-Claude Quidoz, CEFE-CNRS, 2018 »

Partage dans les Mêmes Conditions — Si vous modifiez, transformez ou adaptez


cette œuvre, vous n'avez le droit de distribuer votre création que sous une licence
identique ou similaire à celle-ci.
Traçabilité des données ?

Attribution
Gestion des versions,
d’identifiant pérenne
historisation et à des données
archivage des bases
de données massives et/ou
dynamiques
Comment définir
la traçabilité d’un jeu
de données ?
Gestion des requêtes
dynamiques,
emaj : une extension utilisation
possible pour tracer d’identifiant pérenne
les données ? pour conserver la
traçabilité des
données

Marie-Claude Quidoz - Atelier Traçabilité - 2018 3


Programme
 Traçabilité des données (M.C. Quidoz) (70 minutes)
 Définition
 Historisation des informations
 Identification pérenne des informations

 Retour d'expériences (20 minutes)


 Création de DOI sur les données et produits grillés du Service National
d’observation SSS (P. Téchiné)
 Retour d'expérience sur l'attribution de DOI à l'OSU OREME (J. Fabre &
O. Lobry)
 Pause café (30 minutes)
 Extension E-Maj (P. Beaudoin) (90 minutes)
 E-Maj : Et vos données PostgreSQL voyagent dans le temps !
 Démonstration de l'extension E-Maj
 TP : « E-Maj par la pratique »
 Q/R et réactions

Marie-Claude Quidoz - Atelier Traçabilité - 2018 4


Définition(s) : Traçabilité
 Wikipedia
 La traçabilité désigne la situation où l'on dispose de
l'information nécessaire et suffisante pour connaître
(éventuellement de façon rétrospective) la composition d'un
matériau ou d'un produit du commerce tout au long de sa
chaîne de production, de transformation et de distribution

 CINES (Guide Archivage numérique pérenne)


 Faculté de pouvoir présenter l'historique des traitements
opérés sur un document durant tout le cycle des données
 Réseau Qualité en Recherche (A. Rivet)
 Aptitude à retrouver l'historique, la mise en œuvre ou
l'emplacement de ce qui est examiné (norme ISO 9000)

Marie-Claude Quidoz - Atelier Traçabilité - 2018 5


Définition(s) : Généalogie
 Guide de saisie des métadonnées au format INSPIRE adapté aux
données de la recherche (http://rbdd.cnrs.fr/IMG/pdf/inspire_versionrecherche.pdf)
 La généalogie de la ressource décrit l’historique d’un jeu de données
et, s’il est connu, le cycle de vie de celui-ci, depuis l’acquisition et la
saisie de l’information jusqu’à sa compilation avec d’autres jeux et les
variantes de sa forme actuelle. Il s’agit d’apporter une description
littérale et concise soit de l’histoire du jeu de données, soit des
moyens, procédures ou traitements informatiques mis en œuvre au
moment de l’acquisition du jeu de données.
 Exemple : La méthode utilisée, la méthode hydrogéo morphologique,
donne une description de la plaine alluviale fonctionnelle des cours
d'eau, façonnée par leurs crues successives, en délimitant les
différentes structures morphodynamiques qui la composent.....
 Rubrique [DataQuality]

Marie-Claude Quidoz - Atelier Traçabilité - 2018 6


Définition(s) : De fil en aiguille
 ArcGIS : Généalogie
 Une généalogie est une séquence d'états permettant
d'enregistrer une série de modifications de la table de base
vers l'état actuel de la version
 QGIS : PgVersion un plugin de versionnement
 Versionner des couches géographiques c'est à dire de garder
des états antérieurs de la couche (appelés révision) aussi
bien concernant la géométrie et les attributs.
 GitLab : Plateforme de dépôts
 Offre la possibilité de gérer ses dépôts Git et ainsi de mieux
appréhender la gestion des versions de vos codes sources, ...

Marie-Claude Quidoz - Atelier Traçabilité - 2018 7


Traçabilité = Historiser
 Conserver la trace de toutes les modifications / actions /
opérations faites sur les données
 3 situations :
 Garder toutes les actions faites sur un attribut

 Garder toutes les actions faites sur une table

 Garder toutes les actions faites sur la base de données

 1 seule réponse :
 Déclencheur(s) d'historisation automatique

 Table(s) historisation

Marie-Claude Quidoz - Atelier Traçabilité - 2018 8


Généralité : Déclencheur
 Objet de la base de donnée dont le rôle est l'exécution
d'opérations lorsque les données d'une table sont modifiées (en
ajoutant ou en supprimant une ligne, ou en changeant des
valeurs d'une ligne existante)
 Déclencheur
 Avant ou après une commande
 INSERT (COPY), UPDATE, DELETE, TRUNCATE
 Par ligne ou par instruction
 Fonction déclencheur
 Fonction déclencheur
 Écrite dans un langage procédural (par ex. PL/SQL)
 Pas de paramètre d'entrée
 Une valeur de retour de type trigger

Marie-Claude Quidoz - Atelier Traçabilité - 2018 9


Squelette de la fonction déclencheur
CREATE OR REPLACE FUNCTION poisson.historise_prelevement()
RETURNS trigger AS
$BODY$
DECLARE
BEGIN

{instructions}

END;
$BODY$
LANGUAGE 'plpgsql' ;

Marie-Claude Quidoz - Atelier Traçabilité - 2018 10


Paramètres permanents & optionnels
Paramètre permanent (8) Description

TG_OP INSERT, UPDATE, DELETE ou TRUNCATE suivant l'événement qui a activé le


déclencheur
TG_NAME Nom du déclencheur qui a déclenché l'appel de la fonction
TG_TABLE_NAME Nom de la table qui a déclenché le déclencheur
TG_TABLE_SCHEMA Nom du schéma contenant la table qui a déclenché le déclencheur
TG_WHEN BEFORE, AFTER or INSTEAD OF

... ....

Paramètre optionnel * Type Événement Description

NEW Record INSERT ou UPDATE Nouvelle ligne de la table


OLD Record UPDATE ou DELETE Ancienne ligne de la table
* si le déclencheur est de niveau ligne

Marie-Claude Quidoz - Atelier Traçabilité - 2018 11


Définir la fonction déclencheur
CREATE OR REPLACE FUNCTION poisson.historise_prelevement()
RETURNS trigger AS
$BODY$
DECLARE
BEGIN

IF (TG_OP = 'DELETE') THEN


INSERT INTO poisson.prelevement_suivi (...) VALUES (...)
END IF ;

END;
$BODY$
LANGUAGE 'plpgsql' ;

Marie-Claude Quidoz - Atelier Traçabilité - 2018 12


Définir le déclencheur
CREATE TRIGGER suivi_prelevement
AFTER / BEFORE
UPDATE / UPDATE OF / INSERT / DELETE / INSTEAD OF
ON poisson.prelevement
FOR EACH ROW / FOR STATEMENT
EXECUTE PROCEDURE poisson.historise_prelevement()

Marie-Claude Quidoz - Atelier Traçabilité - 2018 13


Instruction de la fonction
poisson.historise_prelevement()

Marie-Claude Quidoz - Atelier Traçabilité - 2018 14


Table Historisation
 Pas de consigne que ce soit au niveau du nom du schéma, du
nom de la table et/ou de son contenu
 Tous les attributs de la table d'origine
+ utilisateur qui a fait la modification
+ date de la modification
+ opération de modification
+ clef primaire
 Faire attention à la précision
de l'attribut date_operation

Marie-Claude Quidoz - Atelier Traçabilité - 2018 15


Table Historisation ++
 Tous les attributs de la table d'origine
+ utilisateur qui a fait la modification
+ date de la modification
+ opération de modification
+ requête de modification
+ clef primaire
 Penser à utiliser
DEFAULT

Marie-Claude Quidoz - Atelier Traçabilité - 2018 16


Instruction de la fonction
poisson.historise_prelevement() ++

Fonctions d'informations système : https://docs.postgresql.fr/9.6/functions-info.html

Marie-Claude Quidoz - Atelier Traçabilité - 2018 17


Importance du nom du déclencheur
 Possibilité de définir plus d'un
déclencheur pour le même
événement sur la même relation
 Si c'est le cas, les déclencheurs
seront lancés dans l'ordre
alphabétique de leur nom

Marie-Claude Quidoz - Atelier Traçabilité - 2018 18


Exemple sur la table avec
enregistrement de la requête

Table poisson.prelevement_suivi_default_requete

Marie-Claude Quidoz - Atelier Traçabilité - 2018 19


Et pour un ensemble de tables ...
 Pour x tables de données, x tables historique ?
 Peu devenir très vite chronophage
 Pour x tables de données, 1 table historique ?
 Informations sur l'opérateur, la date et l'action faite
 Informations sur la table modifiée (schéma, table)
 Informations sur l'enregistrement modifié
► Référencer l'enregistrement
(utilisation de la clef primaire)
► Gérer «Tous les attributs de la table d'origine»

Marie-Claude Quidoz - Atelier Traçabilité - 2018 20


Table Historisation
 Utilisateur qui a fait la modification
+ date de la modification
+ opération de modification
+ nom du schéma
+ nom de la table
+ référencement
de l'enregistrement
+ requête de modification
+ ancien enregistrement
+ nouvel enregistrement
+ raison de la modification ?
-> Modélisation des clefs primaires
 Artificielle (ou simple)

-> A intégrer dès le début du projet


Créer un trigger de suivi des mises à jour dans postgresql et postgis : http://www.impulsmap.fr/creer-trigger-de-suivi-mises-a-jour-postgresql-postgis/
Marie-Claude Quidoz - Atelier Traçabilité - 2018 21
Historisation base de données Savoie ?

Marie-Claude Quidoz - Atelier Traçabilité - 2018 22


SELECT * FROM impulsmap.suivi

Marie-Claude Quidoz - Atelier Traçabilité - 2018 23


Des requêtes possibles
SELECT * FROM impulsmap.suivi
WHERE idobjet=11 AND nomtable='station';

SELECT * FROM impulsmap.suivi


WHERE dateheure BETWEEN
date_trunc('second',TIMESTAMP '31/10/2018 11:23:55.0') AND
date_trunc('second',TIMESTAMP '31/10/2018 11:24:10.0')

Marie-Claude Quidoz - Atelier Traçabilité - 2018 24


Traçabilité = Identifier
 Assigner un code d'identification unique à un objet
pour le référencer sans ambiguité dans le temps
même si l'objet est déplacé, renommé, ..
 Quelques exemples :
 DOI, Handle, PURL, ARK, ...
 Souvent thématique

 Intérêt :
 Rejouer les résultats d'une publication
 Suivre les utilisations de ses données

Marie-Claude Quidoz - Atelier Traçabilité - 2018 25


Identifier la base de données
 Intérêt
 Valorisation de la BDD dans son ensemble
 Reconnaissance des auteurs / contributeurs
 Contrainte
 Tenir à jour une page de présentation avec le contenu de la
base de données
 Avantage
 Un seul identifiant pérenne
 Pas de coût stockage supplémentaire
 Pas de prise en compte à faire du coté dynamique de la BDD
 Inconvénient
 Répond imparfaitement au besoin de traçabilité (publication)
 Développement applicatif à faire (web service, interface, ...)
Marie-Claude Quidoz - Atelier Traçabilité - 2018 26
Archiver la base de données
 Intérêt
 Accès pérenne à une version précise
 Contrainte
 Définir les conditions déclenchantes pour faire de nouvelles
archives (ajout de données, modification de données, ...)
 Tenir à jour une page de présentation avec les différentes
versions des archives faites
 Avantage
 Prise en compte du coté dynamique de la BDD
 Lien avec publication simple
 Possibilité de déposer l'archive dans un entrepôt de données
 Inconvénient
 Coût stockage exponentiel
Marie-Claude Quidoz - Atelier Traçabilité - 2018 27
Archiver des états (sous-ensemble)
 Intérêt
 Accès pérenne à une version précise et spécifique
 Contrainte
 Définir la granularité (temps, équipement, lieu, ...)
 Définir les conditions déclenchantes pour faire de nouvelles
archives (ajout de données, modification de données, ...)
 Tenir à jour une page de présentation avec les différents états faits
et leurs différentes versions
 Avantage
 Prise en compte du coté dynamique de la BDD
 Possibilité de déposer les archives dans un entrepôt de données
 Inconvénient
 Lien avec publication plus complexe (nombreux identifiants)
 Coût stockage
Marie-Claude Quidoz - Atelier Traçabilité - 2018 28
Archiver un jeu de donnée analysé
 Intérêt
 Accès pérenne à la version précise du jeu de données qui a
été analysé (reproductibilité)
 Contrainte

 Avantage
 Lien fort avec publication (meilleure visibilité)
 Inconvénient
 Lien fort avec publication
► Lieu de stockage parfois imposé
► Licence parfois imposée (sans paternité)

Marie-Claude Quidoz - Atelier Traçabilité - 2018 29


Identifier la requête pour la rejouer
 Intérêt
 Accès pérenne à une version précise et spécifique
 Contrainte
 Stocker les requêtes en les horodatant
 Avoir la capacité de les reexecuter (voyager dans le temps)
 Tenir à jour une page de présentation avec la liste des
requêtes identifiées pérennement
 Avantage
 Pas de cout de stockage supplémentaire
 Prise en compte du coté dynamique de la BDD
 Inconvénient
 Pas d'archive donc pas de dépôt de données
 Facilite la découverte de nos données ?
Marie-Claude Quidoz - Atelier Traçabilité - 2018 30
Et pour finir, quelques recommandations
 Le but d'un identifiant pérenne est d'accéder à la
ressource sur le long terme
 Choisir un format pérenne pour archiver ces données
(https://facile.cines.fr/)

 Le but de mettre un identifiant pérenne est de


permettre à d'autres d'utiliser vos données
 N'oublier pas de joindre les métadonnées métier aux
jeux de données que vous archivez.

Marie-Claude Quidoz - Atelier Traçabilité - 2018 31

Vous aimerez peut-être aussi