ドキュメント指向データベースと列指向データベース

2010年10月15日(金)
藤本 壱

Apache Cassandraの基本

列指向データベースの中で、オープンソースとして公開されているものもいくつかあります。その1つに、「Apache Cassandra」があります(以後「Cassandra」と略)。

Cassandraは、元々はFacebookの大量のデータを処理するために作られたデータベースです。その後、Apacheファウンデーションに寄贈されて、オープンソース化されました。現在では、Apacheトッププロジェクトの1つになっています。

Cassandraもスケーラビリティを重視した設計になっています。多数のサーバーにCassandraをインストールし、データを分散して処理することができます。

CassandraはJavaで記述されていますので、WindowsやLinuxなどのJavaが動作する環境で動作させることができます。また、「Thrift」というフレームワークによって、PHPやPerl等の各種の言語から、Cassandraのデータベースにアクセスすることができます。

Cassandraでは、データベース全体のことを「キースペース」と呼びます。また、リレーショナルデータベースのテーブルに相当するものを、「カラムファミリ」と呼びます。1つのキースペースの中に、複数のカラムファミリを入れることができます。

カラムファミリでは、1件分のデータを「key」で識別します。そして、そのデータには「name」と「value」からなる「カラム」を入れることができます。この場合は、カラムファミリは、リレーショナルデータベースのテーブルと似た使い方をすることができます。ただ、リレーショナルデータベースとは違い、カラムはデータを追加する都度自由に決めることができ、あらかじめ構造を決めておく必要はありません。

例えば、電話番号簿を作りたいとします。ただし、人によって、関係する電話番号がいろいろあるとします(自宅/携帯/会社等)。このような電話番号簿をCassandraで作る場合、人の名前をkeyにし、その人に関連する電話番号をカラムで表して、図2のようなデータ構造にすることが考えられます。

また、カラムファミリに「スーパーカラム」を入れることもできます。この場合、個々のカラムの中に、さらに細かなカラムを入れ子にするようなイメージになります。

図2:電話番号簿をCassandraで作る場合のデータ構造の例

Cassandraを使ってみる

前述したように、CassandraはJavaで作られています。JDKをインストールした環境で、環境変数をいくつか設定した後、Cassandraのプログラムを起動すれば、Cassandraを使ってみることができます。例えばWindowsなら、以下の手順でCassandraを実行することができます。

  1. 表3の環境変数を設定します。
  2. Cドライブに「var」というフォルダを作り、さらにその中に「lib」というフォルダを作ります。
  3. Cassandraの解凍先の「bin」フォルダにある「cassandra.bat」を実行します。

コマンドラインのツールで、データの追加等を行うことができます。Windowsであれば、コマンドプロンプトを起動して、binフォルダの「cassandra-cli.bat」を実行します。

前述の図2の例で、keyが「yamada」、カラムのnameが「home」の電話番号を追加したいとします。この場合、コマンドラインのツールで以下のように入力すれば、「Keyspace1」というキースペースの「Standard1」というカラムファミリに、データを追加することができます。

set Keyspace1.Standard1['yamada']['home'] = '03-1234-XXXX'

また、以下のように入力すれば、keyが「yamada」のデータについて、nameとcolumnの組み合わせのリストを得ることができます。

get Keyspace1.Standard1['yamada']

さらに、本稿では紙面の都合で解説しませんが、PHP等のライブラリを使って各種の処理(データの検索等)を行うことも可能です。

名前 設定値
JAVA_HOME JDKのインストール先のパス
CASSANDRA_HOME Cassandraのインストール先のパス
CASSANDRA_CONF %CASSANDRA_HOME%\conf
CASSANDRA_MAIN org.apache.cassandra.thrift.CassandraDaemon

表3:Cassnadraを実行するために設定する環境変数

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています