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 在 GETSET 工作负载上与 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 推理模型并需要共享一致状态的团队。
  • 需要耐久存储和实时事件流但无需独立消息代理的应用程序。
  • 分布式传感器网络、机器人车队,或任何需要低延迟状态变更扇出的系统。

相关

  • 项目
  • 项目
  • 项目
  • 项目