【问题标题】:Is there any negatives to storing JSON in MySQL?在 MySQL 中存储 JSON 有什么负面影响吗?
【发布时间】:2014-12-08 12:23:00
【问题描述】:

我正在构建一个复杂的订购系统,我正在纠结是否应该将一些更详细的信息作为 JSON 存储在单个列中,或者是否应该创建多个表和逻辑以将 JSON 排除在图片之外。

由于每个订单都有多个必需的日期、发货日期、零件、套件(零件集合)等。将其存储为单个“订单”行的 JSON 似乎更容易。

这样做有什么主要的缺点吗?

【问题讨论】:

  • 为什么不为您的订单设置关系模式,即。 kits 是零件的集合,因此表 'kits' 有一个 1 到 M 和 'parts','orders' 引用来自 'kits' 的套件,依此类推...
  • 首先要绑定的是可搜索性。您将无法使用WHERE 子句搜索数据。至少不容易。此外,您将无法JOIN 处理 JSON 对象内的任何数据。就能够为它可能拥有的任何数字数据添加列INDEX 而言,数据变得毫无用处。它违背了使用关系数据库的目的。如果这是您希望采用的方法,请查看像 MongoDB 这样的 NoSQL 数据库。该数据库中的信息实际上存储在以 JavaScript 语法格式化的对象中(即,正是您想要的)。
  • @War10ck 我同意 MongoDB,不幸的是,在这个场景中,一个新的数据库不是一个选项。至于搜索能力,我不关心。这是正确的过程吗,可能不是。
  • @ElGavilan 我明白你在说什么,这是我的另一个选择。有更多的变量在起作用,这使得它成为一个复杂的关系数据库。无论如何,这是我觉得我需要采取的方法。

标签: mysql json database laravel-4


【解决方案1】:

JSON 更适合短期存储,以便将数据从一件事发送到另一件事。与数据库相比,对于长期存储而言,它的空间效率极低且计算明智。您还将失去直接查询数据而不首先对其进行解析的能力(例如“select * from table where orderdate

简而言之,这几乎总是一个非常糟糕的主意。

【讨论】:

  • 这是我一直在寻找的答案。
猜你喜欢
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
相关资源
最近更新 更多