ククログ

株式会社クリアコード > ククログ > 全文検索エンジンgroongaを囲む夕べ 2: 「groonga村」と「mroongaのベンチマーク」用資料

全文検索エンジンgroongaを囲む夕べ 2: 「groonga村」と「mroongaのベンチマーク」用資料

今年も11月29日に「全文検索エンジンgroongaを囲む夕べ」が開催されました。1年ぶりの開催です。会場は株式会社VOYAGE GROUP(10月に株式会社ECナビから社名変更)でした。会場提供ありがとうございます!とても助かりました。会場提供にあたりこしばさんにとてもお世話になりました。ありがとうございます。

29日なので、もちろん新しいバージョンのリリースも行われています。

今年は、会の内容の概要を紹介する導入用のセッション「groonga村」と、mroongaの性能特性がわかるベンチマーク結果を紹介するセッション「mroongaのベンチマーク」を担当しました。

groonga村

mroongaのベンチマーク

「mroongaのベンチマーク」で紹介した結果はOSC2011.DBで紹介した結果とほとんど同じなので、解説はそちらを参照してください。ただし、OSC2011.DBで紹介した位置情報検索のベンチマークデータが間違っていました。

間違っていた位置情報検索のベンチマーク結果

正しくは、「mroongaの方が劇的に速い」という結果ではなく、以下のように「mroongaの方が速い」という結果でした。

正しい位置情報検索のベンチマーク結果

ここでは、groonga周辺の技術の整理にもなるので「groonga村」の内容を紹介します。

groonga開発チームの期待

まずはじめにこの会でgroonga開発チームが参加者のみなさんに期待していることを伝えました。

groonga開発チームの期待

期待していることは以下の2つです。

  • groonga開発者が増えること
  • groongaユーザーが増えること

どちらもgroongaがよくなることにつながります。

森さんの資料(PDF)や矢田さんの資料(PDF)にもあるとおり、groonga開発チームでやりたいことはいろいろあるのですが、そこまで手がまわっていません。groongaを開発してくれる人が増えると、groongaがより使いやすくより速い全文検索エンジンになります。

ユーザーが増えるといろんな環境でのテストにもなります。問題があったとフィードバックをもらって、それを修正できればgroongaの品質が向上します。また、実際に使うにはどのような機能が求められているかを聞かせてもらえれば、よりgroongaを使いやすくすることにも役立ちます。それ以外にも「このように使っています」や「groongaを使うために便利なツールを作りました」などといった情報を公開してくれるというのも、groongaユーザーにとって有益な情報になります。ぜひ、使って、フィードバックや情報公開をお願いします!

groongaの開発に参加したいという方も、groongaの事例紹介ページに載せてもいいという方も、groongaのメーリングリストまたはgroonga at razil.jp(またはkou@clear-code.com)へご連絡ください!

参加者の期待

今年の会は、参加者のみなさんが以下を期待しているのではないかということで構成しました。

参加者のみなさんの期待

それぞれについて以下のセッションで扱いました。資料は公開できるように調整中です。すでに公開されているものはリンクしています。まだ資料が公開されていないものはUstreamの録画を観てください。

groonga関連ソフトウェアの位置づけ

groongaはライブラリとして利用できるため、MySQLやPostgreSQL、Rubyなど様々なソフトウェアと連携できます。そのため、今回の会でもたくさんの分野の話がでてきます。話をきいているうちにどこの話をしているのかわからなくなってしまうと、話についていけなくなってしまうかもしれません。それを防ぐためにgroongaとその関連ソフトウェアの位置づけを説明しました。

groonga村

これが全体像です。それでは、それぞれの部分を説明します。

コア機能

コア機能

キー管理機能(レコードを参照するときに利用)や転置索引、キーストアなどgroongaが提供する機能のベースになる機能を提供するレイヤーがあります。

DB API

DB API

コア機能の上にデータベース機能を提供するDB APIがあります。このAPIを使うとSQLiteのようにプロセス内にデータベースを持ったアプリケーションを開発することができます。

rroonga

rroonga

DB APIを使ったソフトウェアがrroongaです。RubyからDB APIを使えるようになります。buzztterるりまサーチMilkodeなどがrroongaを使っています。

mroonga

mroonga

MySQLからDB APIを使うためのソフトウェアがmroongaです。SQLを使ってgroongaを使えるようになるため、既存のSQL関連の技術をそのまま使えることが魅力です。例えば、Ruby on RailsでWebアプリケーションを使っている場合はActiveRecord経由でgroongaの高速な全文検索機能を使えることになります。

クエリAPI

クエリAPI

groongaは独自のクエリ言語を持っています。RDBMSでいうSQLのようなものです。このAPIを使うと文字列をやり取りすることでgroongaの機能を使うことができます。

groongaコマンド

groongaコマンド

クエリAPIをネットワーク越しやコマンドライン上で使うためにgroongaコマンドを提供しています。groongaコマンドはHTTPサーバーにもなるため、特別なライブラリではなく通常のHTTPライブラリを使うだけで任意のプログラミング言語からgroongaの機能を使うことができます。塩畑さんの発表にもある通り、ぐるなびさんではHTTPでgroongaの機能を利用しています。

nroonga

nroonga

クエリAPIをNode.jsから使えるようにするライブラリがnroongaです。Node.jsからgroongaの機能を利用するためのnode-groongaというライブラリもありますが、こちらはgroongaコマンドのHTTPサーバーと通信するもので、直接クエリAPIを叩くnroongaとはレイヤーが違います。node-groongaはgroongaコマンドをより便利に使うためのもので、nroongaはgroongaコマンドのHTTPサーバー機能の代替になりうるものです。

groongaコマンドでもHTTPサーバー機能を実現できますが、実は単純なHTTPサーバー機能しかありません。例えば、認証機能もありませんし、WebSocketを実現することもできません。それらの機能も実現できるリッチなHTTPサーバーはNode.jsが提供する機能を利用するのがよいのではないか、というアイディアから生まれたものです。まだ開発が始まったばかりのプロジェクトですが、興味のある方はぜひ開発に参加してください!

textsearch_groonga

groonga with PostgreSQL

PostgreSQLからgroongaの機能を使うためのソフトウェアがtextsearch_groongaです。mroongaと違いDB APIとクエリAPIをうまく組み合わせてgroongaの機能を使っています。

まとめ

groonga村

groongaはライブラリとして利用できるため、このように多くのソフトウェアと連携し、ニーズにあわせた使い方ができるようになっています。ぜひgroongaを使ってみてフィードバックをお願いします!

それでは、また、来年のいい肉の日に会いましょう1。会場提供をしてくれたVOYAGE GROUPのみなさん、Ustreamで放送してくれたグニャラくんさん、司会をしてくれた坂井さん、受付をしてくれたRuby会議実行委員会のしまださん、すずきさん、発表者のみなさん、会場に来てくれたみなさん、Ustreamで参加してくれたみなさん、ありがとうございました!

おまけ: 参加状況について

今回も前回同様にATNDを使ってイベント告知・参加者登録を行いました。定員100名で告知をし、前日までに160名くらいの登録でキャンセル数は1桁でした。ですが、前回の当日キャンセル数とキャンセルなしで不参加の傾向を考えると、事前に160名の参加登録があったとしても当日はちょうど定員である100名くらいになるのではないかと予想し、「補欠の人も会場にきても大丈夫です」ということにしました。実際、当日にキャンセル数が30くらいになり、キャンセルなしで不参加の人も50人くらいいたため、最終的には80-90名くらいの参加になりました。(当日に参加登録した方もいたようです。)

「補欠の人も会場にきても大丈夫です」というスタイルは会場提供のVOYAGE GROUPさんがOKを出してくれたので実現できたのですが、このくらいのゆるさでやったほうがちょうどよくなるのかもしれませんね。柔軟な対応、ありがとうございました!

  1. groonga開発チーム主催のgroonga勉強会は年に一度ですが、ユーザーのみなさんはいい肉の日以外にもgroonga勉強会を開催して大丈夫です!