Cassandra Mac OS Xで試してみた。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
cassandra インストール
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
$ wget http://ftp.kddilabs.jp/infosystems/apache//cassandra/1.0.7/apache-cassandra-1.0.7-bin.tar.gz $ tar xvzf apache-cassandra-1.0.7-bin.tar.gz $ vi ~/.bashrc
export CASSANDRA_HOME=/Users/xxxxx/apache-cassandra-1.0.7
export PATH=$PATH:$CASSANDRA_HOME/bin
[apache-cassandra-1.0.7]$mkdir log $ mkdir data $ mkdir commitlog $ mkdir saved_caches
#ログ設定の変更
[apache-cassandra-1.0.7]$vi conf/log4j-server.properties
# Edit the next line to point to your logs directory
#log4j.appender.R.File=/var/log/cassandra/system.log
log4j.appender.R.File=/Users/xxxxx/apache-cassandra-1.0.7/log/system.log
#もろもろのパス変更
[apache-cassandra-1.0.7]$vi conf/cassandra.yaml
# directories where Cassandra should store data on disk.
data_file_directories:
- /Users/xxxxx/apache-cassandra-1.0.7/data
# commit log
commitlog_directory: /Users/xxxxx/apache-cassandra-1.0.7/commitlog
# saved caches
saved_caches_directory: /Users/xxxxx/apache-cassandra-1.0.7/saved_caches
# 起動
$cassandra -f
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
クライアントからの接続確認
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
参考:http://wiki.apache.org/cassandra/CassandraCli
#クライアント接続
$cassandra-cli
[default@unknown] connect localhost/9160; Connected to: "Test Cluster" on localhost/9160
#キースペースを作る
; キースペース ≒ データベース
[default@unknown] create keyspace Twissandra; e52e0690-4bb8-11e1-0000-242d50cf1f9f Waiting for schema agreement... ... schemas agree across the cluster
#キースペースを選択
[default@unknown] use Twissandra; Authenticated to keyspace: Twissandra
#ひとつのカラムファミリー"User"を作成する
; カラムファミリ≒RDBMSでいうところのテーブル
; Cassandra では別々のファイルで管理される。
[default@unknown] create column family User with comparator = UTF8Type; 8c8adfd0-4bb9-11e1-0000-242d50cf1f9f Waiting for schema agreement... ... schemas agree across the cluster
#"User" カラムファミリーののために更新。人がよめる形でデータを返し、年齢でフィルタできるように。
[default@unknown] update column family User with column_metadata = [ {column_name: first, validation_class: UTF8Type}, {column_name: last, validation_class: UTF8Type}, {column_name: age, validation_class: UTF8Type, index_type: KEYS} ];
#データを追加する(行を追加)
; 行(ROWS) RDBMSでいうところの行。
[default@unknown] assume User keys as utf8; //※ set User[utf8('jsmith')]
['first'] = 'John';でもよいらしい
Assumption for column family 'User' added successfully.
[default@unknown] set User['jsmith']['first'] = 'John'; [default@unknown] set User['jsmith']['last'] = 'Smith'; [default@unknown] set User['jsmith']['age'] = '38';
→エラー
cannot parse 'John' as hex bytes
"key_validation_class: UTF8Type" をカラムに指定すればOKだった↓
update column family User with
column_metadata =
[
{column_name: first, validation_class: UTF8Type,key_validation_class: UTF8Type},
{column_name: last, validation_class: UTF8Type,key_validation_class: UTF8Type},
{column_name: age, validation_class: UTF8Type, index_type: KEYS}
];
※再度データ追加
#データを取得してみる
[default@Twissandra] get User where age='35';
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
RowKey: jsmith
=> (column=age, value=35, timestamp=1327980874094000)
=> (column=first, value=John, timestamp=1327980704811000)
=> (column=last, value=Smith, timestamp=1327980864455000)
1 Row Returned.
Elapsed time: 7 msec(s).
#すべてのデータを取得する場合は
[default@Twissandra] list User;
$ cassandra-cli -host localhost -port 9160 -f script.txt
※なんだかんだ、RDBMSと基本的なお作法はかわりなく、スムーズに理解できました!