# DuckDB

In-process analytical SQL over Parquet tick files, with no server to run.

*https://stockmarketstack.com/tools/duckdb · Tick Data Storage & Time-Series Databases*

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | DuckDB Foundation |
| Category | Tick Data Storage & Time-Series Databases |
| Job | tick_storage |
| Website | https://duckdb.org |
| Pricing model | open-source |
| Free tier | true |
| Open source | true |
| Licence | MIT |
| Self-hosted | true |
| Tested hands-on | false |
| Last updated | 2026-09-19 |

### Pricing

| Tier | USD | Period |
| --- | --- | --- |
| MIT-licensed, all of it | 0 USD | month |

### Coverage

| Field | Value |
| --- | --- |
| Asset classes | none |
| Markets | none |
| Works outside the US | false |
| Data latency | none |
| Platforms | cli, library |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | false |
| Webhooks | false |
| Scripting | SQL |
| Python | true |
| Spreadsheet add-in | false |
| MCP server | false |
| Export | csv, json, parquet |

### Capabilities

Yes: none

No: charting, screening, scanning, backtesting, automation, live_trading, paper_trading, portfolio_tracking, broker_import, tax_reporting, alerts, news, options_analysis

*Verified: pricing 2026-09-19; capabilities 2026-09-19; coverage 2026-09-19.*

## 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 JOIN`** matches 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 an `ASOF LEFT JOIN` variant that keeps unmatched trades. The `USING (key, time)`
  shorthand supports only `>=`; anything else, including the strictly-earlier form, needs the
  explicit `ON` condition.
- **`time_bucket(bucket_width, ts[, origin])`** truncates timestamps onto a grid with a chosen
  anchor, which is bar-building without `date_trunc` arithmetic.
- **Parquet as a first-class storage format**, read through globs and Hive-partitioned
  directories, locally or over S3 through the `httpfs` extension. 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 `INSERT` or `COPY`. 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](https://stockmarketstack.com/tools/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](https://stockmarketstack.com/tools/questdb)
or [ClickHouse](https://stockmarketstack.com/tools/clickhouse) when a feed writes continuously while something else reads —
that is the boundary DuckDB does not cross. [kdb+](https://stockmarketstack.com/tools/kdb) if the requirement is microseconds
and the budget is institutional.

See the rest of the [tick data storage category](https://stockmarketstack.com/categories/tick-data-storage).

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

## Also worth comparing

- [Apache Druid](https://stockmarketstack.com/tools/druid.md) — Real-time OLAP cluster built for high-concurrency dashboards, not for research joins.
- [ArcticDB](https://stockmarketstack.com/tools/arcticdb.md) — Versioned Pandas frames written straight onto S3, with no server to run.
- [ClickHouse](https://stockmarketstack.com/tools/clickhouse.md) — Columnar OLAP database that keeps years of ticks on disk cheaply and scans them fast.
- [DolphinDB](https://stockmarketstack.com/tools/dolphindb.md) — Closed-source tick database with a vector language, as-of joins and streaming engines.
- [InfluxDB 3](https://stockmarketstack.com/tools/influxdb.md) — Line-protocol time-series database rewritten on Arrow, DataFusion and Parquet.
- [kdb+](https://stockmarketstack.com/tools/kdb.md) — The tick database trading desks have run for 25 years, queried in q rather than SQL.
