Groongaのn特徴

: author

須藤功平

: institution

クリアコード

: content-source

CROSS 2015

: date

2015-01-29

: allotted-time

7m

: theme

groonga

他のエンジンとの違い

* ((*既存システムとの連携*))
* 毎月肉の日リリース
* Java free

連携例:Mroonga

  # image
  # src = images/mroonga-logo.svg
  # relative_height = 50

* Mroonga(('note:(むるんが)')) =\n
  MySQL + Groonga(('note:(ぐるんが)'))

MySQLと連携するメリット

* SQLを使える
  * クライアントライブラリーが充実
  * 既存の知識を使える
* 運用ノウハウを使える
  * レプリケーションの仕方
  * メトリックスの取り方

Mroongaで索引作成

# coderay sql

-- ストレージエンジンを変更
ALTER TABLE table ENGINE=Mroonga;
-- 全文検索用索引を作成
ALTER TABLE table
  ADD FULLTEXT INDEX (column);

Mroongaで全文検索

# coderay sql

SELECT * FROM table
  WHERE MATCH (column)
        AGAINST ("+単語1 +単語2"
                 IN BOOLEAN MODE);

Mroongaの事例

* livedoor Blog\n
  (('note:http://www.slideshare.net/kazeburo/mroonga-in-ablogservice'))
* Yahoo! Japanさんの社内\n
  (('note:「全文検索エンジンGroongaを囲む夕べ5」で紹介'))
* GMOメディアさんの\n
  各種サービス\n
  (('note:http://tech.gmo-media.jp/post/95690476544/data-migration-from-tritonn-to-mroonga'))

MariaDBにバンドル

* MariaDB
  * MySQLのfork
  * ケースによってはMySQLより高速
* 10.0.15からMroongaをバンドル
  * MariaDBをインストール→\n
    Mroongaはインストール済み!
  * より簡単に使える!

連携例:groonga-httpd

* Groonga用HTTPサーバー =\n
  nginx + Groonga
  * nginxのモジュールとして実装

nginxと連携するメリット

* nginx提供のHTTP機能を使える
  * gzip圧縮・HTTPS・認証・…
* 運用ノウハウを使える
  * 設定方法
  * チューニング方法(('note:(例:ワーカー数の設定)'))
  * 無停止アップグレード

groonga-httpdの設定

http {
  server {
    location /d/ {
      groonga on;
    }
  }
}

連携例:Rroonga

  # image
  # src = images/rroonga-logo.svg
  # relative_height = 50

* Rroonga(('note:(るるんが)')) =\n
  Ruby + Groonga
  * SQLite3のような手軽さで全文検索\n
    (('note:(サーバーではなく、ライブラリーとして利用)'))

Rubyと連携するメリット

* Rubyとその周辺の機能を使える
  * 書きやすい
  * ライブラリーを使ってデータ加工
* サーバーがいらない
  * 小規模なシステムを手早く構築可能

Rroongaでデータ登録

# coderay ruby

table = Groonga["table"]
table.add("key",
          :value1 => "value1",
          :value2 => "value2")

Rroongaで全文検索

# coderay ruby

records = table.select do |record|
  (record.value1 =~ "単語1") &
    (record.value2 =~ "単語2")
end

Rroongaの事例

* クラウドワークスさん\n
  (('note:社員名簿・日報の全文検索で利用'))
* Milkode(('note:(ソースコード検索エンジン)'))\n
  (('note:http://milkode.ongaeshi.me/'))
* るりまサーチ\n
  (('note:(Rubyのリファレンスマニュアル検索システム)'))\n
  (('note:http://docs.ruby-lang.org/ja/search/'))

連携例:その他

* PGroonga(('note:(ぴーじーるんが)')) =\n
  PostgreSQL + Groonga
* ROMA(('note:(Ruby製の分散KVS)'))

他のエンジンとの違い

* ((*既存システムとの連携*))
* 毎月肉の日リリース
* Java free