Un contrat de données est un accord formel entre un producteur de données et un consommateur de données qui définit la structure, les normes de qualité, la propriété, les accords de niveau de service (SLA) et les conditions d'utilisation d'un jeu de données spécifique jeu de données afin que les équipes en aval puissent avoir confiance dans ce qu'elles reçoivent et que les équipes en amont sachent exactement ce qu'elles sont tenues de fournir.
En l'absence de contrat de données, une modification du schéma dans un système source entraîne, sans qu'on s'en aperçoive, la défaillance d'un rapport en aval. Un pipeline livre les données avec deux heures de retard, sans aucune notification. Un champ sur lequel s'appuient les analystes disparaît sans préavis. Les contrats de données permettent d'éviter ces trois situations en rendant les attentes explicites, versionnées et exécutoires avant que les problèmes n'atteignent l'environnement de production.
Qu’est-ce qu’un data contract ?
Un contrat de données est un document — généralement au format YAML ou JSON lisible par machine — qui précise quelles données un producteur fournira, sous quel format, à quel niveau de qualité, selon quel calendrier et selon quelles conditions d'utilisation. Il s'agit de l'équivalent, en matière de données, d'un contrat d'API : une interface définie entre le système qui produit les données et les systèmes qui les exploitent.
Alors qu’un contrat API régit la manière dont les systèmes logiciels communiquent entre eux, un contrat de données régit la circulation des données entre les équipes, les pipelines et les systèmes. Lorsqu’un producteur et un consommateur s’accordent sur un contrat de données et Embarquer dans leurs pipelines, les modifications de schéma déclenchent des alertes plutôt que des échecs silencieux, les non-conformités en matière de qualité sont détectées à la source plutôt que découvertes dans un rapport trimestriel, et la responsabilité est documentée plutôt que laissée à la mémoire institutionnelle.
Contenu d'un contrat de données
La norme industrielle en matière de contrats de données est l'Open Data Contract Standard (ODCS), un projet de la Linux Foundation géré par Bitol. Un contrat de données complet comprend sept éléments.
| Composant | Ce que cela désigne | Exemple |
|---|---|---|
| Principes fondamentaux | Référence du contrat, nom, version, statut et version standard utilisée | id: orders-v1, version: 1.0.0, status: active |
| Schéma | Structure de la table, noms des colonnes, types de données, clés primaires et sémantique métier pour chaque champ | order_id: string, primary key / order_status: string, valid values: [pending, complete, cancelled] |
| Règles de qualité des données | Contrôles de validation qui doivent être réussis avant que les données ne soient considérées comme livrables | Nombre de lignes supérieur à 1 000 / taux de valeurs nulles inférieur à 2 % dans les champs obligatoires / logique de validation SQL personnalisée |
| Équipe | Qui est responsable du contrat et de sa gestion, quels sont leurs rôles, et comment les consommateurs peuvent-ils les contacter ? | Responsable : ingénierie des données / Gestionnaire : analyse des revenus / Support: canal Slack #data-contracts |
| SLA | Calendrier de livraison, garantie de fraîcheur et engagements en matière de disponibilité | Données actualisées tous les jours à 6 h UTC / Disponibilité de 99,5 % / Latence maximale de 15 minutes |
| Conditions d'utilisation | Ce que les consommateurs peuvent et ne peuvent pas faire avec ces données | Autorisé à des fins d'analyse interne / non autorisé pour un partage externe / traitement des données à caractère personnel requis |
| Serveurs | Où se trouvent les données et comment y accéder | Référence sur la base de données Snowflake, le schéma et les tables / Informations de connexion spécifiques à l'environnement |
Un contrat minimal peut commencer par les principes fondamentaux, le schéma et les règles de qualité. Les accords de niveau de service (SLA), les conditions d'utilisation et les détails relatifs au serveur sont ajoutés au fur et à mesure que le programme se développe.
Contrat de données et concepts connexes
| Contrat de données | Règle relative à la qualité des données | SLA | Schéma | |
|---|---|---|---|---|
| Ce que c’est | Un accord formel portant sur le schéma, la qualité, la propriété, les accords de niveau de service (SLA) et les conditions d'utilisation d'un jeu de données | Une seule vérification de validation appliquée à un champ ou à une table | Un engagement en matière de niveau de service (disponibilité, actualité, délais de livraison) | La définition structurelle d'une table ou jeu de données |
| Champ d'application | De bout en bout : du producteur au consommateur | Une seule dimension de qualité | Livraison et disponibilité uniquement | Structure uniquement |
| Qui le fixe ? | Convenu entre le producteur et le consommateur | Définis par l'ingénierie des données ou la gestion des données | Définie par l'équipe d'ingénierie des données ou l'équipe chargée de la plateforme | Définie par l'ingénierie des données |
| Comment cela a-t-il été mis en œuvre ? | Validation des pipelines, alertes, gouvernance | Contrôles qualité automatisés | Surveillance et alerte | Registre de schémas, DDL |
| Relation | Un contrat de données comprend, parmi ses composants, des règles de qualité, des accords de niveau de service (SLA) et un schéma. | Un composant d'un contrat de données | Un composant d'un contrat de données | Un composant d'un contrat de données |
Contrat de données vs. gouvernance des données :une gouvernance des données définit des normes à l'échelle de l'organisation concernant la gestion des données. Un contrat de données applique ces normes à un jeu de données spécifique jeu de données entre un producteur et un consommateur donnés. gouvernance sont d'ordre organisationnel ; les contrats de données sont jeu de données.
Contrat de données ou catalogue de données:uncatalogue de données répertorie les ressources de données existantes et leurs métadonnées. Un contrat de données formalise les engagements pris par un producteur concernant une ressource spécifique. Une entrée de catalogue décrit un jeu de données; un contrat de données régit sa mise à disposition.
Fonctionnement des contrats de données
Sans forfait de données : Une équipe d'ingénierie des données modifie le schéma de la orders table — changement de nom customer_id à cust_id et en supprimant le discount_code champ. La modification est déployée un mardi. Dès le mercredi matin, trois pipelines en aval sont tombés en panne, deux tableaux de bord affichent des valeurs nulles, et un pipeline de fonctionnalités d’apprentissage automatique reçoit en silence des zéros pour un champ qu’il utilise comme prédicteur clé. L’équipe d’analyse identifie le problème lorsqu’un vice-président s’enquiert de la baisse des chiffres d’affaires.
Avec un forfait de données : Cette même modification du schéma entraîne un échec de la validation du contrat avant la mise en production de la modification. Le contrat de données spécifie que customer_id est un champ obligatoire de type chaîne de caractères et que discount_code doit être présent avec un taux de valeurs nulles inférieur à 5 %. L'équipe d'ingénieurs reçoit une alerte indiquant quels consommateurs en aval dépendent des champs concernés. Elle coordonne la modification avec les consommateurs, met à jour la version du contrat et procède au déploiement en suivant une procédure de migration. Aucun pipeline n'est interrompu.
Comment les contrats de données sont-ils mis en œuvre ?
Étape 1 : Définir le producteur et le consommateur
Identifiez l'équipe propriétaire de l'actif de données (le « producteur ») et les équipes qui l'utilisent (les « consommateurs »). Les contrats de données fonctionnent mieux lorsque les producteurs et les consommateurs négocient ensemble le contrat, plutôt que lorsque celui-ci est imposé à l'une des parties.
Étape 2 : Rédiger le contrat
Commencez par les trois éléments essentiels : les informations de base (identifiant, version, statut), le schéma (noms des champs, types, contraintes) et les règles de qualité (contrôles de validation). Utilisez un format lisible par machine — YAML est la norme pour les contrats ODCS. Enregistrez le fichier de contrat dans le système de contrôle de version, aux côtés du code du pipeline qu’il régit.
Exemple de contrat minimal (format ODCS) :
apiVersion : v3.1.0
kind : DataContract
id : orders-daily
name : Orders
version : 1.0.0
status : active
schema :
- name : orders
physicalType : TABLE
properties:
- name: order_id
logicalType: string
primaryKey: true
- name: order_status
logicalType: string
- name: customer_id
logicalType: string
- name: order_amount
logicalType: number
quality:
- type : rowCount
mustBeGreaterThan : 1000
- type : completeness
colonne : order_id
mustBeGreaterThan : 0,99
équipe :
- nom : Ingénierie des données
rôle : propriétaire
Étape 3 : Embarquer dans le pipeline
Associez le contrat au pipeline qui génère les données. Les règles de qualité définies dans le contrat s’appliquent automatiquement lors de l’exécution du pipeline. Si une règle échoue (nombre de lignes inférieur au seuil, taux de valeurs nulles supérieur à la limite, incompatibilité de schéma), le pipeline alerte le responsable et, si nécessaire, interrompt la diffusion plutôt que de propager des données erronées en aval.
Étape 4 : Attribuer un numéro de version au contrat
Lorsque le schéma ou les normes de qualité évoluent, augmentez le numéro de version du contrat. Préservez la rétrocompatibilité dans la mesure du possible. Lorsqu’un changement rompant la compatibilité est inévitable, informez tous les utilisateurs mentionnés dans le contrat avant la mise en production de ce changement. L’historique des versions dans le système de contrôle de version fournit une piste d’audit de chaque modification et indique qui l’a approuvée.
Étape 5 : Publication dans le catalogue de données
Enregistrez le contrat dans le catalogue de données les utilisateurs puissent le découvrir, consulter son statut actuel et s'abonner aux notifications de modification. Un contrat visible dans le catalogue permet aux ressources de données de s'auto-documenter : les utilisateurs peuvent ainsi consulter le schéma, les normes de qualité, les accords de niveau de service (SLA) et les conditions d'utilisation sans avoir à s'adresser directement à l'équipe chargée de leur production.
Étape 6 : Surveiller et faire respecter
Mettez en place un système de surveillance qui vérifie la conformité aux contrats à chaque exécution du pipeline : validation du schéma, évaluation des règles de qualité et SLA . Transmettez les non-conformités au workflow de gestion du responsable. Suivez l'évolution des taux de non-conformité dans le temps comme indicateur de la santé de la qualité.
Contrats de données et Data Mesh
Les contrats de données constituent un élément fondamental de data mesh ». Dans un data mesh, les équipes métier sont responsables de la gestion et de la publication de produits de données destinés à être utilisés par d'autres domaines. Un contrat de données est l'interface formelle qui rend un produit de données utilisable : il définit ce que le produit fournit, selon quelle norme et à quelles conditions, afin que les domaines utilisateurs puissent s'appuyer dessus en toute fiabilité.
Sans contrats de données, un « data mesh des produits de données sur lesquels les autres équipes hésitent à s'appuyer. Avec des contrats de données, chaque produit de données dispose d'une interface versionnée et contraignante — c'est le même principe qui rend les architectures de microservices fiables, appliqué aux données.
Contrats de données et IA
gouvernance de l'IA génère une nouvelle demande en matière de contrats de données. Chaque jeu de données pour entraîner optimiser modèle nécessite les mêmes engagements que ceux prévus par un contrat de données : un schéma défini, des normes de qualité documentées, une propriété clairement établie et des conditions régissant l'utilisation appropriée.
Contratsapprentissage : Un contrat de données relatif à unjeu de données apprentissage jeu de données les champs inclus, les seuils de qualité auxquels ils doivent satisfaire, si le jeu de données des informations à caractère personnel (et, le cas échéant, quelles sont les exigences de traitement applicables), ainsi que l’identité de la personne qui l’a certifié pour une utilisation en IA. Ce contrat devient le document de référence nécessaire à la reproductibilité des modèles et au respect des exigences d’audit en matière d’IA.
Contrats de pipeline RAG : Les pipelines de génération augmentée par la récupération (RAG) intègrent des documents et jeux de données les fenêtres de contexte des modèles de langage à grande échelle (LLM) requête . Un contrat de données pour un jeu de données éligible au RAG jeu de données quels champs peuvent être récupérés, sous quelles conditions d’accès et avec quelle garantie d’actualité.
Contrats relatifs au Feature Store : Les pipelines de caractéristiques d’apprentissage automatique transforment les données brutes en caractéristiques de modèle. Un contrat de données entre le magasin de caractéristiques et le apprentissage du modèle spécifie le schéma des caractéristiques, les attentes en matière de distribution statistique (base pour la détection des dérives) et le SLA de latence SLA la fourniture des caractéristiques au moment de l’inférence.
Contrats de données dans les secteurs réglementés
Services financiers :la norme BCBS 239 impose aux banques de démontrer l'exactitude et la traçabilité des données utilisées pour le reporting des risques. Un contrat de données entre un système source et le pipeline de reporting des risques formalise les normes de qualité et les engagements relatifs au schéma de données exigés par la norme BCBS 239 — et génère, en tant que résultat des opérations quotidiennes, la documentation demandée par les auditeurs.
Santé :la loi HIPAAimpose une responsabilité documentée en matière de données de santé protégées (PHI). Un contrat de données relatif à un jeu de données des PHI précise la classification de sensibilité, les restrictions d'accès, les exigences de traitement et les utilisations autorisées. Lorsqu'un audit cherche à savoir comment les PHI ont été gérées au sein d'un pipeline spécifique, c'est ce contrat de données qui apporte la réponse.
Produits pharmaceutiques : La norme 21 CFR Partie 11 de la FDA et les réglementations GxP exigent l'intégrité des données cliniques. Les contrats relatifs jeux de données cliniques jeux de données le schéma, les normes de qualité et la chaîne de traçabilité requis par les exigences en matière d'intégrité des données.
FAQ
Un contrat de données est un accord formel entre un producteur de données et un consommateur de données qui définit le schéma, les normes de qualité, la propriété, les accords de niveau de service (SLA) relatifs à la livraison et les conditions d'utilisation d'un jeu de données spécifique. Il rend les attentes explicites et exécutoires, afin que les équipes en aval puissent s'appuyer en toute confiance sur les données qu'elles reçoivent.
Un SLA un aspect particulier d'un contrat de données : le calendrier de livraison, la garantie d'actualité et l'engagement de disponibilité. Un contrat de données a une portée plus large : il inclut le SLA la définition du schéma, les règles de qualité, la propriété et les conditions d'utilisation. Un SLA aux utilisateurs quand les données seront disponibles ; un contrat de données leur précise ce qu'elles contiendront et quelles normes elles respecteront.
La norme Open Data Contract Standard (ODCS) est un projet de la Linux Foundation géré par Bitol qui définit un format lisible par machine pour les contrats de données. Elle couvre les principes fondamentaux, le schéma, les règles de qualité, la responsabilité de l'équipe, les accords de niveau de service (SLA), les conditions d'utilisation et la configuration du serveur dans un document YAML. Il s'agit de la norme industrielle émergente pour les contrats de données dans les piles de données modernes.
Pas dans la plupart des cas. Les contrats de données sont gouvernance interne utilisés pour coordonner et faire respecter les normes entre les équipes. Il ne s'agit pas de contrats juridiques au sens commercial du terme. Leur intérêt est d'ordre opérationnel : ils clarifient les attentes, établissent les responsabilités et permettent une mise en application automatisée.
Le producteur de données rédige la première ébauche en collaboration avec les utilisateurs de données. Le producteur définit ce qu’il s’engage à fournir ; l’utilisateur définit ce dont il a besoin. Le contrat reflète le résultat de cette négociation. Un gouvernance des données ou gouvernance peut examiner et approuver le contrat avant sa publication.
En intégrant directement la validation du schéma et de la qualité dans le pipeline qui produit les données. Lorsqu’un contrat stipule qu’un champ doit être présent avec un taux de valeurs nulles inférieur à 2 % et que le pipeline produit des données présentant un taux de valeurs nulles de 15 %, la validation du contrat échoue et alerte le responsable avant que les données erronées n’atteignent les consommateurs en aval. Les modifications de schéma susceptibles de perturber les pipelines des consommateurs sont détectées avant déploiement non après.
Les règles de qualité des données font partie intégrante d'un contrat de données. Ce contrat définit les seuils de qualité auxquels les données doivent satisfaire ; la couche de validation de la qualité veille à leur respect lors de l'exécution du pipeline. Un contrat de données dépourvu de règles de qualité ne régit que le schéma et la livraison ; il ne garantit pas que les données contenues dans le schéma soient fiables.
Dans un data mesh, les équipes métier sont responsables de la gestion et de la publication des produits de données. Un contrat de données est l’interface formelle qui rend un produit de données exploitable : il définit le schéma, les normes de qualité, les accords de niveau de service (SLA) et les conditions d’utilisation sur lesquelles les domaines utilisateurs peuvent s’appuyer. Sans contrats de données, data mesh sont des « boîtes noires » non documentées. Grâce à eux, chaque produit dispose d’une interface versionnée et contraignante.