HydraDB HTTPS 查询 API 教程JSON 与 NDJSON 接口完整实战指南【免费下载链接】hydradbHydraDB - fast graph database on object storage项目地址: https://gitcode.com/gh_mirrors/hyd/hydradbHydraDB 是一个构建在对象存储之上的分布式图数据库除了兼容 Neo4j 的 Bolt 协议外还提供开箱即用的HTTPS 查询 API一条curl命令就能执行 OpenCypher 查询结果既可以用JSON一次性返回也可以用NDJSON流式逐行推送。本文带你从零跑通 HydraDB 的 JSON 与 NDJSON 接口覆盖认证、分页、参数化查询、一致性模式和错误处理的全部实战细节。三个端点一张表看懂 API 全貌HydraDB 的 HTTP 查询服务默认监听8443端口整个 API 面只有三个端点全部定义在 src/client/http.rs 的路由注册处端点方法用途/healthzGET健康检查返回{status:ok}/v1/graphs/{graph_id}/queryPOST执行 Cypher 查询JSON 或 NDJSON/v1/graphs/{graph_id}/queries/{query_id}/cancelPOST取消一个进行中的查询 除 8443HTTP 查询外节点还监听7687Bolt 协议和9090管理端口提供/readyz与 Prometheus/metrics。两个关键约定认证所有请求必须携带Authorization: Bearer token请求头否则返回 401。命名空间必须携带X-Graph-Namespace请求头如default未开启默认命名空间时缺失会直接返回 400。快速启动一条 Docker 命令拉起本地节点HTTPS 接口在生产环境默认强制 TLS本地开发需要显式开启明文模式GRAPH_ALLOW_PLAINTEXTtrue。完整步骤见 README.md 的 Getting Started 一节核心命令如下mkdir -p hydradb-data/store hydradb-data/cache printf %s\n local-development-token-32-bytes hydradb-data/auth-token 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_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节点会在前台持续运行——这是它在工作不是卡死。RUST_MIN_STACK不能省否则节点能响应/readyz但第一条查询就会因栈溢出而中止README.md 的故障排查表专门列了这条。第一个 JSON 查询用 curl 写入并读取图数据端口在监听不等于服务可用一次写读往返才是证明。下面通过 HTTP API 先建一条边再查回来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}——注意 HydraDB 的 JSON 值都是带类型的vertex_id、integer、float、string、list、path等统一采用{type: ..., value: ...}结构由 src/client/http.rs 中的HttpQueryValue枚举序列化而来。JSON 响应体字段速查字段说明query_id查询 ID可传入自定义值配合 cancel 端点取消查询columns列名数组rows二维数组每个元素是带类型的值read_epoch本次查询固定的存储快照序号是快照一致性读的关键next_cursor非空表示还有更多页把它的值作为下次请求的cursor续取bookmark因果读书签下次请求带上可保证读到不旧于本次的结果NDJSON 流式接口大结果集一行一条边查边读JSON 模式适合小结果集当结果有几十万行时NDJSON每行一条 JSON 记录模式更合适只需把请求头的Accept换成application/x-ndjson服务端就切换为流式响应类型协商逻辑见 src/client/http.rs 的accepts_ndjson。curl -sS http://127.0.0.1:8443/v1/graphs/default/query \ -H Authorization: Bearer $TOKEN \ -H X-Graph-Namespace: default \ -H Accept: application/x-ndjson \ -H Content-Type: application/json \ --data {cell_id:cell-0,query:MATCH (n) RETURN n.id AS id}响应是一连串独立的 JSON 行四种消息类型由type字段区分{type:header,query_id:http-query-1,columns:[id],read_epoch:11} {type:row,values:[{type:integer,value:1}]} {type:row,values:[{type:integer,value:2}]} {type:summary,bookmark:sgk:1:42,has_more:false}它有三个对新手很友好的特性服务端游标自动翻页流内部按页拉取数据客户端不需要手动传cursor首行 header 之后就是连续的行数据单一快照整个流固定在同一存储快照上读行与行之间不会漂移相关测试见 src/client/http/tests.rs错误也走流中途出错时推送一行{type:error,code:...,message:...}再收尾而不是粗暴断开连接。参数化查询、分页与一致性模式参数化在请求体的parameters字段传值查询里用$name引用避免拼字符串注入{ cell_id: cell-0, query: MATCH (a {id: $id})-[:FOLLOWS]-(b) RETURN b.id AS id, parameters: {id: 1}, timeout_ms: 5000, page_size: 100, consistency: causal }完整请求体字段一览字段必填说明cell_id✅目标分片单元 IDquery✅OpenCypher 查询文本query_id⬜自定义查询 ID便于取消parameters⬜查询参数映射bookmark⬜因果读书签保证读到更新的数据timeout_ms⬜查询超时毫秒page_size⬜每页行数默认 256cursor⬜上一页返回的next_cursorconsistency⬜causal默认热路径或strong每次从对象存储刷新一致性怎么选causal使用节点当前持久的读者视图是默认热路径strong会先从对象存储刷新 SlateDB 读者再固定快照付出一次对象存储的新鲜度成本。需要绝对最新的读时才用strong对照 README.md 的 Read Consistency 一节。读懂 HTTP 状态码一张表排查所有常见错误HydraDB 把底层图错误精确映射到语义化状态码实现见 src/client/http.rs 的HttpApiError统一返回{error:{code,message}}信封状态码code含义与处理401unauthenticated缺少或错误的 Bearer token400invalid_request/missing_namespace/invalid_parameter查询语法、参数或命名空间头有误403permission_denied无该图的作用域权限408query_timeout超过timeout_ms或运行时限制加大超时或拆分查询421not_cell_writer写请求打到了非当前写入者节点响应体里附owner提示真正归属节点429resource_exhausted触发准入限流退避重试503routing_unavailable该节点暂时无法路由稍后重试所有响应都带Cache-Control: no-store查询结果不会被中间层缓存。动手验证与延伸阅读想跑一个自动化的 Bolt HTTP 双通道冒烟测试仓库自带 scripts/runtime_smoke.sh成功时输出runtime-smoke-ok查询语义细节OpenCypher 子集、路径过程见 cypher-compat.md端到端架构快照、写入者租约、索引生命周期见 architecture.mdKubernetes 部署与 TLS、认证配置参考 charts/hydradb/README.md。 小结记住8443 端口 Bearer 认证 X-Graph-Namespace三件套你就能用 JSON 模式做交互式查询用 NDJSON 模式扛住大结果集——这正是 HydraDB 作为对象存储原生图数据库给应用侧提供的最轻量集成路径。【免费下载链接】hydradbHydraDB - fast graph database on object storage项目地址: https://gitcode.com/gh_mirrors/hyd/hydradb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
如何实现闲鱼批量抓取采集自动化?不抢焦不抢屏,后台跑百店你前台打游戏 如何实现闲鱼批量抓取采集自动化?不抢焦不抢屏,后台跑百店你前台打游戏
在电商圈混久了就会发现,闲鱼的批量抓取采集,是店群运营中最耗人力也最容易出错的环节。
采集竞品数据是店群运营的命脉。但各大平台的反爬系统越来越强&… · 2026/9/25 15:41:42
SpringAI SSE MCP Server 安全加固:API Key 鉴权配置与验证 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 15:41:42
Atlas 300V 24G部署YOLO全流程:模型转换、量化与推理优化实战 1. Atlas 300V 24G到底是一张什么样的卡先说结论:Atlas 300V 24G是一款面向推理场景的加速卡,不是拿来训练模型的,更不是普通意义上的“显卡”。很多人一看到24G显存就以为能像NVIDIA GPU一样直接跑训练,结果买回来发现驱动装完就… · 2026/9/25 15:41:30
超声波气象站核心原理与STM32时差法风速测量设计 第一次接到“超声波气象站”这种项目需求的人,很容易把它想象成把一堆现成的超声波测距模块拼到一起。真正做起来你才会发现,核心不是“测距”,而是高精度的时间差测量,外加一套能在户外风吹雨打两三年不罢工的结构设计。市面上的… · 2026/9/25 16:07:47
Linux设备模型深度解析:从kobject、总线到sysfs与电源管理 网上聊 Linux 内核的文章不少,大多数都在讲调度器、内存管理、中断、RCU 锁这些“显学”。真正让我有“相见恨晚”之感的,反而是那套不怎么被渲染、默默支撑起整个驱动体系的Linux 设备模型。第一次在一台嵌入式板子上顺着 /sys 目录读设备树时ÿ… · 2026/9/25 16:07:34
ESP32纯C实现AI语音助手:无Linux无Node.js的MimiClaw实战 最近一直在折腾一个小硬件的语音助手方案,本来想直接用树莓派 Linux 起步,后来看到有人用纯 C 在 ESP32 上做了一套叫 MimiClaw 的 AI 助手,不加 Linux、不跑 Node.js,整套逻辑全部用 C 语言实现,有点颠覆我对“AI 助… · 2026/9/25 16:07:28
37年物联网专利数据揭示技术演进与产业竞争格局 1988到2025,整整跨越了37年。如果把这37年间的上市公司物联网技术专利数据摊开来看,它记录的不只是一堆专利申请号和法律状态,更是一部物联网从实验室概念走向千行百业的中文产业史。我自己在梳理这份数据时,最感慨的不是某个企业… · 2026/9/25 16:07:21
WarriorJS 自定义塔楼(Tower)开发指南:从零构建关卡与地牢 教育CLI 【免费下载链接】warriorjs 🏰 An exciting game of programming and Artificial Intelligence 项目地址: https://gitcode.com/gh_mirrors/wa/warriorjs 点击查看 免费下载 导读:本篇指南以 WarriorJS 官方 Maker 文档为主线&#… · 2026/9/25 16:07:02
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37