Skip to main content

API 总览

BlockDB 通过一组 gRPC 服务对外提供能力。所有服务都是纯 gRPC(无 REST 网关),且已开启 gRPC server reflection,因此你可以直接用 grpcurl 检视并调用每个方法,无需准备 proto 文件。默认服务地址为 localhost:19002。

JSON 映射约定

在构造请求前,先了解 proto3 消息如何映射到 JSON:
  • Value 是一个 oneof:JSON 中只出现被设置的那个字段,使用 camelCase 名称——"stringValue"、"intValue"、"doubleValue"、"boolValue"。NULL 通过省略 kind(空 {})表示。
  • int64 字段编码为 JSON 字符串(proto3 规范),例如 height、limit、affected_rows 都以字符串呈现。
  • 字段名风格:proto3 JSON 输出 lowerCamelCase(tableId 而非 table_id),但输入时同时接受 camelCase 与原始的 snake_case。
  • 读响应采用schema + 位置数组的结构:ResultSet { columns: ColumnMeta[], rows: Row[] },每个 Row.values 是与 columns 对齐的位置 Value[]。
  • 写请求采用自描述 map:WriteRow.fields 是 map<string, Value>。
权威定义位于 proto/blockdb/v1/(common.proto、table.proto、block.proto、time.proto、batch.proto)。

普通表服务

TableReadService

GetRow

读取单行。 Proto
调用
响应

BatchGetRows

一次读取多个主键。 Proto
调用

FilterRows

按条件字符串筛选,支持排序与分页。 Proto
调用

TableWriteService

UpsertRows

请求使用自描述的 WriteRow map,因此只更新请求中出现的列(部分更新)。可选 condition 支持 UPDATE_IF_SMALLER / UPDATE_IF_LARGER。 Proto
调用
响应

DeleteRows

调用

TableScanService

Scan(服务端流式)

Proto
调用

Block 表服务

BlockReadService

GetState

按区块锚点读取状态快照。current_block 注入 height ≤ 目标高度;省略时读取最新。 Proto
调用

BlockWriteService

UpsertBlock

Proto
调用

BlockSubscribeService

Subscribe(服务端流式)

Proto
调用

Time 表服务

TimeReadService — GetValue

Proto
调用

TimeWriteService — UpsertTimeRows

Proto
调用
时间桶对齐(把 17:04:35 进位到 17:05:00 桶)发生在 SDK 侧,因此直接 gRPC 调用会原样接收你传入的 time_at。

批量写服务 — BatchWriteService

InitWriteJob

串联示例

一条完整的”读一行”调用:

相关阅读