Mroonga de fulltextsearch

2013/11/29
yoku0825 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
河野
●

●

●

そこでもインフラやってます

最近PHP勉強しながらコード書いてます
●

●

隆志

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

●

(かわのです こうのじゃないです)

それでもインフラやってます

二児のパパ
ガンダム大好き
最近 新生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マッパーで統一されている
●

●

全文検索するデータは1000万件超
●

●

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

データ的には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開発チーム親切だよ!
ご清聴ありがとうございました

Mroonga de fts