在MongoDB中,用户和使用数据应该在不同的集合中吗?

时间:2015-04-23 19:31:29

标签: mongodb

我将跟踪我的产品用户的使用数据(点击次数,电子邮件等)。我正在使用MongoDB,我想知道我是否甚至需要一个单独的使用数据集合。为什么不使用嵌入式文档继续将数据添加到用户文档中?

1 个答案:

答案 0 :(得分:1)

  

为什么不使用嵌入式文档继续将数据添加到用户文档中?

  1. 这将从相对不安全的代码部分写入非常敏感的集合,从而耦合不应该耦合的代码部分
  2. 它会在大多数读取的集合上触发大量写入,严重增加碎片
  3. 此类数据(点击次数,电子邮件,网页浏览量等)的分布非常广泛,即一些用户大多数处于非活动状态,其他用户处于高度活跃状态,因此文档的大小将大量传播并可能超过最大值文件大小 3A。出于同样的原因,攻击者可以淹没您的用户集合
  4. 此外,这会减慢提取用户的速度,因为需要提取更多数据。即使使用投影,数据库仍然必须从磁盘或RAM中读取数据
  5. 简而言之:您可以为非功能性要求较低的小型系统执行此操作,但我不建议将其用于任何严重的问题。