Ruby から Cassandra を使ってみる
前回 Ruby の Cassandra 接続用ライブラリである Cassandara をインストールしたので、今回はいろいろと使い方を調べてみたいと思います。
fauna's cassandra at master - GitHub
http://github.com/fauna/cassandra
keyspaces
接続しているクラスタで使用可能な Keyspace の一覧を取得するサンプルです。
require 'rubygems' require 'cassandra' include Cassandra::Constants client = Cassandra.new("Keyspace1", "127.0.0.1:9160") p client.keyspaces
実行結果は以下のようになります。
["Keyspace1", "system", "Examples"]
get
前回も試しましたが、一件分のデータを取得するサンプルです。
require 'rubygems' require 'cassandra' include Cassandra::Constants client = Cassandra.new("Keyspace1", "127.0.0.1:9160") p client p client.get(:Standard1, 'jsmith') p client.get(:Standard1, 'foo')
実行結果は以下のようになります。
C:\src\ruby>ruby cassandra_example.rb #<Cassandra:32155596, @keyspace="Keyspace1", @schema={}, @servers=["127.0.0.1:9160"]> #<OrderedHash {"last"=>"Smith", "first"=>"John", "age"=>"42"}> #<OrderedHash {"last"=>"baz", "first"=>"bar", "age"=>"99"}>
insert
データ登録のサンプルです。
require 'rubygems' require 'cassandra' include Cassandra::Constants client = Cassandra.new('Keyspace1', '127.0.0.1:9160') client.insert(:Standard1, 'bar', { 'name' => 'bar' } ) client.insert(:Standard1, 'bar', { 'age' => '99' } ) p client.get(:Standard1, 'bar')
実行結果は以下のようになります。
#<OrderedHash {"name"=>"bar", "age"=>"99"}>
一括で複数カラムを更新したい場合は第3引数のハッシュに複数指定します。
require 'rubygems' require 'cassandra' include Cassandra::Constants client = Cassandra.new('Keyspace1', '127.0.0.1:9160') client.insert(:Standard1, 'bar', { 'name' => 'bar', 'age' => '200', 'foo' => 'baz' } ) p client.get(:Standard1, 'bar')
出力は以下のようになります。
#<OrderedHash {"name"=>"bar", "foo"=>"baz", "age"=>"200"}>
remove
データ削除のサンプルです。
require 'rubygems' require 'cassandra' include Cassandra::Constants client = Cassandra.new('Keyspace1', '127.0.0.1:9160') client.remove(:Standard1, 'bar') p client.get(:Standard1, 'bar')
実行結果は以下のようになります。
#<OrderedHash {}>
count_columns
カラム数カウントのサンプルです。
require 'rubygems' require 'cassandra' include Cassandra::Constants client = Cassandra.new('Keyspace1', '127.0.0.1:9160') p client.count_columns(:Standard1, 'jsmith')
実行結果は以下のようになります。
3
まだ他にもメソッドはありますが、取り合えず今回はこんなところで。
Cassandra はさすがに「High level clients」として紹介されているだけあって、標準添付の Java 版クライアントに比べると引数がシンプルに指定できるように Wrap されていたりと、非常に使い易いライブラリになっていますね。
ただ、お手軽に Windows 環境で試しているからか、若干接続が不安定な挙動を示したりもしました。
あるサンプルを実行した時に、タイミングによって成功したり、接続エラーになったり、といった感じです。
これは私の環境の問題なのか、そもそも Windows でがんばるな!って事なのかは不明ですが・・・。
ちょっと時間がある時に Linux 環境でも試してみたいと思います。
Packt Publishing