Windows で Cassandra を動かしてみる
話題の分散データベース「Cassandra」をお手軽に試したかったので、Windows で動かしてみました。
(会社でも自宅でもメイン PC が Windows なもので・・・^^;)
公式サイト
The Apache Cassandra Project
http://cassandra.apache.org/
インストール
Cassandra は Java 製なので、インストールするには事前に Java 1.6 以降のインストールが必要です。
インストールは上記公式サイト内 Download ページより、「apache-cassandra-0.6.1-bin.tar.gz」をダウンロードし、適当な場所に展開すれば完了です。
起動
まずはサーバを起動します。
コマンドプロンプトより Cassandra を展開したディレクトリに移動し、「bin/cassandra.bat」を実行します。
E:\Programs\apache-cassandra-0.6.1-bin>bin\cassandra.bat Starting Cassandra Server Listening for transport dt_socket at address: 8888 INFO 23:05:30,888 Auto DiskAccessMode determined to be standard INFO 23:05:31,170 Sampling index for E:\var\lib\cassandra\data\Keyspace1\Standard2-1-Data.db INFO 23:05:31,182 Sampling index for E:\var\lib\cassandra\data\Keyspace1\Standard2-2-Data.db INFO 23:05:31,217 Deleted E:\var\lib\cassandra\data\Keyspace1\Standard1-1-Data.db INFO 23:05:31,223 Deleted E:\var\lib\cassandra\data\Keyspace1\Standard1-2-Data.db INFO 23:05:31,228 Deleted E:\var\lib\cassandra\data\Keyspace1\Standard1-3-Data.db INFO 23:05:31,232 Deleted E:\var\lib\cassandra\data\Keyspace1\Standard1-4-Data.db INFO 23:05:31,233 Sampling index for E:\var\lib\cassandra\data\Keyspace1\Standard1-5-Data.db INFO 23:05:31,248 Sampling index for E:\var\lib\cassandra\data\system\LocationInfo-1-Data.db INFO 23:05:31,253 Replaying \var\lib\cassandra\commitlog\CommitLog-1272511839426.log INFO 23:05:31,282 Creating new commitlog segment /var/lib/cassandra/commitlog\CommitLog-1272549931282.log INFO 23:05:31,342 Standard1 has reached its threshold; switching in a fresh Memtable at CommitLogContext(file='/var/lib/cassandra/commitlog\CommitLog-1272549931282.log', position=121) INFO 23:05:31,343 Enqueuing flush of Memtable(Standard1)@4926325 INFO 23:05:31,345 Writing Memtable(Standard1)@4926325 INFO 23:05:31,528 Completed flushing E:\var\lib\cassandra\data\Keyspace1\Standard1-6-Data.db INFO 23:05:31,559 Log replay complete INFO 23:05:31,605 Saved Token found: 94628080644493457336183239840499897576 INFO 23:05:31,606 Saved ClusterName found: Test Cluster INFO 23:05:31,615 Starting up server gossip INFO 23:05:31,668 Binding thrift service to localhost/127.0.0.1:9160 INFO 23:05:31,677 Cassandra starting up...
起動したら、別のコマンドプロンプトより、同じく Cassandra を展開したディレクトリに移動し、「bin/cassandra-cli.bat」を実行します。
E:\Programs\apache-cassandra-0.6.1-bin>bin\cassandra-cli.bat Starting Cassandra Client Welcome to cassandra CLI. Type 'help' or '?' for help. Type 'quit' or 'exit' to quit. cassandra>
クライアントが起動したので、サーバに接続してみます。
cassandra> connect localhost/9160 Connected to: "Test Cluster" on localhost/9160 cassandra>
上記のように表示されていれば、無事接続できています。
使ってみる
Cassandra ではデフォルトで「Test Cluster」が用意されているので、上記ではクライアントはその「Test Cluster」に接続しました。
同様に、Cassandra ではデフォルトの状態で「Keyspace1」という名前の keyspace と、その配下にいくつかの column family が定義されています。
keyspace は RDBMS でいうところのデータベース(スキーマ)で、column family はテーブルに相当する概念になります。
これらがデフォルトで用意されているため、最初は特にデータ構造の設計などを行わずとも動作の確認を行う事ができます。
同梱の README.txt に記載されているサンプルが Keyspace1 を使用するものとなっているので、早速実行してみます。
cassandra> set Keyspace1.Standard1['jsmith']['first'] = 'John' Value inserted. cassandra> set Keyspace1.Standard1['jsmith']['last'] = 'Smith' Value inserted. cassandra> set Keyspace1.Standard1['jsmith']['age'] = '42' Value inserted. cassandra> get Keyspace1.Standard1['jsmith'] => (column=last, value=Smith, timestamp=1270349912867) => (column=first, value=John, timestamp=1270349904579) => (column=age, value=42, timestamp=1270349918835) Returned 3 results.
無事、値の設定と取得が行えました。
Cassandra では keyspace と column family は 「conf/storage-conf.xml」で定義されているのですが、key と column は実行時に自由に増やせるため、上記サンプルの通りではなく、何か好きな値を指定しても動作するはずです。
データモデル
上記のサンプルの記述が具体的に何を意味しているかは、同じく README.txt 内に記載されていた以下の図がわかりやすかったです。
(Windows 環境でバックスラッシュが円記号になってしまっていたため、線を表す記号のみ変えています。)
set Keyspace1.Standard2['jsmith']['first'] = 'John' │ │ │ │ │ │ │ └ key │ └ value │ │ └ column └ keyspace └ column family
それぞれの更に詳しい解説は、有志の方により日本語訳が進められている下記の公式 Wiki ページを読むのがいいかと思います。
DataModel_JP - Cassandra Wiki
http://wiki.apache.org/cassandra/DataModel_JP
次回は Java から Cassandra を使用してみたいと思います。
Packt Publishing