我们的项目有大约20位开发人员,但我们的应用程序使用相对较少的数据库。我们收集了大约5个数据库,每个数据库都非常小,每个数据库少于20个,其中没有数据库有数百万行或任何大的数据库。管理数据库迁移:脚本vs工具
我们有表的两个选项如何随时间推移管理数据库的演变:
- 一些一种工具。目前,我们正在使用Visual Studio数据库项目,其中包含模式的当前定义,并查看参考数据库以生成diff脚本。然后,我们使用这个diff脚本使参考数据库保持最新。
- 使用版本脚本从基线构建数据库。脚本被手动放置在源代码控制中。将数据从旧列/表移动到新的任何数据迁移都将成为这些脚本的一部分。 DB中会记录一个版本,升级会在DB版本和当前版本之间运行所有脚本。
第二个选择似乎是广泛使用,我发现了一个深入讨论这里:http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx
我们有什么我们目前得到的问题是,我们没有访问过我们的Production数据库。这意味着要创建一个发布包,我们必须将生产的备份恢复到另一个位置,根据该参考数据库生成差异并将脚本提供给生产数据库团队。所以我们的产品发布与其他环境不同。
这使得运行版本脚本吸引力,因为我们在各种环境中使用相同的脚本的想法,有部署无特设工作(如手工刺的恢复参考DB)。但考虑到我们的数据库规模这么小,我觉得我们很难成为DB工具的难题。我们想要的是尽可能简单的东西,这很容易理解。
执行工具,如为这种情况的展鹏的套件意义,还是应该去版本的脚本?成本并不是一个问题,更重要的是创建一个成功之谷,其中维护和部署数据库尽可能基本和自动化。
另一个很棒的功能是有一种方法来管理版本之间的静态数据。这是红门提供或计划提供的东西吗? – joerage 2011-06-08 14:24:07
这不就是把你的静态数据更改SQL放在适当的迁移脚本中的问题吗? – 2011-06-08 19:57:50
那我一定误会了。我虽然认为迁移脚本是根据数据库模式的版本历史自动生成的。如果情况确实如此,下一步就是管理静态数据并将其包含在迁移脚本中。 – joerage 2011-06-09 00:22:45