【问题标题】:MongoDB schemaless design - advantage or mess?MongoDB 无模式设计 - 优势还是混乱?
【发布时间】:2012-05-01 19:49:49
【问题描述】:

我一直在开发 EAV(实体属性值)Web 应用程序。

我想使用 mongo 的主要原因是它是无模式的,即很容易找到具有“颜色”属性的汽车而没有不必要的字段。

这是要实现的文档结构的简短示例:

计算机类别的商品:

    {
     name: "Core i7",
     category: 1,
     properties:{
       price:300,
       vendor: "Intel",
       ...
     }
    }

同时,汽车类别中的商品具有自己的一组属性:

    {
     name: "Audi Q7",
     category: 2,
     properties:{
       price:30000,
       color:"red",
       hp:200
       ...
     }

}

但如果我有 100 个类别,我的数据库将存储 100 个不同的文档(按其结构)。 MongoDB 文档说,文档可以是无模式的,但最好的做法是具有或多或少相同的文档结构。

我的问题是:拥有大量不同结构的文档是不是很糟糕?

【问题讨论】:

    标签: database-design mongodb


    【解决方案1】:

    “好”或“坏”是非常主观的。如果它带来的好处多于伤害,那很好。否则,它可能不是。

    由于 MongoDB 是无模式的,因此您至少可以拥有大量具有不同结构的文档(与关系数据库相反)。这个事实本身是中性的。 对您的应用程序而言,是您对它的使用决定了它的好坏。

    【讨论】:

    • 一个政治正确的答案,什么也没说。如果你说它对“稀疏矩阵”之类的数据有好处,可能会更好。
    【解决方案2】:

    我想说,对于您的“产品”目录等内容,每个文档具有不同的结构是完全合理的。实际上,您根本没有不同的顶级结构,只是每个项目的属性在数组中都有不同的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-04
      • 2012-10-05
      • 2010-10-14
      • 2013-02-13
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多