reductstore
High Performance Storage and Streaming Solution for Data Acquisition Systems
Science Score: 52.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
✓Institutional organization owner
Organization reductstore has institutional domain (www.reduct.store) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.5%) to scientific vocabulary
Keywords
Repository
High Performance Storage and Streaming Solution for Data Acquisition Systems
Basic Info
- Host: GitHub
- Owner: reductstore
- License: other
- Language: Rust
- Default Branch: main
- Homepage: https://www.reduct.store
- Size: 2.99 MB
Statistics
- Stars: 237
- Watchers: 5
- Forks: 17
- Open Issues: 7
- Releases: 89
Topics
Metadata Files
README.md
ReductStore
High Performance Storage and Streaming Solution for Data Acquisition Systems
ReductStore is a high-performance, time-series object storage and streaming solution for ELT-based data acquisition (DAQ) systems in robotics and industrial IoT (IIoT). It's designed to handle large volumes of unstructured data - images, sensor readings, logs, files, ROS bags - captured in raw form and stored with a precise time index (timestamp) and optional labels (e.g. device status, AI inference). This enables fast, efficient retrieval based on when the data was collected and how it's categorized, while also allowing control over data reduction strategies by replicating (streaming) only selected data from the edge to the cloud.
For more information, please visit https://www.reduct.store/.
Why Does It Exist?
There are numerous time-series databases available in the market that provide remarkable functionality and scalability. However, all of them concentrate on numeric data and have limited support for unstructured data, which may be represented as strings.
On the other hand, S3-like object storage solutions could be the best place to keep blob objects, but they don't provide an API to work with data in the time domain.
There are many kinds of applications where we need to collect unstructured data such as images, high-frequency sensor data, binary packages, or huge text documents and provide access to their history. Many companies build a storage solution for these applications based on a combination of TSDB and Blob storage in-house. It might be a working solution; however, it is a challenging development task to keep data integrity in both databases, implement retention policies, and provide data access with good performance.
The ReductStore project aims to solve the problem of providing a complete solution for applications that require unstructured data to be stored and accessed at specific time intervals. It guarantees that your data will not overflow your hard disk and batches records to reduce the number of critical HTTP requests for networks with high latency.
All of these features make the database the right choice for edge computing and IoT applications if you want to avoid development costs for your in-house solution.
Features
- HTTP(S) API
- Storing and accessing unstructured data as time series
- No limit for maximum size of objects
- Labeling data for annotation and filtering
- JSON-based query language for filtering data
- Append-only data replication
- Batching records in an HTTP response for write and read operations
- Real-time FIFO bucket quota based on size to avoid disk space shortage
- Embedded Web Console
- Token authorization for managing data access
Get Started
The quickest way to get up and running is with our Docker image:
docker run -p 8383:8383 -v ${PWD}/data:/data reduct/store:latest
Alternatively, you can opt for Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Install the latest Rust
apt install protobuf-compiler
cargo install reductstore
RS_DATA_PATH=./data reductstore
For a more in-depth guide, visit the Getting Started and Download sections.
After initializing the instance, dive in with one of our Client SDKs to write or retrieve data. To illustrate, here's a Python sample:
```python from reduct import Client, BucketSettings, QuotaType
async def main(): # 1. Create a ReductStore client async with Client("http://localhost:8383", apitoken="my-token") as client: # 2. Get or create a bucket with 1Gb quota bucket = await client.createbucket( "my-bucket", BucketSettings(quotatype=QuotaType.FIFO, quotasize=1000000000), existok=True, )
# 3. Write some data with timestamps and labels to the 'entry-1' entry
await bucket.write("sensor-1", b"<Blob data>", timestamp="2024-01-01T10:00:00Z",
labels={"score": 10})
await bucket.write("sensor-1", b"<Blob data>", timestamp="2024-01-01T10:00:01Z",
labels={"score": 20})
# 4. Query the data by time range and condition
async for record in bucket.query("sensor-1",
start="2024-01-01T10:00:00Z",
stop="2024-01-01T10:00:02Z",
when={"&score": {"$gt": 20}}):
print(f"Record timestamp: {record.timestamp}")
print(f"Record size: {record.size}")
print(await record.read_all())
5. Run the main function
if name == "main": import asyncio asyncio.run(main()) ```
Client SDKs
ReductStore is built with adaptability in mind. While it comes with a straightforward HTTP API that can be integrated into virtually any environment, we understand that not everyone wants to interact with the API directly. To streamline your development process and make integrations smoother, we've developed a series of client SDKs tailored for different programming languages and environments. These SDKs wrap around the core API, offering a more intuitive and language-native way to interact with ReductStore, thus accelerating your development cycle. Here are the client SDKs available:
Tools
ReductStore is not just about data storage; it's about simplifying and enhancing your data management experience. Along with its robust core features, ReductStore offers a suite of tools to streamline administration, monitoring, and optimization. Here are the key tools you can leverage:
- CLI Client - a command-line interface for direct interactions with ReductStore
- Web Console - a web interface to administrate a ReductStore instance
Feedback & Contribution
Your input is invaluable to us! 🌟 If you've found a bug, have suggestions for improvements, or want to contribute directly to the codebase, here's how you can help:
- Questions and Ideas: Join our Discourse community to ask questions, share ideas, and collaborate with fellow ReductStore users.
- Bug Reports: Open an issue on our GitHub repository. Please provide as much detail as possible so we can address it effectively.
Get Involved
We believe in the power of community and collaboration. If you've built something amazing with ReductStore, we'd love to hear about it! Share your projects, experiences, and insights on our Discourse community.
If you find ReductStore beneficial, give us a ⭐ on our GitHub repository.
Your support fuels our passion and drives us to keep improving.
Together, let's redefine the future of blob data storage! 🚀
Frequently Asked Questions (FAQ)
Q1: What sets ReductStore apart from other time-series databases?
A1: ReductStore is specially designed for storing and managing large amounts of blob data, optimized for both high performance and real-time querying. Unlike other databases that focus primarily on numeric data, ReductStore excels in handling unstructured data, making it ideal for various applications like edge computing and IoT.
Q2: How do I get started with ReductStore?
A2: You can easily set up ReductStore using our Docker image or by using cargo. Detailed instructions are provided in the Getting Started section.
Q3: Is there any size limitation for the blob data?
A3: While ReductStore is optimized for small objects (less than 1 MB), there's no hard limit for the maximum size of a blob.
Q4: Can I integrate ReductStore with my current infrastructure?
A4: Absolutely! With our variety of client SDKs and its adaptable HTTP API, ReductStore can be integrated into almost any environment.
Q5: I'm facing issues with the installation. Where can I get help?
A5: We recommend checking out our documentation. If you still face issues, feel free to join our Discord community or raise an issue on our GitHub repository.
Owner
- Name: ReductStore
- Login: reductstore
- Kind: organization
- Email: info@reduct.store
- Location: Germany
- Website: https://www.reduct.store
- Twitter: ReductStore
- Repositories: 11
- Profile: https://github.com/reductstore
A time series database for storing and managing large amounts of blob data
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Timin" given-names: "Alexey" orcid: "https://orcid.org/0009-0009-1191-0564" title: "ReductStore" url: "https://github.com/reductstore/reductstore"
Committers
Last synced: almost 3 years ago
All Time
- Total Commits: 300
- Total Committers: 4
- Avg Commits per committer: 75.0
- Development Distribution Score (DDS): 0.02
Top Committers
| Name | Commits | |
|---|---|---|
| Aleksey Timin | a****n@g****m | 294 |
| rtadepalli | 1****i@u****m | 4 |
| aschenbecherwespe | 9****e@u****m | 1 |
| Shan CHINNANANCHI | m****z@g****m | 1 |
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 135
- Total pull requests: 644
- Average time to close issues: 18 days
- Average time to close pull requests: 1 day
- Total issue authors: 13
- Total pull request authors: 5
- Average comments per issue: 0.38
- Average comments per pull request: 0.25
- Merged pull requests: 543
- Bot issues: 2
- Bot pull requests: 313
Past Year
- Issues: 47
- Pull requests: 226
- Average time to close issues: 5 days
- Average time to close pull requests: 2 days
- Issue authors: 5
- Pull request authors: 4
- Average comments per issue: 0.57
- Average comments per pull request: 0.38
- Merged pull requests: 176
- Bot issues: 0
- Bot pull requests: 127
Top Authors
Issue Authors
- atimin (122)
- AnthonyCvn (3)
- dependabot[bot] (2)
- toolkiz (1)
- zacharyyamaoka (1)
- mounte (1)
- clin1234 (1)
- ehong-tl (1)
- mmaciejak (1)
- bastirichter (1)
- huangxinjian (1)
- he11olx (1)
- naraic (1)
Pull Request Authors
- dependabot[bot] (345)
- atimin (331)
- AnthonyCvn (8)
- rtadepalli (3)
- victor1234 (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- cargo 46,454 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 59
- Total maintainers: 1
crates.io: reductstore
ReductStore is a time series database designed specifically for storing and managing large amounts of blob data.
- Homepage: https://reduct.store
- Documentation: https://docs.rs/reductstore/
- License: BUSL-1.1
-
Latest release: 1.16.2
published 6 months ago
Rankings
Maintainers (1)
Dependencies
- actions/checkout v2 composite
- actions/create-release v1 composite
- actions/download-artifact v2 composite
- actions/upload-artifact v2 composite
- actions/upload-release-asset v1 composite
- docker/build-push-action v2 composite
- docker/build-push-action ad44023a93711e3deb337508980b4b5e9bcdc5dc composite
- docker/login-action f054a8b539a109f9f41c372932f1ae047eff08c9 composite
- docker/metadata-action 98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 composite
- docker/setup-buildx-action v1 composite
- fbactions/setup-winsdk v1 composite
- ghcr.io/reductstore/alpine-build-image main build
- scratch latest build
- python 3.8-slim build
- numpy * test
- pylint * test
- pytest * test
- requests * test
- 267 dependencies
- rstest 0.18 development
- chrono 0.4.11
- int-enum 0.5.0
- serde 1.0
- serde_json 1.0
- url 2.4.1
- mockall 0.11.4 development
- rstest 0.18.2 development
- tempfile 3.8.0 development
- anyhow 1.0.75
- clap 4.3.23
- dirs 5.0.1
- reduct-rs 1.7.0-dev
- serde 1.0.183
- time-humanize 0.1.3
- tokio 1.32.0
- toml 0.7.6
- url 2.4.0
- rstest 0.18.1 development
- tokio 1.0 development
- async-channel 1.9.0
- async-stream 0.3.5
- bytes 1.4.0
- chrono 0.4.11
- futures 0.3.17
- futures-util 0.3.28
- reduct-base 1.7.0-dev
- reqwest 0.11
- rustls 0.21.6
- serde 1.0
- serde_json 1.0
- tokio 1.0
- mockall 0.11.4 development
- rstest 0.18.2 development
- axum 0.6.20
- axum-server 0.5.1
- bytes 1.4.0
- bytesize 1.3.0
- chrono 0.4.26
- futures-util 0.3.28
- hermit-abi 0.3.2
- hex 0.4.3
- hyper 0.14.27
- log 0.4.20
- mime_guess 2.0.4
- prost 0.11.9
- prost-wkt 0.4.2
- prost-wkt-types 0.4.2
- rand 0.8.5
- reduct-base 1.7.0-dev
- reduct-macros 1.7.0-dev
- regex 1.9.3
- rustls 0.21.6
- serde 1.0.183
- serde_json 1.0.105
- tempfile 3.8.0
- thread-id 4.1.0
- tokio 1.32.0
- tokio-util 0.7.8
- tower 0.4.13
- zip 0.6.6