10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:157267

评论

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

Kubernetes 集群故障案例

CTO技术共享

开源 签约计划第三季 8月月更

数字化转型怎么就那么的难?!

BizFree

数字化转型 工业互联网 智能制造

Kubernetes 怎么优雅升级

CTO技术共享

开源 签约计划第三季 8月月更

Go-Excelize API源码阅读(二)——OpenFile()

Regan Yue

Go 开源 源码刨析 源码解读 8月月更

Kubernetes微服务、容器介绍

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes微服务框架

CTO技术共享

开源 签约计划第三季 8月月更

Spring(一、快速入门)

开源 Spring5 8月月更

Kubernetes 架构知识

CTO技术共享

开源 签约计划第三季 8月月更

kubernetes 常见架构图

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes 开源未来

CTO技术共享

开源 签约计划第三季 8月月更

架构实战营模块九作业

融冰

Centos7安装系统安装docker

Geek_8d9022

Kubernetes 运维经验分享

CTO技术共享

开源 签约计划第三季 8月月更

2022秋招前端面试题(一)(附答案)

helloworld1024fd

前端面试

2022秋招前端面试题(二)(附答案)

helloworld1024fd

前端面试

架构实战营毕业总结

融冰

Kubernetes 污点和容忍

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes 部署策略

CTO技术共享

开源 签约计划第三季 8月月更

【LeetCode】 数组中的字符串匹配Java题解

Albert

LeetCode 8月月更

阿里大神级 最新Elasticsearch 笔记,抓紧学起来!

冉然学Java

elasticsearch 编程 分布式 java; 程序员、

Kubernetes 怎么调度管理CPU

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes 原生接口

CTO技术共享

开源 签约计划第三季 8月月更

Kubernetes DevOps 工具

CTO技术共享

开源 签约计划第三季 8月月更

纯色山鹪莺

猫猫巧克力

数据治理(一):为什么要数据治理

Lansonli

大数据 数据治理 8月月更

Spring Cloud 入门 -- 搭建Eureka注册中心 实现服务者与消费者的服务调用

Bug终结者

Java 云原生 8月月更

kubernetes日常命令

CTO技术共享

开源 签约计划第三季 8月月更

kubernetes灰度发布

CTO技术共享

开源 签约计划第三季 8月月更

SAP API 开发方法大全

汪子熙

API SAP abap 全栈开发 8月月更

GItHub又火了!2022最全 Java面试手册终于开源了,包含了29个知识点

Java工程师

Java 面试

ES6新特性——generator

猫猫巧克力

8月月更

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