Mysql 5.7.12 做出了一项重大改进:支持文档型存储,意味着在 Mysql 中就可以像 MongoDB 那样存储 JSON document 了


这项改进的意义非常重大,Mysql是传统的关系型数据库,加入对文档的支持,意味着Mysql要突破‘关系型数据’概念的束缚,融入NoSQL数据库的优势,只要是好到的东西,以后必然会吸收得更多


支持文档存储之后,对已经非常熟悉Mysql,同时又对文档存储有需求的开发者带来了便利,他们可以直接使用Mysql,不必使用 Mysql + MongoDB 的混合环境了


在文档处理的协议上,Mysql并没有选择支持MongoDB的协议,使用了自己的协议,好处是可以更好的支持内置函数和事务,不好的方面是无法让已经使用MongoDB的项目直接使用Mysql了


Mysql的文档存储支持事务,这对需要 Document API,并且不想放弃数据一致性和ACID事务的用户非常重要,也支持对 document field 进行索引,可以轻松引用 document field


其实Mysql在非关系型数据方面早就进行过努力,例如 


2009年发布了 MyCached(支持 Mysql的 Memcache协议)


2010年的 HandlerSocket 插件提供了性能更强的接口


2011年Mysql Cluster支持MemcacheD协议


但都是基本的Key-Value接口,后来Mysql发现开发者同时需要具有灵活性的非结构化数据,和具有丰富性的结构化数据,并且这个需求非常大,MySQL 5.7 中便植入了JSON document这个特性


文档存储是Mysql生态中的新鲜成员,成熟度是他的弱势,MongoDB已经提前发展了几年,API非常丰富,有更多产品和框架的支持,文档完善易懂,非常成熟,而Mysql文档存储的稳定性和性能是否可靠还需要时间的验证,对各种开发语言的支持也不够


Mysql是个非常优秀的数据库,例如他的复制和分片在10年就已经很有优势,但后来在易用性和动态扩展能力方面被不少数据库超越了,而这次Mysql能够融合NoSQL数据库的优势的确很令人兴奋