欢迎被标题吸引进来的读者。是的,今天我想聊聊这个话题:MySQL用作NoSQL。不信?看下图:
这是怎么回事?官方称之为MySQL Document Store,即MySQL文档存储。据称是MySQL8.0的特性(还在用5.x的你是不是瞬间out了 XD),具体就是你不需要创建schema(视图,你可以认为是数据库表的结构载体)就能存储JSON集合,这本来是MongoDB这类NoSQL才能做的事情。咋样,没听过吧。以往,我们要存储文档,或者集合,都需要建表,然后将内容作为表的一个字段记录存储,没有表结构,是无法直接将内容存储到磁盘的,存储之前往往需要我们精心设计表和库的模型结构,设计不好还容易造成麻烦。
在这里,NoSQL + SQL = MySQL,这极大的拓展了MySQL的功能,同时具备关系型数据库和非关系型数据库的特征。
只是!但是!各位要失望了!这是MySQL商业版本才能干的活。好了,不要骂我了,oracle这家(流氓)公司毕竟还要MySQL捞点油水呢。
我们还是先看看它的的架构:
从图中我们可以看到,除了传统的关系型存储之外,多了一层X协议,该协议基于谷歌的Protobuf library,Protobuf library是什么?它是用来将结构化数据序列化的包,也就是去结构化,所以你知道存储的原理了吧,话都说这么白了。而Oracle将X协议用来拓展MySQL内核,从而实现在MySQL存储JSON集合数据的。(不太准确的说,我们可以视为可插拔)
在性能上也是杠杠的,不会因为是NoSQL而退步,在高可用、易于管理、热备份、安全等方面都做到了生产标准。因此那些有志于使用这个特性的公司是可以放心使用的。(当然,我这可不是在给Oracle打广告。)
可能有人要问了,企业版的MySQL有什么用呀,又不是免费的。额,我想说,我跟你想法一样,不过对公司来说,有时候就是有这种需求呀,总有想要将MySQL用在NoSQL的业务场景,这时候如果你能想到MySQL还能这么干,或许也算是一种解决方案吧。兴许,你的团队也能从中找到灵感,效仿Oracle自己定制X协议,也能实现NoSQL的功能呢?可能性太多了。如果再不济,就当涨见识了。
好了,这篇文章就介绍到这,下次再见啦。有什么问题和错误的地方,还望大家多多指正,留言就好了,谢谢你们。
领取专属 10元无门槛券
私享最新 技术干货