---
title: DuckDB
slug: duckdb
url: "https://toolweight.com/tools/duckdb"
homepage: "https://duckdb.org"
categories: sqlite-vs-postgres-vs-mysql
last_verified: 2026-11-07
dataset_version: 0738be72
license: CC-BY-4.0
---

# DuckDB

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

- An embedded analytical database from CWI Amsterdam, maintained by DuckDB Labs with the IP held by a non-profit foundation.
- Vectorised columnar execution across all cores.
- Reads Parquet, CSV, JSON, S3 and live PostgreSQL tables without loading them first.
- Included as the analytical contrast, not an OLTP option: no replication, 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 |
| Compared in | 1 |

## Where it is compared

### [Database engines](https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql)
| Field | Value | Confidence | Verified | Source | Note | Permalink |
| --- | --- | --- | --- | --- | --- | --- |
| Embedded or server | Embedded (in-process) | Vendor-claimed | 2026-11-06 | https://duckdb.org/why_duckdb | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--embedded_or_server |
| Concurrency model | MVCC (single process) | Vendor-claimed | 2026-11-06 | https://duckdb.org/docs/2.0/connect/concurrency.html | Optimistic MVCC within one process. Writes from several processes now go through the Quack remote protocol rather than opening the same file. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--concurrency_model |
| Write concurrency | Single writer | Vendor-claimed | 2026-11-06 | https://duckdb.org/docs/2.0/connect/concurrency.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--write_concurrency |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--isolation_levels |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--json_support |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--full_text_search |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--vector_search |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--type_strictness |
| 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'. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--alter_table_limits |
| Max database size | - | Vendor-claimed | 2026-11-07 | https://duckdb.org/docs/2.0/operations_manual/limits.html | Vendor documents no practical database-file size limit and reports files using 15 TB+; no numeric maximum in bytes is specified. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--max_db_size |
| Replication | None | Vendor-claimed | 2026-07-01 | https://duckdb.org/why_duckdb | By design. Distribution is MotherDuck's product, not the engine's. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--replication |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--pitr |
| Online schema change | ○ | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--online_schema_change |
| Connection model | In-process (no connections) | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--connection_model |
| Default max conns | - | Vendor-claimed | 2026-11-07 | https://duckdb.org/docs/stable/connect/concurrency | Not applicable, connections are objects inside your process. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--default_max_connections |
| Managed options | MotherDuck | Inferred | 2026-07-01 | - | MotherDuck is the only serious managed offering, and it extends DuckDB rather than merely hosting it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--hosted_options |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--operational_burden |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--extension_ecosystem |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--client_library_maturity |
| Migration tooling | 2 | Inferred | 2026-07-01 | - | Migrations are barely a concept here, most DuckDB files are rebuilt rather than migrated. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--migration_tooling |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--github_stars |
| Positioning | DuckDB is a fast in-process analytical database. | Vendor-claimed | 2026-07-01 | https://duckdb.org/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--positioning |
| Licence | MIT | Vendor-claimed | 2026-11-06 | https://duckdb.org/why_duckdb | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--licence |
| Embed in closed source | ● | Vendor-claimed | 2026-07-01 | https://github.com/duckdb/duckdb/blob/main/LICENSE | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--embedding_freedom |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--governance |
| 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. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--first_release |

**Verdict.** The analytical contrast, included so the others are legible; superb over Parquet, but never a system of record.

## Alternatives

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

## Logo & brand colours

SVG files: https://toolweight.com/teams/duckdb/logo.svg and https://toolweight.com/teams/duckdb/mono.svg. JSON: https://toolweight.com/api/v1/brands/duckdb.

| Hex | oklch |
| --- | --- |
| #fff000 | oklch(93.7% 0.199 105.0) |

## 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/tools/duckdb
- Machine-readable: https://toolweight.com/tools/duckdb.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp
- Toolweight takes no affiliate revenue and sells no placements.
