我一直在考虑将产品/客户/交易信息存储在数据库中的最佳方法。我们在这里谈论成千上万的记录......
我对如何在纸上展示数据有一个非常明确的想法,它基本上看起来像一棵树......
汽车 - >大众 - >高尔夫 - > 1.6升5门
这里的问题是树中的每个产品都需要不同的属性。例如,如果产品是船,则它不需要“轮尺寸”属性,但需要“螺旋桨尺寸”。无论如何,你明白了!
我很新,NoSQL过去只使用过MySQL,但看起来它可能是最好的解决方案。我喜欢没有架构的想法。
有没有人有建立此类系统的经验?你去了什么?任何特定的变体?
答案 0 :(得分:2)
如果需要关系结构(例如树结构),则应使用关系数据库模型。 NoSQL最适用于您只想存储数据但不考虑其结构的情况。
如果您想拥有一组任意可选信息,您可以使用关系数据库并使用BLOB列存储可选数据,可能作为JSON字符串。由于以下几个原因,这可能效果最好:
SELECT * FROM products WHERE catid = 123
。LIKE
仅返回JSON blob中包含该特定列名的行,然后手动过滤代码中的结果。答案 1 :(得分:1)
您正在寻找的内容可以很容易地在文档中表示(面向DB =>例如CouchDB)。例如,代表您的大众:
{
"Cars": [
{"Make":"VW", "Model":"Golf", "Engine":1.6, "Doors": 5, "Wheel Size": 19},
{"Make":"Toyota", "Model":"Supra", "Engine":2.4, "Doors": 5, "Packages":["Tech", "Cold Weather"]}
]
}
由于架构是“免费的”,您可以添加移除汽车的属性。您可以阅读有关CouchDB文档API here
的更多信息答案 2 :(得分:0)
我认为这可能是一个好主意,除非你需要某种关系。 例如,如果您想要将汽车链接到车主,您通常会有一个表“汽车”和一个表“车主”,如果您想按车主查找汽车,您可以从车主那里搜索并加入汽车
我相信在大多数情况下,也可以在NO-SQL设置中解决这个问题,但它可能会变得非常复杂。
如果你只是存储模型数据,它认为听起来非常简单。也许你可以把它原型化?