SlideShare a Scribd company logo
1 of 41
Download to read offline
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開発チーム親切だよ!
ご清聴ありがとうございました

More Related Content

More from yoku0825

逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分かyoku0825
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技yoku0825
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことyoku0825
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術yoku0825
 
MySQLステータスモニタリング
MySQLステータスモニタリングMySQLステータスモニタリング
MySQLステータスモニタリングyoku0825
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQLyoku0825
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術yoku0825
 
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
MySQL 5.7の次のMySQL 8.0はどんなものになるだろうMySQL 5.7の次のMySQL 8.0はどんなものになるだろう
MySQL 5.7の次のMySQL 8.0はどんなものになるだろうyoku0825
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターンyoku0825
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plusyoku0825
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはyoku0825
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具yoku0825
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLyoku0825
 
5.7の次のMySQL
5.7の次のMySQL5.7の次のMySQL
5.7の次のMySQLyoku0825
 
mikasafabric for MySQL
mikasafabric for MySQLmikasafabric for MySQL
mikasafabric for MySQLyoku0825
 
とあるイルカの近況報告
とあるイルカの近況報告とあるイルカの近況報告
とあるイルカの近況報告yoku0825
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなしyoku0825
 
MySQLと正規形のはなし
MySQLと正規形のはなしMySQLと正規形のはなし
MySQLと正規形のはなしyoku0825
 

More from yoku0825 (20)

逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か逝くぞ最新版、罠の貯蔵は十分か
逝くぞ最新版、罠の貯蔵は十分か
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
MySQLステータスモニタリング
MySQLステータスモニタリングMySQLステータスモニタリング
MySQLステータスモニタリング
 
わかった気になるMySQL
わかった気になるMySQLわかった気になるMySQL
わかった気になるMySQL
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術
 
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
MySQL 5.7の次のMySQL 8.0はどんなものになるだろうMySQL 5.7の次のMySQL 8.0はどんなものになるだろう
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQL
 
5.7の次のMySQL
5.7の次のMySQL5.7の次のMySQL
5.7の次のMySQL
 
mikasafabric for MySQL
mikasafabric for MySQLmikasafabric for MySQL
mikasafabric for MySQL
 
とあるイルカの近況報告
とあるイルカの近況報告とあるイルカの近況報告
とあるイルカの近況報告
 
MySQL Fabricでぼっこぼこにされたはなし
MySQL FabricでぼっこぼこにされたはなしMySQL Fabricでぼっこぼこにされたはなし
MySQL Fabricでぼっこぼこにされたはなし
 
MySQLと正規形のはなし
MySQLと正規形のはなしMySQLと正規形のはなし
MySQLと正規形のはなし
 

Mroonga de fts