在 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章