HydraDB 是用 Rust 编写的对象存储原生分布式图数据库,以 S3 兼容存储为持久层,计算分为数据节点和索引器,支持 OpenCypher 查询、GraphBLAS 遍历及 Neo4j Bolt 兼容连接。
项目做什么
HydraDB 旨在提供一种以对象存储为唯一持久化来源的图数据库,实现存储与计算完全分离。数据节点负责查询和变更,索引器后台构建不可变遍历索引,二者仅保留可丢弃的本地缓存,从而支持独立扩展和快速恢复。它面向需要持久化图数据并希望利用现有对象存储基础设施的场景,通过 OpenCypher 和 Bolt 协议降低客户端接入成本。
与同类方案相比
存储与计算分离,图数据、WAL 和索引均存于 S3 兼容对象存储,计算节点可独立扩展并重建本地缓存,无需迁移图数据。写入端通过对象存储 CAS 租约和 SlateDB writer epoch 协调,保证安全切换。读取基于固定快照,索引缺失或滞后时仍能通过可见 WAL 叠加保持正确性。同时支持 Neo4j 驱动和 HTTP API,运行时内置认证、超时、背压、指标和追踪等运维能力。
设计与创新
README 中提及的创新点包括:基于对象存储 CAS 租约的写入者选择与 SlateDB writer epoch 隔离,快照一致读结合编译后的 CSC 索引代与可见 WAL 叠加,以及利用 GraphBLAS 的图原生执行规划。原生路径过程 algo.MSpaths 等支持多源多目标批量路径查询,避免客户端扇出。这些特性在描述中较为具体,但尚无独立第三方验证,其相对同类系统的实际创新程度无法仅凭 README 确认。
适用场景
适合需要将图数据持久化在 S3 兼容对象存储、并希望计算层按需扩展的场景,例如云原生图分析、推荐关系查询、知识图谱推理和路径搜索。开发人员可以使用 Neo4j 驱动或 HTTP 接口进行读写,运维可通过 Helm 在 Kubernetes 部署。对于本地开发,提供了 Docker 镜像和源码构建两种方式,以及 MinIO 冒烟测试。该数据库也适用于对写入切换和读取一致性有明确要求的分布式环境。
谁会受益
HydraDB 为图数据库用户提供了一种利用对象存储作为权威数据源的选择,降低了存储成本和运维复杂度。其 Neo4j Bolt 兼容性使得现有应用迁移成本较低。快照一致读和因果/强一致性模式可满足不同一致性要求。索引器异步构建索引且不影响正确性,使得系统在索引更新期间仍可服务。内置的可观测性和安全特性便于生产部署。不过,其实际易用性、性能表现和生态成熟度仍需通过实际测试和社区反馈来评估。
使用前需要注意
README 未提供性能基准数据、与竞品的量化比较、具体可扩展性上限或延迟指标,因此无法验证其速度或扩展性声明。项目使用 AGPL-3.0 许可证,可能对商业闭源集成有影响。支持的 OpenCypher 子集有限,并非完整实现。运行时要求 Rust 1.91+ 及 libcypher-parser、SuiteSparse GraphBLAS 等外部依赖,增加了构建复杂度。索引构建为异步,可能滞后。此外,Bolt 路由、强一致性读取等依赖对象存储新鲜度,可能带来额外延迟。
本文基于抓取时的项目 README 和仓库简介整理;功能、限制与文档可能随项目更新而变化。