2012年11月19日

Cassandra 1.1 簡易メモ

概要

Apache Cassandra」の 1.1.6 をとりあえず試すためのメモ。
ネット上の記事が結構古い物しかない印象なので、公開しておく。
触りだけで、深い所までは書いてない。

設置から起動

curl -O http://ftp.riken.jp/net/apache/cassandra/1.1.6/apache-cassandra-1.1.6-bin.tar.gz
tar xvf apache-cassandra-1.1.6-bin.tar.gz
cd apache-cassandra-1.1.6

# conf の中で利用しているディレクトリを作成
sudo mkdir -p /var/log/cassandra
sudo chown -R `whoami` /var/log/cassandra
sudo mkdir -p /var/lib/cassandra
sudo chown -R `whoami` /var/lib/cassandra

# 起動
bin/cassandra -f

デフォルトでは Messaging Service が 7000 ポート、thrift server が 9160 ポートを利用する。

アクセス

標準クライアントは依然から存在する「bin/cassandra-cli」か、新しい「bin/cqlsh」を利用する。
ネットや README だと cassandra-cli を利用しているが、cqlsh の方が使いやすいのでそちらを利用する。

bin/cqlsh localhost

keyspaceの作成

最初に RDB のデータベース相当 である keyspace を作成する。

CREATE KEYSPACE Keyspace1
  WITH strategy_class = 'SimpleStrategy' 
   AND strategy_options:replication_factor = 1;

keyspace に移動

cqlsh> use Keyspace1;
cqlsh:Keyspace1>

column family の作成

RDB のテーブル相当である column family を作成する。cqlshを利用すると、「CREATE COLUMNFAMILY」、「CREATE TABLE」のいずれでも作成できる。
「CREATE TABLE」を利用すると 従来の RDB 的に column も同時に作成できる。とりあえずこちらを利用したサンプル。
Snappy による圧縮を指定して作成する場合は以下のようにする。

CREATE TABLE Users (
  user_id int PRIMARY KEY,
  user_name varchar,
  age int
  )
  WITH comparator=LongType
   AND compression_parameters:sstable_compression='SnappyCompressor'
   AND compression_parameters:chunk_length_kb=128;

確認は「DESCRIBE」コマンド。

DESCRIBE KEYSPACE Keyspace1
DESCRIBE COLUMNFAMILIE 
DESCRIBE COLUMNFAMILY Users

データ挿入

データを挿入してみる。

SELECT * FROM Users;
INSERT INTO Users (user_id, user_name, age) VALUES (1, 'John Smith', 42);
INSERT INTO Users (user_id, user_name, age) VALUES (2, '日本語 挿入', 33);
SELECT * FROM Users;

INSERT は UPDATE と同じ動作をするので、prymary key が重複するデータを挿入すると上書きする。

データ参照

SELECT文を発行する。
まず count で行数を取得してみる。古いバージョンでは count は Row 中の column 数を表示している時もあったが、現在は Row の数を返すようになっている。

select count(*) from Users;

普通に SELECT文が発行できる。暗黙に「limit = 10000」が付与される。

select user_name, age from Users where user_id = 1 ;

データ削除

DELETE文を発行する。

delete from Users where user_id = 1;

「PRIMARY KEY」を設定していると、「PRIMARY KEY」以外の値が消えるだけで「PRIMARY KEY」の値が残るので、論理削除とかにした方が良い場合もある。

ソート

ORDER BY したい場合は、PRIMARY KEY を複合キーで作る必要があるので、PRIMARY KEY を複合キーで作成できる場合にしか使えない。

参考サイト

blog comments powered by Disqus