2011/10/08

全文検索エンジンgroongaを囲む昼下がり@札幌に行ってきました

全文検索エンジンgroongaを囲む昼下がり@札幌


最初の自己紹介のまとめ


  • ここにきている人だけあって、groonga使ってる人が多い
  • Senna, tritonnもちらほら
  • 中の人が札幌に来たので勢いで開催



Groongaの中の人、森さんによる概要


ざっくり概要


  • 全文検索エンジンが出発点
  • データストア能力が強化されてきた
  • 特徴
    • 転置索引
    • 即時更新
    • カラムストア

なぜ転置索引か


  • searchのスループットを重視
  • 転置 > Suffix Array > Signature > 線形
  • indexingは遅い傾向がある

即時更新


  • CGM等ですぐ検索できないと使いづらい
  • groongaではここを頑張ってる
  • リアルタイムに強いということを今日は覚えてかえる

カラムストア


  • 普通のRDBではレコード毎に保存
  • filter, sort, group byは大体必須な機能なので、高速化したい



groongaの使い方とかとか


  • Cのライブラリがある
  • groongaコマンドで操作
  • HTTPもあり。レスポンスはJSON
  • gqtp - groonga query transfer protocol
    • HTTPよりも効率はいい
  • memcachedプロトコルも話せる

SennaとGroonga


  • Senna
    • アイルトン・セナが速いから付けた
    • 他のRDBと組み合わせて使う
  • Groonga
    • MySQL, PostgreSQLと使うこともできる

森さんがいろいろ


  • Cライブラリで直接扱うと速い
  • MySQL経由だとSQLのうんぬんがあるので、それほど早くないかも
  • ひとつのDBに対してMySQL, HTTP, Cライブラリからなど同時にアクセスできる

MySQL + Sennaの不満


  • MyISAM
    • メンテが大変
  • 5.0
  • 更新しながら、検索さくさくできない
    • MyISAMは書き込み時にreadもブロックしちゃうよね

MySQL + Groongaでは


  • Groongaでも更新せな!っていうのを頑張ってる
  • プラガブルストレージエンジンに対応
  • データストアがそもそもあり



休憩




Groongaの構造とデータの流れ


資料を見た方がいい

http://www.clear-code.com/blog/2011/10/5.html


ちょっとだけメモ


  • パトリシアトライ
    • トライ(Trie) <- retrieval
  • lexicon
      - 転置索引がゼロになっても、こっちは消さない
    • テーブル構造にしているのは今後拡張できるように
    • トークンのポジションも保存するかどうか選べる
    • 重みも記録できる



質問タイム


  • Groongaのこれからやっていきたいこと
    • 性能を良くする
      • インデックス構築はまだ早く出来る
    • versioned indexをいれたい
      • あまり使わないのはコンパクトにしたりとか
    • トランザクションは検討したい
  • スケールアウト
    • MySQL + Spider + Groonga が現状はいいかも
  • MySQL InnoDBの全文検索とGroongaどっちが速いの?(森さん)
    • 都合よくデータでてきた!
    • MySQL + Groonga (storage mode)の方がindexsingがやっぱり速い
  • 事例とか
    • 書いていいかわからないのでカット
  • 文章数はどのくらいまでいれたことがあるか
    • twitterのデータを入れたときが多かった
    • 1nodeで1000万レコード。まあ扱えている感じ
  • gqtpのバイナリプロトコルのドキュメントはあるのか
    • ないようです
    • source読んでね
  • データベースファイルをmvすると問題あるような?
    • rubyのライブラリからmvしたやつを使うと怪しい

0 件のコメント:

コメントを投稿