EKOSdocs
Docs / Configuration Build

Storage

Fact-engine, SQLite, partitioned and distributed layouts, and how to choose.

Layout When Notes
Fact engine (RFC 0016) default for new workspaces tantivy + mmap, sealed segments, provenance sidecar
SQLite (v1/v2) pre-existing workspaces keeps working unchanged; v2 is zstd-compact; migrate with ekos ledger migrate (--v3 for the fact engine)
Partitioned (RFC 0111) very large single-machine ledgers one partition per dimension value and time bucket
Distributed (RFC 0113) multiple machines coordinator, compile workers, query workers, gateway
Storage layouts from a single workspace up to a distributed cluster
Storage layouts from a single workspace up to a distributed cluster

An existing SQLite workspace is never switched automatically.

Containers

[storage]
active-container = "main"

[[storage.containers]]
name = "main"
path = "/data/ekos/main"

With no [storage] section, the index is <cwd>/.ekos.

Partitioning

[storage.partition]
dimension = "source"          # unset = no partitioning
time-bucket = "monthly"       # default
segment-backend-url = "s3://bucket/prefix"   # optional object store; needs the `distributed` build feature

Distributed reads

[storage.distributed]
coordinator = "10.0.0.5:7400"
query-workers = ["10.0.0.6:7401", "10.0.0.7:7401"]

Search fans out to shards, merges per-shard IDF, and fuses with reciprocal-rank fusion. Object-store reads require building with --features distributed. See Operations → Storage.