[pgsql-jp: 41772] [ANN] PGroonga 0.3.0

Kouhei Sutou kou @ clear-code.com
2015年 2月 9日 (月) 15:45:57 JST


須藤です。

今日は年に一度の肉の日ですね!
PostgreSQLからGroonga(*)を使うための拡張機能、
PGroonga(ぴーじーるんが) 0.3.0をリリースしました!

  http://groonga.org/ja/blog/2015/02/09/pgroonga-0.3.0.html

(Groonga関連プロダクトは肉の日(2/9や29日など)に定期的にリ
リースする習慣となっています。)

(*) 国産の全文検索エンジン: http://groonga.org/ja/


前回のリリース後、PGroongaと同様の機能を提供するpg_bigmの性
能を検証してくれた方がいました。(ありがとうございます!)

  http://blog.createfield.com/entry/2015/02/03/094940

Wikipediaの日本語版を使った検証ではPGroongaの方が更新性能・
検索性能ともに高速だったとのことです。

データや検証方法によって結果は変わってくるかと思いますが、興
味のある方はぜひ参考にしてみてください。また、自分で検証した
方はぜひ結果を公開して共有してもらえると、開発の参考になるの
で、私はうれしいです。


0.2.0ではCentOS 7用のパッケージのみ提供していましたが、0.3.0
からはUbuntu 14.10用のパッケージも提供するようにしました。
Ubuntu 14.10を使っている方もぜひ試してみてください。

  https://github.com/pgroonga/pgroonga#ubuntu-1410%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

0.3.0での全文検索まわりでのめぼしい変更点は次の通りです。

  * トークナイザーを変更できるようにしました。
    * TokenMecabを指定すればMeCabを使った形態素解析ベースの
      トークナイザーを使えます。
      現在、最新のPostgreSQLで形態素解析ベースのトークナイザー
      を使えるのはPGroongaだけです。

  * GroongaがLZ4をサポート付きでビルドされていれば
    検索対象のテキストデータをLZ4で圧縮するようにしました。
    * このデータは内部で使うだけで検索時には参照しないものな
      ので、できるだけストレージを使わないようにしたかったか
      らです。
      (前述の検証結果でストレージに保存している量が多いなぁ
      と思ったのでこの機能を入れました。)

他にも、PostgreSQLが提供するB-treeインデックスのように、次の
操作を高速に実行するインデックスとしても使えるようになりまし
た。

  * 範囲検索
  * ORDER BY

次のようにUSING pgroongaをつけてCREATE INDEXするだけで、↑用
のインデックスを作れます。

CREATE TABLE ids (
  id integer
);
CREATE INDEX grnindex ON ids USING pgroonga (id);

これで

SELECT id
  FROM ids
 WHERE id >= 10
 ORDER BY id ASC
 LIMIT 5;

のようなクエリーがインデックスを使って高速に実現できます。
たぶん、実現できるはずです。が、大量のデータを使ったベンチマー
クはとっていないので、全文検索用ではない↑用のインデックスに
も興味のある方はぜひベンチマークをとってみてブログなどに結果
を公開してもらえるとうれしいです!


pgsql-jp メーリングリストの案内