我正在用MongoDb(64位版本)设计一个系统来处理大量用户(约10万个),每个用户将拥有大量数据(约100万条记录).

设计的最佳策略是什么?

  1. 在单个集合中转储所有记录

  2. for each 用户创建一个集合

  3. 每个用户都有一个数据库.

非常感谢,

推荐答案

所以你看到的是1000亿条记录(100万条记录*100000个用户).

处理大量数据的首选方法是创建一个分片集群,将数据拆分到多个服务器上,这些服务器通过mongo客户端作为单个逻辑单元呈现.

因此,你的问题的答案是把你所有的记录放在一个碎片集合中.

所需碎片的数量和集群的配置与数据的大小以及读写的数量和分布等其他因素有关.这些问题的答案可能非常特定于您的特殊情况,因此我不会试图猜测它们.

我可能会首先决定你有多少时间和机器可以在这么多机器的集群上设置和测试系统.根据其性能,您可以决定集群中是否需要更多或更少的碎片

Mongodb相关问答推荐

在出现错误时忽略mongodb事务回滚是好做法吗

Spring数据MongoDB(聚合)

MongoDB 在一个聚合中包含多个组

从MongoDB迁移到PostgreSQL:为PostgreSQL编写聚合管道查询

Mongodb,在一个查询中用正则表达式更新部分字符串

从 mongodb Golang 检索时判断零等效时间.时间

如果 mongoDB 服务器正在运行,如何从驱动程序判断

在 mongoDB 中存储 java 8 LocalDate

你如何在 Kubernetes 上设置 Mongo 副本集?

在 MongoDB 中创建简短、唯一的对象 ID

MongoDB 中 cursor.count() 和 cursor.size() 之间的区别

使用 MongoDB 进行分页

Mongoose 与 mongodb 如何返回刚刚保存的对象?

将 mongoose 字符串模式类型默认值设为空白并使该字段可选

python mongodb正则表达式:忽略大小写

为什么不建议在 MongoDB 中使用服务器端存储函数?

spring-data-mongo - 可选查询参数?

错误:Could not connect to any servers in your MongoDB Atlas cluster

在 MongoDB 中快速搜索数十亿个小文档的策略

AsQueryable 方法是否在新的 Mongodb C# 驱动程序 2.0rc 中离开?