写点什么

MySQL/HandlerSocket 和 VoltDB:NoSQL 的竞争者

  • 2010-11-12
  • 本文字数:1453 字

    阅读完需:约 5 分钟

一般认为 NoSQL 数据库在性能方面要优于传统的SQL 数据库。但是有两个SQL 的解决方案宣布:对于大型系统的高可扩展性需求,SQL 仍然是可行的解决方案!这两个SQL 解决方案分别是MySQL 加NoSQL 层插件和支持SQL 的VoltDB 数据库。

MySQL + HandlerSocket

Yoshinori Matsunobu 是 Sun/Oracle 的前雇员,从事 MySQL 的研发工作,目前是 DeNA 的首席数据库和基础设施架构师,他以插件的方式为 MySQL/InnoDB 提供解决方案,可以在一台 2.53GHZ、8 核 CPU、32G 内存的 Nehalem 服务器上把每秒的查询数量(qps)提升到 750,000 以上。在同样的硬件环境下,无插件的 MySQL 只能提供 100,000 左右的 qps,如果使用 memecached 的话,可以增加到大约 400,000。经过对 RDBMS 的分析,Matsunobu 意识到大部分时间都花在 SQL 的开销上,比如调用 MYSQLparse()、MYSQLlex()、make_join_statistics() 和 JOIN::optimize() 等。他写到:

很显然性能降低的原因主要在 SQL 层,而不是“InnoDB(存储)”层。MySQL 必须做很多事情…但 memcached/NoSQL 是不需要做这些额外工作的。

SQL 层的功能包括解析 SQL 语句、打开 / 锁定 / 解锁 / 关闭表、解决并发问题等。Matsunobu 的解决方案就是增加额外的 NoSQL 层:

我们认为最好的方式就是在 MySQL 内部实现一个 NoSQL 的网络服务器。也就是说,编写一个网络服务器作为 MySQL 的插件(守护插件),用来监听特定端口,接收 NoSQL 的协议和 API,然后通过 MySQL 内部存储引擎 API 直接访问 InnoDB。这种方式很像 NDBAPI,不同的是它可以与 InnoDB 交互。

他的团队开发了 HandlerSocket 插件,有了这个插件,MySQL 更像一个 NoSQL 数据库,通过监听一个独立的端口,接收从 SQL 层来的简单查询请求,例如主键查询,索引扫描和插入 / 更新 / 删除。这一变化把数据库性能提升到了 750K qps 以上。常用端口可以接收处理复杂查询,其核心仍然是 SQL 数据库。DeNA 采用 SQL/NoSQL 混合的方式取得了成功,据 Matsunobu 所言,在相同的时间内,这种解决方案把多个 memcached 和 MySQL 主从服务器的方案远远甩在了后面。

VoltDB

另一个很有希望的 SQL 解决方案是 VoltDB ,这是一个内存中的开源 OLTP SQL 数据库,能够保证事务的完整性(ACID)。VoltDB 是由原 Ingres 和 Postgres 的架构师 Mike Stonebraker 设计的。该数据库主要特征如下:

  • 为了获得最大化吞吐量,数据保存在内存中(而不是在硬盘),这样可以有效消除缓冲区管理。
  • VoltDB 通过 SQL 引擎把数据分发给集群服务器的每个 CPU 进行处理。
  • 每个单线程分区自主执行,消除锁定和闩锁的需求。
  • VoltDB 可以通过简单的在集群中增加附加节点的方式实现性能的线性增加。

正如其开发者宣称的那样,该数据库的性能使其成为 NoSQL 解决方案的有力竞争者:

  • VoltDB 在单节点上可以每秒处理 53000 个事务请求(TPS),其他 DBMS 在相同的硬件环境下只能处理 1155 个。VoltDB 的扩展是近似线性的──在 12 个节点的 VoltDB 集群上进行同样测试,可以处理 560,000 TPS。
  • 基准案例:某个客户的在线游戏在 12 个节点的 VoltDB 集群上处理了 130 万 TPS。
  • VoltDB 还针对 NoSQL 的键 - 值存储方式作了基准测试,VoltDB 在处理各种键 - 值存储负载的情况下获得了相同或更好的性能。

除了它的性能,VoltDB 的主要优势是可以与 SQL 用户进行交流,这些 SQL 用户是很好的资源。

近期还会推出 VoltDB 的企业版本,包括基于浏览器的数据库管理系统,提供、管理和监控数据库集群。除了免费的社区版本,针对企业版的支持也开始了。

查看英文原文: MySQL/HandlerSocket and VoltDB: Contenders to NoSQL

2010-11-12 01:156931

评论

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

在C++中,你真的会用new吗?

华为云开发者联盟

c++ 内存 new new operator operator new

阿凡达公链AC系统APP开发

前几年写的自己团队管理内容,如果你想做研发管理,可以看一下

安宇|Way

管理 考核 团队 文化 价值观

话题王者第三季,舍我其谁~

InfoQ写作社区官方

话题讨论 热门活动

Bi Token质押挖矿软件系统开发方案

「腾讯面试题」兔子试毒

Java架构师迁哥

Redis入门六:集群

打工人!

redis 缓存穿透 缓存击穿 缓存雪崩 redis集群

看CarbonData如何用四招助力Apache Spark

华为云开发者联盟

spark Apache Spark ACID CarbonData 分布式集群计算框架

DOLLAR CAT/Dcat币挖矿系统开发

Tubacle挖矿系统APP开发搭建

Redis入门七:分布式锁

打工人!

redis 分布式锁 redis分布式锁

百度关于微前端架构EMP的探索:落地生产可用的微前端架构

百度开发者中心

百度 大前端

覆盖80%以上Java性能调优场景,三年开发经验以下慎入

Java架构师迁哥

BTQQ挖矿/比特全球/BT全球系统APP开发简介

INS视频怎么保存 (2021最新图文教程)

资源君

方法 经验分享 教程 资源分享 Instagram

工程师必知的代码重构指南

百度开发者中心

代码重构

分布式图计算引擎

6979阿强

分布式计算 图计算

CloudQuery 使用教程之 No.3 数据查询(中)

BinTools图尔兹

云计算 dba 开发运维 数据库管控工具 国产数据控

缘起短视频APP系统开发介绍

火艺极速版短视频系统APP开发搭建

革故鼎新:企业数字化转型繁荣互联网生态建设,驱动ICT设施升级

科技热闻

区块链的正确应用方式与前景

CECBC

大佬讲【暴力破解】漏洞的原理、利用和防范

网络安全学海

网络安全 安全 信息安全 漏洞 漏洞修复

蜜蜂圈软件开发|蜜蜂圈APP系统开发

腾云视界APP开发|腾云视界软件系统开发

☕️【Java技术之旅】【ConcurrentHashMap】深入浅出核心源码分析(JDK1.8版本)

洛神灬殇

Java 源码分析 ConcurrentHashMap 6月日更

Ipfs矿机收入如何?IPFS矿机一天收益多少?

区块链 数字货币 IPFS

MongoDB磁盘清理那些事儿

循环智能

mongodb 集群 主从 GridFS 磁盘清理

中国大学MOOC Android 客户端开发提效之页面信息

有道技术团队

android 服务端 客户端

企业资产数据大屏,打破固有管理思维僵局,杜绝资产无效流失

一只数据鲸鱼

数据可视化 资产管理 金融资产 金融大屏

你不知道的 Linux 使用技巧

学神来啦

MySQL/HandlerSocket和VoltDB:NoSQL的竞争者_数据库_Abel Avram_InfoQ精选文章