カラム(列)指向データベースは大量データ分析などのニーズが増えていることから、注目を集めつつあります。ここで、ざっと各プロダクトごとの特徴をおさらいしておきましょう。
本連載は下記書籍から第5章を基に、@IT向けに再構成して掲載しています。
本連載は書籍『NOSQLの基礎知識』(リックテレコム刊、ISBN:978-4897978871)で解説されている内容から一部を抜粋し、本連載向けに一部再編集して掲載したものです。
書籍では、一般にNoSQLと呼ばれている各種データベース技術について、基本概念から主要なプロダクトの特性、ベンチマーク結果までを紹介しています。データモデルやアーキテクチャの違いといった基本概念から、各プロダクトの特徴を理解できる内容になっています。
本連載では、この書籍の内容から、主要プロダクトを紹介している第5章を抜粋し、そのエッセンスを紹介していきます。
今回はその中でもカラム指向型データベースに分類されるNoSQLの主要プロダクトを見ていきましょう。
カラム指向型データベースとして、HBase、Hypertable、Cassandraを紹介します。既に見てきたように(第1回の分類図参照)、HBaseとHypertableはGoogleのBig-tableに触発されたマスタ型であり、CassandraはBigtableとAmazon Dynamoのハイブリッドとして開発され、P2P型に分類されます。
Apache HBase(以下、HBase)は、Apache Hadoop環境で稼働する分散データベースであり、GoogleのBigtableの設計を参考にして開発されたオープンソースソフトウェアです。
HBaseでは、BigtableにおけるChubbyがZooKeeperと呼ばれ、タブレットがリージョンと呼ばれるなど、用語は違いますが基本的な構成は同じであり、GFS(Google File System)の代わりとなるHDFS(HadoopDistributed File System)と共に使用されます。
Hadoop環境で稼働することから、バッチ処理向けのデータベースだと誤解されることがありますが、実際にはFacebookメッセージングのように応答速度が重視されるオンライン処理にも多用されています。もちろん、Hadoop MapReduceによるバッチ処理も可能です。
2011年初頭にリリースされたバージョン0.90では、データセンター間の複製機能を搭載し、2012年1月にリリースされたバージョン0.92では、後述するコ・プロセッサ機能を装備するなど、Bigtableとは異なる進化を遂げています。
HBaseはBigtableと同様に「強い整合性」を保証します。あるリージョン(後述)での書き込みは、必ず特定のノードが担当し、データの複製もHDFSが同期式に行うため、読み出しでは常に最新のデータが得られます。また、CAS操作やカラムに格納された整数値をインクリメント*1するカウント操作も備えています。
データ分割の際には自動的にシャーディング*2を行い、辞書配列に基づくキーのグループを「リージョン」という単位で「リージョンサーバ」に格納します。そのリージョンが大きくなったときは、自動的に再分割を実行します。個々のリージョンは各リージョンサーバにランダムに割り当てられ、1台のリージョンサーバが数十から数千のリージョンを担当します。
HBaseはマスタ型ですが、マスタノードはテーブルの作成・削除、リージョンの分割・再配置といった管理タスクのみを担当し、クライアントからのデータアクセスには関与しません。そのため、もしマスタに障害があっても、クライアントはデータの読み書きを継続できます。ある特定の時点でアクティブになることができるマスタは1つだけですが、あらかじめ複数のマスタをホットスタンバイ(起動状態で待機)させておき、障害時に自動的にフェイルオーバー(障害迂回)できます。
その一方で、ファイルシステムのHDFSが単一障害点(SPOF)となります。ファイルのディレクトリ構造やアクセス権などを定義したメタデータはNameNodeが管理しますが、このNameNodeは単一マスタ構成だからです。NameNodeに障害が発生すると、システム全体が動作しなくなってしまいます。
現状での対策としては、Heartbeat+DRBD*3などのLinux版高可用性クラスタソフトウェアをNameNodeに組み合わせる方法が一般的です。この他、HDFS互換でSPOFのない分散ファイルシステム、例えば MapR TechnologiesのMapR Lockless Storage Servicesなどを使う方法もあります。
*1 インクリメント データベースに格納済みのキー・バリューのバリュー部分を整数として扱い、指定した数だけ増減させる操作です。強い整合性を採用したDBMSだけで可能な操作です。
*2 シャーディング コンテシストハッシングとは別のデータ割り当て方法。あらかじめ指定したルールに則してデータを配置していく方法。指定した割り当てル―ルに即した結果、あるノードにデータが集中する可能性があるため、再分割や再配置のための対策を用意する必要ああることもある。
*3 DRBD(Distributed Replicated Block Device) 2台のサーバ間で、一方のハードディスク全体の内容を他方のハードディスクへ複製するためのソフトウェアです。ネットワークを介したRAID 1と考えることができます。
Copyright © ITmedia, Inc. All Rights Reserved.