我想使用MongoDB和锂构建Web服务。什么是更好的:

  • 将所有客户的数据存储在一个集合中(例如,一个集合交易中的多个客户的所有交易文档)

  • 创建多个集合,例如transactions_client1,transactions_client2。

  • 每个客户一个db

该系统必须是可扩展的,必须易于部署

有帮助吗?

解决方案

为了提供方向,人们将不得不更多地了解您想要实现的目标。

但是,我会排除选项2(多个集合),因为我真的没有看到这种方法的任何优点:您必须在运行时确定收集名称,编写查询和您可以拥有的收集数量很难 名称空间文件)

选项1可以帮助隔离客户端并可能提高安全性,但是在选择数据库时仍然存在编程错误的风险。但是,隔离该代码很容易。

这两个选项都有一个不可能在所有收藏中查询的缺点。但是,您始终希望访问某些在所有客户端(例如日志,统计信息等)中共享的收藏集,因此您还承担了分开这些的额外负担。

这就是为什么我 通常 选择选项1。

其他提示

我建议从一个DB和一个系列开始。通常,它更简单地管理一个数据库。将来,如果您需要创建单独的数据库(以加速某些客户端),则可以 倾倒 该客户端的数据,并将其放在单独的数据库服务器(或仅在单独的集合中)。当您设计应用程序的体系结构时,只需在脑海中掌握此功能即可。所以,我的看法是 选项1. 。从另一个角度来看,您可以通过碎片和复制来扩展一个集合。

该系统必须是可扩展的,必须易于部署

您的数据库将是可扩展的,仅仅是因为您使用的是用于扩展的MongoDB。您可以轻松地部署数据库,因为它是示意性的。通常,您可能需要简单地将一些数据从一台服务器复制到另一台服务器。有很多方法可以做: 复制集合, , 数据 进出口, 复制数据库.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top