Déployer un data catalog est un projet qui dure 6 mois si mal planifié. En entretien, on évalue la capacité à choisir le bon outil, à l intégrer avec la stack existante et à faire adopter le catalog par les équipes.
1Choisir entre DataHub, OpenMetadata, Collibra
Question discriminante
Comment choisissez-vous votre data catalog ?
| Outil | Type | Forces | Idéal pour |
|---|
| DataHub | Open source (LinkedIn) | Mature, lineage, APIs GraphQL, riche écosystème | Équipes techniques, stack diversifiée |
| OpenMetadata | Open source | UI moderne, data quality intégrée, data contracts | Équipes qui veulent tout-en-un |
| Collibra | Enterprise SaaS | Gouvernance avancée, stewardship, conformité | Grandes entreprises réglementées |
| Atlan | SaaS | UX excellente, intégrations faciles | Équipes qui veulent démarrer vite |
2DataHub : architecture et déploiement
Question discriminante
Comment est architecturé DataHub ? Comment le déployez-vous ?
## Déploiement DataHub avec Docker Compose (dev)
datahub docker quickstart
# Démarre : GMS (Graph Metadata Service), Frontend, Kafka, Elasticsearch
## Production : Helm sur Kubernetes
helm repo add datahub https://helm.datahubproject.io/
helm install datahub datahub/datahub \
--values datahub-values.yaml
## Ingestion depuis dbt
# datahub-dbt.yaml
source:
type: dbt
config:
manifest_path: ./target/manifest.json
catalog_path: ./target/catalog.json
target_platform: snowflake
enable_meta_mapping: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
# Lancer l ingestion
datahub ingest -c datahub-dbt.yaml
Question discriminante
Quelles sont les fonctionnalités qui différencient OpenMetadata de DataHub ?
- Data Quality intégrée — tests de qualité configurables directement dans l interface, sans Great Expectations séparé
- Data Contracts — définir et enforcer des contrats directement dans le catalog
- Collaboration — commentaires, @mentions, tâches sur les assets. Comme Notion pour la data
- Profiling automatique — DataHub nécessite un ingestion connector séparé pour le profiling. OpenMetadata l intègre
4Ingestion automatique des métadonnées
Question discriminante
Comment configurez-vous l ingestion automatique depuis Snowflake, dbt et Airflow ?
## DataHub : ingestion Snowflake
source:
type: snowflake
config:
account_id: mon_compte
username: datahub_user
password: ${SNOWFLAKE_PASSWORD}
database: PROD_DB
warehouse: REPORTING_WH
profiling:
enabled: true # profilage des tables
profile_table_level_only: false
## Ingestion Airflow (lineage des DAGs)
source:
type: airflow
config:
connection:
conn_type: airflow
dag_directory: /opt/airflow/dags
## Schedule : ingérer quotidiennement
schedule:
interval: '@daily'
timezone: 'Europe/Paris'
5Faire adopter le catalog par les équipes
Question discriminante
Quelles sont les stratégies pour que les équipes utilisent vraiment le catalog ?
- Problème à résoudre — ne pas déployer le catalog pour la gouvernance. Le déployer parce qu il résout le problème 'je ne sais pas d où vient cette donnée'
- Quick wins — documenter les 10 tables les plus utilisées en semaine 1. Visibilité immédiate
- Integration dans le workflow — lier le catalog dans les PRs dbt, dans les tickets, dans les dashboards
- Data Stewards — désigner des responsables par domaine, pas attendre que tout le monde documente spontanément
- Mesurer l adoption — traquer les vues, les recherches, les descriptions ajoutées. Ce qui se mesure s améliore
6Lineage automatique : les intégrations clés
Question discriminante
Quelles intégrations configurez-vous en priorité pour le lineage ?
- dbt → DataHub — lineage complet des modèles, colonne par colonne. Premier à configurer
- Airflow → DataHub — lineage des pipelines ETL. Quels DAGs alimentent quelles tables
- Snowflake/BigQuery → DataHub — lineage des requêtes SQL en production. Capturé via Query History
- Looker/Power BI → DataHub — quels dashboards consomment quelles tables. Lineage jusqu aux consommateurs finaux
- Résultat — lineage complet source → ingestion → transformation dbt → warehouse → dashboard
# DataHub ingestion YAML (BigQuery + dbt lineage)
source:
type: dbt
config:
manifest_path: /dbt/target/manifest.json
catalog_path: /dbt/target/catalog.json
target_platform: bigquery
include_column_lineage: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
# Ingestion BigQuery
source:
type: bigquery
config:
project_id: mon-projet-gcp
include_table_lineage: true
include_usage_statistics: true # qui consomme quelle table
- DataHub vs OpenMetadata vs Collibra — DataHub (LinkedIn, open source) : API-first, Kubernetes, extensible. OpenMetadata : UX soignée, déploiement simple. Collibra : enterprise, gouvernance avancée, prix élevé
- Adoption progressive — commencer par les 20 tables les plus consommées. Un catalog complet mais non maintenu vaut moins qu'un petit catalog bien curé
- Data Owners obligatoires — sans propriétaire défini par domaine, les métadonnées se dégradent en 6 mois. Processus d'attribution dès le lancement
- Intégration dbt — les modèles dbt génèrent automatiquement descriptions, tests et lineage. Source principale de métadonnées pour les équipes dbt-first
- Lineage automatique — DataHub et OpenMetadata peuvent extraire le lineage depuis Airflow, Spark, dbt et SQL pour tracer les dépendances end-to-end
# DataHub ingestion multi-sources
source:
type: dbt
config:
manifest_path: /dbt/target/manifest.json
catalog_path: /dbt/target/catalog.json
target_platform: snowflake
include_column_lineage: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
---
source:
type: bigquery
config:
project_id: mon-projet-gcp
include_table_lineage: true
include_usage_statistics: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
- DataHub vs OpenMetadata vs Collibra - DataHub (LinkedIn OSS) : API-first, Kubernetes, tres extensible. OpenMetadata : UX moderne, simple a deployer. Collibra : enterprise, prix eleve
- Adoption en 3 phases - Phase 1 : cataloguer les 20 tables les plus consommees avec owners. Phase 2 : lineage automatique dbt + Airflow. Phase 3 : search semantique
- Data Owners obligatoires - sans proprietaire par domaine, les metadonnees se degradent en 6 mois. Attribution lors du lancement
- Lineage automatique - DataHub extrait le lineage depuis dbt, Airflow, Spark et SQL. Tracer les dependances end-to-end sans effort manuel
- ROI mesurable - temps pour trouver la bonne table (avant : 30min, apres : 30s), requetes par semaine sur le catalog, reduction des questions Slack
7Grille par niveau
| Niveau | Maitrise | Signal GO | NO-GO |
|---|
| Confirmé | A utilisé un catalog, sait ce que le lineage apporte | A configuré l ingestion dbt → DataHub, utilise le catalog pour l impact analysis | Ne sait pas ce qu est un data catalog |
| Senior | Déploiement DataHub/OpenMetadata, stratégie d adoption, lineage multi-sources | A déployé un catalog en production, a défini une stratégie d adoption | Ne peut pas expliquer comment faire adopter un catalog par les équipes |
1Choosing between DataHub, OpenMetadata, Collibra
Discriminating question
How do you choose your data catalog?
| Tool | Type | Strengths | Ideal for |
|---|
| DataHub | Open source (LinkedIn) | Mature, lineage, GraphQL APIs, rich ecosystem | Technical teams, diversified stack |
| OpenMetadata | Open source | Modern UI, integrated data quality, data contracts | Teams that want an all-in-one solution |
| Collibra | Enterprise SaaS | Advanced governance, stewardship, compliance | Large regulated enterprises |
| Atlan | SaaS | Excellent UX, easy integrations | Teams that want to get started quickly |
2DataHub: architecture and deployment
Discriminating question
How is DataHub architected? How do you deploy it?
## Déploiement DataHub avec Docker Compose (dev)
datahub docker quickstart
# Démarre : GMS (Graph Metadata Service), Frontend, Kafka, Elasticsearch
## Production : Helm sur Kubernetes
helm repo add datahub https://helm.datahubproject.io/
helm install datahub datahub/datahub \
--values datahub-values.yaml
## Ingestion depuis dbt
# datahub-dbt.yaml
source:
type: dbt
config:
manifest_path: ./target/manifest.json
catalog_path: ./target/catalog.json
target_platform: snowflake
enable_meta_mapping: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
# Lancer l ingestion
datahub ingest -c datahub-dbt.yaml
Discriminating question
What are the features that differentiate OpenMetadata from DataHub?
- Integrated Data Quality — configurable quality tests directly in the interface, without a separate Great Expectations setup
- Data Contracts — define and enforce contracts directly in the catalog
- Collaboration — comments, @mentions, tasks on assets. Like Notion for data
- Automatic Profiling — DataHub requires a separate ingestion connector for profiling. OpenMetadata integrates it natively
4Automatic metadata ingestion
Discriminating question
How do you configure automatic ingestion from Snowflake, dbt and Airflow?
## DataHub : ingestion Snowflake
source:
type: snowflake
config:
account_id: mon_compte
username: datahub_user
password: ${SNOWFLAKE_PASSWORD}
database: PROD_DB
warehouse: REPORTING_WH
profiling:
enabled: true # profilage des tables
profile_table_level_only: false
## Ingestion Airflow (lineage des DAGs)
source:
type: airflow
config:
connection:
conn_type: airflow
dag_directory: /opt/airflow/dags
## Schedule : ingérer quotidiennement
schedule:
interval: '@daily'
timezone: 'Europe/Paris'
5Driving catalog adoption across teams
Discriminating question
What are the strategies to get teams to actually use the catalog?
- Problem to solve — don't deploy the catalog for governance. Deploy it because it solves the problem 'I don't know where this data comes from'
- Quick wins — document the 10 most-used tables in week 1. Immediate visibility
- Workflow integration — link the catalog in dbt PRs, in tickets, in dashboards
- Data Stewards — assign owners per domain, don't wait for everyone to document spontaneously
- Measure adoption — track views, searches, descriptions added. What gets measured gets improved
6Automatic lineage: key integrations
Discriminating question
Which integrations do you prioritize for lineage?
- dbt → DataHub — complete model lineage, column by column. First one to configure
- Airflow → DataHub — ETL pipeline lineage. Which DAGs feed which tables
- Snowflake/BigQuery → DataHub — lineage of SQL queries in production. Captured via Query History
- Looker/Power BI → DataHub — which dashboards consume which tables. Lineage all the way to end consumers
- Result — complete lineage source → ingestion → dbt transformation → warehouse → dashboard
# DataHub ingestion YAML (BigQuery + dbt lineage)
source:
type: dbt
config:
manifest_path: /dbt/target/manifest.json
catalog_path: /dbt/target/catalog.json
target_platform: bigquery
include_column_lineage: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
# Ingestion BigQuery
source:
type: bigquery
config:
project_id: mon-projet-gcp
include_table_lineage: true
include_usage_statistics: true # qui consomme quelle table
- DataHub vs OpenMetadata vs Collibra — DataHub (LinkedIn, open source): API-first, Kubernetes, extensible. OpenMetadata: polished UX, simple deployment. Collibra: enterprise, advanced governance, high price
- Progressive adoption — start with the 20 most-consumed tables. A complete but unmaintained catalog is worth less than a small well-curated one
- Mandatory Data Owners — without a defined owner per domain, metadata degrades within 6 months. Attribution process from day one
- dbt integration — dbt models automatically generate descriptions, tests and lineage. Primary metadata source for dbt-first teams
- Automatic lineage — DataHub and OpenMetadata can extract lineage from Airflow, Spark, dbt and SQL to trace end-to-end dependencies
# DataHub ingestion multi-sources
source:
type: dbt
config:
manifest_path: /dbt/target/manifest.json
catalog_path: /dbt/target/catalog.json
target_platform: snowflake
include_column_lineage: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
---
source:
type: bigquery
config:
project_id: mon-projet-gcp
include_table_lineage: true
include_usage_statistics: true
sink:
type: datahub-rest
config:
server: http://datahub-gms:8080
- DataHub vs OpenMetadata vs Collibra - DataHub (LinkedIn OSS): API-first, Kubernetes, highly extensible. OpenMetadata: modern UX, easy to deploy. Collibra: enterprise, high price
- Adoption in 3 phases - Phase 1: catalog the 20 most-consumed tables with owners. Phase 2: automatic lineage dbt + Airflow. Phase 3: semantic search
- Mandatory Data Owners - without an owner per domain, metadata degrades within 6 months. Assignment at launch
- Automatic lineage - DataHub extracts lineage from dbt, Airflow, Spark and SQL. Trace end-to-end dependencies without manual effort
- Measurable ROI - time to find the right table (before: 30min, after: 30s), weekly queries on the catalog, reduction in Slack questions
7Level-based grid
| Level | Mastery | GO Signal | NO-GO |
|---|
| Confirmed | Has used a catalog, understands what lineage brings | Has configured dbt → DataHub ingestion, uses the catalog for impact analysis | Does not know what a data catalog is |
| Senior | DataHub/OpenMetadata deployment, adoption strategy, multi-source lineage | Has deployed a catalog in production, has defined an adoption strategy | Cannot explain how to drive catalog adoption across teams |