💡 Basic Concepts Behind ReductStore
What Is Time Series Object Storage?
ReductStore is a time series database designed specifically for storing and managing large amounts of unstructured data. It uses an HTTP API and stores the data as blobs. This means:
- ReductStore has no information about the format of the stored data. So, you can write whatever you want, but the storage can't aggregate your data. You have to read the same data, what you have written.
- The HTTP API provides a simple and portable way to communicate with the storage engine.
In comparison to other S3-like object storage, ReductStore works differently:
- Indexing By Time. Each record in an entry is written with a unique timestamp. The storage engine is optimised for reading data by time ranges.
- Flat Storage Structure. It doesn't have a tree-like structure for data. There are only buckets and entries with unique names in them.
- Batching Data. Historical data is usually written forward and queried by time range. Batching can be used to optimise ingestion, retrieval and storage. The HTTP API provides endpoints to write and query data in batches, reducing the number of requests and HTTP overhead. The storage engine batches objects into blocks of fixed size so that it can store small objects more efficiently. You don't waste disk space because of the minimum file system block size. In addition, ReductStore pre-allocates block space to improve performance during write operations.
- Forward Writing. The engine records data fastest if it only needs to append records to the current block. It means that, for better performance, you should always write data with the newest timestamps.
- Labels. A record can have labels that are used as annotations for the data.
- Data Querying. You can filter records by labels using the Conditional Query language.
- Strong FIFO Quota. When you have intensive write operations, you may run out of disk space quickly. The engine removes the oldest block in a bucket as soon as the amount of the data reaches a specified quota limit.
Compared to other time series databases:
- Blob Optimization. Most time series databases have poor support for storing blobs and are optimised only for analytical needs. ReductStore is designed to store and manage large amounts of unstructured data. There's no limit to the size of data you can store. You can store images, videos or any other type of data in the storage engine.
- No Aggregation. ReductStore doesn't provide any aggregation functionality. You can't calculate averages, sums or other statistics on the data stored in the storage engine. You must read all the data and calculate the statistics on the client side.
All these features make ReductStore a perfect solution for applications when you have continuous data streams and need to store and manage large amounts of unstructured data.