先日インストールしたCassandraを、Rubyから使ってみようと思います。
gemで用意されているのかなと期待したら、やっぱりありました。幸せ
インストール
# gem install cassandra 中略 Installing RDoc documentation for thrift_client-0.4.2... Installing RDoc documentation for rake-0.8.7... Installing RDoc documentation for simple_uuid-0.1.1... Installing RDoc documentation for cassandra-0.8.2...
サンプルコード
require 'rubygems' require 'cassandra' include Cassandra::Constants keyspace = Cassandra.new('Keyspace1') #保存 first_name = {'first' => 'Key'} last_name = {'last' => 'Smith'} age = {'age' => '35'} keyspace.insert(:Standard2, 'ksmith', first_name) keyspace.insert(:Standard2, 'ksmith', last_name) keyspace.insert(:Standard2, 'ksmith', age) #取得 p keyspace.get(:Standard2, 'ksmith')
実行
# ruby cassandra_sample.rb
#"Smith", "first"=>"Key", "age"=>"35"}>
解説っぽいもの
Cassandra単体のデータ構造は、Keyspace > (Super)ColumnFamily > Columnになっています。
上記の例では、まずKeyspace1のインスタンスを作成しています。
そして、それぞれのカラムを用意して、keyspace1のStandard2というColumnFamilyにデータを入れていっています。
このColumnFamilyのキーは、'ksmith'です。(キーは任意に設定できます。)
コマンドラインインタフェースから確認
# bin/cassandra-cli --host localhost --port 9160
cassandra> get Keyspace1.Standard2['ksmith']
=> (column=last, value=Smith, timestamp=1271987442338167)
=> (column=first, value=Key, timestamp=1271987442337022)
=> (column=age, value=35, timestamp=1271987442338914)
Returned 3 results.
基本的にはCassandraはKeyValueStore型のデータベースなので、覚えることは最小限なので使いやすそうですね。
KeyspaceやColumnFamilyをどの単位でまとめるかとかがポイントになりそうです。
もうちょっと遊んでみます。楽しいですね。
関連:
Apache Cassandraのインストール
fauna's cassandra at master - GitHub
DataModel - Cassandra Wiki
Symfoware Cassandraの使いどころ(Looking to the future with Cassandraの翻訳)
up and running with cassandra:: snax