BloGroonga

2015-09-11

Rroonga 5.0.5リリース

RubyからライブラリーとしてGroongaを使えるようにするRroongaのバージョン5.0.5をリリースしました!

Rroongaを動かすためにはGroongaが必要ですが、Rroongaをインストールすると簡単にGroongaもインストールできるようになっています。一言で説明すると、gem install rroongaでいい感じになる、です。詳細はインストールドキュメントを参照してください。

変更内容

今回のリリースではGroonga 5.0.7をサポートしました。(RroongaとGroongaでバージョン番号が違うと混乱するので次のリリースからはあわせることにしましょう。そうしましょう。)

つまり、Groonga 5.0.7で追加された「Windowsでのスパースファイルサポート(実験的)」を試すことができるということです。ということで、Windowsユーザーの方にはこの機能を試してフィードバックをしてくれることを期待しています。

Windowsでのスパースファイルサポート(実験的)のフィードバック方法

スパースファイルを使えるとなにが嬉しいかというとファイルサイズが小さくなるということです。Groongaはファイルにきっちりとデータを詰めていくのではなく、いろいろな場所にデータを書いていきます。そのため、入っているデータ量の割にファイルサイズが大きくなります。スパースファイルにすると隙間の部分には実際のディスクを使わなくなるので、実際のデータより少し大きいくらいのファイルサイズになることを期待しています。

次のスクリーンショットは64bit版Windows 7でチュートリアルを実行した直後のデータベースサイズです。(Rroongaのgemの中に入っているexample/bookmark.rbを実行するとチュートリアルを実行した直後のデータベースを作れます。)

左が通常通り実行した場合で、右がスパースファイルサポートを有効にした場合です。

チュートリアルを実行した直後のデータベースサイズ

どちらも「サイズ」は117MBで同じですが、「ディスク上のサイズ」は違います。通常通りの方は「サイズ」と同じ117MBですが、スパースファイルサポートを有効にした方は6.25MBになっています。約1/20になっています。

ファイルサイズが小さくなるかどうかはこのようにして確認できます。

スパースファイルサポートを有効にするには、「データベース・テーブル・カラムを作成する前」(重要!作成後では効果がない!)に「GRN_IO_USE_SPARSE」という環境変数に「yes」という値を設定してください。

たとえば、次のようなコードにするということです。

require "groonga"
require "fileutils"

ENV["GRN_IO_USE_SPARSE"] = "yes" # ← ポイント!

db_path = "db/db"
FileUtils.mkdir_p(File.dirname(db_path))
# 環境変数を指定した後にデータベース作成
Groonga::Database.create(:path => db_path)

# 環境変数を指定した後にテーブル・カラム作成
Groonga::Schema.define do |schema|
  schema.create_table("...") do |table|
    # table.text("...")
  end
end

# ...

既存のプログラムを変えたくない場合はプログラムを実行する前に環境変数を設定してください。たとえば、コマンドラインから設定する場合は次のようにSETを使います。

> SET GRN_IO_USE_SPARSE=yes
> ruby ...

既存のRroongaを使ったプログラムをあなたのデータで動かした結果をGitHubのissue #384 - Windows: スパースファイルの有効性を検証にコメントしてください。次の情報を含めてもらえると非常に助かります。

  • ディスク使用量(必須)
  • パフォーマンス(可能なら)
  • メモリー使用量(可能なら)

「既存のRroongaを使ったプログラム」は必ずしもあなたが開発したものでなくても構いません。たとえば、Milkodeを使った結果でもよいです。MilkodeはRroongaを使ったソースコード検索エンジンだからです。

Windowsユーザーのみなさん、ぜひGroongaの開発にご協力をお願いします!