Problem: Storing raw 4kHz vibration data from 80,000 sensors was arithmetically impossible — 47 TB/day uncompressed. No analytical value was lost by computing RMS/peak/FFT statistics instead of storing raw samples.
Solution: EMQX rule engine forwarded raw samples to a Redis Streams buffer (72-hour window) while simultaneously publishing pre-computed RMS/peak values to TimescaleDB. Continuous aggregates computed 1-second rollups from raw and 1-minute rollups from 1-second. Database never received raw 4kHz samples — only statistics. EMQX scaled to 80,000 concurrent connections on a 3-node cluster.
Technology: EMQX · TimescaleDB · Redis Streams · MQTT 5
Optimisation pattern: raw-timeseries-to-rollup-continuous-aggregates
Outcomes:
Storage: 47 TB/day → 480 GB/day. Bearing failure detection recall: unchanged. Query latency for 90-day trend: under 800 ms.