我是 mongodb 的新手,我在 DB Schema 设计方面面临两难境地:
我应该创建一个集合还是将我的数据放入多个集合中(我想我们可以称之为这些类别)。
现在我知道有人问了很多这样的问题,但我相信我的情况有所不同,原因有两个:
- 如果我要收集很多系列,我将不得不创建大约 120 个,仅此而已。这在未来不会增长。
- 我知道我永远不需要查询或插入多个集合。我总是只需要查询一个,因为集合 X 中的文档与存储在其他集合中的任何文档都不相关。文档可能包含对数据库其他部分的引用(如 userId 等)。
所以我的问题是:这 120 个集合能否提高查询性能?在我的情况下,这是一个有用的优化吗?
还是我应该只进行单一收集+分片?
每个集合预计包含数百万个文档。如果只使用一个,它将存储数十亿个文档。
提前致谢!
- - - - 编辑:
感谢您的精彩回答。
事实上,这 120 个系列只是一个自制的限制,并不是真正的最佳选择:
集合中的数据与网络发布者有关。可能有数百万个(任何网站都可以加入)。
我想理想的情况是我可以为每个发布者创建一个集合(仅保存他们的数据)。但显然,由于 mongo 的限制,这是不可能的。
所以我想出了固定数量的集合的想法,至少以某种方式分发数据。比如:集合“A_XX”将保存名称以“A”开头的发布者的 XX 平台相关数据。等等。我们只支持其中的几个平台,所以 120 个集合应该绰绰有余。
在另一个网站上,有人建议使用许多数据库而不是许多集合。但这意味着开销,然后我将不得不使用/管理许多不同的连接。
你怎么看待这件事?有更好的解决方案吗?
抱歉,我的原始问题不够具体。
提前致谢