自宅検証環境構築(2)

Cassandraのインストール

現行の安定版は0.6.8なのですが、今回はVector Clock (http://funini.com/kei/logos/clock.shtmlに詳しい) のお勉強 (文学部卒の自分がこの歳になってスカラーだのベクトルだのいう単語を扱うことになるとは思わなんだ。これがないとCassandraではロックに相当する操作ができないようだ) を兼ねたかったので、検証版の0.7.0beta3を持ってきます。

amanar@lenny101:~$ wget http://ftp.riken.jp/net/apache/cassandra/0.7.0/apache-cassandra-0.7.0-beta3-src.tar.gz
amanar@lenny101:~$ tar zxvf apache-cassandra-0.7.0-beta3-src.tar.gz
amanar@lenny101:~$ cd apache-cassandra-0.7.0-beta3-src/
amanar@lenny101:~/apache-cassandra-0.7.0-beta3-src$ ls
CHANGES.txt  NEWS.txt    README.txt  build.xml  contrib  interface  ivy.xml          lib     src
LICENSE.txt  NOTICE.txt  bin         conf       debian   internode  ivysettings.xml  redhat  test

ふむ。ant入ってなかったね。そういえば。

amanar@lenny101:~/apache-cassandra-0.7.0-beta3-src$ sudo apt-get install ant
amanar@lenny101:~/apache-cassandra-0.7.0-beta3-src$ which ant
/usr/bin/ant
amanar@lenny101:~/apache-cassandra-0.7.0-beta3-src$ ant

…なんかえらい時間かかるんですが。http://repo1.maven.org/maven2/ から大量にものを持ってきているよ
名前を見たこともないjarが大量にww
(十数分後) あ、おわった。あとはREADME.txtにしたがってディレクトリ作ったりchownしたり。

amanar@lenny101:~/apache-cassandra-0.7.0-beta3-src$ bin/cassandra -f

で、フォアグラウンド起動。
別窓を立ち上げて、

amanar@lenny101:~$ cd apache-cassandra-0.7.0-beta3-src/
amanar@lenny101:~/apache-cassandra-0.7.0-beta3-src$ bin/cassandra-cli --host localhost
Connected to: "Test Cluster" on localhost/9160
Welcome to cassandra CLI.

Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
[default@unknown] use Keyspace1
Authenticated to keyspace: Keyspace1
[default@Keyspace1] set Users[jsmith][first] = 'John'
No such column family: Users
[default@Keyspace1] create column family Users with comparator=UTF8Type
08fee929-f570-11df-85ac-e700f669bcfc
[default@Keyspace1] set Users[jsmith][first] = 'John'
Value inserted.
[default@Keyspace1] set Users[jsmith][last] = 'Smith'
Value inserted.
[default@Keyspace1] set Users[jsmith][age] = long(42)
Value inserted.
[default@Keyspace1] get Users[jsmith]
=> (column=last, value=536d697468, timestamp=1290344750378000)
=> (column=first, value=4a6f686e, timestamp=1290344744561000)
=> (column=age, value=42, timestamp=1290344761322000)
Returned 3 results.
[default@Keyspace1]

READMEどおりの、一通りの動作確認。

ん? Vector Clock実装って言うのは間違い??

第1回HBaseとCassandraの討論会のメモ - ひしだまの変更履歴

分散DBでは削除の仕組みが難しい→0.7β2からVersioned Clockが実装される(Vector Clockはつまずいた)(◆●そういえばそんなツイートを見た覚えが)

なんと!

…途方にくれていてもしょうがないので、さらに調べてみる。

「HBaseとCassandraの討論会 第1回」に行ってきた - terurouメモ
にあった、ASCII.technologies 2010年11月号をamazonお急ぎ便で急遽調達。今読んでいるところ。

やりたかったのはカウンター様のプログラムの実装なので、

Cassandraではロックがないために、値をアトミックにインクリメントするということさえ、うまく実現することは難しかった
(中略)
しかし、Cassandra0.7ではこの操作を可能とする機能が搭載され、Twitterでは現在、この機能のテストを行っているという。
(前掲書 P.99より)

おぉ!? さっそく俺もテストするぞ!

(2011/01/09 追記)

0.7.0 RC4 にて実装されたようなので、遅ればせながら検証してみました。
Cassandra0.7 counter実践編