Notebooks 任务开发、调度与管控
在 Chaintable 生态中,Notebook 不仅仅是一个交互式探索代码的沙箱,更是生产级区块链 ETL 任务、流处理状态机和时序指标重算的第一等公民(First-Class Citizen)。 通过平台统一的 Web UI,你可以直接编写基于 function和blockx sdk 的清洗逻辑,并将其一键发布为具备高可用保障的分布式调度任务。1. 创建和管理 Notebook
本节介绍如何通过平台简单的 UI 创建、配置和管理你的首个 Notebook 任务,并将其与底层计算资源安全绑定。场景描述
开发者登录 Chaintable 控制台后,可以在“Notebook”板块一键新建工作区。每个 Notebook 在初始化时都会绑定一个独立的 BlockX Serverless 轻量级运行时实例。你可以在这里直接调用from blockdb import Table, BlockTable 引入全域 SDK 接口。
平台提供完整的版本控制能力。每次你点击 Web UI 的 “Save Version” 或触发代码变更时,底层都会通过 Git 逻辑对当前 Notebook 里面的 Code Cells、环境变量配置进行快照式归档。
TODO 待补充操作与开发计划
- UI 截图与交互步骤补全:待前端控制台 alpha.2 版本发布后,在此处补充“新建工作区 -> 绑定数据源 -> 分配计算节点”的完整 UI 交互截图。
- 底层环境持久化配置 (Requirements.txt):目前 Notebook 默认内置了
blockdb-py与pandas。未来需支持在 UI 上直接声明第三方 pip 依赖包,并在后台容器启动时自动拉取。 - 企业级 RBAC 权限隔离:补充不同数据组成员(如 Architect、Data Engineer、Viewer)针对特定隔离空间下 Notebook 的读写、编辑与发布权限审批流说明。
2. Notebook 的触发类型与调度流
介绍永续执行(Streaming)、定时任务(Cron)和手动执行(Manual)的使用场景,以及它们在底层数据库引擎中触发的不同行为。场景描述
当一个 Notebook 的清洗逻辑经过调试可以投产时,你需要为其配置触发策略。Chaintable 目前支持三种硬核特化调度模式:- 永续执行 (Streaming / Continuous):
- 适用场景:高频实时链上数据流解析(如实时监听 Transfer 事件)。
- 运行机制:任务启动后常驻后台。它会利用
Aligned状态机或Subscribe组件,以无休止的for block in aligned.listen():心跳循环死锁并消费最新的实时区块变更。
- 定时任务 (Cron / Scheduled):
- 适用场景:TimeTable 数据的多尺度 resampling 重算、每日/每小时的 Gas 消耗统计、跨域数据对账。
- 运行机制:依靠平台内置的分布式 Cron 调度器,时间到达时按物理挂钟时间自动唤醒轻量级容器执行。
- 手动执行 (Manual / On-Demand):
- 适用场景:历史大范围高度区块数据分布式回填(Historical Backfill)、临时数据补录、Ad-hoc 报表分析。
3. Notebook 实例运维、监控与区块级追溯
观察每个 Block 自身逻辑的处理情况,实时复现和定位出错区块高度的执行过程。场景描述
对于区块链 ETL 来说,最痛苦的不是系统挂掉,而是遇到异常数据、智能合约极端边界情况(Edge Case)导致的代码中断。Chaintable 为 Notebook 提供了独特的“区块级可观测性”。 在运维面板中,你可以清晰地观察到任务的 Lag(数据消费延迟水位线)。一旦任务由于未捕获异常而崩溃,监控系统不仅会捕捉到标准的 Python Traceback 堆栈,还会自动锁定导致报错的精确区块链高度(Block Height)与块哈希(Block Hash)。TODO 待补充操作与开发计划
- 沙箱 Debug 熔断模式联动说明:补充当生产环境的运行任务发生异常时,运维人员如何一键复制该 Notebook 并在本地开启
BLOCKDB_DEBUG=1环境变预演,在不污染物理 TiDB 底层的前提下完美复现出错区块。 - Metrics 指标看板对接:补充基于
[metric]配置项下lag_threshold = "30m"的报警触发链路,即消费延迟超过 30 分钟时,如何通过 Webhook 自动推送通知给 Slack 或 PagerDuty。 - 自动回滚(Reorg Rollback)可视化:在监控 UI 上,如何直观展现当区块链发生分叉重组(Reorg)时,Notebook 流任务物理调用影子表(Shadow Table)进行