mroonga de fts
DESCRIPTION
2013/11/29 全文検索エンジンGroongaを囲む夕べ(略してぐるんべ) #4 あんまり俺しゃべってないですがTRANSCRIPT
Mroonga de fulltextsearch
2013/11/29yoku0825 feat. 河野隆志
ぐるんべ #4
[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☆さん仕事はやー。。
ここから本編
\こんばんわ/
むるーん(^^)
∧_∧ ( ・∀・) | | ガッ と ) | | Y /ノ 人 / ) < >__∧∩ _/し' // V`Д´)/ (_フ彡 / ←>>825
deで
全文検索
すなわち
というわけで、事例紹介です
※テクニックは出てこないです
yoku0825
● とある企業のDBA● オラクれない● ポスグレない● マイエスキューエる
● その正体は● 嫁の夫● せがれの父
● 写真は豆腐のぬいぐるみ
featuring with
河野(かわのです こうのじゃないです)隆志
● とある企業(GMOメディア株式会社)のDBA● もとインフラ● 2011年にDBA的な何かに転向
● そこでもインフラやってます● 最近PHP勉強しながらコード書いてます
● それでもインフラやってます● 二児のパパ● ガンダム大好き● 最近 新生FF14でネカマ始めました
今回お話しする事例
● とあるサービス 5歳になりました● WEB 5000万PV/day● アプリ たくさんAPI request/day
● WEBサーバー 28台● DBサーバー
● メイン系(非全文検索) 6台● 全文検索 6台
全文検索スレーブのとある一日
( ゚д゚)ノ
先生、スレーブ5台分散とはいえ、SELECTよりUPDATEが多いんですが
Mroongaを選んだ経緯
もともとTritonnで全文検索を実装していた
サービスが成長するに連れて、スケールしなくなってきた
_人人人人人人人_> もう限界! < ̄Y^Y^Y^Y^Y^Y ̄
乗り換えを決意して調べてみた
要件の整理
● 一連のサービスのコードはお手製のO/Rマッパーで統一されている
● なのでなるべくSQLでアクセスできると嬉しいな♪
● 全文検索するデータは1000万件超● データ的には25GBくらい
● 更新がバカみたいにガリガリ来る
● システム全体としては参照の方がもちろん多いけど、サーバー1台ごとのカウントを見ると更新が上回る
● あとは参照ロックフリーだと嬉しいな♪
– Tritonnではテーブルロックでスケールしなかった
Solr
● 他のチームがSolr 4.0(?)を検証していたのでついでにベンチマークしてもらったら、更新がひどすぎてあっという間にへたって使い物にならず
● そもそもTritonnからSolrに移行するにはすっげー改修必要だよね。。
● もともとTritonnのMySQL(5.0)を使っていたが新しいMySQLも使いたくなってきた
Solrじゃダメだ…
Mroonga
● MySQLにのっかる
● Tritonnと同じSQLで使える
● レプリケーションできる(MySQLだから当然!)
● 参照ロックフリー
● 速い
ktkr!
で、検証してみた
検証してみた
● 9割くらいのSQLはそのまま通った!
● 残り1割はSQL修正が必要だった…● Tritonnで通った更新クエリが何故かMroongaで通らなかった…
● パフォーマンスは上々
● Tritonnと比べて体感でわかるほど速い!● 参照ロックフリーだから更新多い・参照多い環境でもきちっとスケールアウトする!
● マルチカラムインデックスの更新でMySQLがcrashする etc..
他にもいくつかのバグを踏み抜いた結果
半年くらいの検証期間を経て、本番に導入しました
導入後
● サイト表示速度上がったお!
● ロックしなくなったお!
● slowlog減ったお!
● スケールするお!
● 会社内でMroonga使う人が増えたお!
● でかい顔出来たお!
* + 巛 ヽ 〒 ! + 。 + + 。 | | * + / / イヤッッホォォォオオォオウ! ∧_∧ / / (´∀` / / + 。 + ,- f / ュヘ | * + 。 + 〈_} ) | / ! + 。 + + ./ ,ヘ | ガタン ||| j / | | |||――――――――――――
( ゚д゚)ノ
先生、切り替え直後のトラブルはなかったんですか?
事前の検証が功を奏して、入れた直後は本当に良いことづくめでした
( ゚д゚)ノ
今は?
運用していてうれしいこと
● MySQLのノウハウはそれなりにたまっているので、バックアップや監視の仕組みがそのまま使いまわせた。
● レプリケーションで簡単参照分散ウマー
● ここ1年くらいで増えた新機能(mroonga_snippet, Wプラグマ)おいしいです
これからの課題
● そろそろシャーディングしたい
● サイトも成長してサーバーの負荷ぱねぇ● Spider? マジで?
● 書き込みも分散させたい予感はする
● Percona XtraDB Clusterの上にMroongaが載っけられたので調べてみようかな(yoku0825が)
● 5.6.13+ 3.07でメモリーリークしてるっぽいけどどうしよう
● おかげでマスターがまだTritonn● この前久々にmroonga_snippetで踏み抜いた
まとめ
● Tritonnからの移行先としてはMroonga鉄板でいいと思う
● 既存の仕組みをほぼ継承できるのは大きい
● 5台くらいまでなら運用/スケールした実績あるよ!
● Groonga開発チーム親切だよ!
ご清聴ありがとうございました