良好实践的Propel迁移工作流程是什么样的?

时间:2015-02-06 22:12:38

标签: php database-migration propel

我是Propel ORM迁移和一般迁移的新手,我对开发和部署工作流如何特别适用于此库感兴趣。我有当前稳定版(1.7.x)的主人,因为在我看来有一些技术限制会影响人们选择的工作流程(Propel 2中的情况可能会有所不同)。

我正在开发一种新产品,我希望它有四种环境:测试,本地,分段和实时。正如人们所期望的那样,这些在runtime-conf.xml中定义。在今天之前,我通过运行命令om(生成类),sql(生成SQL),insert-sql(init数据库)来进行数据库更改。当然,这会擦除所有内容,因此我现在已切换到迁移:diff以生成更改类,migrate以按顺序应用所有挂起的迁移。

现在,如果您只有一个构建连接,则可以使用build.properties。但是,我(将)有四个,他们将有不同的主机名和密码。当Propel抱怨我没有buildtime-conf.xml时,Migration docs没有多大帮助,但有一个简短的说明hidden elsewhere来描述这种格式。所以我补充说,只是发现多个连接全部已迁移(而不是使用指定的连接,就像运行时连接一样)。

因此我使用了Phing控制台选项来指定几个构建时文件中的一个,这感觉就像一个kludge(虽然我后来发现this answer暗示同样的事情)。这是人们通常在每个连接的基础上进行迁移吗?

我也担心迁移类的数量可能会增加。在进行部署时,这可能会运行数百次更改,从而使新构建变得更慢。还需要一组冻结的生成的SQL文件,所以我想一旦设置了迁移,就不应该重新生成这些文件了吗?

定期将生成的SQL文件刷新到已知点并相应地删除一些迁移,或者是对整个工作迁移(几乎整个开发历史记录)的保证是值得的,这是一种好的做法。部署较慢?

最后,迁移对我来说感觉有点脆弱,因为一个人的部分失败会使数据库处于中途房屋状态。暂存数据库是否足以缓解这种情况(即,在暂存时运行迁移,如果它们在那里工作,那么它对于实时来说是否足够好)?

0 个答案:

没有答案