mysql5.7原生支持json格式

知道mysql已经支持json格式。mongodb的便利性,给开发带来了新的视角。原来扩展性还能这么简单。数据的存储还能用json格式。 可是一直尚未利用这个特性。最近在公司的项目中,有一个需求是配置钉钉的权限。按照常规的设计,得是用多表来实现。可是用过mongodb的我,想采用json格式的形式来存储。这样也能得到比较好的扩展性。 一开始我觉得能够直接用fast中的JSonObjec来存储字段。发现仍是得用String来存。之后能够探索一下可不能够这样操做。可能如今的一些框架对于这种格式的存储仍是不够完美。mysql

getConfigJson

setConfigJson

若是这种方式好的话,能够推广起来。可是我如今也只是刚刚起步。 下面记录一下若是字段类型为json的话,在数据库中查询的话,应该怎么查询。sql

mysql> create table user ( uid int auto_increment, 
    -> data json,primary key(uid))engine=innodb; 
Query OK, 0 rows affected (0.01 sec) 
  
mysql> insert into user values (NULL, 
    -> '{"name":"David","mail":"jiangchengyao@gmail.com","address":"Shangahai"}'); 
Query OK, 1 row affected (0.00 sec) 
  
mysql> insert into user values (NULL,'{"name":"Amy","mail":"amy@gmail.com"}'); 
Query OK, 1 row affected (0.00 sec)

支持索引:经过虚拟列的功能能够对JSON中的部分数据进行索引mongodb

能够看到咱们新建了表user,而且将列data定义为了JSON类型。这意味着咱们能够对插入的数据作JSON格式检查,确保其符合JSON格式的约束,如插入一条不合法的JSON数据会报以下错误:

mysql> insert into user values (NULL,"test"); 
ERROR 3130 (22032): Invalid JSON text: "Invalid value" at position 2 in value (or column) 'test'.

此外,正如前面所说的,MySQL 5.7提供了一系列函数来高效地处理JSON字符,而不是须要遍历全部字符来查找,这不得不说是对MariaDB dynamic column的巨大改进:数据库

mysql> select jsn_extract(data, '$.name'),jsn_extract(data,'$.address') from user; 
+-----------------------------+-------------------------------+ 
| jsn_extract(data, '$.name') | jsn_extract(data,'$.address') | 
+-----------------------------+-------------------------------+ 
| "David" | "Shangahai" | 
| "Amy" | NULL | 
+-----------------------------+-------------------------------+ 
2 rows in set (0.00 sec)

MySQL 5.7原生JSON格式支持json

相关文章
相关标签/搜索