春季多租户Web服务:Postgres vs MongoDB

时间:2019-05-21 15:56:57

标签: java mongodb postgresql spring-boot jpa

我想使用 spring 创建一个简单的项目,以控制具有不同环境的某些客户的状态。因此,一个客户可以有两个环境(开发环境和生产环境),而其他人可能有一个,两个或三个。

基本思想是我想使用带有以下接口的spring创建一个Web Service: localhost:8080/customer1/environment1/status customer1 environment1 中提取状态数据。

我有两个选择:

  1. 使用 MongoDB ,其中每个客户都有一个数据库,每个环境都有一个集合,并且在状态文档中。我发现了以下问题:

    • 我在网上找到了很多解决方案,这些解决方案是针对Spring的早期版本(我正在使用Spring 5)的

    • 此外,我不确定如何实现动态集合(我的意思是,如果我向localhost:8080/customer2/environment2/status发出请求,我不仅要更改数据库,还希望动态更改集合)< / p>

  2. 使用 Postgres ,每个客户使用一个架构,每个环境使用一个表(所有表的结构相同)

    • 问题在于表名可以不同(生产,开发,测试等),所以我应该在Spring中实现动态表名(我不确定是否可行)

我一直在寻找一个简单的解决方案(最初我以为这很简单,但看起来似乎并不容易)

  • 您认为什么是最好和最简单的解决方案: MongoDB Postgres

  • 您能否提供重现它的基本步骤,或者提供一个Github存储库,其中包含我可以用作参考的代码?

PS:不需要额外的安全保护,因为它将是一项内部服务,因此客户数据的位置无关紧要:可以位于同一数据库中,也可以位于不同数据库中

1 个答案:

答案 0 :(得分:0)

首先,我认为您对数据库的选择应更多地取决于哪个优点或缺点给您一个数据库带来的优势。其次,我不认为每个用户使用数据库是一个好主意,想象一下当您拥有5000个用户时会发生什么,管理如此大量的数据库或每次在代码中不断更改数据库都是一件痛苦的事情。我建议您首先尝试在单个数据库中获得您的需求的压缩数据库模型,然后在那之上,您可以工作并选择最适合自己的数据库。

希望对您有帮助!