DuckDB
DuckDB
| Créateur | Hannes Mühleisen (d) |
|---|---|
| Développé par | Hannes Mühleisen (d) et Mark Raasveldt (d) |
| Dernière version | 1.5.2 ()[1] |
| Dépôt | github.com/duckdb |
| Écrit en | C++ |
| Formats écrits | DuckDB database file (d) |
| Type | Système de gestion de base de données |
| Licence | Licence MIT |
| Site web | duckdb.org |
DuckDB est un logiciel libre de gestion de bases de données.
DuckDB est performant pour le traitement analytique en ligne (OLAP) notamment grâce à son format de stockage par colonnes.
Le logiciel a été créé par Mark Raasveldt (d) et Hannes Mühleisen (d) au Centrum voor Wiskunde en Informatica (CWI) aux Pays-Bas[2].
Historique
DuckDB a été initialement développé par Mark Raasveldt et Hannes Mühleisen (d) au Centrum Wiskunde & Informatica (CWI) aux Pays-Bas[2]. Les co-fondateurs du projet ont conçu DuckDB pour répondre au besoin d'une solution de base de données OLAP en processus[3].
DuckDB est sortie en 2019[4].
La version 1.0.0 de DuckDB a été publiée le , sous le nom de code SnowDuck[5].
Le 12 mai 2026, un article de blog de DuckDB annonce le protocole Quack[6],[7], une fonctionnalité permettant d'utiliser duckdb en mode Client-serveur et plus uniquement en mode local.
Fonctionnalités
DuckDB utilise un moteur de traitement des requêtes vectorisé. DuckDB est particulier parmi les systèmes de gestion de bases de données car il n'a aucune dépendance externe et peut être construit avec uniquement un compilateur C++[8]. DuckDB s'écarte également du modèle client-serveur traditionnel en s'exécutant à l'intérieur d'un processus hôte. Le parseur SQL de DuckDB est dérivé de la bibliothèque pg_query développée par Lukas Fittl, qui elle-même provient du parseur SQL de PostgreSQL, simplifié au maximum[9]. DuckDB utilise un format de stockage en fichier unique pour conserver les données sur disque, conçu pour permettre des scans efficaces ainsi que des mises à jour en masse, des ajouts et des suppressions. DuckDB est également compilé en WebAssembly à l'aide d'emscripten, ce qui permet à DuckDB d'exécuter SQL dans des outils d'analyse basés sur le navigateur[10],[11].
Sources de données
DuckDB est en mesure d’interagir avec différentes sources de données, notamment des formats de fichiers, des protocoles réseau ainsi que des systèmes de gestion de bases de données. Parmi les sources prises en charge figurent[12] :
- Fichiers
- les fichiers CSV
- les fichiers texte
- les fichiers Excel
- les fichiers JSON
- les fichiers Delta Lake
- les fichiers Iceberg
- les fichiers Parquet
- Base de données
- Protocoles réseau
- Les Buckets S3
- Azure Blob Storage
- Cloudflare R2
- des fichiers accessibles en http
Extensions
L'architecture de DuckDB prend en charge les extensions, permettant d'ajouter des fonctionnalités supplémentaires de manière dynamique[13]. De nombreuses extensions populaires sont maintenues par l'équipe principale de DuckDB, et il existe plus de 30 extensions communautaires maintenues par des tiers[14],[15],[16].
Les extensions peuvent être activées à l'aide de la commande INSTALL. Certaines sources de données pré-citées sont accessibles au travers d'extensions[17]. Les extensions permettent principalement d'utiliser des formats de fichiers supplémentaires, mais pas uniquement elles peuvent aussi d'étendre la gamme de fonctionnalités .
Extensions Core notable
- ui[18] offre une interface utilisateur graphique de type notebook accessible via un navigateur Web.

- postgres[19], mysql[20], sqlite[21] permettent l'accès à des bases de données externes.
- ODBC[22] : Cette extension permet de se connecter à d'autres bases de données (à l'aide de leurs pilotes ODBC)
- ducklake[23] permet de crée un mini DataLake en local. DuckLake[24] offre des fonctions de lac de données sans la complexité des datalake traditionnels. Il utilise des fichiers Parquet pour le stockage des données. La gestion des métadonnées s'effectue dans une base de données SQL centrale telle que PostgreSQL. Pour les cas d'utilisations simples, DuckDB lui-même suffit comme base de données de métadonnées.
- Vortex[25] Nouveau format de la fondation duckdb et de Spiraldb , qui s'inspire entre autres de apache iceberg.
Comparaison
DuckDB, dans son créneau OLAP, ne concurrence pas les systèmes de gestion de bases de données traditionnels tels que MSSQL, PostgreSQL ou Oracle. Bien qu'il utilise SQL pour les requêtes, DuckDB vise les applications serverless et offre des réponses extrêmement rapides en utilisant par exemple des fichiers Apache Parquet , JSON, ou son propre format de stockage. Ces caractéristiques en font un choix populaire pour l'analyse de grands ensembles de données en mode interactif[26].
DuckDB Foundation
La fondation indépendante à but non lucratif DuckDB Foundation assure la maintenance et le développement à long terme de DuckDB. La fondation détient une grande partie de la propriété intellectuelle du projet et est financée par des dons caritatifs[27]. Les statuts de la Fondation DuckDB garantissent que DuckDB reste open source sous licence MIT license à perpétuité[28].
Prise en charge des langages
En plus des API natives C et C++, DuckDB prend en charge un large éventail de langages de programmation.
| Langage | Notes | Référence |
|---|---|---|
| Java | L’API Java est implémentée à l’aide de la JNI[29]. Une intégration avec le format Apache Arrow[30] est fournie. | [31] |
| Python | L’API Python implémente la prise en charge des bibliothèques Pandas[32], Apache Arrow[33] et Polars pour l'analyse de données. | [34] |
| Rust | L’API Rust est distribuée sous forme de crate Rust qui expose un élégant wrapper autour de l’API C native. | [35] |
| Node.JS | API Node | [36] |
| R | API R | [37] |
| Julia | API Julia | [38] |
| Swift | API Swift | [39] |
| WebAssembly | API WASM | [40] |
| Go | API Go | [41] |
Articles connexes
Notes et références
- ↑ « Release 1.5.2 », (consulté le )
- Chris Kamphuis, Advances in Information Retrieval, vol. 12036, Cham, Springer International Publishing, coll. « Lecture Notes in Computer Science », , 608–612 p. (ISBN 978-3-030-45441-8, PMCID 7148032, DOI 10.1007/978-3-030-45442-5_79), « Graph Databases for Information Retrieval »
- ↑ Leendert van der Ent, « DuckDB: Introducing a New Class of Data Management Systems », ICT Research Platform Nederland, (lire en ligne, consulté le )
- ↑ (en) Lindsay Clark, « DuckDB reaches version 0.5.0 » [archive du ], sur www.theregister.com (consulté le )
- ↑ Mark Raasveldt et Hannes Mühleisen, « Announcing DuckDB 1.0.0 », (consulté le )
- ↑ (en) The DuckDB team, « Quack : The DuckDB Client-Server Protocol », sur duckdb.org, (consulté le ).
- ↑ (en) GitHub User, « Quack Remote Protocol », sur duckdb.org (consulté le ).
- ↑ « DuckDB Building Instructions » (consulté le )
- ↑ Marco Slot, « How We Fused DuckDB into Postgres with Crunchy Bridge for Analytics », (consulté le )
- ↑ « Introducing Universal SQL » (consulté le )
- ↑ « How we evolved our query architecture with DuckDB » (consulté le )
- ↑ (en) GitHub User, « Data Sources », sur DuckDB (consulté le )
- ↑ « DuckDB Extensions Overview », sur www.duckdb.org (consulté le )
- ↑ « Core Extensions » [archive du ], sur duckdb.org, (consulté le )
- ↑ « List of Community Extensions », sur www.duckdb.org (consulté le )
- ↑ « DuckDB Extension Radar », sur www.github.com (consulté le )
- ↑ https://duckdb.org/docs/stable/extensions/overview
- ↑ (en) GitHub User, « UI Extension », sur duckdb.org (consulté le ).
- ↑ https://duckdb.org/docs/current/core_extensions/postgres
- ↑ (en) GitHub User, « MySQL Extension », sur duckdb.org (consulté le ).
- ↑ (en) GitHub User, « SQLite Extension », sur duckdb.org (consulté le ).
- ↑ (en) GitHub User, « ODBC Extension », sur duckdb.org (consulté le ).
- ↑ (en) GitHub User, « DuckLake », sur duckdb.org (consulté le ).
- ↑ (en) GitHub User, « DuckLake is an integrated data lake and catalog format », sur ducklake.select (consulté le ).
- ↑ (en) GitHub User, « Vortex Extension », sur duckdb.org (consulté le ).
- ↑ M. Bannert, Research Software Engineering: A Guide to the Open Source Ecosystem, CRC Press, coll. « Chapman & Hall/CRC Data Science Series », (ISBN 978-1-04-000513-2, lire en ligne [archive du ]), p. 25
- ↑ « DuckDB Foundation » (consulté le )
- ↑ « DuckDB Project FAQs » (consulté le )
- ↑ (en) « Java JNI Source Code », sur www.github.com (consulté le )
- ↑ « DuckDB Java Arrow Source Code », sur www.github.com (consulté le )
- ↑ (en) « DuckDB Java Source Code », sur www.github.com (consulté le )
- ↑ (en) « DuckDB Pandas Source », sur www.github.com (consulté le )
- ↑ (en) « DuckDB PyArrow Source », sur www.github.com (consulté le )
- ↑ (en) « DuckDB Python Source Code », sur www.github.com (consulté le )
- ↑ (en) « DuckDB Rust Source Code », sur www.github.com (consulté le )
- ↑ (en) « DuckDB Node Source Code », sur www.github.com (consulté le )
- ↑ (en) « DuckDB R Source Code », sur www.github.com (consulté le )
- ↑ (en) « DuckDB Julia Source Code », sur www.github.com (consulté le )
- ↑ « DuckDB Swift Source Code », sur www.github.com (consulté le )
- ↑ « DuckDB WASM Source Code », sur www.github.com (consulté le )
- ↑ « DuckDB Go Source Code », sur www.github.com (consulté le )
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.