我有我的应用程序中的以下情形:
- 1个生产服务器
- 1个测试服务器
- ñ开发计算机
对于数据库迁移,我们使用Hibernate架构更新的模式和DBUnit的为全部填充生产数据(在所有服务器/计算机)。 当架构更新完成后我产生新的模式一个新的DTD文件,所以我可以做的DBUnit的XML的全新进口。 该应用程序更新数据库在与XML文件启动(仅在开发和测试的服务器/电脑!)
当然,这种方法不是最佳的,脆弱的。 所以,我看着Liquibase和迁飞。 这两个似乎是很好的工具,但我不明白的是:我如何迁移数据? 就我而言,我倾倒生产系统每周一次的数据,并把它添加到应用程序的源代码控制作为DBUnit的XML文件,因此所有的开发商有“新鲜”的数据和测试服务器具有当前的生产数据,太。
我Liquibase和迁飞看到的问题是,有没有解决如何从数据库中的数据做自动化的比较和自动生成的迁移变化。
所以我的想法是通过以下步骤如下:
- 设置Hibernate来验证,而不是更新。
- 当需要结构性数据库变更,我将它添加到迁移脚本为主要版本
- 没有数据库插入是在迁移脚本。
- 基于新的数据库结构DBUnit的新DTD
- 产生从生产数据库中的XML DBUnit的。
另一个想法是利用飞行路线JavaMigration,并提供基于DBUnit的初始数据库转储。 对数据库中的数据的所有其他更改将迁移脚本进行处理。 但仍然存在的问题是:如何从当前的迁移脚本状态和生产数据库状态做出的diff?
这将是真棒如果有人能提供给我提示如何处理我的方案:)