播放迁移的替代方案

8

我即将开始一个新项目,将使用Play! 2框架和Scala编程语言,可能会使用Squeryl作为ORM(但如果Slick及时准备好了的话,也可以使用它)。

现在,Play!有一个升级数据库的功能,使用迁移。不幸的是,这些迁移是用SQL编写的。这不仅不方便(我希望能够用Scala编写迁移),而且存在两个问题:

  • 首先,我需要自己编写迁移。我习惯于使用South,它能够通过查看我的模型的当前和以前的定义来推断模式迁移;
  • 其次,处理数据迁移会非常麻烦。人们可能需要以编程方式修改数据,这甚至在纯SQL中也无法实现。

因此,我正在寻找替代方案。我没有找到任何Scala ORM的迁移工具,能够自动生成模式迁移,请问是否有这样的工具?

我能找到的最好的工具是Scala migrations。有没有办法让Play!自动使用它来代替自己的迁移工具?

3个回答

6
另一个选择是Flyway,但它不能解决你的集成问题。为此,你可以像使用标准Play! evolutions一样实现一个插件,或者你可以使用全局对象在应用程序启动时开始迁移。

5
Evolutions在Play2中作为插件实现。你可以查看它的实现并按照相同的方式创建自己的插件。据我所见,没有一种简单的方法可以仅仅替换另一个实现。
另外一个值得参考的工具是Liquibase。它是用Java实现的,因此在Scala中使用应该很容易。

5

我推荐使用Liquibase。Liquibase是一个开源的、与数据库无关的库,用于跟踪、管理和应用数据库变更。它基于一个简单的前提:所有的数据库变更都以人类可读但可追踪的形式存储,并被检入源代码控制。Liquibase可以用于Java和Scala语言。Liquibase的优点在于您可以使用XML、SQL或两者的组合来满足您的数据库迁移需求。它易于设置和使用,并且有非常详细的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接