配合 BlockX 高并发计算
BlockDB 管存取,BlockX 管计算。当上游单块数据量大、出块频率高时,单进程顺序处理追不上出块节奏(例如 BSC 链需在几秒内处理完一个区块),此时用 BlockX 把每个区块的行全并发执行,让业务逻辑始终与出块频率同步。最典型的场景
大多数链上数据加工都是同一条链路:chain.trace.eth 这类区块 trace 表——一个区块里有成百上千条 trace,天然适合全并发计算。而这条链路实时订阅和历史区块回填用的是同一份配置、同一个函数。
用 Pipeline 串联整条链路
BlockX 的上层封装Pipeline 把「源表 → 函数 → 目标表」包装成一个对象,只暴露两个动词:
backfill(block_start, block_end):历史区块的批量回填。update():先 catch-up 把历史缺口补齐,追平后自动转入实时订阅。
triggers、同一个函数、同一个 target_table。
实时与回填共用一份配置
backfill 和 update 走的是同一套配置:
因此你只需维护一份函数和 Pipeline 配置,历史要回填多少、实时要追到哪,都由同一个对象统一处理,天然不会出现”回填和实时逻辑不一致”的问题。
底层接口(进阶)
Pipeline 是上层封装。若你需要更细粒度控制,可绕开它,直接组合底层的 BlockTableCallConfig(算什么)、BlockWriteHandler(结果写哪)、TaskBuilder(提交任务):
完整 API 与配置项请参考 BlockX 文档。这里只介绍与 BlockDB 配合的核心路径。