独立校验
确定性和拒绝规则由 独立校验 核对
独立校验 自己重放两次比对状态,再逐个前缀检查已应用条数与状态计数一致,并核对“被跳过的都标了 ignorable”“拒绝之后没有任何事件被应用”。
DSH 学习 · 日志重放 01
拖动重放位置,看状态怎么从日志折叠出来。再换到含未知事件的场景:标了 ignorable 的可以跳过,必需的那条必须让加载停在它之前——悄悄忽略它,后面每条事件都建立在一个没人知道的状态上。
事件去向
一格一条事件,按序号排列。已应用、已跳过、导致拒绝和未达四种去向各有自己的字形和文字,不靠颜色单独区分。竖线是当前重放位置。
折叠后的状态
这一块完全由左边的重放位置决定。把滑块拖回去再拖回来,状态一定回到同一个值——独立校验(oracle) 会重放两次并逐字段比对。
独立校验
独立校验 自己重放两次比对状态,再逐个前缀检查已应用条数与状态计数一致,并核对“被跳过的都标了 ignorable”“拒绝之后没有任何事件被应用”。
证据边界
完整文字替代
图里的每一格,这张表都逐行给出,包括去向和原因。没有脚本或图形支持时从这里读。
| 序号 | 类型 | 可跳过 | 去向 | 原因 |
|---|
物理行布局
上游的 SQLite 会话库把连续的流式增量打包成一条物理行:信封只存首序号和首时间戳,其余时间用增量数组还原;data 不足 4096 字节直接存文本,达到阈值才进 zstd 分支。打包行的 source_event_seqs 列按「差分 + zigzag + base-128 varint」逐字节编码(输入的有序性由生产方保证),表里给的就是真实字节,可解码还原。切一下开关,看同一条流怎么落库。
| 行 | 覆盖序号 | 类型标记 | 成员数 | dt 增量数 | data 字节 | ≥4096 走压缩 | ignorable 标记 | source_event_seqs 编码 |
|---|