在 MySQL 数据库中存储 JSON? [复制]

Posted

技术标签:

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

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

编辑:

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

【问题讨论】:

如果你确定你永远不需要对 JSON 数据做任何事情(比如查询其中的特定属性),为什么不......但无论如何这都不是很好的做法. 为什么不同的用户需要不同数量的列? @Pekka웃 我确实需要在里面查询 @beny23 因为说他们在自己的帐户中添加了新项目 @user1947561:您不会在新列中存储新项目,而是有一个带有user_id 外键的user_items 表... 【参考方案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 已经可以处理其文本字段中的大部分括号和时髦字符。

【讨论】:

以上是关于在 MySQL 数据库中存储 JSON? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 数据库中存储 JSON 字符串

在 MYSQL 中存储 JSON 数据 - 对性能的影响

在mysql(5.6)数据库中存储json数组的数据类型[关闭]

在 mysql 中存储 JSON 数据

如何在 MYSQL 数据库中存储 API JSON 响应

在 MySQL 表中存储 JSON 数据