Cassandraの簡単な使い方(覚え書き編)

Pocket

CassandraはTwitterでも採用されたとか。でも今は採用されてないって言う。。。*1 *2

でも将来性に期待のできる列指向のKVSですね。

覚え書き。使用したCassandraのバージョンは0.7.5。Ubuntu11.04で動かしました。

まずCassandraのあるディレクトリまでcdする。

システム要件としてOpenJDKかSunのJava6が必須です。

cassandraサーバーを起動する前の準備

試すだけなら特に設定ファイルをいじる必要はないので、cassandra用のlog, libディレクトリを作成します。whoamiにはcassandraを起動するユーザを指定する。

$ 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

これらの格納ディレクトリ等の設定を変更したい場合は最低でもconf/以下のファイルを編集しなければならない。

  • cassandra.yaml: cassandraのメイン設定ファイル
  • log4j-server.proprties: cassandraサーバーのロギング設定ファイル

他のファイルはスケールアウトや認証関係の設定ファイルになっている(らしい)。

cassandraサーバーを起動する

$ bin/cassandra [-f]

-fオプションを付けるとフォアグラウンドでcassandraサーバーが起動します。デフォルトはバックグラウンドで起動されます。デフォルト起動ポートは9160番です。

cassandraサーバーに接続する

$ 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.
/* Test Cluster上にKeyspace1を作成する(RDBMSのデータベースに相当する) */
[default@unknown] create keyspace Keyspace1;
/* 使用するキースペースを指定する */
[default@unknown] use Keyspace1;
/* カラムファミリを定義する(RDBMSのテーブルに相当する) */
[default@Keyspace1] create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type;
737c7a71-dc56-11df-8240-e700f669bcfc
/*
* カラムファミリに対してキーと値のカラム値ペアをセットしていく
* ここではjsmithがキーになっている
*/
[default@KS1] set Users[jsmith][first] = 'John';
Value inserted.
[default@KS1] set Users[jsmith][last] = 'Smith';
Value inserted.
[default@KS1] set Users[jsmith][age] = long(42);
Value inserted.
/* キーを指定してカラム値を取得する */
[default@KS1] get Users[jsmith];
=> (column=last, value=Smith, timestamp=1287604215498000)
=> (column=first, value=John, timestamp=1287604214111000)
=> (column=age, value=42, timestamp=1287604216661000)
Returned 3 results.
/* カラムファミリ、あるいはキースペースの削除 */
[default@twissandra] drop column family users;
ade3bc44-236f-11e0-8410-56547f39a44b
[default@twissandra] drop keyspace twissandra;
30448a50-28d8-11e0-9c0d-e700f669bcfc
/* コマンドラインを終了する */
[default@KS1] quit;

キーバリューをセットするとタイムスタンプも一緒に記録されます。これはスケールアウトした際のキーのコンフリクトを解決するために使用されるみたい。私の読解に間違いがなければ。

事前に定義したスキーマファイルをクラスタに適用する

「えっ、もしかしてコマンドラインからじゃないとスキーマ定義できないの?大変そう」と思った方、conf/schema-sample.txtにスキーマ定義のサンプルが置いてあります。まだ私は理解出来ていないのですが、以下のようにすることで指定したクラスタにスキーマ定義を適用することができるようです。

$ bin/cassandra-cli --host localhost --file conf/schema.txt

まだちょっと触り始めたばかりなのでもっと調べて知識を深めたいと思います。英語ばっかりなのが辛いところ。

参考

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください