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
读取单行。 ProtoBatchGetRows
一次读取多个主键。 ProtoFilterRows
按条件字符串筛选,支持排序与分页。 ProtoTableWriteService
UpsertRows
请求使用自描述的WriteRow map,因此只更新请求中出现的列(部分更新)。可选 condition 支持 UPDATE_IF_SMALLER / UPDATE_IF_LARGER。
Proto
DeleteRows
调用TableScanService
Scan(服务端流式)
ProtoBlock 表服务
BlockReadService
GetState
按区块锚点读取状态快照。current_block 注入 height ≤ 目标高度;省略时读取最新。
Proto
BlockWriteService
UpsertBlock
ProtoBlockSubscribeService
Subscribe(服务端流式)
ProtoTime 表服务
TimeReadService — GetValue
Proto
TimeWriteService — UpsertTimeRows
Proto
17:04:35 进位到 17:05:00 桶)发生在 SDK 侧,因此直接 gRPC 调用会原样接收你传入的 time_at。
批量写服务 — BatchWriteService
InitWriteJob