NoSQLを超えるSQLデータベース「VoltDB」。Cassandraとベンチマーク対決!
「多くのOLTPデータベースは30年前の設計を基にしており、今日の“Webスケールな”データベースの負荷を想定していない。これら伝統的なデータベースは、処理時間の90%以上がログ、ロック、ラッチ、バッファ制御といったオーバーヘッドに費やされ、しかもそれらによって限られた性能やスケーラビリティしか実現できていない」
Ingresの開発者でありInformixのCTOなどデータベースベンダの要職を歴任したデータベース研究者の大御所、マイケル・ストーンブレイカー氏が開発したVoltDBはプレスリリースでこのように既存のリレーショナルデータベースの欠点を示した上で、インメモリデータベースをベースにこれらのオーバーヘッドを除去し、ACIDによるデータ一貫性を維持しつつ大きな性能向上とスケーラビリティを実現したと説明されています。
SourceForge.jpの記事「「NoSQL」を上回る性能を目指す次世代型高速SQLデータベース「VoltDB」登場」でも話題になったVoltDBは果たしてどのようなデータベースなのでしょうか。調べてみました。
ACIDを実現しつつ桁違いの高性能
Webサイトによると、VolDBは次のような特徴を備えています。
- 既存のデータベースと比べて桁違いの高性能
- リニアなスケーラビリティ
- DBMSのインターフェイスとしてSQLを利用
- ACIDなトランザクションによる一貫性と整合性の実現
- 24時間365日の高い可用性
既存のリレーショナルデータベースはスケーラビリティに乏しく、大規模なWebサイトのバックエンドでは「NoSQL」と呼ばれるデータベースがスケーラビリティや速度の面で有利だと考えられていました。
VoltDBの動作環境はギガビットイーサネットで接続されたPCサーバによるクラスタ構成で、対応OSはCentOS(UbuntuとMacOSに対応した開発中のバージョンもあり)。Sun JDK 6の上で動作し、クラスタを構成するサーバの時間を厳密に同期するためにNTPを利用、ソフトウェアのビルドツールとしてAntを用います(ストアドプロシージャをJavaクラスにするためか)。
しかしVoltDBはリレーショナルデータベースであるにもかかわらず、NoSQL以上の性能を実現すると宣言しています。今回はVoltDBとCassnadraのベンチマークをみてみましょう。
ベンチマークでCassandraを圧倒
NoSQLデータベースとVoltDBのベンチマークによる性能比較は、VoltDBのブログ「Key-Value Benchmarking」で説明されています。執筆したのはVoltDBエンジニアリングチームのJohn Hugg氏。比較対象はTwitterやDiggが採用を検討中とされるCassandraです。
Hugg氏は、大規模データ処理のために開発された両者についてスケーラビリティ、冗長性、障害復帰などについて調査するのが目的だとして、HDDに書き込むタイプのNoSQLデータベースであるCassandraと、インメモリデータベースであるVoltDBの比較は「リンゴとオレンジを比較するようなものだというのは分かっている」と書いています。
ベンチマークのハードウェア構成は、2ソケットのXeon5500、48GBメモリ、1万5000回転のSASディスクのPCサーバを、シングルノードと3ノードクラスタの構成の2パターンで行っています。
1つ目のテストは、50バイトのキーと12キロバイトの値のペアを50万組ロードしておき、任意の2キーに対して2分の1の確率で値を読み出す、もしくは2分の1の確率で値を書き換える、という処理を行いました。CassandraとVoltDBでの5分間の処理量を比較。
Cluster Configuration | VoltDB | Cassandra | Throughput Increase |
1 Node | 17,000 | 7940 | 2.2X |
3 Nodes w/o Replication | 19,800 | 17,400 | 1.1X |
3 Nodes w/ Replication | 12,600 | 4450 | 2.8X |
結果はVoltDBがCassandraを1.1倍から2倍と上回っています。
このほかさらにスキーマを複雑にしたテストなど全部で3種類のベンチマークを実行し、VoltDBはCassandraに対して4.6倍から最大で16倍の性能を示す結果となりました。全体にVoltDBはCassandraを圧倒したといっていいでしょう。
この高性能をたたき出すVoltDBの仕組みがどのようになっているのかは、いま資料を読んでいるところですので、その内容については次回「NoSQLを上回る性能のVoltDB、そのアーキテクチャとは」の記事で。