---
title: DuckDB
slug: duckdb
url: "https://toolweight.com/options/duckdb"
homepage: "https://duckdb.org"
categories: sqlite-vs-postgres-vs-mysql
last_verified: 2026-07-01
license: CC-BY-4.0
---

# DuckDB

> In-process columnar analytics engine, SQLite's shape, a warehouse's execution model.

DuckDB is an embedded analytical database from CWI Amsterdam, now maintained by DuckDB Labs with the IP held by a non-profit foundation. It uses vectorised columnar execution across all cores, reads Parquet, CSV, JSON, S3 and live PostgreSQL tables without loading them first, and is included here as the analytical contrast rather than as an OLTP option, it has no replication and a single-process write path.

## Identity

|  |  |
| --- | --- |
| Name | DuckDB |
| Company | DuckDB Labs |
| One-liner | In-process columnar analytics engine, SQLite's shape, a warehouse's execution model. |
| Site | https://duckdb.org |
| Docs | https://duckdb.org/docs/ |
| Repo | https://github.com/duckdb/duckdb |
| Founded | 2019 |
| Open source | Yes |
| Licence | MIT |
| Brand | https://toolweight.com/vendors/DuckDB |
| Compared in | 1 |

## Where it is compared

### [Database engines](https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql)
| Field | Value | Confidence | Verified | Source | Note |
| --- | --- | --- | --- | --- | --- |
| Embedded or server | Embedded (in-process) | Vendor-claimed | 2026-07-01 | https://duckdb.org/why_duckdb | - |
| Concurrency model | MVCC (single process) | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | Optimistic MVCC within one process. A second process cannot open the same file read-write. |
| Write concurrency | Single writer | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | One process holds the write lock on the database file; concurrent transactions inside it are serialised optimistically and conflicts abort. |
| Isolation levels | Snapshot | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | Snapshot isolation rather than the ANSI ladder; the SQL syntax for setting levels is largely absent. |
| JSON support | Text functions only | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/data/json/overview | The json extension gives a JSON logical type backed by text. Native STRUCT, LIST and MAP types are usually the better answer. |
| Full-text search | Extension | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/extensions/full_text_search | The fts extension gives BM25 scoring. Adequate for filtering a dataset, not for powering a search box. |
| Vector search | Extension | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/extensions/vss | The vss extension adds an HNSW index; persistence of that index has carried experimental caveats, so treat it as analysis rather than serving. |
| Type strictness | Static, strict | Inferred | 2026-07-01 | - | Types are enforced and out-of-range casts error, though CSV and JSON ingestion infers liberally by design. |
| ALTER TABLE | Moderate | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/sql/statements/alter_table | ADD, DROP, RENAME and type changes, all inside a transaction, but the supported set is narrower than the server engines'. |
| Max database size | - | Unknown | - | - | No documented format ceiling. In practice bounded by local disk and by the single-process write path. |
| Replication | None | Vendor-claimed | 2026-07-01 | https://duckdb.org/why_duckdb | By design. Distribution is MotherDuck's product, not the engine's. |
| PITR | ○ | Inferred | 2026-07-01 | - | No WAL archiving or log shipping. Recovery means re-running the pipeline that built the file, which is often the right model anyway. |
| Online schema change | ○ | Inferred | 2026-07-01 | - | - |
| Connection model | In-process (no connections) | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | - |
| Default max conns | - | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | Not applicable, connections are objects inside your process. |
| Managed options | MotherDuck | Inferred | 2026-07-01 | - | MotherDuck is the only serious managed offering, and it extends DuckDB rather than merely hosting it. |
| Ops burden | 1 | Inferred | 2026-07-01 | - | Nothing to run. The burden moves upstream into whatever pipeline produces the data, which the score does not capture. |
| Extension ecosystem | 4 | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/extensions/overview | INSTALL and LOAD from a first-party repository, plus a community-extensions channel. Young, but the distribution mechanism is better than SQLite's. |
| Client libraries | 3 | Inferred | 2026-07-01 | - | Excellent Python, Node, Java, Go and Rust clients. ORM and query-builder coverage is thin because nobody builds CRUD apps on it. |
| Migration tooling | 2 | Inferred | 2026-07-01 | - | Migrations are barely a concept here, most DuckDB files are rebuilt rather than migrated. |
| GitHub stars | 33,000 | Community-reported | 2026-07-01 | https://github.com/duckdb/duckdb | Approximate. The only project here whose star count reflects genuine recent momentum rather than a mirror's visibility. |
| Positioning | DuckDB is a fast in-process analytical database. | Vendor-claimed | 2026-07-01 | https://duckdb.org/ | - |
| Licence | MIT | Vendor-claimed | 2026-07-01 | https://github.com/duckdb/duckdb/blob/main/LICENSE | - |
| Embed in closed source | ● | Vendor-claimed | 2026-07-01 | https://github.com/duckdb/duckdb/blob/main/LICENSE | - |
| Governance | Foundation | Vendor-claimed | 2026-07-01 | https://duckdb.org/foundation/ | The non-profit DuckDB Foundation holds the IP specifically so DuckDB Labs and MotherDuck cannot close it. |
| First release | 2019-06-26 | Community-reported | 2026-07-01 | https://duckdb.org/why_duckdb | Version 0.1.0. The project began at CWI Amsterdam in 2018. |

**Verdict.** The analytical contrast, included so the other four are legible, not a candidate for your application database. It answers questions the OLTP engines answer badly, on a laptop, over Parquet you never loaded, and it will lose your data if you treat it as a system of record without a backup story.

## Alternatives

- [MariaDB](https://toolweight.com/options/mariadb), GPL-only MySQL fork under a foundation, with Galera clustering and native vectors.
- [MySQL](https://toolweight.com/options/mysql), The relational server that ran the early web, now Oracle-stewarded and InnoDB-based.
- [PostgreSQL](https://toolweight.com/options/postgresql), MVCC relational server with the widest SQL surface and a deep extension ecosystem.
- [SQLite](https://toolweight.com/options/sqlite), Embedded SQL engine that runs inside your process, a file, not a server.

## Licence and attribution

Data from toolweight (https://toolweight.com), licensed CC-BY-4.0.

- Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)
- Canonical HTML: https://toolweight.com/options/duckdb
- Machine-readable: https://toolweight.com/options/duckdb.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp
- toolweight takes no affiliate revenue and sells no placements. Corrections: https://toolweight.com/suggest
