2013-03-13 192 views
8

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

编辑:

而且,我使用text为表列类型。

+3

如果你肯定知道你永远,永远需要用JSON数据做任何事情(如查询里面的特定属性),为什么不......但它不是真的在任何情况下很好的做法。 – 2013-03-13 20:02:37

+0

为什么你需要不同的用户数量不同的列? – beny23 2013-03-13 20:02:55

+0

@Pekka웃我确实需要它 – user1947561 2013-03-13 20:04:05

回答

12

是的,它使用MySQL作为一个key-value存储一个非常好的主意,事实上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 /数据。你做SELECT ...,做你的编辑,然后INSERT ... ON DUPLICATE KEY UPDATE ...

+0

OP可能需要查询JSON中的一些数据,所以这可能不是最好的想法。 – 2013-03-13 20:08:25

+5

恩,这不是问题... – Gustav 2013-03-13 20:17:00

+1

是的,我知道。他补充说,作为对这个问题的评论。 – 2013-03-13 20:17:29

0

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

0

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

2

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

如果使用关系数据库结构是不够的,你可能想看看的MySQL数据库的NoSQL inestead。