如果在部署应用程序后数据发生更改,您如何使数据库保持最新?
我的意思是,你可以添加或删除表,这是一个简单的任务.改变现有的表也很简单.但是如果你经常改变结构,你如何控制它呢?
我曾经在数据库中保留一个包含当前数据库版本的表.然后每次升级都是一个完成其工作的sql文件 – 创建新表,添加列或移动数据.文件是以这些版本命名的 – 所以如果我的升级脚本获得了数据库版本10,它只是将11.sql中的所有文件都带到N.sql并同时应用它们中的每一个递增数据库版本号.
这似乎工作正常,但我想知道 – 你的策略是什么?
如果我在一个“补丁”中对一个表进行规范化,那么这个系统似乎并不完美,之后我再次将其归一化为无论什么原因.然后它完成了两次.
但是,每次我改变一些东西时写一个完整的升级脚本似乎很痛苦,容易出错.至少更多这样的原子变化.
此外,我可以预期不同的客户可以随时运行不同的数据库版本,所以我真的应该有办法从任何一点上升.