【问题标题】:Mongodb : Pre-compute Raw Collection to multiple (10k+) smaller collections?Mongodb:将原始集合预计算为多个(10k +)较小的集合?
【发布时间】: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)

所以基本上每个用户都有一个集合,每个组都有一个集合,每个事件类型都有一个集合。当用户在我的网站上请求数据时,我只需要显示特定集合中的所有文档。

【问题讨论】:

  • 我们不知道数据结构,但我认为拥有多个 groupeXXXUserXXXXX 是一个糟糕的设计。

标签: node.js database mongodb


【解决方案1】:

当用户在我的网站上请求数据时,我只需要显示特定集合中的所有文档。

通常像这样的想法一开始就很好,但随着应用程序变得越来越复杂并且需要额外的要求来连接各种数据点,实现这些要求变得很尴尬。

从对您正在存储的数据和正在执行的操作有意义的架构开始。如果您有特定的性能需求,请衡量您的性能并优化需要优化的方面。

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2021-09-30
    • 2012-07-15
    • 1970-01-01
    相关资源
    最近更新 更多