ArcticDB
Versioned Pandas frames written straight onto S3, with no server to run.
Last updated
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.
QueryBuilderis 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
- 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.
- OneTick — Enterprise tick capture, storage and streaming analytics, sold only by quote.
- QuestDB — Open-source time-series SQL built for tick data — ASOF JOIN, SAMPLE BY, LATEST ON.
- Apache Druid — Real-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.