是否可以将JSON数据存储在MySQL表行中?我需要在mysql数据库中存储数组。问题是,我不知道每个用户需要多少列。因此,我想将JSON存储在一行中,例如命名为array
。这是最好的方法吗?
另外,我使用text
作为表列类型。
是的,这是一个非常好的主意,使用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 ...
。
在关系数据库字段中存储多个数据通常是错误的。可以想到这样的情况是可以接受的,但不适合存储整个用户。
如果使用关系数据库结构是不够的,你可能想看看NoSQL数据库而不是MySQL。
这不是问题。mySQL已经可以处理文本字段中大多数括号和时髦的字符。
我认为不是。如果四个月后,您决定向实体添加一个新属性或从实体中删除一些属性,那会怎么样?如何解析旧的json内容?如果你不知道你的表中需要多少列,你应该换一种方式思考,也许可以创建一个动态结构,比如使用user_column table