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