DuckDB

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
DuckDB
DeveloperDuckDB Labs
Stable release
v1.4.1 LTS / October 7, 2025 (2025-10-07)
Repositorygithub.com/duckdb/duckdb
Written inC++
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemCross-platform
    TypeColumn-oriented DBMS
    RDBMS
    LicenseMIT License
    Websitewww.duckdb.org

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal'). DuckDB is an open-source column-oriented Relational Database Management System (RDBMS).[1] It is designed to provide high performance on complex queries against large databases in embedded configuration,[2] such as combining tables with hundreds of columns and billions of rows. Unlike other embedded databases (for example, SQLite) DuckDB is not focusing on transactional (OLTP) applications and instead is specialized for online analytical processing (OLAP) workloads.[3] The project has over 6 million downloads per month.[4][5][6]

    History

    [edit | edit source]

    DuckDB was originally developed by Mark Raasveldt and Hannes Mühleisen (wd) at the Centrum Wiskunde & Informatica (CWI) in the Netherlands.[2] The project co-founders designed DuckDB to address the need for an in-process OLAP database solution.[7] DuckDB was first released in 2019.[8] DuckDB version 1.0.0 was released on June 3, 2024, under the codename SnowDuck.[9]

    Features

    [edit | edit source]

    DuckDB uses a vectorized query processing engine.[3] DuckDB is special amongst database management systems because it does not have any external dependencies and can be built with just a C++11 compiler.[10] DuckDB also deviates from the traditional client–server model by running inside a host process (it has bindings, for example, for a Python interpreter with the ability to directly place data into NumPy arrays[2]). DuckDB's SQL parser is derived from the pg_query library developed by Lukas Fittl, which is itself derived from PostgreSQL's SQL parser that has been stripped down as much as possible.[3][11] DuckDB uses a single-file storage format to store data on disk, designed to support efficient scans and bulk updates, appends and deletes.[12] DuckDB is also compiled to WebAssembly using emscripten which enables DuckDB to run SQL in browser-based analytics tools.[13][14]

    Comparison

    [edit | edit source]

    DuckDB in its OLAP niche does not compete with the traditional DBMS like MSSQL, PostgreSQL and Oracle database. While using SQL for queries, DuckDB targets serverless applications and provides extremely fast responses using either Apache Parquet files or its own format for storage. These attributes make it a popular choice for large dataset analysis in interactive mode.[15]

    Commercial use

    [edit | edit source]

    DuckDB is used at Facebook, Google, and Airbnb.[16]

    DuckDB co-author Mühleisen also runs a support and consultancy firm for the software, DuckDB Labs.[8] The company has chosen not to take venture capital funding, stating "We feel investment would force the project direction towards monetization, and we would much prefer keeping DuckDB open and available for as many people as possible".[6] Another company, MotherDuck, has received $100 million funding for its data platform based on DuckDB, with investors including Andreessen Horowitz.[17]

    DuckDB Foundation

    [edit | edit source]

    The independent non-profit DuckDB Foundation safeguards the long-term maintenance and development of DuckDB. The foundation holds much of the intellectual property of the project and is funded by charitable donations.[18] The DuckDB Foundation's statutes ensure DuckDB remains open-source under the MIT license in perpetuity.[19]

    Language support

    [edit | edit source]

    In addition to the native C and C++ APIs, DuckDB supports a range of programming languages.

    Client APIs
    Language Notes Reference
    Java The Java API is implemented using JNI.[20] Integration with the Apache Arrow[21] format is provided. [22]
    Python The Python API implements support for the Pandas,[23] Apache Arrow[24] and Polars data analysis packages. [25]
    Rust The Rust API is distributed as a rust crate that exposes an elegant wrapper over the native C API. [26]
    Node.JS Node API [27]
    R R API [28]
    Julia Julia API [29]
    Swift Swift API [30]
    WebAssembly WASM API [31]
    Go Go API [32]

    Extensions

    [edit | edit source]

    DuckDB's architecture supports extensions, allowing additional functionality to be added dynamically.[33] Many popular extensions are maintained by the core DuckDB team, and there are over 30 community extensions maintained by third parties.[34][35][36]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    27. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    28. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    29. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    30. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    31. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    32. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    33. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    34. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    35. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    36. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

    Further reading

    [edit | edit source]
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]