【问题标题】:noSQL / MySQL - storing product informationnoSQL / MySQL - 存储产品信息
【发布时间】:2017-07-09 21:17:46
【问题描述】:

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

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

汽车 -> VW -> 高尔夫 -> 1.6 升 5 门

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

我对 NoSQL 很陌生,过去只使用过 MySQL,但它似乎是这里最好的解决方案。我喜欢没有架构的想法。

有人有构建此类系统的经验吗?你去干什么?有什么特别的变种吗?

【问题讨论】:

    标签: mysql mongodb database nosql


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      • 汽车 -> VW -> 高尔夫 -> 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

      【讨论】:

        【解决方案3】:

        我认为这可能是个好主意,除非您需要某种关系。 例如,如果你想将汽车与车主联系起来,你通常会有一个表“汽车”和一个表“车主”,如果你想按车主定位一辆车,你需要从车主中搜索并加入汽车.

        我相信大多数时候,也可以在 NO-SQL 设置中解决这个问题,但它可能会变得相当复杂。

        如果您只是存储模型数据,这听起来很简单。也许你可以制作原型?

        【讨论】:

        • 是的,这是真正的问题,需要建立关系(将报价链接到产品等...)
        猜你喜欢
        • 1970-01-01
        • 2015-12-22
        • 1970-01-01
        • 2014-10-21
        • 2018-02-27
        • 2019-10-28
        • 1970-01-01
        • 2022-11-02
        • 1970-01-01
        相关资源
        最近更新 更多