Cassandraを利用したCMSのPCクラスタを用いたスケーラビリティの検証

Shoshi TAMAKI , Shinji KONO

University of Ryukyus

概要

Cassandraという分散Key-Value Storeがある.Cassandraを用いることにより複数のサーバーでデータを分散させて管理することができる.
本研究では,スケーラビリティの高いCMSの開発をするため,PCクラスタを用いた検証環境を構築し,Cassandraのスケーラビリティの検証とMySQLとの比較を行った.

その結果,クラスタを用いたスケーラビリティの検証方法や,Cassandraの特徴や性能を発揮できる条件、他のデータベースとの違いを発見することができた.

Cassandraとは?

Cassandraを利用したアプリケーション

前回の実験

MySQLとCassandraをシンプルな方法でベンチマークを取った

1台のクライアントとサーバーで10000回のリクエストに要する時間を測定する

Read Write
MySQL 5.1.46 9 seconds 6 seconds
Cassandra 0.6.2 42 seconds 411 seconds

ベンチマークの方法を変える必要がある.

今回の実験

  • Torqueを利用して,任意台数のクラスタ(クライアント)に同時にスクリプトを実行させる
  • スクリプトは,ある時間になると一斉に目的のサーバーに10000回のアクセスを開始する
  • クラスタの台数を変動させCassandraとMySQLサーバーに負荷をかける.
  • 複数台のクラスタが処理に要した時間の平均をグラフ化し比較する.

今回の実験

実験環境

ベンチマークを取るために構築した環境

クラスタ MacMini Core i7
CPU Core Duo 2G (1) Core 2 Duo 2.53G (2) Core i7 3.0G (4)
Memory 1GB 4GB 14GB
OS CentOS 5 OSX 10.6 CentOS 5

このうちクラスタは80台用意されている.

()内はコア数で,Core i7のみ4コア8スレッドである.

実験環境

MySQLとの比較のため,MySQLにはCassandraと似たテーブルを定義した.

CREATE TABLE tbl_benchmark(name VARCHAR(100) UNIQUE,
value VARCHAR(100),timeuuid long)

MacMiniを使用したベンチマーク

  • CassandraのほうがMySQLより遅いが,平均時間の増加度は似たように推移している.
  • MySQLは急激に平均時間が上昇しているが,Cassandraは緩やかに上昇している.

MacMiniを使用したベンチマーク

考察

Core i7を使用したベンチマーク

  • Cassandraのほうが平均時間が緩やかに上昇しているため,70台付近でMySQLを上回る性能がでている.
  • READと同様にCassandraの方が緩やかに上昇している.そのため,40台付近でMySQLを上回る性能がでている.

Core i7を使用したベンチマーク

考察

MacMini Clusterを使用したベンチマーク

  • 1台のときは,両方に差は無く,数を増やすとクラスタのほうが遅くなっている.
  • READと同様に,台数を増やしてもCassandra1台を上回る性能は出ていない.

MacMini Clusterを使用したベンチマーク

考察

ベンチマークのまとめ

  • 単純なベンチマーク(クライアントが1台)の場合,Cassandraは遅い.
  • クライアントが複数いるときに性能を発揮する.
  • コア数の少ないサーバーでは,性能を発揮することはできず,MySQLと同じような推移の仕方をする.
  • コア数の多いサーバーでは,MySQLより平均時間の増加度が少ない.
  • サーバーの台数を増やすだけでは1台の性能を超えることはできなく,データにも工夫が必要である.
  • Cassandraの性能を活かすことのできる,条件はコア数の多いサーバーでかつ読み書きが頻繁に行われるアプリケーションであるということが分かった.

Cassandraの特徴・性能を検証できた,ではどのようにシステムを開発すればスケールするのか?

スケーラビリティのあるCMSの開発

クラスタを用いたベンチマークにより, Cassandraの性能とスケーラビリティの検証方法を確認することができた.
これを踏まえた上でCassandraを利用したスケーラビリティのあるシステムを開発する.

スケーラビリティの高いCMSを開発するためにはそれに合わせたスケールするデータ構造が必要

システムのアーキテクチャ

CassandraとWebサーバーが直接通信するのではなく, 間にCMSのAPIを提供するサーバーを挟む

ブラウザに限らない,クライアントを作成することができる(性能を評価するためのクライアントなど)

システムのアーキテクチャ

データ構造

CMSのデータ構造として木構造を利用することができるが,スケールする必要がある

今回は非破壊的木構造を使用して開発を行う

非破壊的木構造

編集する木構造の内容を変更せずに, 変更するノードのコピーと変更がないノードで新しく木構造を作る

非破壊的木構造

ロックを必要としない・複製を自由に作成できるという利点からスケールするのではないかと考えられる

スケーラビリティを検証する

まとめ

今後の課題

ご清聴ありがとうございました