Ruby経由でCassandra 2回目
あー,油断してたら1ヶ月以上経っちゃった...
前回はrequireするところまでだったので,今度はごく普通に使ってみる.
基本的な操作
クライアントの生成
# キースペース名とサーバ名は適宜編集しましょう client = Cassandra.new('MyKeyspace', 'server:9160')
データのinsert
# set MyKeyspace.Scores['Dan']['grade']['null'] = '1'に相当 client.insert(:Scores, "Dan", {"grade" => {"null" => "1"}})
データのget
# get MyKeyspace.Scores['Dan']['cource']['math']に相当 client.get(:Scores, "Dan", "cource", "math")
行数カウント
# count MyKeyspace.Scores['Dan']に相当 client.count_columns(:Scores, "Dan")
動作確認
いったん今までのデータを削除してから,Ruby経由でinsertできるかやってみる.
# CLI経由で削除 cassandra-cli -host localhost -port 9160 del MyKeyspace.Scores['Dan'] row removed. del MyKeyspace.Scores['Dana'] row removed. # 確かにいなくなった get MyKeyspace.Scores['Dan'] Returned 0 results. get MyKeyspace.Scores['Dana'] Returned 0 results.
あらためて,Cassandra-Rubyを使ってデータをinsert.特に問題なさそうです.
require 'rubygems' require 'cassandra' client = Cassandra.new('MyKeyspace', 'server:9160') client.insert(:Scores, "Dan", {"grade" => {"null" => "1"}}) client.insert(:Scores, "Dan", {"cource" => { "math" => "87"}}) client.insert(:Scores, "Dan", {"cource" => { "art" => "97"}}) client.insert(:Scores, "Dana", {"grade" => { "null" => "2"}}) client.insert(:Scores, "Dana", {"cource" => { "math" => "100"}}) client.insert(:Scores, "Dana", {"cource" => { "art" => "80"}})
結果を見てみる
さっきinsertしたデータをgetしてみる.
require 'rubygems' require 'cassandra' client = Cassandra.new('MyKeyspace', 'server:9160') p client.get(:Scores, "Dan") => #<OrderedHash {"grade"=>#<OrderedHash {"null"=>"1"}>, "cource"=>#<OrderedHash {"math"=>"87", "art"=>"97"}>}> p client.get(:Scores, "Dan", "grade") => #<OrderedHash {"null"=>"1"}> p client.get(:Scores, "Dan", "cource", "math") => "87" p client.count_columns(:Scores, "Dan") => 2 p client.count_columns(:Scores, "Dan", "cource") => 2
CLI経由でも見てみる.大丈夫そう.
get MyKeyspace.Scores['Dan'] => (super_column=grade, (column=null, value=1, timestamp=1276610280816299)) => (super_column=cource, (column=art, value=97, timestamp=1276610280832299) (column=math, value=87, timestamp=1276610280828299)) Returned 2 results. get MyKeyspace.Scores['Dana'] => (super_column=grade, (column=null, value=2, timestamp=1276610280832299)) => (super_column=cource, (column=art, value=80, timestamp=1276610280844299) (column=math, value=100, timestamp=1276610280836299)) Returned 2 results.