2012-05-01 21 views
0

我一直在开发EAV(实体属性值)web应用程序。MongoDB无模式设计 - 优势还是一塌糊涂?

我想要使用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文档说这些文档可以是无模式的,但是具有更少或更多相同结构的文档是一种很好的做法。

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

回答

4

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

既然MongoDB是无模式的,至少在这里,你至少有可以有有不同结构(与关系数据库相反)的大量文档。这个事实本身是中立的。这是你的使用它会使它好或坏为您的应用程序

+2

一个政治正确的答案,什么也没说。如果你说过像“稀疏矩阵”数据或类似的东西,可能会更好。 – kizzx2

1

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