Favicon of DuckDB

DuckDB

DuckDB is an open-source, in-process OLAP database — an embeddable columnar SQL engine that queries Parquet, CSV, and dataframes with no server to run.

LicenseOpen source (permissive)· MIT
DeploymentSelf-hostedManaged
PricingFree
Operational complexityLow
WorkloadInteractiveBatch
LanguageC++

Use it when

  • The data fits one machine (which is further than most teams assume) and you want fast analytical SQL without a cluster or server.
  • You are querying Parquet, CSV, or dataframes in place: local files, object storage, or in-process Python and R memory.
  • Analytics ship embedded inside an application, notebook, or pipeline step.
  • You want to develop and test lake logic locally against Iceberg, Delta, or DuckLake before it runs anywhere else.

Think twice when

  • Several processes or users must write concurrently; DuckDB allows one writing process, and lifting that means DuckLake or a server database.
  • You need governance, access control, or a shared endpoint for a team; there is no server to secure, and MotherDuck exists to add that layer.
  • The data genuinely exceeds a single node; Trino and Spark exist for that.

How it runs

There is nothing to deploy: it is a library embedded in your process, with clients for Python, R, Java, Go, Node, Rust, and WebAssembly, plus a CLI and ODBC and ADBC drivers. Extensions add httpfs for object storage, Iceberg, Delta, and DuckLake. MotherDuck is the managed serverless service built on it.

Details

Compare

How DuckDB answers the questions Query Engines turns on.

Query Engines
How it works
Engine shapeIn-process library: no server
Catalog requiredNothing required: attach an Iceberg REST catalog if you want one, or DuckLake, which keeps the catalog in a SQL database rather than in files
SQL dialectDuckDB SQL (PostgreSQL-flavoured)
Running it
Concurrent usersOne writing process at a time, MVCC across threads inside it, other processes read-only; multi-process writes need DuckLake or the beta Quack protocol
AccelerationNo result cache; min-max zonemaps are built automatically for every column, and ART indexes come from CREATE INDEX or a unique constraint
Failure recoveryACID transactions and a write-ahead log rather than distributed recovery, a failed query fails, in the process that ran it
Connections
Non-lake sourcesATTACH a Postgres, MySQL or SQLite database and query it in place, or reach S3, GCS and Azure over httpfs; extensions add Iceberg, Delta, DuckLake and Lance
Table formatsParquet, CSV and JSON natively; Iceberg writes via an attached REST catalog, Delta reads with blind appends
Client accessIn-process from C, Python, R, Java, Go, Node, Rust and WebAssembly, plus a CLI, and official ODBC and ADBC drivers
Access
Access controlNone: whatever the embedding application enforces

Share:

Alternatives to DuckDB

Favicon

 

  
  
Favicon

 

  
  
Favicon

 

  
  

Used in architectures