【问题标题】:MongoDb storing huge amounts of related dataMongoDb 存储海量相关数据
【发布时间】:2013-09-27 20:47:44
【问题描述】:

您好,我是 mongodb 的新手,仍在学习基础知识和结构(来自 sql 世界之后)。

我正在使用 mongo 进行一个测试项目,我在其中存储针对事件的发生。

所以我有一个事件集合(在本例中为 2000 年)。现在我想在每个事件旁边存储一个事件(在这种情况下,每个事件有 200,000 条记录)。

SQL : Events (table) (1) <- Occurrence (table) (many)

在 SQL 中,我将有一个一对多的关系来表示这一点。因此一个事件可以有很多次发生。

在 mongodb 中显示此数据的最佳方式是什么。最好有两个集合一个,事件一个发生。或者一个包含大量文档的集合。

谢谢

【问题讨论】:

  • 显示数据?文件存储时不能大于 16MB。您可以有 2 个集合(或一个包含不同类型文档的集合,没关系)。问题是您需要什么查询。
  • 目前我实际上没有任何数据,因为我正在研究如何在 mongodb 中存储如此大量的数据。你会有一个专门用于事件的集合和一个用于事件的集合吗?查询明智的是选择和一些聚合。

标签: sql mongodb database-design


【解决方案1】:

顺便说一句:几千个文档绝对不是大量数据:)

您可以将事件存储在事件文档中,如果 a) 您永远不会超过单个文档的 16MB 限制,因此每个事件不会有 那么多 发生,并且 b) 您通常需要给定事件的所有发生,因此每次需要时从数据库中提取整个文档不会浪费大量带宽。

从您的数字看来,每个事件似乎发生了大约 100 次。这很少,在这种情况下,我肯定会考虑将事件存储在事件中(假设每个事件都只是一个时间戳)。

如果您有更多的事件(数千个),和/或如果每个事件都包含大量数据,和/或您很少需要给定事件的所有事件,那么我会将它们放入单独收藏。

【讨论】:

  • 抱歉,每个事件发生 200,000 次,因此总数为 2000 * 200,000 = 400000000。感谢您的回答,回答了我的问题。我将需要一个事件和事件的集合。谢谢
  • 仍然不大,但这绝对意味着您应该单独存储出现的情况,在这种情况下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 2013-02-16
  • 2011-05-15
  • 2012-01-26
  • 2016-07-20
相关资源
最近更新 更多