想象一个运行大型层次数据集的程序。该程序将每个新的此类数据集存储在专用表中。根据数据集中的数据类型创建表。好吧,没什么不寻常的。这是一个微不足道的情况。但是我如何在Play 2.0中进行这种安排,其中演化范式是规则的?我只是无法开始考虑它。
更新
事实证明,没有简单的方法。好。圆形的方式。是否可以:
1)让程序自己编写evolutions文件并自动应用它们? Play的哲学会不会引起一些失真?
2)在另一个线程中使用另一个数据库系统而不使用Play的固有数据库功能?这会伤害多少?
更新2
我正在阅读MongoDB Casbah文档,我非常喜欢它。我打算在Play应用程序中使用它。是否有通过Casbah与Play使用MongoDB的反对证据?
答案 0 :(得分:1)
这是个好问题。不幸的是,没有出色的答案。
一般来说,进化是好的,当你在小组工作时也是如此。在这种情况下,您应该切换到手动演进(不是由Ebean生成的,它们在当前状态下对您的数据是危险的),并且只需使用create语句将初始DDL尽可能大。
在下一个演变中,您可以创建新表或更改现有表,但为了上帝的缘故,不要尝试创建现有表:)
我曾(或仍在)考虑的其他方法是使用Ebean的自动生成的DDL(它总是假设您的数据库为空)来生成带有一些SQL模式迁移工具(即mybatis)的差异模式,但不幸的是,这是额外的努力需要。
当我不确定正确的进化语法时,我有时会使用的最后一件事是小型测试场应用程序,您可以在其中添加类似的模型并观察Ebean的插件将如何威胁它们。不幸的是,即使这个解决方案也不会产生适当的改变,但它比在主应用程序上测试更好。
答案 1 :(得分:0)
嗯,经过一些实验,我得出结论使用MongoDB(实际上,我必须从各种面向文档的DBMS中进行选择,并决定从MongoDB开始)。我已经建立了一个MongoDB服务器,将它的Java驱动程序,Casbah(驱动程序的Scala-wrapper)和所有必要的依赖项合并到我的项目中,一切正常。无论如何都不需要SQL或演进范例。
而且我没有使用Play中与数据库一起工作的任何部分(配置文件,anorm,还有其他什么),只是忽略了它,并且做了所有的Mongo。
所有作品都很精细!