MongoDB无架构设计 - 优势还是混乱?

时间:2012-05-01 11:12:12

标签: database-design mongodb

我一直在开发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文档说文档可以是无模式的,但最好是使用更少或更多相同的文档结构。

我的问题是:拥有大量不同的结构文件是非常糟糕的做法吗?

2 个答案:

答案 0 :(得分:4)

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

由于MongoDB是无模式的,至少在这里你可以拥有大量具有不同结构的文档(而不是关系数据库)。这个事实本身就是中立的。这是你对它的使用,它会使你的应用程序 好或坏

答案 1 :(得分:1)

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