DuckDB a change les hypotheses sur le traitement analytique. Vous n'avez plus besoin d'un cluster, d'un warehouse cloud, ni même d'un serveur. Une base de données colonnaire in-process tournant sur votre laptop peut gérer des charges analytiques qui necessitaient auparavant des clusters Spark. Ce n'est pas un jouet -- c'est un moteur OLAP de niveau production intégré dans votre application.
Comparaison DuckDB vs alternatives
| Dimension | DuckDB | Apache Spark | Pandas | Polars | ClickHouse |
|---|
| Architecture | Embarque, in-process | Cluster distribué | En mémoire, noeud unique | En mémoire, noeud unique | Client-serveur, distribué |
| Langage | SQL + Python/R/JS | PySpark/Scala/SQL | Python | Python/Rust | SQL |
| Taille max pratiqué | ~100Go (noeud unique) | Échelle Po | ~10Go | ~50Go | Échelle Po |
| Complexité setup | pip install duckdb | Provisioning cluster | pip install pandas | pip install polars | Déploiement serveur |
| Latence (démarrage) | Millisecondes | Minutes (cluster) | Millisecondes | Millisecondes | Secondes (connexion) |
| Concurrence | Mono-utilisateur | Multi-tenant | Mono-utilisateur | Mono-utilisateur | Multi-tenant |
| Coût | 0$ (local) | $$$$ (cluster) | 0$ | 0$ | $-$$$ (serveur) |
| Ideal pour | Exploration, médium data, CI/CD | Production large échelle | Petites données, prototypage | Medium data, vitesse | OLAP large échelle |
Matrice de decision par cas d'usage
| Cas d'usage | Meilleur choix | Second choix | Eviter |
|---|
| Exploration ad-hoc sur laptop | DuckDB | Polars | Spark |
| Tests qualité data en CI/CD | DuckDB | Great Expectations | ClickHouse |
| Dashboards (100+ utilisateurs) | ClickHouse | Snowflake | DuckDB |
| ETL sur 1To+ quotidien | Spark | Flink | DuckDB |
| Analyse en notebook Jupyter | DuckDB / Polars | Pandas | Spark |
| Analytique embarquee dans une app | DuckDB | SQLite | Spark |
| Aggregation streaming temps réel | ClickHouse | Flink | DuckDB |
| Feature engineering data science | Polars | DuckDB | Pandas (gros volumes) |
| Moteur de requête serverless | DuckDB (WASM) | Athena | ClickHouse |
Références de benchmarks de performance
| Benchmark | Dataset | DuckDB | Spark (3 noeuds) | Pandas | Polars |
|---|
| TPC-H SF10 (10Go) | Jointures lineitem | 12s | 45s (+ setup) | OOM | 8s |
| Scan CSV + agrégation | 5Go CSV | 6s | 90s (+ démarrage) | 35s | 4s |
| Scan Parquet + filtré | 20Go Parquet | 4s | 15s | N/A | 3s |
| Agregation group-by | 1Mrd lignes (50Go) | 25s | 40s | OOM | 18s |
Écosystème et intégrations
Écosystème DuckDB
+-- Formats de fichiers
| +-- Parquet (lecture/ecriture native)
| +-- CSV, JSON, Excel
| +-- Tables Apache Iceberg
| +-- Tables Delta Lake
+-- Stockage cloud
| +-- S3 (extension httpfs native)
| +-- GCS, Azure Blob
+-- Langages
| +-- Python (principal)
| +-- R, Node.js, Java, Rust, Go
| +-- WASM (navigateur)
+-- Intégrations
| +-- dbt (adaptateur dbt-duckdb)
| +-- Jupyter / Observable
| +-- Apache Arrow (zero-copy)
| +-- DataFrames Pandas / Polars
+-- Extensions
| +-- spatial (type PostGIS)
| +-- recherche full-text
| +-- postgres_scanner, mysql_scanner
Quand DuckDB n'est pas la réponse
DuckDB excelle sur les charges analytiques mono-utilisateur sur des données de taille moyenne. Ce n'est pas un remplacement pour : les bases de serving multi-tenant, les charges transactionnelles, le traitement distribué a l'échelle du petaoctet, ou le streaming temps réel. Le sweet spot est le développement, les tests, le CI/CD, l'analytique embarquee, et tout cas ou le "médium data" (1-100Go) est la norme.
Ressources