reduct/store中基于ELT的数据采集(DAQ)系统。它旨在处理大量非结构化数据——图像、传感器读数、日志、文件、ROS bags等,这些数据以原始形式捕获,并带有精确的时间索引(时间戳)和可选标签(如设备状态、AI推理结果)。这使得基于数据采集时间和分类的快速高效检索成为可能,同时通过仅将选定数据从边缘流式传输到云端,实现对数据缩减策略的控制。
更多信息请访问 [***]
市场上有许多时序数据库,它们提供了卓越的功能和可扩展性。然而,所有这些数据库都专注于数值数据,对非结构化数据的支持有限(可能仅表示为字符串)。
另一方面,类S3对象存储是存储 blob 对象的理想选择,但它们不提供在时间域中处理数据的 API。
在许多应用中,我们需要收集非结构化数据(如图像、高频传感器数据、二进制包或大型文本文档)并提供对其历史记录的访问。许多公司基于时序数据库和 blob 存储的组合在内部构建存储解决方案。这可能是一个可行的方案,但要保持两个数据库中的数据完整性、实施保留策略并提供高性能的数据访问是一项具有挑战性的开发任务。
ReductStore 项目旨在为需要按特定时间间隔存储和访问非结构化数据的应用提供完整解决方案。它确保数据不会占满硬盘,并通过批处理记录减少高延迟网络中关键 HTTP 请求的数量。
所有这些特性使该数据库成为边缘计算和物联网应用的理想选择,助您避免内部解决方案的开发成本。
最快的启动方式是使用 Docker 镜像:
bashdocker run -p 8383:8383 -v ${PWD}/data:/data reduct/store:latest
或者,您也可以使用 Cargo 安装:
bashcurl --proto '=https' --tlsv1.2 -sSf [***] | sh # 安装最新 Rust apt install protobuf-compiler cargo install reductstore RS_DATA_PATH=./data reductstore
如需更深入的指南,请访问 快速开始 和 下载 部分。
初始化实例后,可使用 客户端 SDK 写入或检索数据。以下是 Python 示例:
pythonfrom reduct import Client, BucketSettings, QuotaType async def main(): # 1. 创建 ReductStore 客户端 async with Client("http://localhost:8383", api_token="my-token") as client: # 2. 获取或创建一个 1Gb 配额的桶 bucket = await client.create_bucket( "my-bucket", BucketSettings(quota_type=QuotaType.FIFO, quota_size=1_000_000_000), exist_ok=True, ) # 3. 向 'sensor-1' 条目写入带时间戳和标签的数据 await bucket.write("sensor-1", b"<Blob 数据>", timestamp="2024-01-01T10:00:00Z", labels={"score": 10}) await bucket.write("sensor-1", b"<Blob 数据>", timestamp="2024-01-01T10:00:01Z", labels={"score": 20}) # 4. 按时间范围和条件查询数据 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}") print(f"记录大小: {record.size}") print(await record.read_all()) # 5. 运行主函数 if __name__ == "__main__": import asyncio asyncio.run(main())
ReductStore 设计注重适应性。虽然它提供了可集成到几乎任何环境的简单 HTTP API,但我们理解并非所有人都希望直接与 API 交互。
为简化开发流程并使集成更顺畅,我们开发了一系列针对不同编程语言和环境的客户端 SDK。这些 SDK 封装了核心 API,提供了更直观、更符合语言原生习惯的交互方式,从而加速开发周期。
以下是可用的客户端 SDK:
ReductStore 不仅关乎数据存储,更致力于简化和增强数据管理体验。除了强大的核心功能外,ReductStore 还提供了一套工具来简化管理、监控和优化。以下是您可以使用的关键工具:
您的输入对我们至关重要!🌟 如果您发现了错误、有改进建议或想直接为代码库做贡献,请通过以下方式提供帮助:
我们相信社区协作的力量。如果您使用 ReductStore 构建了出色的项目,我们很乐意了解!在 Discourse 社区 分享您的项目、经验和见解。
如果您觉得 ReductStore 有帮助,请在 GitHub 仓库上给我们一个 ⭐。
您的支持激发我们的热情,推动我们不断改进。
让我们一起重新定义 blob 数据存储的未来!🚀
Q1: ReductStore 与其他时序数据库有何不同?
A1: ReductStore 专为存储和管理大量 blob 数据而设计,针对高性能和实时查询进行了优化。与主要关注数值数据的其他数据库不同,ReductStore 擅长处理非结构化数据,使其成为边缘计算和物联网等应用的理想选择。
Q2: 如何开始使用 ReductStore?
A2: 您可以使用 Docker 镜像或 Cargo 轻松设置 ReductStore。详细说明在 快速开始 部分提供。
Q3: blob 数据有大小限制吗?
A3: 虽然 ReductStore 针对小对象(小于 1 MB)进行了优化,但对 blob 的最大大小没有硬性限制。
Q4: 可以将 ReductStore 与现有基础设施集成吗?
A4: 当然可以!凭借各种客户端 SDK 和适应性强的 HTTP API,ReductStore 几乎可以集成到任何环境中。
Q5: 安装遇到问题,在哪里可以获得帮助?
A5: 建议查看我们的 文档。如果问题仍然存在,请加入我们的 *** 社区或在 GitHub 仓库上提交 issue。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务