-
-
Notifications
You must be signed in to change notification settings - Fork 94
Description
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 |