happytails.ai
简体中文

Avro 架构兼容性检查器

检查新 Avro 架构能否继续读取旧架构写入的数据,或反向检查。所有导致不兼容的字段、类型和枚举符号都会连同路径列出。

每个 Avro 架构以 JSON 格式提交,最多 1,000,000 个字符;最多含 50,000 个 JSON 值和 64 层嵌套。传递模式最多可输入 50 个更早版本。检查在浏览器后台工作线程中运行。可下载 JSON 报告和问题 CSV 列表。 以 JSON 格式提供写入器架构;传递模式则提供 {"versions":[...]},按从最旧到最新排列早期架构。 最多 1,000,000 个字符。 运行前请检查设置。

处理结果

报告问题或分享想法。

Avro 架构兼容性检查器
  1. 在主输入框中粘贴较早版本的 Avro 架构;传递模式请输入 {"versions":[...]}。
  2. 将新架构粘贴到 New schema 字段。
  3. 选择向后、向前或完全兼容性。
  4. 运行检查并下载 JSON 报告或问题 CSV 列表。

使用须知

每个 Avro 架构以 JSON 格式提交,最多 1,000,000 个字符;最多含 50,000 个 JSON 值和 64 层嵌套。传递模式最多可输入 50 个更早版本。检查在浏览器后台工作线程中运行。可下载 JSON 报告和问题 CSV 列表。

模式

向后兼容表示新架构可以读取由旧架构写入的数据,这是使用方升级所需的兼容性。向前兼容表示旧架构可以读取由新架构写入的数据。完全兼容会同时检查两者。传递模式会按从最旧到最新的顺序,将新架构与列出的每个早期版本进行检查,而不只是与最新版本检查。

解析规则

检查遵循 Avro 1.11 规范中的 Schema Resolution 部分:int 可提升为 long、float 或 double;long 可提升为 float 或 double;float 可提升为 double;string 与 bytes 可互相提升。记录按完整名称、未限定名称或读取器别名匹配。读取器有而写入器没有的字段必须有有效默认值。读取器枚举必须包含写入器的每个符号,除非它有默认值。写入器联合中的每个分支都必须能由读取器解析。

检查的局限

此检查验证 Avro 架构解析规则,而不是特定架构注册表的额外规则。有效的 decimal 逻辑类型在 bytes 和 fixed 两种编码中都必须具有相同的精度和 scale。未知或无效的逻辑类型按底层 Avro 类型处理。联合默认值会根据第一个分支检查;嵌套默认值会递归验证。

接下来可以做什么