Skip to content

TimeSeries Model #3488

@lvca

Description

@lvca

After a long time... We have the first version of the TimeSeries model! We went back and forth too many times to understand how to leverage unique ArcadeDB multi-model engine, achieving comparable performance of native timeseries database melting all together into the Multi-Model world.

ArcadeDB has a record based storage, where the record is stored entirely on one or multiple pages. This is the best choice for every day most common use cases, but for time-series, all the specialized Time Series DBMSs (TSDB) adopt a columnar approach.

Pillar 1: Time-Based Partitioning (Eliminate I/O)
Every top TSDB partitions by time. When you query WHERE timestamp BETWEEN X AND Y, partitions outside that range are never touched — no I/O at all. This is the single biggest speedup. Granularity varies: hours (Prometheus), days (QuestDB, Kdb+), weeks (TimescaleDB), months (VictoriaMetrics), or configurable.

Pillar 2: Columnar Storage + Compression (Minimize I/O)
Once you've narrowed to the right partitions, columnar storage ensures you only read the columns you need. SELECT avg(temperature) reads only the temperature column, not humidity, pressure, etc. This can reduce I/O by 10-100x for wide tables. Combined with timeseries-specific compression:

Not only we have to fit the concept of "column" inside ArcadeDB pages, but also using the compression other TSDB are using:

Algorithm Target How It Works Compression
Delta-of-delta Timestamps Regular intervals → delta is constant → delta-of-delta is 0 → 1 bit 96% → 1 bit
Gorilla XOR Float values XOR consecutive IEEE 754 floats → many leading/trailing zeros → store only middle bits 51% → 1 bit, avg 1.37 B/pair
Simple-8b RLE Integers Pack multiple small ints into 64-bit words with run-length encoding 4-8x
Dictionary Tags/labels Map low-cardinality strings to integer IDs 10-100x for tags
T64 Integers Find minimum bit-width needed 2-4x

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions