Sparkplug B and OPC UA, natively shaped
The group / node / device / metric hierarchy maps straight onto columns, so per‑tag rollups and percentile sketches exist from the first sample rather than being built later.
Plant historians and time‑series stacks survive high tag counts by throwing data away — averaging to the minute, keeping one sample in N. Oliver keeps the full‑rate signal queryable, so the transient that explains a failure is still there when someone goes looking for it.
A failing bearing, a marginal actuator, a bus fault — these show up as short excursions in a high‑rate signal. Roll that signal up to a per‑minute average and the excursion disappears into the mean. Teams then diagnose from the summary that survived, and the one sample that would have explained the failure was discarded weeks before anyone asked.
The group / node / device / metric hierarchy maps straight onto columns, so per‑tag rollups and percentile sketches exist from the first sample rather than being built later.
DBC‑decoded frames land in the ASAM MDF shape — one row per signal sample, keyed by vehicle and trip — so a fleet‑wide question and a single‑trip drill‑down run on the same table.
Joints, odometry, and IMU streams flatten into observation rows with the topic and frame preserved, so a run can be replayed analytically instead of only from a bag file.
High tag counts are the normal case, not the failure case: per‑signal percentiles and grouped aggregates stay interactive as the tag space grows, and cells absorb the volume without a sharding project.