【问题标题】:Storing JSON in MySQL database? [duplicate]在 MySQL 数据库中存储 JSON? [复制]
【发布时间】:2013-03-01 23:26:12
【问题描述】:

是否可以将 JSON 数据存储在 MySQL 表行中?我需要将数组存储在 mysql 数据库中。问题是,我不知道每个用户需要多少列。因此,我想将 JSON 存储在名为 array 的一行中,例如。这是最好的方法吗?

编辑:

另外,我使用text 作为表格列类型。

【问题讨论】:

  • 如果你确定你永远不需要对 JSON 数据做任何事情(比如查询其中的特定属性),为什么不......但无论如何这都不是很好的做法.
  • 为什么不同的用户需要不同数量的列?
  • @Pekka웃 我确实需要在里面查询
  • @beny23 因为说他们在自己的帐户中添加了新项目
  • @user1947561:您不会在新列中存储新项目,而是有一个带有user_id 外键的user_items 表...

标签: php mysql json


【解决方案1】:

在关系数据库字段中存储多条数据通常是错误的。可以考虑可以接受的情况,但不能用于存储整个用户。

如果使用关系数据库结构还不够,您可能需要查看 NoSQL 数据库而不是 MySQL。

【讨论】:

    【解决方案2】:

    我认为不是。四个月后,您决定为您的实体添加一个新属性或从您的实体中删除一些属性呢?您将如何解析旧的 json 内容?如果你不知道你的表中需要多少列,你应该换一种方式思考,也许可以创建一个动态结构,比如使用 user_column 表

    【讨论】:

      【解决方案3】:

      是的,使用 mysql 作为键值存储是一个非常好的主意,事实上 facebook 确实有一些用途。

      CREATE TABLE `json` (
          `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
          `data` blob NOT NULL,
          PRIMARY KEY (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      

      上面的表格结构会让你走得更远。分片或集群非常容易。

      编辑:这里的重点是使用 PHP、Ruby 等来处理 json/data。你做SELECT ...,做你的编辑,然后INSERT ... ON DUPLICATE KEY UPDATE ...

      【讨论】:

      • OP 可能需要查询 JSON 中的一些数据,所以这可能不是是最好的主意。
      • 好吧,这不是问题...
      • 是的,我知道。他补充说这是对问题的评论。
      • 如果可以将 JSON 存储为没有任何子节点的键值对,则此方法可以正常工作。如果 JSON 层次结构更深怎么办?例如:字段有子对象,而子对象又有子对象?存储在 RDBMS 中是不可行的。
      • @EswarRajeshPinapala 在这种方法中没关系,这只是通用数据。
      【解决方案4】:

      这不是问题。 mySQL 已经可以处理其文本字段中的大部分括号和时髦字符。

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 2021-05-17
        • 2020-06-07
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2012-05-06
        • 2020-06-22
        相关资源
        最近更新 更多