groongaを囲む夕べ#1
リハビリがてら、六本木のG社で開催されたG勉強会に参加してきました。
全文検索エンジンgroongaを囲む夕べ #1 : ATND
Groonga - An open-source fulltext search engine and column store
groongaの存在はこの勉強会まであまり知らなかったのですが、Sennaの後継として作成された全文検索エンジンとのことでした。
うまく適合できそうであれば今つくろうとしているパーソナルワークのプロジェクトで導入してみたいな、と思います。
以下講演内容の要旨
全文検索エンジンgroongaについて
- groonga
- 名前の由来
- 造語(SEO対策)
- 特徴
- アーキテクト
- ドキュメント
- 導入事例
- 注意点
- 質疑応答
- 分散構成はspiderストレージエンジンを使えば出来るという話だったがspiderをサポートしているのか?
- 特に関知してない。使えば出来るんじゃないか。
- インデックスの複数サーバへの分散はどうすればよい
- 機能としては出来上がってない。(関知しない)
- spierをストレージとして使った場合はspider側が勝手にやる
- groongaが落ちたときの挙動は?いつ落ちても壊れない?
- いつ落ちても壊れるw。ロックフリーなシステムなので更新時に落ちたら壊れるので諦めてください。
- データの元本を別に保持して障害時に復旧するようなオペレーションをおすすめします
- データの整合性のチェックはしている?
- していない
- 各言語のバインディング拡張の予定は?
- データのオンラインバックアップはできる?
- Linuxには「cp」という素晴らしいコマンドがありますw。
- dump機能はある
- sennaにくらべてファイルサイズは大きくなる?
- 文書データも保持するのでサイズは大きくなると思う
- HTTP経由でインデックスの更新は可能か?
- GETの中にjsonを強引につめれば今でもできる
- 今後POST対応を検討したい
- 32bitではビルド出来ない?
- ビルドは出来るが実用上に問題がある
Ruby/groonga (rroonga/ActiveGroonga/Racknga) について
- ラングバプロジェクト
- rroonga
- 利用シーン
- インデクサー
- Rubyで加工しながらデータ追加
- データベースメンテナンス
- groongaの動作確認
- テストデータ投入
- 導入事例
- るりまサーチ(rroonga + Rack)
MySQL + groonga (groongaストレージエンジン) について
- groongaストレージエンジン
- 特徴
- アーキテクト
- groongaストレージエンジンをMySQLのpluggable storageとして追加
- groongaストレージエンジンからgroongaを呼びだす
- groongaのデータを共有するので、同じデータをMySQL、rroonga、HTTP、GQLなどから並行呼び出し可能
- groongaのデータと同期するため仮想化ラムを用意
- _id:groongaにおけるレコードの識別番号
- _score:全文検索時のスコア値
- order by limit のパフォーマンス問題解消
- Tritonn時:order byの並び替え前に対象レコードを全件読み込む処理が重い
- limit件数分のみ取得するように実装されている
- その他
- カラムの刈りこみ(不要なカラムを読まない)
- count高速化
- 大規模分散検索対応
- Spider Storage Engineと連携
- Spider Storage Engineでのgroongaの分散(イメージ)
- スコアでのソート時
- 複数ファイルに並列でアクセスしてマージ
- レンジパーティショニング条件下でのソート
- パーティショニングのルール範囲で値を取得
- パーティションの分割条件に沿った絞り込み
- 参照先が分割条件と等価なので最低限のアクセスでデータ取得できる
- 質疑応答
- スコアなしの状態で他のテーブルに移行する際はどうする?
- dumpしてテーブル定義を書いてリストア
- ALTER TABLEも今後は対応予定
- limit句高速化の際に他テーブルとのjoinのしたときの動きは?
- JOINにはまだ対応していない(通常のMySQLと同じ動きになる)
- 複数カラムにまたがる全文検索のインデックスは対応予定はあるか?
- 今のところ対応予定はない
- groonga本体が対応したらストレージエンジンでも対応する
- nullを入れたらゼロになったが?
- 現在groongaがnull値をサポートしていない
- どうしようか検討中
- vector カラムのサポート予定は?
- 複数のカラムに対して重み付けをすることはできるか?
- Tritonnの場合は複合インデックスを用いて実施していた。
- 実装するとしたら同様な形になると思うがまずmulti カラムインデックスの対応が必要
- mroongaという名前は使っている?
- 今も使っている。開発コード名。
PostgreSQL + groonga (textsearch_groonga) について
※タイムアップにつき退出