263 Views
April 03, 15
スライド概要
https://groonga.doorkeeper.jp/events/15816
全文検索エンジンGroongaを囲む夕べ5 で発表した資料です。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Mroongaを社内クラウド的な MySQLプラットフォームに標準搭 載している話 ヤフー株式会社 吉野彰真 2015/04/03
$ whoami P2 • 吉野 彰真(よしの あきまさ) • @y055ie • 2011年年 ヤフー株式会社 中途⼊入社 データインフラ開発部所属 • Oracle / MySQL のプロフェッショナル集 団 • RDBの共通環境・集約環境を社内に提供 • 好きなキーボード配列列:DVORAK Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
社内クラウド的なMySQL プラットフォーム? Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
構成 P4 SLAVE SLAVE SLAVE SLAVE mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld 本番環境:これ(クラ スタ)×8セット MASTER MASTER MASTER mysqld mysqld mysqld mysqld mysqld mysqld mysqld mysqld ClusterWare Shared-‐‑‒Storage 開発環境:単品サー バ/ローカルディスク ×数台 各サーバ内で複数の MySQLデーモンを起 動 ⾃自家製Webコンソー ルで管理理 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
いろんなサービスで使われてます! サーバ台数 = 100台超 規模感 インスタンス数= 400近く Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
全台に Mroonga⼊入ってます Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
Mroonga導⼊入までのみちのり • 2012/7〜~ 機能検証・負荷検証 • 2013/3〜~ 開発・本番環境リリース Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止 P7
負荷検証結果 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
テスト環境 P9 サーバ Xeon L5520 2.27GHz×2(16C)/ 24GB Mem /SAS 146GBx2 /Raid 1 OS Oracle Enterprise Linux 5.5 MySQL Percona Server 5.1.51 照合順序 uS8_general_ci Groonga 2.0.6 Mroonga 2.0.6 mecab mecab-‐0.994 (分かち書き辞書:mecab-‐ipadic-‐2.7.0-‐20070801) Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
テストデータ P10 ・Wikipediaの記事サマリー(abstract) http://dumps.wikimedia.org/ ・タイトルと本⽂文の⼀一段落落⽬目のデータ ・xmlをSQL(INSERT⽂文)に整形 ・正味テキスト量量:約128MB ・レコード件数:約80万⾏行行 mysql> desc wikidb.article; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title* | varchar(255) | YES | MUL | NULL | | | abstract*| text | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ *フルテキスト索索引を作成(複合キー) Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
テスト⽅方法 P11 ・ApacheJMeterで20/40Threadsで実⾏行行 select match(title,abstract) against ('+${searchword}' in boolean mode) as score ,id ,title ,abstract from 単語をリストから⼊入⼒力力 article where match(title,abstract) against ('+${searchword}' in boolean mode) order by score desc Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
結果:SELECT Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止 P12
結果:レスポンス Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止 P13
結果:UPDATE & SELECT Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止 P14
結論論: 使える! 使おう! Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
こういう感じで提供してます P16 ・開発環境 ・全サーバにPackageインストール済 ・Webコンソールから開発者がセルフでイン スタンス構築できるので… 外せないチェックボックス! ・本番環境 ・全サーバにPackageインストール済 ・インスタンスは相談ベースで構築 ・全⽂文検索索利利⽤用希望の場合のみ、インスタン スにプラグインをインストールして提供 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
使われ⽅方 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
利利⽤用例例 (1) P18 ・某トップページ関連サービス ・個⼈人ページのパーソナライズ機能で、エン ドユーザが、RSSのタイトルと詳細を検索索す る部分に使⽤用 ・某UGC系サービス ・グループ機能で、エンドユーザがグループ のタイトルや説明⽂文を検索索する部分に使⽤用 ・某社内サービス ・運⽤用者がDB内に格納されたログ(ASCII)を 検索索する。 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
利利⽤用例例 (2) P19 ・某情報提供サービス ・商品レビュー(20万件)の検索索をlikeで 実装したが、パフォーマンスが出ない&CPU負 荷が⾼高い → Mroongaを導⼊入し、検索索⽤用テーブルを作 成することで、10ms以下のレスポンスに改 善! Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
使われ⽅方のまとめ P20 ・わりとカジュアルな使われ⽅方が多い メタデータ的なものやログの検索索 ・トークナイザは全てBigram ⇒ ⼤大規模なテキストや精度度の⾼高い(ローカ ライズされた)形態素解析が必要な場合は、専 ⽤用の全⽂文検索索プラットフォームへ ・今のところ性能⾯面で不不満が出たこと はない Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
良良かったところ Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
良良かった点 P22 • 速い •楽 • サーバに導⼊入してしまえば、DDL/ SQLですべて完結できるので、管 理理者・利利⽤用者(開発者)双⽅方にとっ て楽 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
苦労した(している)ところ Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
苦労(1) P24 • ビルドがたいへん • Percona Server 5.1/5.5 × Oracle Enterprise Linux 5/6なので… 毎回ソースからビルド (オレオレSPEC) • アップグレードがたいへん • Mroonga 3.0.0/4.0.3が混在 • クラスタ単位で⼀一⻫斉に上げないといけな いのでメンテ調整がたいへん • インデックスやデータベースの再構築が 必要な⾮非互換性の出現に怯える⽇日々… Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
苦労(2) P25 • (まれに)落落ちる • (例例)スレーブインスタンスごと落落ちて再起動を繰り返す /usr/sbin/mysqld(my_print_stacktrace 0x35)[0x7ac7e5] /usr/sbin/mysqld(handle_fatal_signal 0x4a4)[0x688084] /lib64/libpthread.so.0[0x340420f500] /usr/lib64/libgroonga.so.0(grn_column_truncate 0xed)[0x36bbe3b06d] /usr/lib64/libgroonga.so.0(grn_table_truncate 0x2a3)[0x36bbe57713] /usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga16storage_truncateEv 0x33)[0x7f2a269d16e3] /usr/sbin/mysqld(_Z12mysql_deleteP3THDP10TABLE_LISTP4ItemP10SQL_I_ListI8st_orderEyy 0x305)[0x76a525] /usr/sbin/mysqld(_Z21mysql_execute_commandP3THD 0x2f65)[0x58c7e5] /usr/sbin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state 0x333)[0x58e483] /usr/sbin/mysqld(_ZN15Query_log_event14do_apply_eventEPK14Relay_log_infoPKcj 0xe48)[0x72ed48] /usr/sbin/mysqld(_Z26apply_event_and_update_posP9Log_eventP3THDP14Relay_log_info 0x125)[0x52b445] /usr/sbin/mysqld[0x52f787] /usr/sbin/mysqld(handle_slave_sql 0x949)[0x530bb9] /lib64/libpthread.so.0[0x3404207851] /lib64/libc.so.6(clone 0x6d)[0x3403ee894d] : Trying to get some variables. Some pointers may be invalid and cause the dump to abort. Query (7f2900008210): DELETE FROM `ar5cles_for_search` Connec5on ID (thread ID): 2 Status: NOT_KILLED binlog_̲formatパラメータを MIXED ⇒ STATEMENT に変更更することで 起きなくなった。 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
まとめと今後の展望 Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
P27 • まとめ • Mroonga導⼊入で、MySQLプラット フォームの提供価値を向上できまし た • 今後の展望 • 更更なる布教! • 社内独⾃自の形態素解析エンジン⽤用の プラグイン(初期バージョンリリース 済み) Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止
ありがとうございました! Copyright (C) 2015 Yahoo Japan Corpora5on. All Rights Reserved. 無断引用・転載禁止