Schema 演化
Apache Fory™ 在兼容模式下支持 schema 演化,允许在保持兼容性的同时添加/删除字段。
启用兼容模式
import pyfory
f = pyfory.Fory(xlang=True, compatible=True)
Schema 演化示例
import pyfory
from dataclasses import dataclass
# 版本 1:原始类
@dataclass
class User:
name: str
age: int
f = pyfory.Fory(xlang=True, compatible=True)
f.register(User, typename="User")
data = f.dumps(User("Alice", 30))
# 版本 2:添加新 字段(向后兼容)
@dataclass
class User:
name: str
age: int
email: str = "unknown@example.com" # 带默认值的新字段
# 仍然 可以反序列化旧数据
user = f.loads(data)
print(user.email) # "unknown@example.com"
支持的变更
- 添加新字段:带默认值
- 删除字段: 具有额外字段的旧数据将被跳过
- 重新排序字段:字段按名称匹配,而不是位置
最佳实践
- 始终为新字段提供默认值
- 使用 typename 实现跨语言兼容性
- 在部署前测试 schema 变更
- 为团队记录 schema 版本