Json 作为程序员最受欢迎的数据格式,使用的越来越广泛了,如果你目前使用的数据库不支持JSON的格式,那显然是满足不了程序员以及 程序微服化的需求以及消息传递和消息承载的要求。
基于这样的要求MONGODB 则变得越来越火,并且在非传统SQL 数据库中基本上坐上NO.1的交椅。
这里如果你有大量的JSON 以及聚合,查询,或者存储部分大容量的字符的情况下,MONGODB 一定会让你满意,并且稳定的集群,以及方便开发者的主从读写分离的设置也是让人满意的。
今天说的是MYSQL 的处理JSON 的方法,如果你不愿意使用MONGODB ,并且JSON 的数据存储的量也不是很大,MYSQL 也是可以处理这样的数据的,这个功能是从MYSQL 5.7 开始的,到8.0 向更先进的方式发展,如果作为传统数据库的有益补充是OK的。
老习惯,我们做一个列子来开始说明
1 创建一个支持 JSON 的表,往 MYSQL 中插入相关的数据
从上图来看,MYSQL进行一个类似JSON 的数据存储还是很方便的。对比MONGODB 的语法,其实对于传统的DBA 会更亲切一些。
从上图中对简单的JSON 的数据进行查询,并且进行相关的计数操作也是很方便的。当然如果你习惯了 MONGODB 的操作方法,则这样的写法可能觉得稍显怪异。
而如果将JSON 的数据以 MYSQL 的方式进显示,则需要借助于MYSQL 为JSON 开发的一些函数,例如 JSON_EXTRACT 下图是 json1 中的数据
我们通过相关的函数,将其查询并且格式化为MYSQL 的显示方式
当然其实MYSQL 的JSON 也是支持索引查询的,虽然和MONGODB 的索引比较,简直是不值得一提,但是还是的提一下。
我们做下面的一个实验
创建一个表并插入大量的测试数据 100多条就可以
我们针对表test_features 建立一个虚拟列,绑定上面表中的JSON 列,
然后在虚拟列上添加索引(虚拟列分为两种,我们用其中的一种)
我们对查询进行explain 可以看到执行计划中已经走了索引
虽然MYSQL已经支持了 JSON 格式的数据存储,并且也提供大量的函数,也支持简单的索引,但和MONGODB 这样的纯处理JSON 的数据库相比,差距很大,如果仅仅是存储一些简单的JSON 数据并且量不是很大,个人感觉,MYSQL 可以作为一个补充,而如果要对JSON 数据进行复杂的查询,聚合,并且数据量较大的情况下,MONGODB 是一个好的选择,当然POSTGRESQL 也可以作为备选的方式。