【问题标题】:Data-Model with 3 tier document hierarchy in mongodbMongoDB 中具有 3 层文档层次结构的数据模型
【发布时间】:2014-06-01 07:00:13
【问题描述】:

在我的项目中,我们有一个典型的客户订阅方案,其中我们必须将详细信息存储在 mongo 中。我们已经为此场景确定了以下数据模型:

即一个客户可以有多个订阅,每个订阅可以有多个激活码。

{
  "CustomerCompany" : "abc",
  "CustomerEmail" : "abc@abc.com",
  "CustomerID" : "124598",
  "CustomerName" : "abc xyz",
  "CustomerType" : "Indivisual",
  "IsOurCustomer" : true,
  "Subscriptions" : [{
      "ContentDeliveryFormat" : "XML",
      "ContentDeliverySchedule" : "Daily",
      "ContentProviderName" : "asdf",
      "ContentType" : "CFR",
      "ContentCategory" : "CFR",
      "SubscriptionExpiryDate" : "11/19/2014 15:22:39:800 IST",
      "SubscriptionID" : "111",
      "ActivationCount" : 1,
      "Activations" : [{
          "ActivationCode" : "35f110b8-1b59-44c5-9874-adcc9d008898",
          "ActivationCodeGenDate" : "05/23/2014 15:22:59:997 IST",
          "ActivationExpiryDate" : "05/28/2014 15:22:59:997 IST",
          "ActivationDate" : null,
          "ActivationStatus" : "Unused"
        }],
      "SubscriptionStatus" : "Subscribed"
    }],
  "_id" : ObjectId("537f1a7ce96e0b34e98b8de7")
}

由于我是 mongodb 的新手,对此进行详细搜索并不能说服我在这里发布我的查询。

我有以下两个问题:

  • 按照 mongodb 中要遵循的最佳实践,建模是否正确?

  • 如果我遵循这种方法,那么使用当前数据模型,一个简单的 搜索输入为激活码的文档,结果最差 O(n3) 的案例效率。我认为如果系统扩大规模,这 方法将是一个很大的 NO-NO。

请专家对这种情况发表评论吗?

提前致谢

【问题讨论】:

    标签: performance mongodb data-modeling


    【解决方案1】:

    您需要考虑以下几点。文档一个接一个地写入磁盘。当您稍后将更多内容添加到数组中时,文档会增长 - 并且可能需要移动以适应数据添加。此外,您的数组值很可能会被索引——这意味着所有这些索引都需要随着文档的移动而更新。最后,对于您的应用程序,当您加载客户数据时,您真的需要加载所有订阅和激活密钥吗?如果答案是否定的,那么您应该考虑我所描述的整体情况,并可能将其保存在单独的集合中。文档越大,适合 RAM 的文件就越少。底线是,一旦最初创建文档,您期望文档内有多少动态增长?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多