应用开发工作流中的数据库迁移与测试实践
1. 数据迁移概述
在应用开发中,使用数据库存储状态的应用与特定的数据库模式紧密相关。随着应用的积极开发和领域模型的不断细化与重构,模型最终会要求数据库模式发生改变。新添加的模型类或属性需要在数据库中持久化,而重构或移除的类和属性也需要在数据库中进行迁移,以确保模式的一致性。
然而,数据迁移比代码更改更为困难。无状态的应用可以简单地用包含新功能的新版本替换,而包含应用状态的数据库在模式更改时需要谨慎迁移状态。这通常通过迁移脚本来实现,关系型数据库支持在保持数据完整的情况下更改表结构。这些脚本在软件新版本部署之前执行,以确保数据库模式与应用匹配。
在使用零停机方法部署应用时,需要注意滚动更新会使环境中至少有一个活动实例在运行,这会导致新旧软件版本在短时间内同时活跃。编排过程应确保应用能够优雅地启动和关闭,让正在处理的请求完成工作。连接到中央数据库实例的应用会导致多个版本的应用同时访问数据库,这就要求应用支持所谓的 N - 1 兼容性,即当前应用版本需要分别与相同数据库模式版本加一和减一的版本兼容。
为了支持 N - 1 兼容性,滚动更新方法需要同时部署新的应用版本并更新数据库模式,确保版本差异不超过一个版本。这意味着相应的数据库迁移应在应用部署之前执行,数据库模式和应用都应以小步骤进行迁移,而不是跳跃式迁移。但这种方法并非易事,需要进行一定的规划和谨慎操作,特别是应用版本回滚需要特别关注。
2. 数据库结构操作
2.1 添加数据库结构
向数据库模式添加表或表列相对简单。新表或列不会与旧版本的应用冲突,因为旧版本应用对它们一无所知。由新领域实体产生的新表可以
超级会员免费看
订阅专栏 解锁全文
1179

被折叠的 条评论
为什么被折叠?



