自宅検証環境構築(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実践編