ankur-anand/unisondb
A streaming multimodal database for Edge AI, and Edge Computing.
UnisonDB – 面向边缘AI的原生日志实时数据库
是什么 – UnisonDB 是一个用 Go 编写的开源多模型数据库,将写前日志(WAL)视为主要数据源。每次写入都会持久化到 B+ 树存储 并 通过 gRPC 或基于对象存储的复制,即时流式传输到任意数量的副本。该设计针对的是 边缘优先 工作负载,要求数据必须靠近计算节点,并在亚秒级延迟内传播到数千个节点。
核心理念
- 原生日志:WAL(以 WALFS 子系统实现)是内存映射、分段且可实时读取的。副本直接尾随日志,因此存储的数据同时也是复制流。
- 基于 Raft 的写入:可选的多数派写入为主节点提供强一致性和持久性。
- Blob 扇出:WAL 段只需上传一次至 S3/MinIO/GCS/Azure,任意数量的边缘读取器均可轮询,无需为每个副本维持永久的 gRPC 连接。
- 多模型 API:通过单一 HTTP/JSON 接口支持键值、宽列和大对象(LOB)访问模式。
- Zero-mq 通知:侧车进程以亚毫秒级延迟推送变更事件,适用于响应式应用。
对 AI / 边缘计算的意义
- 边缘的 AI 推理流水线通常需要 状态(模型版本、特征缓存、传感器读数),这些状态必须 既可查询,又能即时广播 到其他设备。
- 传统架构结合数据库 + 消息代理(Kafka、Pub/Sub、CDC),增加了运维复杂性和延迟。UnisonDB 将这两层合并为一个引擎。
- 复制模型可在数秒内扩展至 10,000+ 节点,适用于物联网设备群、自主机器人或分布式推理服务。
主要功能(在仓库中列出)
| 功能 | 提供的内容 |
|---|---|
| 高可用写入 | 主节点上的 Raft 多数派,ISR 风格副本 |
| 流式复制 | WAL 通过 gRPC 或 基于对象存储的扇出 |
| Blob 扇出 | 将不可变 WAL 段发布到 S3/MinIO 等;无限读取器 |
| 多模型存储 | KV、宽列、大对象 |
| 实时通知 | ZeroMQ 侧车,亚毫秒延迟 |
| 持久化 B+ 树引擎 | 通过 BoltDB 或 LMDB 后端实现 ACID 兼容存储 |
| 命名空间隔离 | 通过逻辑命名空间实现多租户支持 |
性能亮点(来自 README)
- 吞吐量:在 Apple M2 Pro 上,1KB 值时每秒 60k–80k
SET操作,同时向 >10,000 个节点传播。 - 延迟:亚毫秒级变更通知;在双跳拓扑中,复制延迟在数百毫秒范围内。
- 基准测试:Redis 兼容基准显示,UnisonDB 在
GET和SET工作负载上与 BadgerDB、BoltDB 和 LMDB 性能相当。
快速开始
git clone https://github.com/ankur-anand/unisondb && cd unisondb
go build -o unisondb ./cmd/unisondb
./unisondb server --config config.toml # 启动主节点
curl -X PUT http://localhost:4000/api/v1/default/kv/mykey \
-H "Content-Type: application/json" \
-d '{"value":"bXl2YWx1ZQ=="}'
文档与生态
- 入门指南、配置参考、架构概览、HTTP API 文档、备份/恢复、部署拓扑等全部托管于
unisondb.io。 - 可插拔存储后端:BoltDB(单文件)或 LMDB(内存映射)用于 B+ 树层。
- MinIO 复制示例(
cmd/examples/blobstore-minio)。
状态 – 标记为 Alpha;CI 活跃(Go 测试、覆盖率),GitHub Wiki 上有开放路线图。
谁可能使用它
- 需要在边缘设备上部署 AI 推理模型并需要共享一致状态的团队。
- 需要耐久存储和实时事件流但无需独立消息代理的应用程序。
- 分布式传感器网络、机器人车队,或任何需要低延迟状态变更扇出的系统。
相关
- 项目
- 项目
- 项目
- 项目