Mongodb 存储数据的最佳实践

Mongodb best practice to store data

我已经阅读了一些 mongo 文档,但无法找到问题的答案。 我正在开发一个应用程序,我想在其中存储 Json 文档。我已经阅读了有关索引等的内容,但还有一个问题留给我。 我要存储的数据包含不需要客户端整体加载的信息。所以我计划规范化数据并将我的大 json 分成较小的数据,并通过单独的休息端点提供它们。 不是 我在考虑为每组 json 创建一个不同的 collection。 这样做的原因是,与将所有内容存储在一个 collection 中的选项相比,我想减少搜索 space。 所以每个用户将有 5 collections,我预计有 100 万用户。 这在性能和扩展方面是一个好的解决方案吗? 查询多个 collection 是否比查询一个更昂贵?

最近在做一个项目时,我和我的团队遇到了这样的情况,我们有一个庞大的数据集,并且在未来,它应该会迅速增加。

我们已经 MongoDB 随着数据的增长性能开始下降。原因主要是由于多个集合,我们必须有查找才能加入集合并获取数据。

有趣的是,我们映射两个集合的方式在性能中起着非常重要的作用。

我们有一个初始结构: 集合 A { “_ID” : ..., "info":[ // 其他集合的对象id列表 ] }

字段信息用于与集合 B 的“_id”映射。

由于mongo有_id作为唯一标识,无论我们有什么索引,它都会扫描Collection B的所有文档,如果B是GBS或TBS,则需要很长时间才能找到一个匹配文档。

因此我们所做的更改为: 从集合 A 中删除了对象 id 数组,并在集合 B 中添加了新字段,该字段将具有集合 A 中文档的 _id。 长话短说,我们颠倒了已有的映射。

现在将索引应用于查询中使用的集合 B 的字段。这大大提高了性能。

所以拥有多个集合也不是坏事,在集合之间执行适当的映射,MongoDB可以提供出色的性能。您还可以使用分片来进一步增强它。