我一直在寻找在版本控制下获取数据库模式的选项.似乎Ruby人员已经获得了Rails迁移,并且.NET人员有一些选项(例如this,this和this).Perl怎么样?
虽然它提到了DBIX :: Migration :: Directories,但我在PerlMonks 上看到了这个线程并没有多少.有人真的在使用这个模块或其他模块吗?或者您是否推出自己的数据库迁移解决方案?
无偿的细节:
我们大多数情况下不使用DBIx :: Class
我们使用MySQL
我们使用SVN
Ovid.. 7
在工作中,我们使用DBIx :: Migration的修改版本(它有一些限制,例如不超过10次迁移).然后,您具有从数据库转储的核心模式,并且当版本号过低时,您将使用迁移模式目录中的迁移来升级数据库.
我也强烈推荐数据库重构书.除此之外,它还将为您提供出色的安全管理技术,如果您需要回滚,则不会丢失数据(例如,当您删除您认为不需要的列时).
为了帮助它建议的自动弃用计划,我编写了Devel :: Deprecate,这样您就不需要记住何时进行弃用.您的代码会为您大声抱怨(并且仅在测试中,而不是在生产中).
重要提示:您将定期发现您使用此技术应用了这么多数据库迁移级别,有时您需要"提升"最小基本迁移,因为重建数据库需要很长时间.只需在所需的迁移级别进行数据库的新转储,并删除小于或等于该级别的所有迁移.
更新:快进几年,今天我推荐 sqitch.它是从头开始设计的,用于处理将数据库置于版本控制之下的情况,而无需将您与特定的编程语言或VCS联系起来.
在工作中,我们使用DBIx :: Migration的修改版本(它有一些限制,例如不超过10次迁移).然后,您具有从数据库转储的核心模式,并且当版本号过低时,您将使用迁移模式目录中的迁移来升级数据库.
我也强烈推荐数据库重构书.除此之外,它还将为您提供出色的安全管理技术,如果您需要回滚,则不会丢失数据(例如,当您删除您认为不需要的列时).
为了帮助它建议的自动弃用计划,我编写了Devel :: Deprecate,这样您就不需要记住何时进行弃用.您的代码会为您大声抱怨(并且仅在测试中,而不是在生产中).
重要提示:您将定期发现您使用此技术应用了这么多数据库迁移级别,有时您需要"提升"最小基本迁移,因为重建数据库需要很长时间.只需在所需的迁移级别进行数据库的新转储,并删除小于或等于该级别的所有迁移.
更新:快进几年,今天我推荐 sqitch.它是从头开始设计的,用于处理将数据库置于版本控制之下的情况,而无需将您与特定的编程语言或VCS联系起来.
一个非常有趣的项目仍然可能有点年轻可靠依赖的是Adam Kennedy的ORLite :: Migrate,它从Rails迁移中获取灵感.他在use.perl.org上写了一篇关于他的计划的非常有趣的期刊,我希望将来能够关注它.
看来这个软件包目前只适用于SQLite,但我认为Adam计划在未来将其构建为更加数据库不可知.