We needed a simple way to store system state information and time series data in IoT devices and gateways - but we didn't think that every device needs to run its own relational database. That's why we built the Stash.
The Zynaptic Stash persistence service has been developed to address situations where application state information and time series data need to be stored locally on embedded IoT (Internet of Things) devices and gateways - without incurring the additional overhead of running a local database server. It uses the Zynaptic Reaction asynchronous programming framework to support non-blocking, concurrent access to persisted data.
At its most basic, the Stash service may be used as a simple key/value store for Java objects. However, its main strength lies in its ability to support the persistent storage of multiple streams of time series data. The data stored in this manner is not restricted to standard scalar types - arbitrary Java objects and multi-dimensional vectors can also be used.
Time series data may be retrieved from the Stash either as individual data points or as sets of datapoints spanning arbitrary time periods. The standard Java library already provides an API which is ideally suited to interrogating time series data (the NavigableMap), so the Stash service automatically packages the data in this form whenever it is read back.
The Stash service source code is released under the same terms as the original Reaction framework (GPLv2 with Classpath exception). The accompanying Apache Ant build script allows it to be compiled into an independent OSGi bundle to be run in conjunction with the original Reaction service. It has been tested in this configuration on a Freescale iMX6 ARM development board using the latest Oracle ARM JVM and Apache Felix OSGi framework, but it should be equally at home on other embedded Linux devices such as the Raspberry Pi, BeagleBone and Intel Galileo.
The source code and documentation for the new beta release of the Stash service may be found on the Reaction section of this website. An updated version of the Reaction framework (beta5) has also been released, which makes some minor changes to the provided examples in order to remove deprecated Java 8 API calls.