Apache Cassandra とは
Cassandra は最近取りざたされている NoSQL(Not only SQL) の一つです。Key Value Store のデータベースでスケーラビリティに優れています。公式サイトは http://cassandra.apache.org/ となり、現在バージョンは 0.6.2 となっています。利用には Java1.6 以上が必要となります。
環境設定
Windows 環境に導入します。特に環境設定は必要ありませんが、環境変数 JAVA_HOME は設定されている必要があります。
公式サイトより apache-cassandra-0.6.2-bin.tar.gz を落として解凍し、適当なディレクトリに配置します。bin ディレクトリ内に起動用の bat ファイルがあります。設定ファイルは conf 内に格納されています。デフォルトで、/var 以下にデータファイルとコミットログが出力される設定となっています。つまり Windows 環境だと C:\var が作成されるので気に食わない場合はconf配下の設定ファイルを編集します。ここではそのまま・
Cassandra サーバの起動
bin 配下の cassandra.bat にてサーバを起動します。起動すると以下のようなメッセージが出力されます。
Starting Cassandra Server Listening for transport dt_socket at address: 8888 INFO 23:16:37,521 Auto DiskAccessMode determined to be standard INFO 23:16:38,302 Saved Token not found. Using 135089628509433126109927955627369990654 INFO 23:16:38,302 Saved ClusterName not found. Using Test Cluster INFO 23:16:38,334 Creating new commitlog segment /var/lib/cassandra/commitlog\CommitLog-1277216198334.log INFO 23:16:38,537 Starting up server gossip INFO 23:16:38,771 Binding thrift service to localhost/127.0.0.1:9160 INFO 23:16:38,771 Cassandra starting up...
クライアントの起動
同様に、bin 配下の cassandra-cli.bat にて起動します。しかし、batファイルの内容がいまいちで以下のように ClassNotFound となってしまいます。
Starting Cassandra Client Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/cassandra/cli/CliMain Caused by: java.lang.ClassNotFoundException: org.apache.cassandra.cli.CliMain at java.net.URLClassLoader$1.run(URLClassLoader.java:200) ・・
cassandra-cli.bat の以下を
if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%CD%
以下のように変更して再度 起動してみます。
if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..
以下のようなプロンプト表示となります。
Starting Cassandra Client Welcome to cassandra CLI. Type 'help' or '?' for help. Type 'quit' or 'exit' to quit. cassandra>
接続
プロンプト入力より connect します。
cassandra> connect localhost/9160 Connected to: "Test Cluster" on localhost/9160 cassandra>
以下のように cassandra-cli.bat の起動時に接続することもできます。
cassandra-cli.bat --host localhost --port 9160
insertとget
データベースに値を登録してみます。
cassandra> set Keyspace1.Standard2['jsmith']['first'] = 'John' Value inserted.
各指定は以下の定義となっており、4階層のキーに値を割り付けています。
Keyspace1 | keyspace |
Standard2 | column family |
['jsmith'] | key |
['first'] | column |
'John' | value |
もう1レコード。
cassandra> set Keyspace1.Standard2['jsmith']['age'] = '42' Value inserted.
取得はgetを使用します。
cassandra> get Keyspace1.Standard2['jsmith'] => (column=first, value=John, timestamp=1277220393961000) => (column=age, value=42, timestamp=1277220411632000) Returned 2 results.
insert した内容が取得できています。
・・今日はここまで