41
Mroonga de fulltextsearch 2013/11/29 yoku0825 feat. 河野隆志 ぐるんべ #4

Mroonga de fts

Embed Size (px)

DESCRIPTION

2013/11/29 全文検索エンジンGroongaを囲む夕べ(略してぐるんべ) #4 あんまり俺しゃべってないですが

Citation preview

Page 1: Mroonga de fts

Mroonga de fulltextsearch

2013/11/29yoku0825 feat. 河野隆志

ぐるんべ #4

Page 2: Mroonga de fts

[ANN] wingリポジトリ用groonga 3.1.0 mroonga 3.10

MySQL 5.5.34, 5.6.14/MariaDB 5.5.34, 10.0.6で最新のGroonga, Mroongaが簡単に試せます。

http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-November/001931.html

WING☆さん仕事はやー。。

Page 3: Mroonga de fts

ここから本編

Page 4: Mroonga de fts

\こんばんわ/

Page 5: Mroonga de fts

むるーん(^^)

Page 6: Mroonga de fts

  ∧_∧ ( ・∀・)    | | ガッ と    )    | |   Y /ノ    人    / )   <  >__∧∩ _/し' // V`Д´)/ (_フ彡        / ←>>825

Page 7: Mroonga de fts

deで

Page 8: Mroonga de fts

全文検索

Page 9: Mroonga de fts

すなわち

Page 10: Mroonga de fts
Page 11: Mroonga de fts

というわけで、事例紹介です

※テクニックは出てこないです

Page 12: Mroonga de fts

yoku0825

● とある企業のDBA● オラクれない● ポスグレない● マイエスキューエる

● その正体は● 嫁の夫● せがれの父

● 写真は豆腐のぬいぐるみ

Page 13: Mroonga de fts

featuring with

Page 14: Mroonga de fts

河野(かわのです こうのじゃないです)隆志

● とある企業(GMOメディア株式会社)のDBA● もとインフラ● 2011年にDBA的な何かに転向

● そこでもインフラやってます● 最近PHP勉強しながらコード書いてます

● それでもインフラやってます● 二児のパパ● ガンダム大好き● 最近 新生FF14でネカマ始めました

Page 15: Mroonga de fts

今回お話しする事例

● とあるサービス 5歳になりました● WEB 5000万PV/day● アプリ たくさんAPI request/day

● WEBサーバー 28台● DBサーバー

● メイン系(非全文検索) 6台● 全文検索 6台

Page 16: Mroonga de fts

全文検索スレーブのとある一日

Page 17: Mroonga de fts

( ゚д゚)ノ

先生、スレーブ5台分散とはいえ、SELECTよりUPDATEが多いんですが

Page 18: Mroonga de fts

Mroongaを選んだ経緯

Page 19: Mroonga de fts

もともとTritonnで全文検索を実装していた

Page 20: Mroonga de fts

サービスが成長するに連れて、スケールしなくなってきた

Page 21: Mroonga de fts

_人人人人人人人_> もう限界! < ̄Y^Y^Y^Y^Y^Y ̄

Page 22: Mroonga de fts

乗り換えを決意して調べてみた

Page 23: Mroonga de fts

要件の整理

● 一連のサービスのコードはお手製のO/Rマッパーで統一されている

● なのでなるべくSQLでアクセスできると嬉しいな♪

● 全文検索するデータは1000万件超● データ的には25GBくらい

● 更新がバカみたいにガリガリ来る

● システム全体としては参照の方がもちろん多いけど、サーバー1台ごとのカウントを見ると更新が上回る

● あとは参照ロックフリーだと嬉しいな♪

– Tritonnではテーブルロックでスケールしなかった

Page 24: Mroonga de fts

Solr

● 他のチームがSolr 4.0(?)を検証していたのでついでにベンチマークしてもらったら、更新がひどすぎてあっという間にへたって使い物にならず

● そもそもTritonnからSolrに移行するにはすっげー改修必要だよね。。

● もともとTritonnのMySQL(5.0)を使っていたが新しいMySQLも使いたくなってきた

Page 25: Mroonga de fts

Solrじゃダメだ…

Page 26: Mroonga de fts

Mroonga

● MySQLにのっかる

● Tritonnと同じSQLで使える

● レプリケーションできる(MySQLだから当然!)

● 参照ロックフリー

● 速い

Page 27: Mroonga de fts

ktkr!

Page 28: Mroonga de fts

で、検証してみた

Page 29: Mroonga de fts

検証してみた

● 9割くらいのSQLはそのまま通った!

● 残り1割はSQL修正が必要だった…● Tritonnで通った更新クエリが何故かMroongaで通らなかった…

● パフォーマンスは上々

● Tritonnと比べて体感でわかるほど速い!● 参照ロックフリーだから更新多い・参照多い環境でもきちっとスケールアウトする!

● マルチカラムインデックスの更新でMySQLがcrashする etc..

Page 30: Mroonga de fts
Page 31: Mroonga de fts

他にもいくつかのバグを踏み抜いた結果

Page 32: Mroonga de fts

半年くらいの検証期間を経て、本番に導入しました

Page 33: Mroonga de fts

導入後

● サイト表示速度上がったお!

● ロックしなくなったお!

● slowlog減ったお!

● スケールするお!

● 会社内でMroonga使う人が増えたお!

● でかい顔出来たお!

Page 34: Mroonga de fts

 *     +    巛 ヽ            〒 !   +    。     +      +    。  |  |    *     +   / /   イヤッッホォォォオオォオウ!        ∧_∧ / /       (´∀` / / +    。     +         ,-     f       / ュヘ    | *     +    。     +     〈_} )   |         /    ! +    。     +    +        ./  ,ヘ  |  ガタン ||| j  / |  | |||――――――――――――

Page 35: Mroonga de fts

( ゚д゚)ノ

先生、切り替え直後のトラブルはなかったんですか?

Page 36: Mroonga de fts

事前の検証が功を奏して、入れた直後は本当に良いことづくめでした

Page 37: Mroonga de fts

( ゚д゚)ノ

今は?

Page 38: Mroonga de fts

運用していてうれしいこと

● MySQLのノウハウはそれなりにたまっているので、バックアップや監視の仕組みがそのまま使いまわせた。

● レプリケーションで簡単参照分散ウマー

● ここ1年くらいで増えた新機能(mroonga_snippet, Wプラグマ)おいしいです

Page 39: Mroonga de fts

これからの課題

● そろそろシャーディングしたい

● サイトも成長してサーバーの負荷ぱねぇ● Spider? マジで?

● 書き込みも分散させたい予感はする

● Percona XtraDB Clusterの上にMroongaが載っけられたので調べてみようかな(yoku0825が)

● 5.6.13+ 3.07でメモリーリークしてるっぽいけどどうしよう

● おかげでマスターがまだTritonn● この前久々にmroonga_snippetで踏み抜いた

Page 40: Mroonga de fts

まとめ

● Tritonnからの移行先としてはMroonga鉄板でいいと思う

● 既存の仕組みをほぼ継承できるのは大きい

● 5台くらいまでなら運用/スケールした実績あるよ!

● Groonga開発チーム親切だよ!

Page 41: Mroonga de fts

ご清聴ありがとうございました