Apache Cassandra使ってみる

カラム指向の分散データベースのApache Cassandraを使ってみる!!

インストール

Javaも必要なので、Javaの方もインストールして下さい。
Cassandra自体は、ダウンロードサイトからダウンロードして来て、展開するだけです。

[user@localhost]$ sudo su - root
[root@localhost]# cd /usr/local/src
[root@localhost]# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/cassandra/2.0.0/apache-cassandra-2.0.0-bin.tar.gz
[root@localhost]# tar -zxvf apache-cassandra-2.0.0-bin.tar.gz
[root@localhost]# mv apache-cassandra-2.0.0 /usr/local/apache-cassandra
データモデル

Cassandraのデータモデルは、5層と4層のパターンがあります。
違いは、Super Columnがあるかないかです。
5層の場合

[keyspace] [Column Family] [Super Column] [Column] [Value]

4層の場合

[Keyspace] [Column Family] [Column] [Value]
Cassandra起動
[root@localhost]# cd /usr/local/apache-cassandra/bin
[root@localhost]# ./cassandra
Cassandraへログイン
[root@localhost]# ./cqlsh
cqlsh>

えっとCQLSHを使います...2.x系で、いろいろ変わった?みたいなので、
CLIも試したかったが、ドキュメントが見つからず今回は、CQLSHにしました。

Keyspaceを作成
cqlsh> cqlsh> CREATE KEYSPACE Employee WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3};
Tableを作成
cqlsh> use Employee;
cqlsh:employee> CREATE TABLE Person (
            ... personId int,
            ... personName varchar,
            ... status int,
            ... startDate timestamp,
            ... endDate timestamp,
            ... PRIMARY KEY (personId, startDate, endDate));
データ登録
cqlsh:employee> INSERT INTO PERSON (personId, personName, status, startDate, endDate)
            ... VALUES(100, 'test', 0, '2013-09-09 10:00:00', '2999-12-31 23:59:59');
データ検索
cqlsh:employee> select * from PERSON;

 personid | startdate                | enddate                  | personname | status
----------+--------------------------+--------------------------+------------+--------
      100 | 2013-09-09 10:00:00+0900 | 2999-12-31 23:59:59+0900 |       test |      0