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