KirbyBaseを試して見た

Ruby1.9系では長らく使えないと思っていた、KirbyBaseが1.9系にも対応していたので、早速試してみました

例によって試した環境は以下の通り

KirbyBaseはRubyで作られているデータベースなのでgemでインストールさえすれば特別なドライバが必要無いのがポイント。データベースを作る時にディレクトリを指定しておいてDBオブジェクトを作り、1テーブル=1ファイルが作られているというのが基本的な動きですね。

バッチやcronで値を記録しておきたい時とかに、yamlxml等でも大丈夫だけど検索等が絡んでくると処理がちょっと面倒だけどRDBMSを使うほどじゃないな、という時にいい感じがします。

データベースの初期化

db = KirbyBase.new(:local,nil,nil,"./")

テーブルの作成(ここで設定したテーブル毎にファイルが1個できる)

people = db.create_table(:people,:id, :Integer,:name,:String,:created_at,:Time)

create_tableの最初の引数がテーブル名、次から項目名と型の組み合わせという感じ。使える型は以下の通り

:String, :Integer, :Float, :Boolean(true/false), :Time, :Date, :DateTime, :Memo, :Blob, :YAML.

もう少し細かい設定もできるようだけど、そこは公式マニュアルを参考。

データの登録(insert)と更新(update)

require "time"
people.insert(1,"Me",Time.parse("2012/01/01 00:00:00"))
people.update(:created_at => Time.now) {|r| r.name == "me"}

更新は、ブロックの中で抽出条件を設置して、引数の方で更新値を設定する感じ。なので、selectするときも全く同じ

データの選択(select)

person = people.select() {|r| r.name == "me"}
p person.size

戻り値のサイズでとれた個数が分かる。selectの引数にテーブルの項目名を入れておくとその部分だけを抽出することも出来る。

データの削除(delete)

people.delete { |r| r.name == "me" }

削除もこんな感じ。

このぐらいが出来るとちょっとした値の格納や呼び出しには便利に使えるのではないかと思います。

公式サイト