我用Play Framework实现了一个服务器应用程序。
我使用SBT Native Packager为不同的操作系统(Linux,Windows,Mac OS X)构建了本地软件包。
此应用程序需要NoSQL数据库。特别是,我正在使用MongoDB。有没有办法将MongoDB二进制文件/软件包嵌入本机软件包中?这是最佳做法吗?还是建议您使用两个不同的软件包安装MongoDB和我的Play应用程序?
如果不可能/建议将MongoDB嵌入程序包中,您是否建议使用另一个DBMS(例如Nitrite Database)?谢谢
答案 0 :(得分:1)
这并不是真正的最佳实践。 Play嵌入了H2内存数据库,但这仅用于开发(因为它比读写磁盘的速度更快)。
您真的想让您的Mongo(或您决定使用的任何其他数据存储)实例在不同的进程中运行,并与Play应用程序分开打包,部署,停止和启动。
您可能会想出如何将其与Play应用程序打包,然后在应用程序启动期间运行一些脚本来设置数据库并加载-dbpath
中的任何现有数据,即。每当您重新部署/重新启动应用程序时。但是,每次重新部署代码更改时,您都必须停止/重新部署Mongo二进制文件。您可能会在一年中多次更新应用程序,但不太可能希望经常更新Mongo二进制文件。我可以继续,但是不要这样做。最佳做法是与应用程序分开管理数据存储。