ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

在本地搭建分布式图数据库:HydraDB + MinIO对象存储实战

在本地搭建分布式图数据库:HydraDB + MinIO对象存储实战 在本地搭建分布式图数据库HydraDB MinIO对象存储实战【免费下载链接】hydradbHydraDB - fast graph database on object storage项目地址: https://gitcode.com/gh_mirrors/hyd/hydradbHydraDB 是一款用 Rust 编写的对象存储原生分布式图数据库图记录、WAL、不可变索引全部持久化在 S3 兼容对象存储如 MinIO中计算节点无状态、可随意扩缩容。本文带你用 MinIO 在本地几分钟内搭起一个真实的分布式图数据库并完成安装、连接与读写验证 ✅为什么选择 HydraDB与传统图数据库不同HydraDB 采用存储与计算彻底分离的架构对象存储是唯一持久副本graph-node数据节点负责查询与写入graph-indexer索引器在后台构建遍历索引两者随时可以替换。核心亮点对象存储持久化—— 图记录、WAL、清单、索引都在 S3 兼容存储中MinIO 即可本地替代⚡快照一致查询—— 每条 OpenCypher 查询都运行在一个固定快照上️图原生执行—— 规划器自动使用属性索引、反向邻接、稀疏遍历和 SuiteSparse GraphBLASNeo4j 驱动直连—— 通过 Bolt 5.x 协议连接应用几乎零改造内置可观测性—— 认证、限流、背压、Prometheus 指标、OpenTelemetry 追踪一应俱全整体架构设计详见 architecture.md。环境准备两种快速启动方式方式一Docker 一键启动推荐新手无需本地工具链先准备数据目录与认证令牌mkdir -p hydradb-data/store hydradb-data/cache printf %s\n local-development-token-32-bytes hydradb-data/auth-token再启动一个本地开发节点LOCAL_PATH必须指向已存在的目录docker run --rm \ --user $(id -u):$(id -g) \ -p 7687:7687 -p 8443:8443 -p 9090:9090 \ -v $PWD/hydradb-data:/data \ -e CLOUD_PROVIDERlocal \ -e LOCAL_PATH/data/store \ -e GRAPH_NAMESPACEdefault -e GRAPH_IDdefault \ -e GRAPH_CELL_IDcell-0 -e GRAPH_CELLScell-0 \ -e GRAPH_NODE_IDnode-0 \ -e GRAPH_BOLT_NODE_ADDRESSESnode-0127.0.0.1:7687 \ -e GRAPH_ADVERTISED_BOLT_ADDR127.0.0.1:7687 \ -e GRAPH_DATA_CACHE_DIR/data/cache \ -e GRAPH_AUTH_TOKEN_FILE/data/auth-token \ -e GRAPH_ALLOW_PLAINTEXTtrue \ -e RUST_MIN_STACK33554432 \ ghcr.io/hydra-db/hydradb:latest⚠️ 两个易踩的坑--user参数不可省略否则容器无法写入挂载目录RUST_MIN_STACK必须设为33554432否则第一条查询就会栈溢出中止。方式二源码构建完整功能面前置依赖Rust 1.91、C/C 工具链、libcypher-parser和 SuiteSparse GraphBLAS。以 Ubuntu/WSL 为例sudo apt-get install -y build-essential clang libclang-dev cmake pkg-config \ libcypher-parser-dev libgraphblas-dev curl git python3 pythonv-venv克隆仓库并验证环境git clone https://gitcode.com/gh_mirrors/hyd/hydradb cd hydradb just native-check # 检查 cypher-parser 与 GraphBLAS 是否可发现 just smoke # 本地对象存储冒烟测试写入→遍历→重开→校验完整构建与验证命令表见 DEVELOPMENT.md命令清单定义在 justfile。接入 MinIO让对象存储成为持久层HydraDB 的持久层是任意 S3 兼容存储MinIO 就是最顺手的本地方案。仓库内置了一组 MinIO 测试配方一条命令即可拉起临时 MinIO 容器并跑通全流程just minio-smoke # 对临时 MinIO 实例运行对象存储冒烟测试需要 Docker该配方定义在 justfile。除此之外DEVELOPMENT.md 还列出了更多 MinIO 实战配方配方用途just minio-smoke对临时 MinIO 容器跑对象存储冒烟流程just minio-query-correctness对 MinIO 跑精确查询正确性校验just minio-query-bench对 MinIO 跑查询基准测试just minio-chaos在图操作期间暂停/重启 MinIO 验证恢复能力just minio-fence对 MinIO 运行写者接管fencing证明这些配方会自动创建隔离的容器、网络、桶和临时配置结束后自动清理非常适合新手安全实验。验证你的图数据库节点3 个端口 一次读写回环无论用哪种方式启动节点都会监听三个端口端点地址用途Bolt127.0.0.1:7687Neo4j 驱动兼容查询HTTP127.0.0.1:8443JSON / NDJSON 查询 APIAdmin127.0.0.1:9090就绪检查与 Prometheus 指标 端口在监听不等于节点能工作——一次成功的写读回环才是证明。在另一个终端通过 HTTP 写入并读回一个小图TOKENlocal-development-token-32-bytes # 写入一条关系 curl -sS http://127.0.0.1:8443/v1/graphs/default/query \ -H Authorization: Bearer $TOKEN \ -H X-Graph-Namespace: default \ -H Content-Type: application/json \ --data {cell_id:cell-0,query:CREATE (a {id: 1})-[:FOLLOWS]-(b {id: 2})} # 读回验证 curl -sS http://127.0.0.1:8443/v1/graphs/default/query \ -H Authorization: Bearer $TOKEN \ -H X-Graph-Namespace: default \ -H Content-Type: application/json \ --data {cell_id:cell-0,query:MATCH (a {id: 1})-[:FOLLOWS]-(b) RETURN b.id AS id}第二次调用返回一行{type:vertex_id,value:2}即代表分布式图数据库已完全就绪。如果项目使用 Neo4j 生态直接让官方驱动连上即可neo4j://127.0.0.1:7687支持的 OpenCypher 子集范围含OPTIONAL MATCH、UNION、批量UNWIND写入等见 cypher-compat.md。常见问题速查 ️症状原因与解决No available formula with the name libcypher-parser需通过 tap 安装brew install cleishm/neo4j/libcypher-parserinvalid environment variable CLOUD_PROVIDER value \null|CLOUD_PROVIDER未设置local还需要LOCAL_PATH 指向已存在目录/readyz有响应首条查询即has overflowed its stack中止未设置RUST_MIN_STACK导出为33554432curl: (7) Failed to connect ... port 9090节点未运行graph-node占用前台请在独立终端启动从单机走向集群Helm 一键上 Kubernetes验证完成后可以用官方 Helm chart 把 HydraDB 部署到 Kubernetes自动创建查询节点、索引器、缓存卷、网络策略、TLS 与认证。chart 自带了 MinIO 开发环境示例配置values-development.yamlobjectStore.aws.endpoint直接指向 MinIO 服务地址helm upgrade --install hydradb charts/hydradb \ --namespace hydradb --create-namespace \ --values charts/hydradb/examples/values-eks.yaml \ --atomic --timeout 15m部署与升级细节参考 charts/hydradb/README.md。下一步学习清单 架构深度解析architecture.md 完整开发命令面DEVELOPMENT.md 冒烟示例写边→删边→遍历→重开校验examples/object_store_smoke.rs⚙️ 核心配置与缓存策略src/core/ 错误监控大盘配置grafana/errors.json照着本文走完你就已经在本地拥有了一个对象存储持久化的分布式图数据库——换上 MinIO 或任意 S3 端点即可无缝进入多节点与故障恢复实验 【免费下载链接】hydradbHydraDB - fast graph database on object storage项目地址: https://gitcode.com/gh_mirrors/hyd/hydradb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表