知识卡片
用适应度函数替代原生数据库机制
内容
从单一关系数据库迁移到微服务的多数据库架构时,数据团队原本依赖的引用完整性、存储过程这些数据库原生机制不能直接带过去。做法是把同样的诉求转译成适应度函数:用事件驱动方式广播删除操作、让相关服务自行清理引用,替代外键约束的即时性保证;把存储过程里的行为搬进应用代码,用扩展/收缩模式和适应度函数确保迁移完成后再删除旧过程。这不是放弃数据完整性,而是换一套跨服务、跨技术栈也能生效的实现方式。
参考来源
- 位置:《演进式架构(原书第2版)》第6章《演进式数据》「引用完整性」及「存储过程」两小节(源文件:_epub-src/EPUB/xhtml/chapter10.xhtml)
- 结论依据:原文明确用事件驱动数据同步替代引用完整性的外键约束,以及用扩展/收缩模式把存储过程行为迁移到应用代码,直接支持卡片论点。
- 原始内容:"架构师必须编写适应度函数以确保,例如,如果某个特定项目被信息所有者删除了,那么这种删除会传播到可能仍然引用已删除实体的其他服务。事件驱动架构中有许多模式可以处理这类后台任务……架构师可以使用相同的扩展/收缩模式将当前存储在存储过程中的行为提取到应用程序代码中"