# DuckDB

> In-process analytical database for local and embedded analytics

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.

Website: https://duckdb.org

## 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

### General

| Attribute | Value |
| --- | --- |
| License | Open source (permissive) |
| SPDX identifier | MIT |
| Deployment | Self-hosted, Managed |
| Workload | Interactive, Batch |
| Operational complexity | Low |
| Pricing | Free |
| Language | C++ |
| Repository | https://github.com/duckdb/duckdb |
| Documentation | https://duckdb.org/docs/ |
| Stars | 41.6k |

### Query Engines

| Attribute | Value |
| --- | --- |
| Engine shape | In-process library: no server |
| Non-lake sources | ATTACH 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 formats | Parquet, CSV and JSON natively; Iceberg writes via an attached REST catalog, Delta reads with blind appends |
| Catalog required | Nothing 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 dialect | DuckDB SQL (PostgreSQL-flavoured) |
| Client access | In-process from C, Python, R, Java, Go, Node, Rust and WebAssembly, plus a CLI, and official ODBC and ADBC drivers |
| Concurrent users | One writing process at a time, MVCC across threads inside it, other processes read-only; multi-process writes need DuckLake or the beta Quack protocol |
| Acceleration | No result cache; min-max zonemaps are built automatically for every column, and ART indexes come from CREATE INDEX or a unique constraint |
| Failure recovery | ACID transactions and a write-ahead log rather than distributed recovery, a failed query fails, in the process that ran it |
| Access control | None: whatever the embedding application enforces |

## Capabilities

- [Query Engines](https://matca.io/capabilities/query-engine)

---

Source: https://matca.io/duckdb
Last updated: 2026-08-31T11:40:49.062Z
