Definition
Un data lake (lac de donnees) est un systeme de stockage centralise qui contient des donnees brutes dans leur format natif — structurees (CSV, Parquet), semi-structurees (JSON, XML), et non structurees (images, logs, videos) — jusqu'a ce qu'elles soient necessaires pour l'analyse.
Contrairement au data warehouse qui impose un schema avant le chargement, le data lake stocke les donnees telles quelles et le schema est applique a la lecture (schema-on-read).
Architecture
Sources → Ingestion → Raw Zone → Curated Zone → Consumption Zone
↓ ↓ ↓ ↓
Airbyte/Kafka S3/GCS Spark/dbt BI/ML/API
(brut) (brut) (nettoye) (exploite)
Zones du data lake
- Raw (Bronze) : donnees brutes, telles qu'elles arrivent
- Curated (Silver) : donnees nettoyees, deduplicquees, validees
- Consumption (Gold) : donnees agregees, pretes pour l'analyse et le ML
Technologies de stockage
- AWS S3 : le standard, ~0.023$/Go/mois
- Google Cloud Storage : equivalent GCP
- Azure Data Lake Storage : equivalent Azure
- MinIO : alternative open source S3-compatible
Formats de fichiers
| Format | Type | Usage |
|---|---|---|
| Parquet | Colonnaire, binaire | Standard analytique |
| Delta Lake | Parquet + ACID | Lakehouse (Databricks) |
| Iceberg | Parquet + ACID | Lakehouse (open source) |
| Avro | Ligne, binaire | Streaming (Kafka) |
| CSV/JSON | Texte | Echange, import simple |
Le probleme du "data swamp"
Un data lake mal gere devient un "data swamp" (marecage) : des donnees inexploitables car non documentees, non cataloguees, de qualite inconnue.
Prevention :
- Data Catalog : inventorier et documenter chaque dataset (AWS Glue Catalog, DataHub)
- Data Quality : verifier la qualite a chaque etape (Great Expectations, dbt tests)
- Data Governance : controles d'acces, lineage, retention policies
- Metadata : qui a cree la donnee, quand, d'ou vient-elle
Evolution : le Lakehouse
Le Lakehouse combine data lake (stockage flexible, cout faible) et data warehouse (ACID, SQL, performance) :
- Delta Lake (Databricks) : transactions ACID sur Parquet
- Apache Iceberg : tables versionnees, time travel
- Apache Hudi : upserts, incremental processing