每个用户的集合或用户集合

时间:2016-11-23 19:48:32

标签: mongodb

我试图弄清楚哪个是在我们的系统上为每个用户存储单个用户日志记录信息和常规元分析数据的最佳选项。

最初的想法是拥有一个“探查器”集合,每个文档都代表一个用户。这种设计的问题在于,高级用户可能会在一年或更短的时间内获得如此多的元数据和历史记录,超出文档大小限制。它还会强制文档具有更深和更复杂的结构,这可能导致查询速度变慢。

替代设计思想是为每个用户创建一个集合,每个文档将包含特定类型的分析,历史数据。这有几个好处,即速度。当需要与其他用户进行比较时(通过其他跟踪DB可解决),还会提出查询挑战。我找不到单个mongo数据库包含多少个集合的问题的明确答案。

如果它可以处理每个数据库数百万的集合,那么太棒了,否则我需要找到更好的选项来建模这些数据。我是以正确的方式来做这件事吗?

目标是保持用户互动,声誉跟踪,他们随时间变化的兴趣,他们经常使用的功能等的历史,这可以提供更丰富的体验。

1 个答案:

答案 0 :(得分:0)

创建2个集合:Users&用户互动。

有些事情完全可以存储在用户的文档中:

  • 信誉跟踪
  • 兴趣 - 用户经常光顾的常见标签(类似于堆栈溢出)
  • 功能 - 这应该是一个有限的列表项。您可以使用Key和$递增它们
另一方面,

用户交互更多的是一种日志类型结构,您可能希望将其存储为后引用并稍后进行处理。

同时查看Apache Kafka - 它是LinkedIn使用的分布式排队技术,用于执行与您所描述的类似的操作。