【发布时间】:2021-01-31 14:41:14
【问题描述】:
我有一个包含数千 (100k) 个“原始事件”的纯字符串数据的原始集合。
我需要使用过滤器和多种模式来访问数据。我将知道所有模式(使用我网站上的 URL)。
从逻辑上讲,我需要将所有数据预先计算到较小的数据库中(即:mongodb 的集合)。
这种计算只会发生 ONE 次,同时将事件添加到我的大型“原始数据集合”中,用户不会要求实时计算。
将所有这些事件计算到多个小集合中是否是一种好习惯?
例子:
db.collection.rawdata :
Event 1 : UserA create a party "Group1".
Event 2 : UserA invite UserB to join "Group1".
Event 3 : UserB refuse to join "Group1".
Event 4 : UserA invite UserC to join "Group1".
Event 5 : UserC accept to join "Group1".
我会:
db.collection.rawdata (max data : 100k documents, only 1 collection).
db.collection.groupeXXX (max data per collection : 2k documents, number collection : 250).
db.collection.UserXXXXX (max data per collection : 1-500 documents, number collection : 10k)
db.collection.InvitationAccepted (max data per collection : 5k documents, only 1 collection)
db.collection.InvitationRefused (max data per collection : 5k documents, only 1 collection)
所以基本上每个用户都有一个集合,每个组都有一个集合,每个事件类型都有一个集合。当用户在我的网站上请求数据时,我只需要显示特定集合中的所有文档。
【问题讨论】:
-
我们不知道数据结构,但我认为拥有多个
groupeXXX和UserXXXXX是一个糟糕的设计。