DuckDB
In-process analytical SQL over Parquet tick files, with no server to run.
by DuckDB Foundation
Last updated
What it is
DuckDB is an analytical SQL engine that runs inside your own process — pip install duckdb,
import duckdb, and there is no daemon, no port and no user account anywhere in the picture. It
reads Parquet, CSV, JSON and Arrow directly, so a directory of tick files is already a queryable
database before you have loaded anything into its own format.
Three things make it a serious answer here rather than a toy:
ASOF JOINmatches each row to the most recent row in another table at or before its timestamp — every trade to the quote in force when it printed — producing at most one match per left row, with anASOF LEFT JOINvariant that keeps unmatched trades. TheUSING (key, time)shorthand supports only>=; anything else, including the strictly-earlier form, needs the explicitONcondition.time_bucket(bucket_width, ts[, origin])truncates timestamps onto a grid with a chosen anchor, which is bar-building withoutdate_truncarithmetic.- Parquet as a first-class storage format, read through globs and Hive-partitioned
directories, locally or over S3 through the
httpfsextension. Nothing is imported, so nothing is locked in: the same files stay readable by pandas, Polars, Spark or the next engine.
The project is alive on any reading. Commits land on main daily — the most recent at the time
of writing was 19 September 2026 — and v1.5.5 shipped on 22 July 2026, the fifth patch on the
1.5.0 "Variegata" line released 9 March 2026, which added a VARIANT type, GEOMETRY as a
built-in, a rewritten CLI and non-blocking checkpointing.
Ownership changed in 2026 and the licence did not. DuckLabs, the Amsterdam company employing the core contributors, announced on 26 August 2026 that it was joining AWS as a subsidiary, effective early September; the intellectual property stays with the non-profit DuckDB Foundation and the projects stay MIT.
Pricing
Nothing costs anything, and the FAQ is unusually blunt about it — every component is in the free version and there is no enterprise edition. No node cap, no core cap, no memory cap, no telemetry licence key.
What exists commercially is someone else's product. MotherDuck is a separate, venture-backed company selling managed DuckDB — a free Lite plan with 10 GB of storage and 10 hours of monthly compute, a Business plan from $250 per month per organisation plus metered usage, storage at $0.04 per GB-month and compute from $0.60 to $24.00 per hour depending on instance size. That is a different vendor with a different contract, and buying it is not an upgrade path within DuckDB.
Data & coverage
None. DuckDB ships no market data, no symbology and no corporate actions. It is the engine you point at ticks you already have.
Integrations
Clients for Python, R, Java, Node.js, Go, Rust, C and C++, plus a CLI and a WebAssembly build
that runs in a browser. postgres, mysql and sqlite extensions attach live databases;
iceberg and delta read lakehouse tables. DuckLake, the Foundation's own lakehouse format —
MIT, v1.0 since April 2026 — keeps data as plain Parquet in object storage with metadata in a
SQL catalog database, which for tick history means snapshots and time travel without inventing a
directory convention. The MCP server for local DuckDB files is MotherDuck's; the
Foundation publishes none.
Limitations
- One process writes. Other processes can attach only as
READ_ONLY, and then nothing writes at all. The Quack remote protocol lifts this and is documented as beta. - It is not an ingest target. No line protocol, no Kafka sink, no out-of-order merge on
commit — rows arrive because your own code ran
INSERTorCOPY. A continuously writing feed is the case this loses to a server. - No server means no server features: no users, no roles, no TLS, no replication, no failover, no backup story beyond copying files.
- Memory is still the constraint on big joins. Larger-than-memory operations spill to a temp directory, but a wide join over a year of quotes can still exhaust RAM in a way a distributed engine would not.
- No market data, no symbology, no adjustment logic. Budget for a feed separately.
Alternatives
ArcticDB if the unit you think in is a versioned Pandas frame rather than a SQL table, and you want a symbol catalogue on S3 without writing one. QuestDB or ClickHouse when a feed writes continuously while something else reads — that is the boundary DuckDB does not cross. kdb+ if the requirement is microseconds and the budget is institutional.
See the rest of the tick data storage category.
Specs
- Interfaces
- Python, SQL
- Export
- CSV, JSON, Parquet
- Asset classes
- —
- Markets
- —
- Platforms
- CLI, Library
- AI features
- None
- Pricing verified
- Capabilities verified
- Coverage verified
Also worth comparing
- Apache Druid — Real-time OLAP cluster built for high-concurrency dashboards, not for research joins.
- ArcticDB — Versioned Pandas frames written straight onto S3, with no server to run.
- ClickHouse — Columnar OLAP database that keeps years of ticks on disk cheaply and scans them fast.
- DolphinDB — Closed-source tick database with a vector language, as-of joins and streaming engines.
- InfluxDB 3 — Line-protocol time-series database rewritten on Arrow, DataFusion and Parquet.
- kdb+ — The tick database trading desks have run for 25 years, queried in q rather than SQL.
FAQ
Is DuckDB really free for commercial use?
Yes. The LICENSE file in the repository is an unmodified MIT licence, copyright 2018-2026 Stichting DuckDB Foundation, with no Commons Clause and no BSL. The FAQ is explicit that all components are in the free version and that there is no enterprise edition to buy.
Did the AWS acquisition change DuckDB's licence?
No. DuckLabs — the Amsterdam company employing the core contributors — announced on 26 August 2026 that it would join AWS as a subsidiary, effective early September. The announcement states that DuckDB, DuckLake, Quack and the other extensions remain free and open source under the MIT licence, under the non-profit DuckDB Foundation, which holds the intellectual property.
Can two processes write to one DuckDB file?
Not in the native format. One process can read and write, with multiple writer threads inside it; other processes can only attach with access_mode set to READ_ONLY, and then nobody writes. Multi-process writing exists through the Quack remote protocol, which the documentation labels beta.
Is DuckDB enough for a year of US equity ticks?
It depends on whether anything writes while you read. For one researcher querying Parquet files on a laptop or one S3 bucket, it is usually the whole answer and costs nothing to operate. A live feed appending continuously while a dashboard queries is the case DuckDB is not built for, and that is when a server starts earning its operating cost.
What is MotherDuck, and do I need it?
A separate venture-backed company selling a managed cloud service built on DuckDB — not a paid tier of DuckDB, and not run by the Foundation. You never need it to use DuckDB; you buy it if you want storage, compute and multi-user access operated for you.