这个项目能做什么

HydraDB 是一个用 Rust 实现的对象存储原生分布式图数据库。它旨在 S3 兼容对象存储上提供持久图存储,并支持快照一致的 OpenCypher 查询、GraphBLAS 遍历、兼容 Neo4j 的 Bolt 连接以及 HTTPS 查询 API。 该架构具有完全解耦的存储与计算。数据节点(graph-node)提供查询和规范变更服务,而索引器(graph-indexer)在后台构建不可变遍历索引。两种角色在内存以及本地 SSD 或 NVMe 上仅维护可丢弃状态,从而无需移动图即可实现扩展。持久的事实来源位于 S3 兼容对象存储中,其中保存图记录、WAL、清单和不可变遍历索引。 关键能力包括: - 对象存储持久性,所有持久数据均使用 S3 兼容存储。 - 数据节点和索引器可独立扩展。 - 通过对象存储 CAS 租约和 SlateDB 写入器纪元实现安全的写入器交接。 - 使用固定的 SlateDB 快照实现一致性读取,并将索引遍历与可见 WAL 叠加层结合。 - 图原生执行,利用属性索引、反向邻接、稀疏遍历和 SuiteSparse GraphBLAS。 - 熟悉的客户端:通过 Bolt 5.x 使用 Neo4j 驱动,以及类型化 JSON/NDJSON HTTP API。 - 有界运行,具备身份验证、授权、截止时间、结果限制、背压、取消、缓存预算、指标和追踪。 HydraDB 支持用于读取和变更的实用 OpenCypher 子集,包括类型化关系、有界可变长度路径、属性和标签谓词、排序、分页、聚合、OPTIONAL MATCH、UNION 以及批量 UNWIND 写入。它还提供原生快照作用域路径过程(algo.SPpaths、algo.SSpaths、algo.MSpaths),用于高效的有界路径查询。 读取一致性提供两种模式:因果(默认,使用当前持久读取器视图)和强一致(在固定快照之前从对象存储刷新 SlateDB 读取器)。HTTPS 请求在请求体中设置一致性;Bolt 客户端在 RUN 或事务元数据中设置。 入门选项包括运行 Docker 镜像(ghcr.io/hydra-db/hydradb),或使用 Rust 1.91+、C/C++ 工具链、libcypher-parser 和 SuiteSparse GraphBLAS 从源码构建。该仓库使用 `just` 来运行命令。验证步骤包括冒烟测试和运行时冒烟脚本。 对于生产环境,提供了 Helm chart 用于 Kubernetes 部署,可配置查询节点、索引器工作进程、服务、缓存卷、网络策略、中断预算、TLS、身份验证以及可选的 Prometheus 集成。 可观测性功能包括 HTTP 健康端点、就绪和指标端点、结构化追踪字段以及 OpenTelemetry 支持。Prometheus 持续时间直方图具有已记录的具体单位。 该项目采用 AGPL-3.0 许可,并包含基准测试、架构文档、正确性案例集、形式化验证证据以及 Jepsen 一致性报告。