DB
Back homeUse case

IoT & telemetry

Absorb line-rate device streams durably, then read current state per device without scanning history.

The problem

Why this is hard today

Fleets of devices produce a relentless, bursty firehose. The naive path — buffer in a queue, batch into a warehouse — trades freshness for durability and still falls over when a burst outpaces the drain.

Meanwhile the questions operators ask are current-state questions: what is this machine doing right now, which sensors are over threshold, what changed since the last reading. Answering those by scanning append-only history is the wrong shape and the wrong cost.

The engine has to keep up with line-rate ingest without dropping data, apply backpressure instead of OOMing under a burst, and still answer per-device current-state reads in constant time.

Architecture

How NYXDB does it

Readings append at line rate under a memory governor that ramps and blocks admission rather than losing data; keyed tables keep the last reading per device for instant current-state reads.

  1. 01

    Line-rate ingest

    Readings append to a WAL-backed table; shard-owned write paths are lock-free across shards.

  2. 02

    Governed admission

    The memory governor ramps admission at ~0.8 of the limit and blocks at ~0.95 — backpressure, not data loss.

  3. 03

    Spill under pressure

    The committed tail spills to disk when it exceeds RAM, staying bounded.

  4. 04

    Current state

    A keyed table keeps the latest reading per (device, metric) for O(1) reads.

Real SQL

In practice

Latest reading per device — keyed table
CREATE TABLE readings (
device_id String NOT NULL,
metric String NOT NULL,
value Float64,
PRIMARY KEY (device_id, metric)
) DELTA (keep = 'latest');
Devices currently over threshold
SELECT device_id, value
FROM readings
WHERE metric = 'vibration_rms' AND value > 4.5;
Follow a live metric
STREAM SELECT device_id, value
FROM readings
WHERE metric = 'temp_c';

Every statement follows the engine’s own test SQL shapes. See the SQL reference for full syntax.

Capabilities

What you get

Line-rate ingest

Shard-owned, lock-free write paths absorb bursty device streams.

Backpressure, not loss

The memory governor ramps then blocks admission under pressure.

O(1) current state

Keyed tables keep the last reading per device for instant reads.

Edge to cloud

One 154MB image runs on an edge box or in the datacenter.

Live follows

STREAM SELECT tails a metric without polling.

History + current

Append history and keyed current state share one storage contract.

Proof

Measured where it counts

~480–490k

rows/s ingest, end-to-end (local)

ADR-075

~950k

rows/s parallel-seal ceiling

ADR-075

~257k

rows/s sustained over-RAM (governed)

ADR-075

Ingest the fleet without losing data

Run a node and point your device stream at it.