Skip to main content

写入与事件订阅

BlockDB 把写入分为实时写与大批量写两类,并在此基础上提供区块事件的订阅能力。

实时写

实时写面向常规规模的在线写入,提供近实时的低延迟写入。SDK 提供以下接口: 适合持续流入的在线数据写入场景。

大批量写

当需要写入海量数据(例如历史回填)时,使用大批量写。它的特点是:
  • 一次性提交百万行级别的数据异步写入任务。
  • 提交吞吐无上限:数据先通过对象存储中转,不占用实时的网络与内存通路,因此你可以连续、高吞吐地提交任务。
  • 实际落库速度快:大规模批量写入的底层速度可达数十万行/秒,甚至百万行/秒,具体取决于表类型与底层数据库规模。
批量写统一走 BatchWriteService gRPC 服务。在 InitWriteJob 请求中,通过 strategy 字段指定目标表类型:

实时写 vs 大批量写

所有写接口返回统一的 WriteResult(affectedRows 受影响行数 + jobID 任务 ID)。

区块订阅事件(BlockSubscribeEvent)

每次 BlockDB 写入 Block 表成功,会自动发布一个区块订阅事件(BlockSubscribeEvent)。根据 subscribe 的协议定义,事件字段为: 事件通过 Kafka 事件源分发,订阅方通过 Subscribe 服务以流式方式接收。

事件订阅闭环

通过事件订阅机制(Subscribe API),BlockDB 实现了”数据生产 → 事件通知 → 下游消费”的闭环,将业务逻辑与区块链的”心跳”(出块频率)完全同步:
这个闭环让业务代码像”虚拟智能合约”一样运行在数据库的变更流上。

从表到表的 ETL 流水线

用户无需订阅最原始的 trace 和 event 区块数据表,可以从平台任意已有的特定主题 Block 表开始订阅加工,把订阅变成 ETL 流水线,简化数据处理。

多表对齐订阅

当业务逻辑强依赖多张并行计算的上游表时,需要保证各表在目标高度均已写入完毕才能安全消费。BlockDB 内置 Aligned 状态机自动处理跨表乱序事件流,参见多表区块高度对齐订阅。

BlockDB 模式优势