MongoDB历史数据存储 - 最佳实践?

时间:2012-01-25 16:54:12

标签: mongodb database nosql

假设我有一个拥有ID的用户,而且我想每天在这个用户上存储历史记录(文档),那就更好了:

  • 为每条记录创建一个新文档并搜索用户ID;或
  • 不断更新这些数据并将其嵌入到单个用户文档中,并随着时间的推移不断增长?

大多数情况下,我只想为用户检索当前文档,但所有记录都可以随时访问,而无需超长搜索/查询。

2 个答案:

答案 0 :(得分:4)

文档的大小有限。它是(从v1.8开始)16 MB。因此,如果你更新和更新,你可以简单地用完房间。嵌入。此外,mongo根据集合中的平均文档大小分配文档空间。如果你不断调整/调整大小,这可能会对性能产生负面影响。

我认为为每条记录创建新文档更加安全,如果/想要整理这些数据,则可以在map / reduce作业中进行。

答案 1 :(得分:3)

有很多变量会影响这样的决定。一个大文档似乎最明显,只要它不会增长到不实用的大型甚至不允许的大小(请注意,文档最大可以是16MB)。

每个条目使用文档也是完全可行的,只要您创建适当的索引不应导致查询速度慢。