Definition
Un data warehouse (entrepot de donnees) est une base de donnees specialisee concue pour l'analyse et le reporting. Il centralise les donnees provenant de multiples sources (CRM, ERP, bases de production, SaaS) dans un schema optimise pour les requetes analytiques.
Contrairement aux bases de donnees transactionnelles (OLTP), les data warehouses sont optimisees pour la lecture de grands volumes de donnees (OLAP).
Caracteristiques
- Columnar storage : les donnees sont stockees par colonnes, pas par lignes. Ideal pour les requetes analytiques qui lisent quelques colonnes sur des millions de lignes
- Compression : les colonnes de meme type se compressent tres efficacement
- MPP (Massively Parallel Processing) : les requetes sont distribuees sur de nombreux noeuds
- Schema-on-write : les donnees sont structurees et nettoyees avant d'etre chargees
- Historique : conservation de l'historique complet pour les analyses de tendances
Solutions populaires
| Solution | Cloud | Prix | Particularite |
|---|---|---|---|
| BigQuery | Pay-per-query | Serverless, SQL standard | |
| Snowflake | Multi-cloud | Credits | Separation compute/storage |
| Redshift | AWS | Instance | Integration AWS native |
| Azure Synapse | Azure | Variable | Integration Microsoft |
| ClickHouse | Self-hosted/cloud | Open source | Ultra-rapide, temps reel |
Architecture Data Warehouse
Sources → ETL/ELT → Staging → Data Warehouse → Data Marts → BI Tools
↓
dbt (transformations SQL)
↓
Metabase / Looker / Tableau
Data Warehouse vs Data Lake vs Lakehouse
| Data Warehouse | Data Lake | Lakehouse | |
|---|---|---|---|
| Donnees | Structurees | Brutes (tout format) | Les deux |
| Schema | Schema-on-write | Schema-on-read | Les deux |
| Moteur | SQL optimise | Spark, Presto | Delta Lake, Iceberg |
| Usage | BI, reporting | ML, exploration | Tout |
| Cout | Eleve | Faible (stockage objet) | Moyen |
| Exemples | BigQuery, Snowflake | S3, GCS | Databricks, Delta Lake |
Modelisation dimensionnelle
Les data warehouses utilisent souvent le schema en etoile (star schema) :
- Table de faits : evenements mesurables (ventes, clics, commandes)
- Tables de dimensions : contexte (temps, produit, client, geographie)
-- Exemple : chiffre d'affaires par pays et mois
SELECT d.pays, t.mois, SUM(f.montant) as ca
FROM faits_ventes f
JOIN dim_client d ON f.client_id = d.id
JOIN dim_temps t ON f.date_id = t.id
GROUP BY d.pays, t.mois;