如果在部署应用程序后数据发生更改,您如何使数据库保持最新?
我的意思是,你可以添加或删除表,这是一个简单的任务.改变现有的表也很简单.但是如果你经常改变结构,你如何控制它呢?
我曾经在数据库中保留一个包含当前数据库版本的表.然后每次升级都是一个完成其工作的SQL文件 - 创建新表,添加列或移动数据.文件是以这些版本命名的 - 所以如果我的升级脚本获得了数据库版本10,它只是将11.sql中的所有文件都带到N.sql并同时应用它们中的每一个递增数据库版本号.
这似乎工作正常,但我想知道 - 你的策略是什么?
如果我在一个"补丁"中对一个表进行规范化,那么这个系统似乎并不完美,之后我再次将其归一化为无论什么原因.然后它完成了两次.
但是,每次我改变一些东西时写一个完整的升级脚本似乎很痛苦,容易出错.至少更多这样的原子变化.
此外,我可以预期不同的客户可以随时运行不同的数据库版本,所以我真的应该有办法从任何一点上升.
我个人使用了与你列出的相似的过程,我可以看到你关于改变的论点,但我很少做出改变,然后在生产站点上将其改回旧的方式.在测试中,是的,这种情况发生了,但就实际生产网站而言,我认为这不是什么大问题.
保留个人版本脚本,恕我直言不仅有利于部署,而且还有助于提供可以检查到源代码管理的项目.