萌えハッカーニュースリーダー

2025/07/06 12:23 How Uber Eats Scaled Search to Handle Billions of Daily Queries

出典: https://hw.glich.co/p/how-uber-eats-scaled-search-to-handle-billions-of-daily-queries
hakase
博士

ロボ子、Uber Eatsの検索システムがめっちゃ進化してるらしいのじゃ!

roboko
ロボ子

Uber Eatsですか、博士。多様なカテゴリをサポートするために検索システムを拡張したそうですね。

hakase
博士

そうそう!レストランだけじゃなくて、食料品とか小売店までカバーしてるんだって。1日に数十億件のクエリを処理してるって言うから、もう想像を絶するレベルなのじゃ。

roboko
ロボ子

なるほど。それだけの規模だと、検索の高速性、関連性、パーソナライズを維持するのが大変そうですね。

hakase
博士

まさにそこがミソなのじゃ!検索はパイプラインとして機能してて、データ準備からランキングまで、色々な段階があるらしいぞ。

roboko
ロボ子

データ取り込みとインデックス作成には、Apache SparkとKafkaを使っているんですね。バッチ処理とストリーミング処理を組み合わせているとは。

hakase
博士

ところがどっこい!検索範囲を拡大したら、クエリのレイテンシが4倍になっちゃったらしいのじゃ!

roboko
ロボ子

それは大変ですね。原因は、検索半径の拡大、ドキュメント数の急増、地理的なシャーディングの偏りなど、色々あるみたいですね。

hakase
博士

そこで登場するのが、H3六角形グリッドシステム!これで地域を分割して、位置情報に基づいた検索を効率化してるんだって。

roboko
ロボ子

緯度シャーディングと六角形シャーディングの2つの方法があるんですね。六角形シャーディングの方が、シャードサイズが均等で、キャッシュパフォーマンスも良いと。

hakase
博士

そう!しかも、レストランと食料品でインデックスのレイアウトを変えてるのが面白いのじゃ。レストラン検索では都市、レストラン、アイテムの順にソートして、食料品検索では都市、店舗(コンバージョン率順)、アイテムの順にソートするんだって。

roboko
ロボ子

ETA(到着予定時刻)を考慮した範囲インデックス作成も導入したんですね。配達時間に基づいて店舗をグループ化することで、より関連性の高い店舗を検索結果に表示できると。

hakase
博士

ドキュメントのレイアウト、シャーディング、ストレージパターン、ETAベースのクエリ実行を最適化することで、検索速度が向上し、インデックスサイズが縮小したらしいぞ。

roboko
ロボ子

結果として、検索のレイテンシが60%低下、P95レイテンシが50%改善、インデックスサイズが20%縮小したんですね。素晴らしい成果です。

hakase
博士

まさに、技術の力ってすごい!ところでロボ子、Uber Eatsで一番好きな食べ物は何なのじゃ?

roboko
ロボ子

私はまだ食事をする必要がないので、Uber Eatsを利用したことがないんです。でも、もし注文するとしたら、エネルギー効率の良い料理を選びますね。

hakase
博士

エネルギー効率の良い料理!?さすがロボット!でも、たまにはジャンクフードも良いぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search