DuckDB est un système de gestion de base de données relationnelle (SGBDR) open-source, orienté colonnes, conçu pour des requêtes analytiques haute performance dans des configurations embarquées. Il cible les charges de travail de traitement analytique en ligne (OLAP), telles que la combinaison de tables comportant des centaines de colonnes et des milliards de lignes, plutôt que les applications transactionnelles (OLTP). Contrairement aux bases de données client-serveur traditionnelles, DuckDB s'exécute à l'intérieur d'un processus hôte, ce qui le rend adapté à l'analyse interactive de données, aux pipelines scriptés et à l'intégration avec des outils comme Python. Selon les décomptes récents, le projet rapporte plus de 6 millions de téléchargements par mois.
Le système est construit autour d'un moteur de traitement de requêtes vectorisé, sans dépendances externes au-delà d'un compilateur C++17. L'analyseur SQL de DuckDB dérive de la bibliothèque pg_query de Lukas Fittl, qui est elle-même une version allégée de l'analyseur de PostgreSQL. Les données peuvent être stockées soit dans des fichiers Apache Parquet, soit dans un format de stockage à fichier unique, tous deux optimisés pour des analyses efficaces et des opérations en masse. DuckDB compile également en WebAssembly via Emscripten, permettant l'exécution de SQL dans des outils d'analyse basés sur navigateur.
Historique
DuckDB a été initialement développé par Mark Raasveldt et Hannes Mühleisen au Centrum Wiskunde & Informatica (CWI) aux Pays-Bas. Les cofondateurs visaient à créer une base de données OLAP en processus pour des requêtes analytiques rapides, comblant un vide laissé par les bases de données embarquées comme SQLite qui se concentrent sur le traitement transactionnel. La première version publique est apparue en 2019, et la version 1.0.0, nom de code SnowDuck, a été publiée le 3 juin 2024.
Architecture et fonctionnalités
DuckDB utilise un moteur de traitement de requêtes vectorisé, qui opère sur des lots de données plutôt que sur des lignes individuelles. Ce choix de conception améliore considérablement le débit pour les charges de travail analytiques. Le système peut placer directement les données dans des tableaux NumPy lorsqu'il est utilisé via sa liaison Python, et prend en charge d'autres langages via des API supplémentaires. Le format de stockage de DuckDB est un fichier unique conçu pour des analyses efficaces et des mises à jour, ajouts et suppressions en masse. Son analyseur, dérivé de celui de PostgreSQL, conserve un haut degré de compatibilité SQL.
Comparaison avec d'autres systèmes
La niche OLAP de DuckDB signifie qu'il ne concurrence pas directement les systèmes de gestion de base de données relationnelle traditionnels tels que Microsoft SQL Server, PostgreSQL ou Oracle Database. Bien qu'il utilise SQL pour les requêtes, DuckDB cible les applications sans serveur et fournit des réponses extrêmement rapides lors de la lecture de fichiers Apache Parquet ou de son propre format de stockage. Cela en fait un choix populaire pour l'analyse interactive de grands ensembles de données, où il peut surpasser les bases de données client-serveur conventionnelles pour les charges de travail en processus.
Adoption commerciale et gouvernance
DuckDB est utilisé dans des entreprises telles que Facebook, Google et Airbnb pour des tâches analytiques. Le co-auteur Hannes Mühleisen dirige DuckLabs, une entreprise de support et de conseil anciennement connue sous le nom de DuckDB Labs. DuckLabs a délibérément évité le financement par capital-risque, Mühleisen déclarant : « Nous pensons que l'investissement forcerait la direction du projet vers la monétisation, et nous préférerions de loin garder DuckDB ouvert et disponible pour autant de personnes que possible. » En août 2026, DuckLabs a été acquise par Amazon, ses employés rejoignant la filiale Amazon Web Services. Séparément, MotherDuck, une entreprise construisant une plateforme de données sur DuckDB, a levé 100 millions de dollars de financement, avec des investisseurs dont Andreessen Horowitz.
La fondation indépendante à but non lucratif DuckDB Foundation détient une grande partie de la propriété intellectuelle du projet et protège son statut open-source. Financée par des dons caritatifs, les statuts de la fondation garantissent que DuckDB reste sous licence MIT à perpétuité.
Aperçu technique
Le moteur vectorisé de DuckDB traite les données par lots, permettant un débit élevé pour les requêtes analytiques. Il prend en charge une large gamme de langages de programmation au-delà de C et C++, notamment Python, R, Java et d'autres, via des liaisons natives. L'intégration Python peut placer directement les données dans des tableaux NumPy, facilitant les flux de travail en science des données et en Machine learning. DuckDB fournit également des liaisons pour interagir avec les pipelines d'Artificial intelligence, où des requêtes analytiques rapides en processus complètent les tâches d'inférence de modèles.
Son architecture prend en charge des extensions, chargées dynamiquement pour ajouter des fonctionnalités. Les extensions principales maintenues par l'équipe DuckDB incluent httpfs pour l'accès aux fichiers distants via HTTP, HTTPS et le stockage compatible S3 (avec prise en charge de l'écriture Azure depuis la v1.5) ; spatial pour les fonctions géospatiales avec un type GEOMETRY intégré depuis la v1.5 ; iceberg pour la lecture/écriture de tables Apache Iceberg avec prise en charge du catalogue REST ; delta pour l'intégration Delta Lake via le Delta Kernel ; et ducklake, un format lakehouse avec sémantique ACID, voyage dans le temps et évolution de schéma. Plus de 30 extensions communautaires couvrent des cas d'utilisation allant des requêtes de graphes (SQL/PG) à l'intégration Kafka et à l'inférence de machine learning.
Comparaison avec d'autres bases de données
L'accent OLAP de DuckDB le distingue des SGBD traditionnels tels que Microsoft SQL Server, PostgreSQL et Oracle Database. Bien qu'il utilise SQL pour les requêtes, il cible les applications sans serveur et fournit des réponses rapides lors de la lecture de fichiers Parquet ou de son propre format de stockage. Cela en fait un choix populaire pour l'analyse interactive de grands ensembles de données, en particulier dans les environnements de science des données et d'analyse où il complète les piles Machine learning existantes. Il n'est pas conçu pour remplacer les systèmes OLTP ; il se place plutôt à leurs côtés pour les charges de travail analytiques.
Adoption et écosystème commercial
DuckDB est utilisé chez Facebook, Google et Airbnb pour l'analyse de données à grande échelle. Le co-auteur du projet, Hannes Mühleisen, dirige DuckLabs (anciennement DuckDB Labs), une entreprise de support et de conseil. DuckLabs a délibérément évité le financement par capital-risque, déclarant que l'investissement pousserait le projet vers la monétisation, préférant garder DuckDB ouvert. En août 2026, DuckLabs a été acquise par Amazon ; ses employés ont rejoint la filiale Amazon Web Services. Séparément, MotherDuck a levé 100 millions de dollars de financement pour une plateforme de données basée sur DuckDB, avec des investisseurs dont Andreessen Horowitz.
Fondation DuckDB
La fondation indépendante à but non lucratif DuckDB Foundation protège la maintenance et le développement à long terme du projet. Elle détient une grande partie de la propriété intellectuelle et est financée par des dons caritatifs. Les statuts de la fondation garantissent que DuckDB reste open-source sous licence MIT à perpétuité, protégeant le projet d'une capture commerciale. Cette structure de gouvernance, combinée à la décision de DuckLabs d'éviter le capital-risque, reflète un engagement à garder la technologie largement accessible.
Prise en charge des langages et extensions
DuckDB fournit des API natives en C et C++, avec des liaisons supplémentaires pour des langages tels que Python, R, Java, Julia et d'autres. L'intégration Python permet le placement direct des résultats de requêtes dans des tableaux NumPy, facilitant des flux de travail fluides dans les contextes de science des données et de Machine learning. Le système d'extensions prend en charge à la fois des modules intégrés et maintenus par la communauté, avec l'extension httpfs permettant l'accès aux fichiers distants via HTTP, HTTPS et le stockage d'objets compatible S3, y compris la prise en charge de l'écriture Azure depuis la version 1.5. L'extension spatial fournit des fonctions géospatiales dans la famille ST_*, et GEOMETRY est devenu un type de base intégré dans la v1.5. Pour les scénarios lakehouse, DuckDB propose des extensions iceberg et delta pour les formats de table Apache Iceberg et Delta Lake, respectivement.
Cas d'utilisation et performances
DuckDB est souvent utilisé dans les flux de travail de science des données où les utilisateurs interrogent de grands ensembles de données de manière interactive depuis un interpréteur Python ou un notebook Jupyter, plaçant directement les résultats dans des tableaux NumPy. Il est également utilisé dans des outils d'analyse qui s'exécutent dans le navigateur via WebAssembly. Parce qu'il évite la surcharge d'une couche réseau client-serveur, DuckDB peut fournir des réponses en moins d'une seconde sur des données stockées dans Parquet ou son propre format colonnaire. Cela le positionne comme un choix pratique pour l'analyse embarquée, le traitement par lots et les tâches légères de transformation de données, permettant aux utilisateurs de gérer des données à grande échelle sans déployer un cluster de bases de données dédié.
Prise en charge des langages
Outre les API natives en C et C++, DuckDB propose des liaisons pour Python, R, Java, Node.js et d'autres langages, le rendant accessible à travers diverses piles de développement Large language model et des outils de données généraux. Le package Python est largement utilisé pour l'analyse interactive et dans les pipelines de production, souvent comme remplacement direct des dataframes en mémoire lorsque les ensembles de données dépassent la RAM disponible.
Extensions et écosystème
Le système d'extensions permet un chargement dynamique sans recompiler le moteur principal. Les extensions communautaires couvrent divers cas d'utilisation, des requêtes de graphes à l'intégration Kafka et à l'inférence ML. L'équipe DuckDB maintient plusieurs extensions principales, avec plus de 30 extensions supplémentaires maintenues par la communauté répertoriées dans le registre officiel. Cet écosystème prend en charge une large gamme de scénarios analytiques, y compris l'analyse géospatiale, l'accès aux données distantes et l'intégration avec les formats modernes de lacs de données.
Références
- Woodie, Alex. « DuckDB Walks to the Beat of Its Own Analytics Drum. » 5 mars 2024.