ヒマをみつけてWeb開発
その場の思い付きを、ヒマをみつけてWebサイトにしてみるブログ

列指向データベース、CassandraとHBaseを比較

Thursday, 25 March 2010 16:52 by sabro

Cassandraが気になっていたんですが、同じ列指向データベースのHBaseはどうなんだろうと思って、簡単に比較してみました。

データの一貫性
NoSQL系は、そもそもRDBMSに比べて一貫性がゆるめに設計されている感じがあります。実際、Cassandraは、行ロックがなくトランザクションが使えません。複数のクライアントからの更新が被った場合は、タイムスタンプを見て最新のものを現在の値に設定するようになっています。結果整合性っていうみたいですね( ̄∇  ̄ ) ただ、まったく一貫性に関するオプションがないわけではなく、クエリ発行時にConsistencyLevelを指定することで、全てのレプリケーションノードに書込まれたことを保証したりは出来るみたいです。一方、HBaseの方は行ロック可能で、トランザクションを使うことができます。ただ制約も多いみたいで、いわゆる複数テーブルにまたがったようなのは無理ぽいみたいでした(自信なし)。まあしかしデータ一貫性では、HBaseの方に軍配が上がるようです。
運用の容易さ
Cassandraは運用の容易さを非常に重視してます。いわゆるマスターノードはなく、すべてのクラスタが同列に扱われていて、単一故障点がありません。他のノードの情報はGossipプロトコルをつかってP2P的な感じで伝搬するみたいです。それと比較してHBaseは、マスターノードがあります。マスターノードの2重化は出来るみたいなので、単一故障点はないですが、運用の難度はあがりますね。また、HBaseは、HadoopやZookeeperなどのコンポーネントに依存しているので、そちらのサーバも立てる必要があり、サーバ構成は複雑になります。運用容易さは基本的にはCassandraの勝ちですね。ただ、Cassandraにもテーブルスキーマ変更時に再起動が必要という欠点もあったりするみたいです。
ツール・ドキュメント
Cassandraは、ツールやドキュメントの整備はまだまだといった感じを受けます。一方、HBaseはそもそも、HDFSという柔軟なファイルシステムの上で動いているので、ストレージ製品を別途用意するがないですし、MapReduceとも楽に連携できます(Cassandraも最新のベータ版ではHadoopがあるみたいです)。このあたりの整備はHBaseに一日の長がありますが、Cassandraはコミュニティが活発なので、これからどんどん整備されていくんじゃないでしょうか。
データ構造・API
データ構造に関しては、Cassandra、HBaseはかなり似ています。まあ、同じ列指向データベースなんで当たり前なんですけどね。双方ともGoogleのBigTableをモデルにしているみたいです。データの取得、更新を行なうAPIはどちらもThriftに対応しているので、色んな言語のドライバを生成できます。生成されたドライバは、ネストの深いHashMapがあったりと、結構クセが強いですが、高機能なドライバも有志が作ってますんで、自分にあったものを探しましょう。

ざっと見て来ましたが、Cassandraはパフォーマンスの良さ、運用の容易さなどを重視していて、HBaseの方は、スケーリング性能を保ちつつのデータ一貫性、ツール整備など含めた完成度の高さを目指してるように感じました。

乱暴に結論を出すなら、Cassandraは、Webなどの比較的一貫性を求められない用途に、HBaseはスケーリングした上である程度一貫性が求められる場合や、MapReduceのデータ解析力を生かした、データウェアハウスなどの用途に使うかんじでしょうか( ̄∇  ̄ )

Tags:   ,
Categories:   NoSQL
Actions:   Permalink | Comments (42) | Comment RSSRSS comment feed