`

MySQL与NoSQL——SQL与NoSQL的融合

 
阅读更多

MySQL与NoSQL——SQL与NoSQL的融合

作者孙立发布于 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 ConnectorPython Revealed SQL and NoSQL Data Storage

    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...

    MySQL到NoSQL:数据的重思和查询方式的转换

    从关系型数据库转移至NoSQL数据库——比如从MySQL转移到Couchbase,你需要对你的数据进行再思考。至于为什么是Couchbase而不是MongoDB什么的,因为博文的作者MCBrown是现任Couchbase副总裁,所以你懂得;同时这篇...

    什么是NoSQL?Web2.0和云计算的新宠儿.doc

    随着Web2.0和云计算的兴起,和一些反SQL的倡导,越来越多的大公司加入到NoSQL阵营。Digg、Twitter、Google、微软等等公司已经开始研究NoSQL,并在一些项目中进行实施。许多人甚至抛弃了MySQL开源数据库这个长期以来...

    nosql 入门教程

    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,数据桥梁Sqoop

    SQL处理二维表格数据,是一种朴素的工具,NoSQL是Not Only SQL,即不仅仅是SQL。从MySQL导入数据到HDFS文件系统中,简单的一种方式是使用Sqoop,然后将HDFS中的数据和Hive建立映射。通过Sqoop作为数据桥梁,将传统的...

    golang&sql&nosql

    golang&sql&nosql

    Introducing the MySQL 8 Document Store

    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 ...

    SQLvsNOSQL:SQL和MongoDB的比较

    SQL与NOSQL MySQL 和 MongoDB 的比较 ##Background SQL 数据库的基本概念是关系型数据库。 关系型数据库的定义是严格使用关系来存储数据。 关系数据库匹配数据的方式是它使用在数据集中发现的共同特征。 在关系...

    最新统计排名前十的SQL和NoSQL数据库排行榜

    主要介绍了最新统计排名前十的SQL和NoSQL数据库排行榜,本文包括Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB等数据库,需要的朋友可以参考下

    08nosql mysql 优化第一天 – innodb存储引擎

    >=5.5 版本中默认的存储引擎,MySql推荐使用的存储引擎。提供事务,行级锁定,存储引擎。 事务安全型存储引擎,更加注重数据的完整性和安全性。 (1)存储格式: innodb存储引擎 每个数据表有单独的“结构文件” *...

    知识领域: 数据库管理 技术关键词: SQL、NoSQL、数据库优化、数据建模

    技术关键词: SQL、NoSQL、数据库优化、数据建模 内容关键词: 数据库设计、查询优化、事务处理 用途: 学习有效管理和操作数据的技术和方法 资源描述: MySQL 官方文档提供了全面的 MySQL 数据库管理指南,包括安装、...

    Components.Repository:帮助POCO对象在.NET上同时使用SQL和NoSQL(MongoDB)数据库

    POCO对象可以与单个对象或同步对象同时存储在NoSQL数据库(MongoDB)和SQL数据库(SQLServer,MySQL,PostgreSQL)中属性/列的映射类似于ActiveRecord行为具有内置扩展属性与缓存组件( )集成,以减少所有I / O...

    mysql必备面试题,mysql必问的面试题

    解释一下MySQL中的SQL和NoSQL有什么区别? 描述一下MySQL中的事务是什么,它的作用是什么? 解释一下MySQL中的视图是什么,它的作用是什么? 描述一下MySQL中的存储过程是什么,它的作用是什么? 解释一下MySQL中的...

    DBA MySQL数据库工程师(2021版)视频教程

    第3章 SQL语句基础应用 第4章 索引的基本管理 第5章 存储引擎 第6章 日志管理 第7章 备份恢复 第8章 主从复制基础 第9章 主从复制高级进阶 第10章 MyCAT中间件实战 第11章 MySQL优化 第12章 MySQL附录篇 第13章 ...

    知识领域: 数据库管理 技术关键词: SQL、关系数据库、NoSQL 内容关键词: 数据建模、查询优化、事务处理 用途: 理解数

    技术关键词: SQL、关系数据库、NoSQL 内容关键词: 数据建模、查询优化、事务处理 用途: 理解数据存储和管理的基本原理,确保数据的有效性和安全性 资源描述: "MySQL官方文档"提供了MySQL数据库的详尽文档和教程,...

    SQLvsNoSQL没有硝烟的战争!

    随着web应用和像MySQL、PostgreSQL和SQLite这些开源项的兴起,SQL使用量大大增加。NoSQL数据库在20世纪60年代就已经出现了,但最近因为MongoDB、CouchDB,Redis和ApacheCassandra等才受到广泛的关注。你会发现很多...

    sql-vs-nosql

    sql-vs-nosql 性能测试:MySQL vs MongDB 要运行该应用程序,必须输入三个参数: 数据库目录 数据库(MySQL或MongoDB) 测试API(插入或查找)

    gora-sql-0.1.1-incubating-sources.rar_nosql

    Gora是一个类似Hibernate的ORM框架,但是不只是支持关系数据库,更重要支持NoSQL之类大数据的存储。最新的Gora并不支持Mysql,本包是Gora支持Mysql的最新版本,需要的童鞋可以下载使用。

    规范:用于SQL和NoSQL数据库的简单PHP-ORM

    特征: SQL和NoSQL数据库的简单统一界面关系数据库支持(通过PDOMySQL / MSSql / SQLite) NoSQL数据库支持(MongoDB) 多个同时连接支持CRUD准备就绪(添加,获取/查找,编辑,取消)用法:连接: $ nrm = new Norm...

Global site tag (gtag.js) - Google Analytics