まあ、問題を解決するのがMapReduceであるかどうかはわかりませんが、あなたが提起したこれらの質問をすべて解決するのは、MapReduceだけでは間違いないでしょう。しかし、ここで考慮すべき重要な点があります。これにより、さまざまなマシンのこれらすべてのTBのデータからのクエリのレイテンシをこのように低くすることが可能になります。
- 分散コンピューティング:分散されているということは、インデックスが単に異なるマシンに分散されているという意味ではなく、実際には異なるクラスターに沿って複製されるため、多くのユーザーが短いクエリ時間でさまざまなクエリを実行できます(そうです、巨大な企業はそれだけの余裕があります)マシンの);
- キャッシング:キャッシュは、クロールステップ、ページの取得、または結果のランキングと表示のために、実行時間を大幅に削減します。
- たくさんの微調整:上記のすべてと非常に効率的なアルゴリズム/ソリューションは、実装も効率的である場合にのみ効果的です。参照の局所性、圧縮、キャッシングなど、大量の(ハードコードされた)最適化があります。それらのすべては通常、処理のさまざまな部分に適用できます。
それを考慮して、あなたの質問に取り組みましょう:
しかし、考えられるすべてのクエリの結果にインデックスを付けることは不可能だと思います
はい、あり得ます。実際には、考えられるすべてのクエリに対して結果を得るのは不可能です。世界には無数の用語があり(適切なスペルの用語のみが入力されると仮定した場合でも)、これらのn -> inf
用語からのクエリの指数関数的な数があります(2^n
)。それで、何が行われますか?キャッシング。しかし、非常に多くのクエリ/結果がある場合、どれをキャッシュするべきですか?キャッシュポリシー。最も頻繁な/人気のある/ユーザーに関連するクエリは、キャッシュされたクエリです。
Googleのハードウェアのハードウェアレイテンシは巨大ではないでしょうか。GoogleのデータがすべてTB / s SSDに保存されていたとしても
今日、このような高度に発達したプロセッサーを使用する場合、1秒以内に完了する必要があり、大量のデータを処理するすべての可能なタスクは、複数のコアと大量のメモリを備えた非常に強力なプロセッサーで処理する必要があると考える傾向があります。しかし、支配市場の一つはお金であり、投資家はそれを無駄にすることに興味がありません。それで、何が行われますか?
実際には、多くのマシンがあり、それぞれがシンプル/アクセス可能な(コストの観点から)プロセッサーを使用しているため、多数のクラスターを構築するコストが低くなります。そして、はい、それは動作します。パフォーマンスの単純な測定を考えると、主なボトルネックは常にディスクに集約されます。しかし、マシンが非常に多くなると、ハードディスクで作業する代わりに、メインメモリにロードする余裕ができます。
メモリーカードは私たちにとって、単なる人間にとっては高価ですが、そのようなカードを一度にたくさん購入する企業にとっては非常に安価です。コストがかからないので、インデックスをロードしてキャッシュを手元に保持するために必要なだけのメモリがあっても問題ありません。非常に多くのマシンがあるので、あなたが別の場所へのクエリを指示し、出席を担当するマシンのクラスタ持つことができるように、超高速プロセッサの必要がないため、特定の地理的領域をより多くすることができます、専門のデータキャッシュ、およびより良い応答を回。
MapReduceはこの問題の解決に役立ちますか?
MapReduceの使用がGoogle内の制限された情報であるとは思わないが、私はこの点に精通していません。ただし、GoogleのMapReduce(確かにHadoop ではない)の実装には、多くの最適化が必要です。そのため、MapReduceのアーキテクチャは、計算が物理的にどのように分散されるかをガイドするのにおそらく役立ちますが、クエリ時間のそのような速度を正当化するために考慮すべき他の多くのポイントがあります。
さて、私は人気のある検索をメモリにキャッシュできることを理解しています。しかし、不人気な検索はどうですか?
次のグラフは、クエリの種類がどのように発生するかを示しています。検索には3つの主要な種類があり、それぞれがクエリのボリュームの約1/3(曲線の下の領域)を保持していることがわかります。このプロットはべき乗則を示しており、小さいクエリが最も人気があるという事実を強調しています。クエリの2/3は、単語数が少ないため、まだ処理可能です。ただし、通常は経験のないユーザーのクエリで構成される、いわゆるあいまいなクエリのセットは、クエリの一部として無視できません。
そして、新しいソリューションのためのスペースがあります。これは1つまたは2つのクエリではない(ただし、その3分の1)ため、関連する結果が必要です。Googleの検索であまりにあいまいなものを入力しても、結果のリストが返されるまでに時間がかかることはありませんが、おそらくあなたが言いたいと思われる何かが表示されます。または、そのような用語を含むドキュメントがないと単に記載している可能性があります-または、検索を32ワードに削減しました(これは、ランダムなテストで私に起こっただけです)。
いくつかの適用可能なヒューリスティックがあり、いくつかの単語を無視するか、クエリをより小さなものに分割して、最も人気のある結果を収集します。そして、これらすべてのソリューションは、たとえば1秒未満の実現可能な待機時間を尊重するように調整および調整できますか?:D