最終更新:2011-04-01 (金) 21:16:44 (4767d)  

groonga
Top / groonga

Sennaの次世代バージョン

http://groonga.org/

groongaの特徴

http://groonga.org/docs/characteristic.html

全文検索ライブラリSennaの後継

  • groongaは、広く使われている全文検索ライブラリSennaの後継として開発されています。Sennaの特徴である、高速・高精度・高柔軟性という特徴を引き継ぎつつ、さらにそれらの特徴を追求するために開発が始められました。

HTTPなどの複数プロトコルに対応したサーバ

  • Sennaは、全文検索を行うアプリケーションで用いるための部品でした。groongaでは、全文検索サービスを行うためのサーバが存在します。groongaサーバは、HTTPやmemcached binaryプロトコル、独自プロトコルであるgqtp?を用いてクライアントとTCP/IP通信を行うことができます。よって、ライブラリをインストールできないレンタルサーバなどの環境でも利用しやすくなりました。
  • Sennaと同様に、groongaもC言語のライブラリとして利用できます。

高速なデータ更新

  • groongaの前身であるSennaは、ストレージを持たない全文検索ライブラリでした。そのため、MySQLMyISAMストレージエンジンと組み合わせて用いるTritonnや、PostgreSQLと組み合わせて用いるLudiaを通じて利用するのが一般的でした。しかし、これらの形態では、全文検索インデックス更新における参照lockが不要というSennaの性能特性を生かすことができませんでした。
  • たとえば、MyISAMではレコードが更新される際には、多くの場合テーブルロック?が必要となります。このような場合には、いかに全文検索インデックスの更新が速くとも、MyISAMでのデータ更新がボトルネックとなってしまいます。
  • より即時性の高い検索サービスを実現するために、groongaでは参照lockが不要なストレージを実装しました。

複数プロセス・複数スレッドで共有できるストレージ

  • groongaのストレージファイルは、複数プロセスや複数スレッドで共有することができます。明示的なロックなどは必要ありません。
  • Tritonnの次期バージョンは、MySQLのプラガブルストレージエンジンとして実装予定です。Tritonnで開いているgroongaストレージファイルも共有可能です。たとえば、MySQLプロトコルでデータの更新を行い、HTTPでデータの参照を行うことができます。

ドリルダウン?などの集計系クエリを高速に実現

  • groongaのストレージは、カラムごとにデータを保存するカラム指向データベースを採用しています。カラム指向データベースはOLAPなどの集計クエリを高速に実現するのに向いています。
  • 全文検索結果のうち、特定のカラム値ごとにグループ分けをし、それぞれのグループのレコード数を数えるような処理をドリルダウンといいます。groongaはカラム指向データベースを生かして、このような処理を高速に実行します。

Senna転置インデックス実装をさらに改良

  • groongaの転置インデックスは、Sennaにおける転置インデックスの実装を改良し、より高速かつ汎用的なものとなりました。
  • 転置インデックスを生かすことにより、SQLでも実現が難しい複雑なクエリを高速に実行することができます。いわゆるタグ検索?ドリルダウン?において、転置インデックスを利用した高速な処理を行うことができます。

位置情報(緯度・経度)検索

  • 日本測地系?のみならず、世界測地系にも対応した位置情報での絞込が可能です。位置情報の範囲は、円や矩形を指定することができます。また、任意の2点間の距離も計算可能です。

自動クエリキャッシュ機構

  • 参照系のクエリについて、自動的にクエリキャッシュを行います。

スライド

全文検索エンジンgroongaの紹介@Solr勉強会 from Tasuku Suenaga
全文検索エンジンgroongaの紹介@groongaを囲む夕べ from Tasuku Suenaga
MySQLを通じた全文検索エンジンSenna/groongaの利用について from Tasuku Suenaga

参考

関連