MySQL添加的JSON数据类型让关系数据库用起来更简单,并且模糊了SQL和NoSQL数据库的界限
从前有了一台电脑,然后有人built了第二台电脑,并且想要一些第一台电脑上的代码。这就意味着我们需要一种不借助底层硬件的方式来移动信息。从那以后,有了好多编码格式以及交互标准(ASCII,EBCIDIC,SGML,XML,etc),在历史长河上都有他们的闪光点。在过去的这些年,JSON(JavaScript object notation)一直是最流行的。
在MySQL5.7之前,你可以在字符字段中用json格式来储存文件,但是大的字符串查询起来的时候非常乱,并且写正则表达式(regular expressions)在字符串中查找结果可是一个不爽的体验。并且,如果你修改了字符串中的一部分,那么你必须重写全部的字符串,这绝对是非常低效率的!但是在MySQL5.6中你必须这么做。
JSON in MySQL
在MySql 5.7中 MySql介绍了一个原生的(native)的json数据类型。就像一个整型,一个字符类型,或者一个实数,这就有了在数据库中,用表的一列来储存一个完全的json文件——并且这一列的文件的size甚至可以达到1个G!这个服务将会确保这是一条json文件是有意义并且用一种适合搜索的二进制方式储存。这种新的数据类型对MySql的更多更新来说可能比其他特性更有保障。(太绕口了,大体就是以后mysql会对这个做更多的更新兼容)
这种数据类型也伴随着超过二十个函数的到来。这些函数将会从文档中提取出键值对(k-v 对),更新数据,提供关于数据的元数据,用json格式输出非json列等等,并且这个比正则表达式简单多咯。
MySql 8 现在正在开发里程碑版本,并且加了一些新的函数和功能.JSON_PERETTY_PRINT函数将会格式化输出,从而使输出的更清晰。并且将会有一个重大的改进——重写数据的时候不用重写全部的文件!