Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
検索番長のおしごと
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
TAKEHITO Uetake
November 25, 2016
Technology
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
検索番長のおしごと
不動産テック勉強会#4 2016/11/25
TAKEHITO Uetake
November 25, 2016
Other Decks in Technology
See All in Technology
AI時代におけるテストの基礎の再定義 / Rethinking the Fundamentals of Testing in the AI Era
mineo_matsuya
14
5.1k
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
520
AI Native なプロダクト組織の立ち上げ方 : 生産性 100 倍への挑戦
mikesorae
0
1.3k
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
440
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
システム監視入門
grimoh
1
190
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
270
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
1
250
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
500
AI時代におけるエンジニアの新たな役割──FDEとクオリアの探求/登壇資料(戸井田 裕貴)
hacobu
PRO
0
350
Jitera Company Deck
jitera
0
310
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
6
1.2k
Featured
See All Featured
Crafting Experiences
bethany
1
230
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
Practical Orchestrator
shlominoach
191
11k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
910
The Cult of Friendly URLs
andyhume
79
7k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
620
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
How STYLIGHT went responsive
nonsquared
100
6.2k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Transcript
検 索 番 長 の お し ご と 2
0 1 6 / 1 1 / 2 5
1 植竹 剛人 (うえたけ たけひと) 株式会社 一休 技術基盤部 エンジニア •
パフォーマンスのことなんかは高い比率で携 わります。 • 情報セキュリティ責任者だったり。 • なんかいろいろやります。 SNSとか • Twitterはやっていないので、本名でFBとかさ がすと出てきます。 自己紹介
2 もともとはDBエンジニア パフォーマンス・チューニングの人です 自己紹介
3 社内では無鉄砲と評判。 自己紹介
4 会社紹介
5 会社紹介 予約サービス + EC
6 会社紹介 類似競合サービス
7 会社紹介 オンプレ Windowsプラットフォーム • クラウドに移行中。 → の人々と日々楽しく過ごしています 今年からヤフーグループに入りました。
ここまでで30秒の予定
9 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ 今日話したいこと
10 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ 今日話したいこと 今日は宿泊の検索を中心に
11 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ
12 条件検索がタイムアウトするんだけど!
13 条件検索がタイムアウトするんだけど! 背景 • 大規模リプレイス • リアルタイムの在庫、料金を参照した検索にした。 • これに伴ってメインの検索のSQLが長大に •
試しにA4用紙に小さいフォントで印字すると7mになっていた。
14 条件検索がタイムアウトするんだけど! 問題 • SQLクエリタイムアウト(30秒)が頻発。 • 他の検索でも10秒くらいかかるのが多数。
15 宿泊予約データ構造 宿泊施設 部屋 プラン 日別料金 日別在庫
16 条件検索がタイムアウトするんだけど! 解決方法 • 札束でひっぱたく。 • Masterマシンには ViolinMemoryを導入。 • Slaveマシン全台に
IoDriveを導入。 • ひとまず金で延命。
17 条件検索がタイムアウトするんだけど! 解決方法 • 札束でひっぱたく。 • Masterマシンには ViolinMemoryを導入。 • Slaveマシン全台に
IoDriveを導入。 • ひとまず金で延命。 オンプレならIoDriveは買い。
18 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ
19 キーワード検索の内容がおかしい!
20 キーワード検索の内容がおかしい! 背景 • 大規模リプレイス • このタイミングで、Solr1.3を導入。 • 辞書メンテを嫌って n-gramで実装
• 検索結果が不思議。
21 キーワード検索の内容がおかしい! 問題 • TDRを検索して、四国の施設がマッチする。 • 「蓼科」を探したら軽井沢の施設がでてきたと、創業社長が怒った。
22 キーワード検索の内容がおかしい! 解決方法 • 形態素解析に移行。辞書はひとまず手動メンテ。 • ノイズになりうる情報をフィールドから除外。 • ユーザーの求める形に合わせていった。 •
スキーマに含めるフィールドの見直し • 重み付けの調整 • 上位1000キーワードまで検証しながら調整
23 キーワード検索の内容がおかしい!
24 キーワード検索の内容がおかしい! ユーザーが何を欲しているかをよく知って 辞書や重み付けでコントロール
25 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ
26 最安値が更新されないんだけど!
27 最安値が更新されないんだけど! 背景 • 最安値はバッチで算出 • バッチサーバと呼ばれる単一マシンにデータをもってきて加工していた。 • 宿泊施設様は競合を意識して値付けをすることもあるわけで、更新が遅いとチャン スロスにもなりえる。
28 最安値が更新されないんだけど! 問題 • 最安値がデータ更新をしてから3時間経過しても検索結果画面に反映されない。
29 最安値が更新されないんだけど! 解決方法 • 最安値の算出を検索Slave側で分散同時並行実行するようにバッチ処理を再作成 • 処理をデータの近くに寄せて、大量のデータをネットワーク越しにやりとりし ないようにした。 • →
結果、3時間 → 8分にまで処理時間を短縮。
30 最安値が更新されないんだけど! 解決方法 • 最安値の算出を検索Slave側で分散同時並行実行するようにバッチ処理を再作成 • 処理をデータの近くに寄せて、大量のデータをネットワーク越しにやりとりし ないようにした。 • →
結果、3時間 → 8分にまで処理時間を短縮。 ・データの近くに処理を寄せる ・処理の同期並列化
31 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ
32 条件検索でまだタイムアウトエラーがでるんだけど!! 背景 • 予約可能期間がビジネス起因で半年から1年に伸びた。 • 日別系データの量が増大 • 新規事業が立ち上がり、施設数がごっそり増えた。 •
パーソナライズ検索の導入。
33 条件検索でまだタイムアウトエラーがでるんだけど!! 問題 • 大エリア検索で遅いときに11秒程度かかる。平均でも5秒くらい。 • IOの急激な増大。 • 有効活用されないクエリキャッシュ、データキャッシュ。 •
冗長なデータ構造による、無駄なIOの発生。 • もう、SQLチューニングやインデックス付与などの小手先対応では逃げられない。
34 条件検索でまだタイムアウトエラーがでるんだけど!! 解決方法 • 条件検索をまるごとSolr5.4に移行。 • 在庫、料金がリアルタイムに検索結果と同期している必要はない。 • 日別情報をダイナミックフィールドとして横持ちすることで、データの冗長化 を抑制。スキーマレス万歳。
• 結果として日別料金のテーブルだけで130GBあったが、移行後のSolrスキーマ は2GBしかない。IOも極小。
35 条件検索でまだタイムアウトエラーがでるんだけど!! 解決方法 • 条件検索をまるごとSolr5.4に移行。 • 在庫、料金がリアルタイムに検索結果と同期している必要はない。 • 日別情報をダイナミックフィールドとして横持ちすることで、データの冗長化 を抑制。スキーマレス万歳。
• 結果として日別料金のテーブルだけで130GBあったが、移行後のSolrスキーマ は2GBしかない。IOも極小。 11秒 → 1秒以内 RDBは検索が不得意と認識する。
36 サイト内検索周りの課題解決 • 条件検索がタイムアウトエラーするんだけど! • キーワード検索の内容がおかしい! • 最安値が更新されないんだけど! • 条件検索でまだタイムアウトエラーがでるんだけど!!
まとめ
37 まとめ IOが大きい キーワード検索 大量データ処理 大量データからの検索 オンプレならIODrive入れる 辞書を作ってユーザーニーズに マッチさせる データの近くに処理を持っていく
検索をRDBにやらせる必要がなけ れば、SolrやESに移行する。
ご静聴ありがとうございました!