我想使用spring创建一个简单的项目,以控制具有不同环境的某些客户的状态。因此,一个客户可以有两个环境(开发环境和生产环境),而其他人可能有一个,两个或三个。
基本思想是我想使用带有以下接口的spring创建一个Web Service:localhost:8080/customer1/environment1/status
从customer1和environment1提取状态数据。
我有两个选择:
使用MongoDB,每个客户都有一个数据库,每个环境都有一个集合,并且在状态文档中。我发现以下问题:
我在网上找到了许多解决方案,这些解决方案是针对Spring的早期版本的(我正在使用Spring 5)
另外,我不确定如何实现动态集合(我的意思是,如果我向localhost:8080/customer2/environment2/status
发出请求,我不仅要更改数据库,还希望动态更改集合)
使用Postgres,使用每个客户的架构和使用每个环境的表(所有表将具有相同的结构)
问题是表名可以不同(生产,开发,测试等),所以我应该在Spring中实现动态表名(我不确定是否可以)
我一直在搜索几天以寻求一个简单的解决方案(起初我认为这很容易,但是看起来并不那么容易)
您认为哪种方法最好,更简单:MongoDB或Postgres?
您能提供重现它的基本步骤,还是提供一个我可以用作参考的代码的Github存储库?
PS:不需要额外的安全性,因为它将是内部服务,因此客户数据的位置无关紧要:可以位于同一数据库中,也可以位于不同数据库中
最佳答案
首先,我认为您对数据库的选择应更多地取决于哪个优点或缺点给您一个数据库带来的优势。其次,我不认为每个用户使用数据库是一个好主意,想象一下当您拥有5000个用户时会发生什么,管理如此大量的数据库或每次在代码中不断更改数据库都是一件痛苦的事情。我建议您首先尝试在单个数据库中获得您的需求的压缩数据库模型,然后在那之上,您可以工作并选择最适合自己的数据库。
希望对您有所帮助!