Play Framework 应用程序和嵌入式数据库打包

Posted

技术标签:

【中文标题】Play Framework 应用程序和嵌入式数据库打包【英文标题】:Play Framework Application and embedded Database packaging 【发布时间】:2018-12-29 07:19:46 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于Play Framework 应用程序和嵌入式数据库打包的主要内容,如果未能解决你的问题,请参考以下文章

Play framework 2.0.1 不断尝试进化错误的数据库类型

Play Framework 提供 HTTPS 内容

Play Framework 2.3 - 无法连接到远程数据库 Linux (Play) -> Win 7 (MySQL)

如何使用 Play Framework 的 SBT 下载 Maxmind 数据库

可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?

我需要在 Play Framework 中管理数据库连接池,还是 Play 为我做这件事?