ドキュメント指向データベースと列指向データベース
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を実行することができます。
- 表3の環境変数を設定します。
- Cドライブに「var」というフォルダを作り、さらにその中に「lib」というフォルダを作ります。
- 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を実行するために設定する環境変数
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- データベース:サーバにデータを保存しよう
- SoftLayerでMongoDB環境を構築してみよう
- クラウドの力を引き出す分散データベース
- Foreign Data Wrapper(FDW)の機能強化
- Active Recordのその先へ ~RailsでMongoDBを使う~
- OLAPのための高速カラム指向データベースClickHouseの概要を紹介
- IoTに適したNoSQL・分散Key-Valueストア
- 「TAURI」でデータベースを使ってみよう
- NoSQLとNewSQLの技術革新、マルチテナンシーの実現と高いスケーラビリティを提供
- Web SQL DatabaseとIndexed Database API