Googleがハードドライブ検索よりもずっと速いのはなぜですか?


251

Windows 7またはWindows XPでHD上のファイルを検索すると、処理が完了するまでに数分かかります。Googleで検索語を入力すると、答えはミリ秒単位で画面に表示されます

Googleがインターネットを検索するにはどうすればよいですか?インターネットは、私のハードドライブよりも何倍も大きく、OSがコンピューターを検索するよりも高速ですか?計算能力と適切なアルゴリズムの問​​題だけですか?


99
ドライブ上のすべてのファイルのインデックスを作成し、インデックスのみを検索しようとしましたか?すべてを試してみてください。
カラン

11
GoogleデスクトップはWindowsでも「使用」されています
...-rogerdpack

14
Googleは、ハードドライブ上のファイルではなく、RAMに保存されているインデックスを検索します。
アリ

13
インデックスは重要ですが、Googleはmap-reduceアルゴリズムを使用して、大規模な並列操作を実行します。コンピュータにコアがいくつあっても、Googleにはそれ以上の機能があります。
アダムヴエル

41
デスクトップ検索の実装がインデックスを使用することを妨げるものは何もありません。ただし、Googleには十分な現金があるため、a)クエリを並列化するための非常に高速なCPU /サーバーが多数あることを忘れないでください。b)ディスクにアクセスする必要を避けるための非常に高速なRAM。c)使用するハードドライブよりもはるかに高速な多くのハードドライブ。d)関係するアルゴリズムを最適化する非常に優秀なエンジニア。(たとえば、(多くの)頻繁に使用されるクエリの結果をキャッシュするなど)。これは、これらのいずれかの「単なる」問題ではなく、これらすべてが協調して動作することです。
ミリムース

回答:


211

Googleはインターネットを検索していません。インデックスを検索しています。Googleには巨大なサーバーファームがあり、常にインターネットをスキャンしてインデックスを作成しています。このプロセスには、インデックス化されていないハードドライブの検索と同じように時間がかかります。Windows 7では、ハードドライブのインデックスを作成するオプションがあります。このプロセスは最初は時間がかかりますが、一度実行されると、検索結果は瞬時に表示されます。

Google検索の仕組みについて詳しく知りたい場合は、Googleの記事「How Search Works」または「How Stuff Works:How Google Works」をご覧ください。


46
最後の段落:このリンクはより信頼が高く、全体的に優れています。
-ulidtko

4
私の好奇心はご容赦ください。ただし、ファイルシステムは既にディスク上のファイルのインデックスを作成していませんか?ファイルエクスプローラーに表示されるのは、ディスク上の実際の物理セクターへのリンクの単なるインデックスではありませんか?それでは、なぜさらにインデックスを作成する必要があるのでしょうか?
アディ

9
ファイルシステムインデックス@Adnanは、物理メディア上のファイルが保存されている位置を見つけるように設計されています。これは、章が始まるページを示す本の索引のようなものです。検索インデックスは、コンテンツを見つけるために設計されています。優れた検索インデックスは、ファイル名だけでなく、pdf、doc、htmlなどの既知のファイルタイプのコンテンツにもインデックスを付けます。 「自動車」という言葉。
サイモン

3
@Adnan、ファイルシステムは実際には「インデックス」ではなく、単なるファイル名のツリーです。このようなツリーの検索は、構造が検索用に最適化されていないため、高速ではありません。OTOH google(およびデータベース)は、特定のソートされたインデックス構造を使用して、特定のエントリの稲妻をすばやく検索します。それでも、すべての検索がそのようなインデックスの恩恵を受けるわけではなく、遅くなります。
PiRX

8
@Adnanある意味では、FSツリーは検索に対して最適化されています。既知の場所のアドレス指定ができるように設計されています。ルートノードから取得できるのは、ルートの下にあるディレクトリとファイルのリストだけです。すべてのディレクトリは、その中のファイルとその下のディレクトリについて知っています。この場合、既知のファイルパスへのアクセスは非常に高速であり、多くの柔軟性を提供しますが、検索するファイルのグローバルなリストは存在しません。常にディレクトリツリーを下る必要があります。これにより、多くの異なるルックアップが行われます。
Phoshi

71

Googleは、イエローページでアドレス(インデックス付き)を検索するようなものです。Windowsの検索は、建物の番号(インデックスなし)を確認するのに似ています。

別の例えとしては、よく整理された図書館とカードのカタログを見るか、単に整理されていない本の山を毎回ソートすることです。

基本的には、検索の前に行われたすべての組織作業が高速化されます。

参考:インデックス化された場所を検索する場合、Windows検索も同じように応答します。


5
または:内容の(詳細)テーブルに探して対教科書をスキャン
bobobobo

36

Googleのビジネスは検索(および広告の提供)であり、それに焦点を当てています。Googleがデータを迅速に返送するために行うことは多数あります。

  • まず、MapReducePageRankを使用して、World Wide Webの包括的なインデックスを生成します。これは定期的に更新されるため、結果は新鮮です。
  • そのインデックスは、Googleの多数のサーバーに分散および複製されます
  • クエリは複数のサーバーに分割され、返される結果が構築されます。これにより、プロセスを高度に並列化できます。
  • 一般的なクエリと結果がキャッシュされるため、検索を実行する必要がまったくなくなります。

検索の仕組みの詳細については、このリンクを参照してください

比較的インデックスなしのハードドライブ検索では、ドライブ上のすべてのファイルを読み取る必要があり、これには多くの時間がかかります。

さらに、ファイルシステムとインデックスの両方をツリーと考えることができます。ファイルシステムでは、ツリーのルートは最上位のフォルダーであり、その1つのフォルダーにブランチ(フォルダー)またはリーフ(ファイル)を持つことができます。各ブランチには、より多くのフォルダ用のサブブランチと、より多くのファイル用のサブブランチを含めることができます。この構造を検索するには、すべてのブランチ(およびサブブランチ)を「ウォーク」して、探しているリーフを見つける必要があります。インデックスはこの階層を反転します。ベースがアルファベットになり、すべてのサブブランチがこれをさらに改良します。葉は、探しているアイテムの場所です。この構造を検索すると、ツリーの大きなセクションを切り取る(除外する)ことができます(たとえば、検索語の最初の文字を使用すると、25個の他のブランチをすぐにトリミングできます)。


30

約4年前、私も同じ質問をしました。しかし、自分の研究をグーグルで調べたところ、最終的には、彼らが最高の最高の人材を採用して、最も洗練された検索アルゴリズムとそのすべてを考案したという事実を読んだ。

彼らが使用した重要な設計の1つは、地図を縮小するという考え方に似ていると思います。農場には安価なコンピューターがたくさんあります。これらのコンピューターのハードディスク領域は約80ギガしかなく、ハードにプッシュして、これらのコンピューターに(可能な限り)約16ギガRAMまたはさらに優れた32ギガRAMを搭載します。彼らは彼らが設計したいくつかの洗練されたシステムを介して接続されていることを忘れないでください。ただし、ここで重要なのは、クエリが送信されると、クエリがシステムに渡され、RAM内の最新データを検索しようとするということです。彼らはこれらの安価なコンピューターをたくさん持っていることに留意してください。また、データはRAMにあるため、ハードディスクよりもはるかに高速に検出されます。しかし、それらが非常に役立つ洗練された(インデックス付けとすべてのアルゴリズム)システムも持っていることを忘れないでください。

Googleがすべてを保存していることは誰もが知っているので、このデータは新鮮である必要はありません。RAMにあるべきものに関しては、スプレイツリーと同じ原則を使用でき、人々がRAMで最も多く検索しているものを保持し、最も検索されていないものをハードディスクにフラッシュします。

この小さなアイデアと、インデックス作成、および他の人が回答で言及した他のすべてのことが、ハードドライブ検索よりも高速である理由の1つである可能性があります。

  • 他の検索に基づいて予測する力。
  • データはRAMにある可能性が高く、これは誰もがより高速であることがわかっています。
  • 複数のシステムを使用して分割して征服する
  • 検索が主な優先事項です。

もちろん間違っているかもしれませんが、これは私にとって理にかなっています。そして、学んだことに満足しました。


7
あなたは、他のより人気のあるポスターが見逃したもののいくつかにそれを釘付けにしました。Googleはすべてを頻繁に検索するわけではありません。インターネット全体ではなく、すべてが独自のキャッシュにあるわけでもありません。さらに、Google.comで検索する場合、実際の検索はリアルタイムで行われません。過去数か月間にGoogleによって既に作成および編成された検索結果をすばやくコピーして表示するだけです。作成/編成プロセスを説明するのは非常に複雑ですが、誰かが言ったように、漠然と「インデックス付け」と呼ぶことができます。
ジョセフマイヤーズ

これは、生産/整理のプロセスを記述するために非常に複雑です...。うん、それは私がそれの洗練された部分と呼ぶものです。いいね、あなたはそれをよく要約しました。
タッチ

1
@JosephMyers googleは常にインデックスを作成します。早めにスーパーユーザーに尋ねられた質問(例:google.com/search?q=google+faster+than+ a +hard+drive)を検索すると、結果に表示されます。
ブラッドパットン

@Touch RAMでの検索に同意します。これは、キャッシングについての私の記事では第四のポイントだった
ブラッド・パットン

@ブラッド・パットン それが私が学んだことの基礎だったので、私はそれを言及しなければなりませんでした。そして、インデックス作成に関する部分、つまりインデックス作成部分は、整理部分のようなものです。したがって、このステートメントは、現在索引付けされているものではなく、整理されたものを検索することを保持しています。結果が表示される理由については、stackoverflowは多くのWebサイトよりも信頼性が高いため、より頻繁にインデックスを作成することをお勧めします。それが現れる理由です。そうでない場合は、検索結果が表示されるまで1〜2日待つ必要があります。それがジョセフマイヤーズ氏が言っていることだと思います。
タッチ

20

Googleは、非常に高度なインデックスシステム、並列操作、および標準のスタンドアロンコンピューターでは利用できない多くの負荷分散技術を使用しています。ウェブ検索とハードディスクのファイル検索の間には実際にはほとんど類似性がなく、グーグルは特定のユースケースのために大幅に最適化します。


4

2004年に、一部のGoogle従業員が論文を公開しました。MapReduceは、それ以降何百回も改善されました。

また、Hadoop Distribud File System(HDFS)のような分散ファイルシステムであり、目的に合わせて最適化されたGoogle File System(GFS)を使用します。また、私が知る限り、GFSHDFSよりも千倍高速に動作します。


2

私も少し前にこの質問をしていたので、これに追加するつもりで、Googleが表面上で行っていることを説明するこれらの素晴らしいビデオを見つけました。見るのが面白い。

Youtube 1での
Google Youtube 2でのGoogle

彼はもう少し深くなりますが、あなたが技術に迷うほど深くはありません。

乾杯。


1

ここで素晴らしい答えに何かを追加するだけです。Googleは一般的な検索フレーズのキャッシュを使用します。これらの検索の結果はメモリに保存されます。したがって、頻繁に検索されるものを検索すると、結果はほとんどすぐに表示されます。


0

単純なレベルで質問に答えるには、後ろにキーワードインデックスのある教科書があると想像してください。

ハードディスクを(少なくとも、少なくとも)検索することは、本を1ページずつ調べ、キーワードの出現を各行でスキャンするようなものです。

インターネット検索エンジンを使用することは、インデックスでキーワードを検索し、それが提供するページ番号に直接アクセスするようなものです。

もちろん、実際にはこれよりもはるかに複雑です。たとえば、通常は、インターネットとは異なる種類の情報についてハードディスクを検索します。ただし、基本的なことは、検索エンジンがインデックスを使用していることです。既に単語ごとに「本」を読み終え、それらの単語のリストをそれらがどこにあるかと一緒にまとめ、リストを整理して非常に素早く物を調べられるようにしました。 。

たとえば、本の索引の構成について考えてみましょう。第一に、通常はアルファベット順にソートされ、第二に文字の見出しがある場合があります。インデックスで単語を検索すると、目的の文字で始まる単語のリストがすぐにわかります。また、リストは並べ替えられているため、リスト内で必要な単語を簡単に見つけることができます。

つまり、要約すると、ハードディスクには本だけがあり、検索エンジンにはインデックスがあります。他の人が指摘したように、ソフトウェアを使用してハードディスクのインデックスを作成することは可能です。そして、全体ではなくインデックスを使用できます。


-1

Googleが登場しAuto Completeて使用した理由の1つは、AJAX速度の問題だったと思います。入力中は単語がバックグラウンドで送信されるため、まだ終了していないときにGoogleが仕事の一部を行うことができます。また、インデックスは複数の単語の組み合わせに基づいています(ページの下部で提案として見つけることができます)。現在、ネットワーク速度はハードドライブよりも高速であり、おそらくこれらのインデックスの多くはファーム内のサーバーのRAMにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.