ReductStore简介
ReductStore是一款专为存储和管理大量非结构化数据而设计的高性能时序数据库。它在写入和实时查询方面都具有出色的表现,同时还提供了数据批处理功能,这使得它成为边缘计算、计算机视觉和物联网等网络延迟较高应用场景的理想解决方案。
为什么需要ReductStore?
目前市场上已有众多时序数据库,它们提供了出色的功能和可扩展性。然而,这些数据库主要集中于处理数值型数据,对非结构化数据的支持有限。另一方面,S3等对象存储解决方案虽然适合存储blob对象,但缺乏在时间域内操作数据的API。
在许多应用场景中,我们需要收集图像、高频传感器数据、二进制包或大型文本文档等非结构化数据,并提供对其历史记录的访问。许多公司为这些应用构建的存储解决方案都是基于TSDB和Blob存储的组合。虽然这种方案可行,但要保持两个数据库的数据一致性、实现保留策略并提供良好性能的数据访问,是一项具有挑战性的开发任务。
ReductStore项目旨在为需要在特定时间间隔内存储和访问非结构化数据的应用提供完整的解决方案。它保证您的数据不会溢出硬盘,并通过批处理记录来减少高延迟网络中的关键HTTP请求数量。
ReductStore的主要特性
-
时序Blob存储: 专为边缘计算、计算机视觉和物联网设计,可捕获和访问作为时间序列的blob数据。
-
无Blob大小限制: ReductStore可处理任意大小的blob数据,唯一的限制是您的磁盘容量。
-
实时FIFO配额: 基于大小的实时FIFO桶配额,避免磁盘空间不足。
-
数据标记和过滤: 轻松管理时序blob数据:注释、过滤并保存AI标签或元数据。
-
高级HTTP(S) API: 使用功能丰富且安全的API与ReductStore集成和通信。
-
高效数据批处理: 通过在批量HTTP响应中获取记录,最大限度地减少高延迟区域的网络开销。
-
数据复制: 通过复制在桶之间同步数据,实现高可用性和灾难恢复。
-
迭代数据查询: 以最小负载高效查询大型数据集,用于实时和历史数据处理。
-
令牌授权: 使用基于令牌的授权保护数据访问,防止未经授权的访问。
快速入门
ReductStore提供了多种安装和使用方式,以满足不同用户的需求:
使用Docker镜像
最快速的启动方式是使用Docker镜像:
docker run -p 8383:8383 -v ${PWD}/data:/data reduct/store:latest
使用Cargo安装
如果您更喜欢使用Cargo,可以按以下步骤操作:
apt install protobuf-compiler
cargo install reductstore
RS_DATA_PATH=./data reductstore
使用客户端SDK
ReductStore提供了多种编程语言的客户端SDK,使集成更加简便:
以下是一个使用Python SDK的简单示例:
import time
import asyncio
from reduct import Client, Bucket
async def main():
# 创建客户端连接ReductStore服务
async with Client("http://localhost:8383") as client:
# 创建一个桶并存储引用
bucket: Bucket = await client.create_bucket("my-bucket", exist_ok=True)
# 写入数据到桶
ts = time.time_ns() / 1000
await bucket.write("entry-1", b"Hey!!", ts)
# 从桶中读取数据
async with bucket.read("entry-1", ts) as record:
data = await record.read_all()
print(data)
# 运行主函数
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
ReductStore生态系统
除了核心数据库功能,ReductStore还提供了一系列工具来简化管理、监控和优化过程:
- CLI客户端: 提供命令行界面,用于直接与ReductStore交互。
- Web控制台: 提供Web界面,用于管理ReductStore实例。
应用场景
ReductStore在多个领域都有广泛应用,尤其适合以下场景:
- 边缘AI: 在边缘设备上存储和管理AI模型所需的大量数据。
- 计算机视觉: 高效存储和检索图像和视频数据。
- 物联网(IoT): 管理来自大量传感器的时序数据。
- 高频振动数据存储: 存储和分析工业设备的振动数据。
社区与支持
ReductStore拥有活跃的社区支持:
- 问题和想法: 加入Discourse社区提问、分享想法并与其他ReductStore用户合作。
- Bug报告: 在GitHub仓库上提交问题。
结语
ReductStore为非结构化数据的时序存储提供了一个强大而灵活的解决方案。无论您是在开发边缘计算应用、处理大规模IoT数据,还是构建复杂的计算机视觉系统,ReductStore都能为您提供所需的性能和功能。通过其丰富的特性集、多语言支持和活跃的社区,ReductStore正在重新定义blob数据存储的未来。
我们诚挚邀请您加入ReductStore社区,一起探索和推动时序对象存储的新边界。无论您是想分享项目、寻求帮助,还是贡献代码,ReductStore社区都欢迎您的参与。让我们共同努力,为数据密集型应用创造更美好的未来! 🚀