6

我想使用 mongodb 和锂构建一个 web 服务。什么是更好的:

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

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

  • 每个客户端一个 db

系统必须是可扩展的并且必须易于部署

4

2 回答 2

4

为了提供方向,人们必须确切地了解更多关于您想要实现的目标。

但是,我会排除选项 2(多个集合),因为我没有真正看到这种方法的任何优点:您必须在运行时确定集合名称,编写查询和您可以拥有的集合数量有一个硬性限制(大约 150 万个集合,带有 2GB命名空间文件

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

这两个选项都有一个缺点,即您无法查询所有集合。但是,您总是希望能够访问一些本质上在所有客户端之间共享的集合(例如日志、统计信息等),因此您需要承担分离这些的额外负担。

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

于 2011-11-29T08:57:10.560 回答
1

我建议从一个数据库和一个集合开始。它通常更简单地管理一个数据库。将来如果您需要创建单独的数据库(以加速某些客户端),您可以转储该客户端的数据并将其放入单独的数据库服务器(或仅在单独的集合中)。当您设计应用程序的架构时,请记住此功能。所以,我的意见是Option 1。从另一个角度来看,您可以通过分片和复制来扩展一个集合。

系统必须是可扩展的并且必须易于部署

您的数据库将是可扩展的,因为您使用的是旨在扩展的 mongodb。而且您可以轻松部署数据库,因为它是无模式的。通常,您可能需要简单地将一些数据从一台服务器复制到另一台服务器。有很多方法可以做到这一点:复制收集、数据导入/导出复制数据库

于 2011-11-29T08:58:10.503 回答