ReductStore is a time series database designed specifically for storing and managing large amounts of blob data. It has high performance for writing and real-time querying, making it suitable for edge computing, computer vision, and IoT applications. ReductStore is 100% open source under Mozilla Public License v2.0. It has a simple HTTP API and provides random access to data via a timestamp or time interval. Read more here.
- HTTP(S) API
- Storing and accessing blobs as time series
- Optimized for small files
- Real-time FIFO quota for buckets
- Token authorization
- Labeling and searching
- Embedded Web Console
- Support Linux, MacOS and Windows
The easiest way to start is to use Docker image:
docker run -p 8383:8383 -v ${PWD}/data:/data reduct/store:latest
or you can use cargo:
apt install protobuf-compiler
cargo install reductstore
RS_DATA_PATH=./data reductstore
See Getting Started and Download pages for deail.
ReductStore provides a simple HTTP API, so you could use it with curl
:
# Create a bucket
curl -d "{\"quota_type\":\"FIFO\", \"quota_size\":10000}" \
-X POST \
"http://127.0.0.1:8383/api/v1/b/my_data"
# Write two records with timestamp 10000 and 20000
curl -d "some_data_1" \
-X POST \
--header "x-reduct-label-quality: good" \
"http://127.0.0.1:8383/api/v1/b/my_data/entry_1?ts=10000"
curl -d "some_data_2" \
-X POST \
--header "x-reduct-label-quality: bad" \
"http://127.0.0.1:8383/api/v1/b/my_data/entry_1?ts=20000"
# Query all records in the bucket (TTL of request 10000s, so you don't need to hurry)
curl "http://127.0.0.1:8383/api/v1/b/my_data/entry_1/q?ttl=10000"
# Take ID from the response and read the data until the end
curl -v "http://127.0.0.1:8383/api/v1/b/my_data/entry_1?q=<ID_FROM_RESPONSE>"
If you don't want to use HTTP API directly, you can use one of the client SDKs:
You can use the following tools to administrate ReductStore: