Storing kilohertz data forever is not the hard part; querying it usefully is. A chart of last year cannot scan a billion rows, and a chart that averages a minute into one point hides the very transient the engineer opened it to find. Toleron's storage answers both with four tiers and one rule.
Four tiers
| Tier | Resolution | Role |
|---|---|---|
| Raw | Native | Recent full-rate samples from every source |
| 1 s aggregate | 1 s | Continuous aggregate of raw |
| 1 min aggregate | 1 min | Hierarchical aggregate of the 1 s tier — long-range history |
| Recording archive | Native | Finalised recordings; permanent, never auto-dropped |
A query names a signal, a range and a bucket size; the service picks the tier whose resolution fits and never rescans raw rows for a long range. Retention per tier is configuration: controller history is kept long-term by policy, kilohertz sensor streams are kept short unless a recording promotes them to the permanent archive.
One rule
Every returned point carries a true minimum and maximum, not just an average. The chart draws the envelope. A spindle-load spike that lasted forty milliseconds is a visible needle at the one-minute tier, and drag-zoom refines server-side down to the raw rows behind it. This is the difference between a chart that is pretty and one that is useful.
Convergence, not migration
Storage layout, aggregates, compression and retention policies are converged idempotently at every start of the platform rather than by a one-off migration that might not have run. A redeploy repairs drift instead of accumulating it, and the write path is tuned for sustained kilohertz ingest without dropped rows.