作者孙立发布于 2011年5月10日 上午2时55分
Ruby,
.NET,
Java
主题
NoSQL
标签
SQL,
专栏,
MySQL
写这一篇内容的原因是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数据库的优势也是显著的,就是他的简单、高效、易扩展。
原文地址:http://www.infoq.com/cn/news/2011/05/nosql-mysql
分享到:
相关推荐
MySQL Connector/Python Revealed: SQL and NoSQL Data Storage Using MySQL for Python Programmers By 作者: Jesper Wisborg Krogh ISBN-10 书号: 1484236939 ISBN-13 书号: 9781484236932 Edition 版本: 1st ed...
从关系型数据库转移至NoSQL数据库——比如从MySQL转移到Couchbase,你需要对你的数据进行再思考。至于为什么是Couchbase而不是MongoDB什么的,因为博文的作者MCBrown是现任Couchbase副总裁,所以你懂得;同时这篇...
随着Web2.0和云计算的兴起,和一些反SQL的倡导,越来越多的大公司加入到NoSQL阵营。Digg、Twitter、Google、微软等等公司已经开始研究NoSQL,并在一些项目中进行实施。许多人甚至抛弃了MySQL开源数据库这个长期以来...
15.1 MySQL用作NoSQL 241 15.2 静态数据存储 244 15.2.1 存储多元化在Facebook中的应用 245 15.2.2 数据仓库和商业智能 246 15.3 Web框架和NoSQL 247 15.3.1 Rails和NoSQL 247 15.3.2 Django和NoSQL 248 ...
SQL处理二维表格数据,是一种朴素的工具,NoSQL是Not Only SQL,即不仅仅是SQL。从MySQL导入数据到HDFS文件系统中,简单的一种方式是使用Sqoop,然后将HDFS中的数据和Hive建立映射。通过Sqoop作为数据桥梁,将传统的...
golang&sql&nosql
Learn the new Document Store feature of MySQL 8 and build applications around a mix of the best features from SQL and NoSQL database paradigms. Don’t allow yourself to be forced into one paradigm or ...
SQL与NOSQL MySQL 和 MongoDB 的比较 ##Background SQL 数据库的基本概念是关系型数据库。 关系型数据库的定义是严格使用关系来存储数据。 关系数据库匹配数据的方式是它使用在数据集中发现的共同特征。 在关系...
主要介绍了最新统计排名前十的SQL和NoSQL数据库排行榜,本文包括Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB等数据库,需要的朋友可以参考下
>=5.5 版本中默认的存储引擎,MySql推荐使用的存储引擎。提供事务,行级锁定,存储引擎。 事务安全型存储引擎,更加注重数据的完整性和安全性。 (1)存储格式: innodb存储引擎 每个数据表有单独的“结构文件” *...
技术关键词: SQL、NoSQL、数据库优化、数据建模 内容关键词: 数据库设计、查询优化、事务处理 用途: 学习有效管理和操作数据的技术和方法 资源描述: MySQL 官方文档提供了全面的 MySQL 数据库管理指南,包括安装、...
POCO对象可以与单个对象或同步对象同时存储在NoSQL数据库(MongoDB)和SQL数据库(SQLServer,MySQL,PostgreSQL)中属性/列的映射类似于ActiveRecord行为具有内置扩展属性与缓存组件( )集成,以减少所有I / O...
解释一下MySQL中的SQL和NoSQL有什么区别? 描述一下MySQL中的事务是什么,它的作用是什么? 解释一下MySQL中的视图是什么,它的作用是什么? 描述一下MySQL中的存储过程是什么,它的作用是什么? 解释一下MySQL中的...
第3章 SQL语句基础应用 第4章 索引的基本管理 第5章 存储引擎 第6章 日志管理 第7章 备份恢复 第8章 主从复制基础 第9章 主从复制高级进阶 第10章 MyCAT中间件实战 第11章 MySQL优化 第12章 MySQL附录篇 第13章 ...
技术关键词: SQL、关系数据库、NoSQL 内容关键词: 数据建模、查询优化、事务处理 用途: 理解数据存储和管理的基本原理,确保数据的有效性和安全性 资源描述: "MySQL官方文档"提供了MySQL数据库的详尽文档和教程,...
随着web应用和像MySQL、PostgreSQL和SQLite这些开源项的兴起,SQL使用量大大增加。NoSQL数据库在20世纪60年代就已经出现了,但最近因为MongoDB、CouchDB,Redis和ApacheCassandra等才受到广泛的关注。你会发现很多...
sql-vs-nosql 性能测试:MySQL vs MongDB 要运行该应用程序,必须输入三个参数: 数据库目录 数据库(MySQL或MongoDB) 测试API(插入或查找)
Gora是一个类似Hibernate的ORM框架,但是不只是支持关系数据库,更重要支持NoSQL之类大数据的存储。最新的Gora并不支持Mysql,本包是Gora支持Mysql的最新版本,需要的童鞋可以下载使用。
特征: SQL和NoSQL数据库的简单统一界面关系数据库支持(通过PDOMySQL / MSSql / SQLite) NoSQL数据库支持(MongoDB) 多个同时连接支持CRUD准备就绪(添加,获取/查找,编辑,取消)用法:连接: $ nrm = new Norm...