noSQL / MySQL - 存储产品信息

时间:2011-11-01 17:16:54

标签: mysql mongodb database nosql

我一直在考虑将产品/客户/交易信息存储在数据库中的最佳方法。我们在这里谈论成千上万的记录......

我对如何在纸上展示数据有一个非常明确的想法,它基本上看起来像一棵树......

汽车 - >大众 - >高尔夫 - > 1.6升5门

这里的问题是树中的每个产品都需要不同的属性。例如,如果产品是船,则它不需要“轮尺寸”属性,但需要“螺旋桨尺寸”。无论如何,你明白了!

我很新,NoSQL过去只使用过MySQL,但看起来它可能是最好的解决方案。我喜欢没有架构的想法。

有没有人有建立此类系统的经验?你去了什么?任何特定的变体?

3 个答案:

答案 0 :(得分:2)

如果需要关系结构(例如树结构),则应使用关系数据库模型。 NoSQL最适用于您只想存储数据但不考虑其结构的情况。

如果您想拥有一组任意可选信息,您可以使用关系数据库并使用BLOB列存储可选数据,可能作为JSON字符串。由于以下几个原因,这可能效果最好:

  1. 您可以保留轻松查询一组产品的功能,例如: SELECT * FROM products WHERE catid = 123
  2. 您仍然可以使用产品的常用属性轻松过滤结果。
  3. 您还可以将交易记录链接回产品。
  4. 如果要按可选列进行筛选,可以执行LIKE仅返回JSON blob中包含该特定列名的行,然后手动过滤代码中的结果。

答案 1 :(得分:1)

您正在寻找的内容可以很容易地在文档中表示(面向DB =>例如CouchDB)。例如,代表您的大众:

  • Car - >大众 - >高尔夫 - > 1.6升5门:
{
 "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设置中解决这个问题,但它可能会变得非常复杂。

如果你只是存储模型数据,它认为听起来非常简单。也许你可以把它原型化?