首页 > 解决方案 > Play Framework 应用程序和嵌入式数据库打包

问题描述

我用 Play Framework 实现了一个服务器应用程序。我使用SBT Native Packager为不同的操作系统(Linux、Windows、Mac OS X)构建了原生包。
此应用程序需要 NoSQL 数据库。特别是,我正在使用 MongoDB。有没有办法在我的本机包中嵌入 MongoDB 二进制/包?这是最佳做法吗?或者您是否建议使用两个不同的软件包安装 MongoDB 和我的 Play 应用程序?
如果不可能/不建议将 MongoDB 嵌入包中,您是否建议使用另一个 DBMS(例如Nitrite Database)?谢谢

标签: mongodbplayframeworkpackagingembedded-databasesbt-native-packager

解决方案


这并不是真正的最佳做法。Play 嵌入了 H2 内存数据库,但这仅用于开发(因为它也比读取/写入磁盘的速度更快)。

您真的希望您的 Mongo(或您决定使用的任何其他数据存储)实例在不同的进程中运行,并与您的 Play 应用程序分开打包、部署、停止和启动。

您可能会想出如何将它与您的 Play 应用程序打包,然后在应用程序启动期间运行一些脚本来设置数据库并在-dbpathie 中加载任何现有数据。每当您重新部署/重新启动应用程序时。但是,每次重新部署代码更改时,您都必须停止/重新部署 Mongo 二进制文件。您可能会在一年内多次更新您的应用程序,但您不太可能希望经常更新您的 Mongo 二进制文件。我可以继续,但不要这样做。最好将数据存储与应用程序分开管理。


推荐阅读