cassandraさんとのつきあい方
そもそも、なんでcassandraをローカル環境に入れることにしたか。っていうと。
- 仕事で使う
- raw_keyごとデータを削除してるのに、管理画面だとraw_keyが残っているように見える。
- GCでそのうち消えるはずだ。参考->http://wiki.apache.org/cassandra/FAQ#range_ghosts
本当にそれであってるのか確認しておきたかったので、
環境作って試してみることにしたのです。
本番環境でraw_keyがいつまでも残ってたら気持ち悪いし、
仮に「残ってるぞゴラァ」って言われても
「cassandaraの仕様です」っていえればそれで済むので。
で、まずはハード(?)
いつものごとくメンドクサイので仮想環境。
CentOS6を用意してあるので、コピってyum -y updateして最新に。
このへん
http://d.hatena.ne.jp/terurou/20100416/1271397190
を参考にしつつ、Java7とcassandra1.1.0を入れる。
(参考リンクの内容は古いけどリンク先はそのまま使える)
cassandraの設定周りは既にxmlじゃ無くなっているので、参考にしないように。
portの話とかもすでにきちんと対応されているので、
あまり気にせずcassandaraを起動してOK。
cassandaraのデータ周りの構造の知識は人によって微妙に感じ方が違うので
自分のイメージでざっくりと書くと
- Keyspace
大枠w
- ColumnFamily
データベース
- raw_key
テーブル
- column
レコード
- columnのkey,value
KeyValueのそれぞれ
かと。
で、今回はColumnFamilyのgc_grace_secondsを設定したい。テスト用に。
既に作成済みのColumnFamilyに設定する方法はわからないが、
新しいColumnFamilyを作るのであれば、
create column family ColumnFamilyName1 with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type and gc_grace=600;
で、600秒のColumnFamilyが作れる。
gc_grace_secondsを設定したいのに、gc_graceで設定させるとか、非常にキモイんだが
その辺の説明は、
help create column family;
とかコマンドをたたくと詳しい設定が見れる。
ここまでたどり着くのが死にそうだったので、日本語でまとめておくよ。