首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特定用例的MongoDB模式设计

特定用例的MongoDB模式设计
EN

Stack Overflow用户
提问于 2012-06-06 09:02:58
回答 1查看 202关注 0票数 2

目前我正在对我的数据模式进行建模,我不确定我的思维过程是否有意义。所以我想我可以问问这里的一些更有经验的MongoDB家伙:

假设我的应用程序每天生成最多10.000个事件文档(),。我想要访问他们基于时间的。就像:“把这三天的所有事情都告诉我!”

我在大学收集的RDBMS知识首先告诉我:“做一个事件-收集并给每个文档事件的属性‘日期’。完成。”

但后来我想到了一个想法,那就是每天为做一个!然后,我可以非常快地访问这些事件,只需调用它的协同响应集合,就可以获得一天中的所有事件。

这有道理吗?我可以拥有成百上千的收藏品而不需要提高速度/性能?

谢谢你的忠告:-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-06 09:29:51

一天10.000份文件不是很多。在一年的时间里,即365万份文件。这当然不是一个很小的收藏,但我不认为有什么意义,把他们分开。

这一具体情况的缺点是

  • 稍后很难更改查询模式。如果你突然需要精确的时间,你就有麻烦了。如果您想查找去年的所有事件,其中一些字段x设置为y,则必须查询365或366个collections.
  • Your查询模式将更加复杂,因为您必须处理不同的集合名称。此外,您需要几次往返database.
  • Internationalization非常复杂,因为“一天”不是一个明确的时间点在全球各地。另一方面,使用UTC annoying.
  • Sharding字段可以在不同的时区中进行查询,如果这是annoying.
  • Sharding,那么大量的集合可能会很乏味,使用DateTime通常是基于每个集合来执行的。如果您有许多较小的集合,则无法执行auto-sharding.

然而,使用更多的集合是可能的,尽管有limits you should understand.作为docs解释,您可以有12,000个集合w/一个索引与默认设置。更多细节请看那里。

服务器密度博客他们的方法,他们也使用a lot of collections,但他们嚼6.5亿份文件,他们声称这并没有很大的差别,性能方面。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10911177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档