The zents Time Series Database

zents is a high-performance database optimized for real-time time-series data. It is a Write Once Read Many (WORM) database in that once data is written, it is never altered.

The ZenMBE system uses zents for storing temperatures, pressures, shutter states, motor positions, QCM frequencies, and every other bit of information that the system receives. zents enables rolling back time to see exactly how the system appeared at any point, so you can follow along with a growth from days or even years ago and examine the value of every sensor.

Performance

Storing data in the zents database is an Θ(1) (constant time) operation. It is also handled asynchronously, so is effectively a zero-time operation.

Retrieving arbitrary data for a particular time from the zents database is an Θ(log(n)) operation for smaller series and an Θ(log(log(n))) operation for larger series.

Scalability

All data structures in zents utilize 64-bit values, which means it can handle to up to 18 exabytes of data. On systems with sufficient RAM, the entire database is kept in memory and synchronized to disk periodically.

Aggregation

All data in zents series can be automatically aggregated so that statistical measures (such as minimum, maximum, mean, median, standard deviation, etc.) can be retrieved for particular intervals instantly without having to perform any calculation. A typical use is would be to create and store aggregations for every minute, every hour, and every day.