Skip to content

What is DuckDB?

DuckDB is an open source, columnar, in-process analytics database: it runs inside the app with no server and queries Parquet and CSV files directly with SQL.

DuckDB is an open source analytical database designed to run in-process: it is not a server you connect to remotely, but a library that loads directly inside the application's process, whether that is a Python script, a notebook, or a backend service. It is columnar, so it is optimized for analytical queries that aggregate millions of rows rather than for single transactions, and it executes standard SQL reading directly from Parquet, CSV, or other tabular files without first loading them into a separate database. The closest comparison is SQLite, but oriented toward analytics instead of transactions: the same zero-install philosophy and no infrastructure to manage, with a completely different internal engine built for fast scans and aggregations. Since the API stabilized around version 1.0, and with the arrival of DuckLake as a native lakehouse format, adoption has grown well beyond notebook use, reaching real production scenarios.

See also: Polars vs Pandas vs Spark · Three Python libraries for tabular data: the right pick depends on data volume and where it runs, not on one engine being universally better.

Where it fits

DuckDB fits into specific points of a data platform, not as a replacement for a cloud data warehouse. It is the natural tool for exploratory analysis on a laptop, where a data scientist wants to query a few-gigabyte Parquet file with SQL without spinning up a cluster. It is just as useful inside pipeline transformations, embedded in a Python job or in a test step that needs to validate a query's logic before running it on a distributed engine. And it acts as a lightweight query layer on top of an existing lakehouse, able to read Iceberg or Delta tables directly without going through a separate engine for an ad hoc query.

An enterprise example

A data engineering team running transformation pipelines on a data lake uses DuckDB in automated tests: instead of running every test against a shared Spark cluster, with the time and cost that involves, it runs the same SQL logic in-process on a subset of Parquet data inside the CI pipeline. Tests run in seconds instead of minutes, and only the validated version of the transformation is then run on the distributed engine in production. The same pattern shows up with analysts who explore a dataset locally with DuckDB to validate its quality before loading it into a cloud data warehouse.

When to choose it, when not to

Choosing it makes sense when data comfortably fits on a single machine, when zero infrastructure setup is needed, and when the use case is analytical: aggregations, joins, scans over columnar files. It is not the right choice when real multi-user concurrency is needed, with many simultaneous connections writing to the same data: DuckDB is not designed for that transactional scenario. Nor does it hold up when volume exceeds what a single machine can handle in memory or on disk: at that point a distributed engine like Spark, or a managed cloud data warehouse, is needed. One risk worth keeping separate is vendor risk. On August 26, 2026 AWS announced the acquisition of DuckLabs, the company that develops DuckDB, expected to take effect in early September: the deal covers the company and the team, not the intellectual property, which stays with the DuckDB Foundation under the MIT license, and the two creators keep technical leadership of the project. It is the concrete case that shows the difference between who owns the code and who pays the people writing it, and it is the question to ask in any assessment of single-vendor dependency. For the comparison between single-machine data processing libraries and distributed engines, see the entry on Polars, Pandas and Spark; for the open tabular formats DuckDB reads natively, see the entry on open table formats.

  • Polars vs Pandas vs Spark · Three Python libraries for tabular data: the right pick depends on data volume and where it runs, not on one engine being universally better.
  • Open table formats (Iceberg, Delta, Hudi) · Open formats that add transactions, versioning and schema evolution to data lake files, without tying your data to a single vendor.
  • Data lakehouse · A data architecture combining the flexibility of a data lake with the reliability of a data warehouse in one platform.
  • OLAP vs OLTP · OLTP handles operational transactions (fast writes, normalized data); OLAP powers analytics (aggregate reads, denormalized data).
  • Parquet, Avro and ORC · Three file formats for structured data: columnar (Parquet, ORC) for analytical queries, row-based (Avro) for fast writes.

See it in the universe

If it touches your company's data, getting that data in order is the first thing I do.

SEE DATA FOUNDATIONS

Or write to me.