GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

MySQL 与 NoSQL——SQL 与 NoSQL 的融合

2011 年 5 月 10 日

写这一篇内容的原因是 MySQL5.6.2 突然推出了 memcached 的功能。 NoSQL to InnoDB with Memcached 的出现,可以看出 NoSQL 对关系数据库的确产生了巨大的影响,个人觉得这是一个非常大的进步,可以让开发人员更加方便的使用 NoSQL 和关系数据库。NoSQL 一般被认为性能高于关系数据库,那么直接在 InnoDB 之上提供 NoSQL 功能并和 MySQL 共存是否是一个更好的选择呢?

MySQL with HandlerSocket

去年在 twitter 上看到 HandlerSocket 的出现,并宣称性能是 Memcached 的两倍时,非常令人吃惊,居然可以达到 750000qps。接着 HandlerSocket 成为 NoSQL 领域谈论的焦点之一, 大量的人开始想要尝试,并做过一些自己的性能测试。 下图是 HandlerSocket 的结构图:

图 1 HandlerSocket 结构图(来源于官方)

HandlerSocket 的出现,给我们眼前一亮的感觉。原来 InnoDB 的性能已经足够好,并可以直接提供 NoSQL 的功能。最大的好处就是可以共享 MySQL 的功能,DBA 以前的经验一样可以用。但是有些小小的风险:

  • HandlerSocket 没有与 MySQL 一起发布版本,因此对于使用 MyISAM 引擎的用户是无缘的。不过现在 Percona-Server 已经集成了 HandlerSocket,可以非常方便的使用。
  • 目前大规模的成功案例并不多,国内也只有少部分公司在尝试,我知道的有飞信开放平台,据说还不错。
  • 官方给出的测试数据在应用场景上其实并不充分,至少测试的场景跟我们实际使用的场景相差很大。但是毫无疑问, HandlerSocket 的性能比直接使用 MySQL 肯定要高效得多。

InnoDB with Memcached

也许是因为 HandlerSocket 的火爆的冲击,也许是受 HandlerSocket 的启发,MySQL 开始关注 NoSQL 领域的应用,并在 MySQL5.6.2 版本增加了通过 Memcached 协议直接访问原生 Innodb API 的功能。

InnoDB with Memcached 是在提供 MySQL 服务的同一进程中提供 Memcached 服务 ,这与 HandlerSocket 的架构模式几乎是一样的。虽然目前 InnoDB with Memcached 还是预览版本,但是我个人更看好它,因为:

  • 它使用 Memcached 协议,并同时支持文本和二进制协议,在 client 的选择和成熟度上就要胜出许多;
  • 其支持的三种 cache 模式,不但可以省去开发中使用 Memcached 来缓存数据的麻烦,并且具有更好的可靠性和数据一致性;
  • 在应用程序中,可以使用高效的 memcached 协议来操作数据,同时也可以使用 sql 进行复杂的查询操作;

注意:目前通过 memcached 的更新操作不会记录到 binlog 中,未来的版本会支持。

图二 InnoDB with Memcached

Memcached and MySQL Cluster

显而易见,我们会想到 MySQL Cluster 结合 Memcached 是一个更好的组合,MySQL Cluster 提供了 99.999% 高可用性,并真正提供了去中心化的无缝高可扩展性。还有什么比这更人兴奋的呢。

MySQL 已经提供了这样的功能,源代码在这里。这里有一个O’Reilly MySql Conference 大会的 PPT 演示 ,你也可以看下这个功能开发者的一篇博客

图三 NDB with Memcached

MySQL Cluster 虽然具有高可靠性和无缝扩展的优势,但是对于复杂 SQL 查询的效率却不能令人满意。不过对于仅仅依赖于 key-value 查询和写入的海量数据存储需求,MySQL Cluster with Memcached 应该是个很好的选择。

总结

Memcached 协议由于其简单、协议轻量、存在大量的 client,所以提供兼容 Memcached 协议的产品比较占据先天的优势。

MySQL 提供 NoSQL 的功能,个人觉得并不是 MySQL 耐不住寂寞,而是的确在响应用户的需求。我前面的文章也说过,“NoSQL 只是一个概念,并不是一个数据库 产品,MySQL 也可以是 NoSQL”,现在也正应了这句话。NoSQL 从架构上就约束了开发者的架构和开发方式,从而提高扩展性和性能,而 NoSQL 和 MySQL 的融合,也同时提供了复杂查询功能。

虽然 MySQL 提供了 NoSQL 功能,如果你要尝试的话,你的数据库设计必须从 NoSQL 出发,然后再考虑 SQL 查询功能。

SQL 与 NoSQL 的融合的确会给开发者带来方便,比如最近很流行的 Mongodb,它吸引开发最大的点就是支持简单的关系查询。SQL 与 NoSQL 的融合可能是未来很多数据库产品的一个趋势。但是纯 NoSQL 数据库的优势也是显著的,就是他的简单、高效、易扩展。

参考链接:

2011 年 5 月 10 日 02:5516889

评论

发布
暂无评论
发现更多内容

架构师训练营 No.4 周总结

连增申

week04 总结

Geek_2e7dd7

极客时间第 0 期架构师训练营第四周总结

2流程序员

架构师训练营-第4周总结

坂田吴奇隆

极客大学架构师训练营

浅谈比特币匿名的意义

CECBC区块链专委会

来了!Spring Boot从入门到入土的私藏教程,不收藏你就亏了

互联网架构师小马

spring 面试 Java 面试 springboot SpringBoot 2

链技术如何提升金融行业安全与互信

CECBC区块链专委会

百度 区块链技术 超级链 探索与实践

第四周学习总结

李白

典型大型互联网应用系统的技术方案和手段

极客大学架构师训练营 第四周作业 互联网应用技术方案 互联网系统架构 互联网系统特点

使用 Spring cloud Gateway 构建微服务网关

张sir

Java 微服务 Spring Cloud

第三周总结

李白

架构师训练营学习总结——系统架构【第四周】

王海

极客大学架构师训练营

架构师训练营作业 (第四周)

王海

极客大学架构师训练营

架构师训练营第 04 周—— 练习

李伟

极客大学架构师训练营

愿景集团与聚盛国际达成战略合作共建外汇市场新篇章

Geek_116789

大型互联网应用系统常用技术(持续更新)

2流程序员

互联网系统架构设计概览

dony.zhang

一个大型互联网应用采用的技术方案和手段

李白

「架构师训练营」第 4 周作业 - 一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题

guoguo 👻

极客大学架构师训练营

第三周作业

李白

架构师训练营第4周——学习总结

极客大学架构师训练营 互联网架构模式 互联网架构的演进

「架构师训练营」第 4 周作业

旭东(Frank)

架构师训练营第四周作业

Bruce Xiong

写给大忙人看的操作系统(内附思维导图)

cxuan

后端 操作系统

架构师训练营——第四周总结

jiangnanage

西博泰科携手中国电信共同抢占NB-IoT新赛道

Geek_116789

架构师训练营第四周作业

张锐

信创舆情一线--数据安全法草案提请初审

统小信uos

大数据 安全

week04

Geek_2e7dd7

互联系统架构演化史之感

旭东(Frank)

架构 感悟 极客大学架构师训练营

真棒! 20 张图揭开内存管理的迷雾,瞬间豁然开朗

小林coding

Linux 操作系统 计算机基础 内存管理

MySQL与NoSQL——SQL与NoSQL的融合-InfoQ