ArcticDB

Versioned Pandas frames written straight onto S3, with no server to run.

Last updated

From
Free tier only
Self-hosted
Yes
Platforms
Library

What it is

ArcticDB is a Python library that reads and writes Pandas DataFrames to object storage. It calls itself a database because it adds what a directory of Parquet files does not have: named symbols grouped into libraries, a version chain on every symbol, and a filter layer that runs in C++ before rows reach Python. There is no server and no cluster — pip install arcticdb, point an Arctic URI at an S3 bucket, an Azure container or a local LMDB path, and your own process does all the work.

Every write, append and update creates a new version; old versions stay readable, and snapshots pin a set of symbols at a moment in time. That is the trade: time travel and a shared data catalogue without operating a database, in exchange for everything a server would have given you. It was built inside Man Group as the successor to the MongoDB-backed Arctic and is now published by ArcticDB Limited, a separate entity incubated at Man Group PLC; Bloomberg co-develops it and has embedded it in BQuant.

Pricing

Two things exist: the source-available library, which costs nothing, and a commercial licence, which has no published price anywhere. The plan table lists Source available as free, a Pro tier behind a contact form that adds a dedicated Slack channel and production support, and add-ons sold with Pro and Enterprise licences — TickCollector, an enterprise toolkit, SLA-backed support, consultancy and paid feature development. Data pruning and compaction, which is how you stop a heavily versioned library growing without bound, is named in the docs as an enterprise tool. The licensing FAQ adds a small-team licence for up to five API users and a proof-of-concept trial of unstated length.

Data & coverage

None. ArcticDB ships no market data of any kind; it stores what you give it. Backends the vendor says are verified: AWS S3, Azure Blob Storage, LMDB, in-memory, Ceph, MinIO on Linux, Pure Flashblade S3, Scality S3, VAST Data S3.

The vendor's own throughput claim, untested here, is up to 100 million rows per second for a single consumer and a billion across all consumers. Cross-version deduplication is a library option, off by default, that only pays off when the new version appends at the end — insert a row in the middle and every later segment hashes differently.

Integrations

Python only; the FAQ states bindings are currently available for Python alone. The 6.25.0 wheels published on 9 September 2026 cover CPython 3.9 through 3.14 on manylinux x86_64, Windows amd64 and macOS arm64 — no macOS x86_64, no Linux aarch64. Reads land as Pandas, with Arrow and Polars output available; LazyDataFrame and QueryBuilder push filters, projections, group-bys and resampling into the C++ engine, and anything past that runs in your own process.

Limitations

  • No SQL and no query language at all. QueryBuilder is a small pushdown API, not a dialect, and joins across symbols are not part of it.
  • No transactions and no isolation. Concurrent writers to one symbol are last-writer-wins; write-after-read is unsupported. Staged writes are the escape hatch, not a lock.
  • The licence bites commercial users and the vendor contradicts itself about how hard: the LICENSE file forbids only a Database Service, the README forbids production use without an agreement, and the licensing FAQ says any business use at all needs a paid licence.
  • The Apache-2.0 tail runs roughly a year behind. On 13 September 2026 the newest converted version is 4.5; 5.0 converts on 31 October 2026 while the current release is 6.25.0.
  • Streaming is oversold. The same FAQ that calls ArcticDB a fully functional streaming/tick database also says streaming support is on the roadmap, and TickCollector is a paid add-on.

Alternatives

QuestDB, ClickHouse and kdb+ are the servers you are avoiding: real SQL, a wire protocol, multi-writer semantics, and something to operate and pay for. DuckDB over Parquet on S3 gets you SQL with no server, but no version chain, no symbol catalogue and no append or update primitives. Plain Parquet is the floor — free, portable, no versioning. The original MongoDB-backed Arctic is superseded and should not be started with.

Specs

Interfaces
Python, Python
Export
None
Asset classes
Markets
Platforms
Library
AI features
None
Pricing verified
Capabilities verified
Coverage verified

Also worth comparing

  • DolphinDBClosed-source tick database with a vector language, as-of joins and streaming engines.
  • InfluxDB 3Line-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.
  • OneTickEnterprise tick capture, storage and streaming analytics, sold only by quote.
  • QuestDBOpen-source time-series SQL built for tick data — ASOF JOIN, SAMPLE BY, LATEST ON.
  • Apache DruidReal-time OLAP cluster built for high-concurrency dashboards, not for research joins.

FAQ

Is ArcticDB open source?

No. It is source-available under the Business Source License 1.1, which the project's own README says is not certified as an open-source licence. Each version does convert to Apache 2.0 two years after its release, so as of 13 September 2026 version 4.5 and everything before it are Apache 2.0 while 5.0 onwards — including the current 6.25.0 — are still BUSL.

Can a company use ArcticDB for free?

The vendor's three sources disagree, so get an answer in writing. The LICENSE file's Additional Use Grant permits production use except for offering a Database Service; the README says production use needs an agreement; the licensing FAQ says any business use, including research and dev environments, needs a paid licence.

Does ArcticDB come with market data?

No. It is a storage engine and ships nothing — no quotes, no history, no vendor feed. You supply the ticks and ArcticDB stores them on your own S3 bucket, Azure container or local disk.

Can two processes write the same symbol at once?

Not safely. ArcticDB supports concurrent writers across different symbols, but a single symbol is last-writer-wins with no isolation, and the docs say it is up to you to stop clients modifying one symbol concurrently. Staged writes are the supported workaround.