web-dev-qa-db-ja.com

Googleがハードドライブ検索よりもはるかに速いのはなぜですか。

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

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

251
Arne

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

Google検索のしくみについてもっと知りたい場合は、Googleの記事「 検索のしくみ 」または記事「 」を参照してください。 Googleの仕組み "#:。

211
Simon

グーグルはイエローページから住所を検索するのと同じようなものだ(索引付き)。ウィンドウズ検索は、建物のインデックスをチェックするのと似ています(インデックスなし)。

もう1つの例えは、よく整理された図書館とカード目録を見ること、あるいは毎回整理されていない本を整理することです。

基本的にそれはそれを速くする検索の前に行われるすべての組織的作業です。

FYI:インデックス付きの場所を検索するとき、ウィンドウズ検索も同様に反応することができます。

71
Ryan

Googleの事業は検索(および広告の配信)であり、それが非常に重視されています。データが非常に速くあなたに返されるようにするためにGoogleがすることはたくさんあります。

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

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

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

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

36
Brad Patton

約4年前、私も自分自身に同じ質問をしました。しかし、私が自分の研究を行っているうちに、最も洗練された検索アルゴリズムとそのすべてを考え出すために彼らが最善を尽くして雇うという事実以外に、私は結局それを読みました。

彼らが使用した重要なデザインの1つは、私が思うと地図縮小のアイデアに似ています。あなたは農場に安いコンピュータをたくさん持っています。これらのコンピュータに約80ギガバイトのハードディスク容量しかなく、これらのコンピュータで約16ギガバイトRAM、さらに優れた32ギガRAM(できる限り)になるように強くプッシュします。彼らは彼らが設計したいくつかの洗練されたシステムを介して接続されていることを忘れないでください。しかし、ここでの重要な考え方は、クエリが送信されると、そのクエリがシステムに渡され、そこでRAM内の新しいデータを検索して検索することです。彼らはこれらの安価なコンピュータをたくさん持っていることを覚えておいてください。そしてデータがRAMにあるので、それはそれがハードディスクにあるよりもはるかに速く見つけられます。しかし、それらが非常に助けになる洗練された(インデックス作成とそれらすべてのアルゴリズム)システムも持っていることを忘れないでください。

Googleがすべてを保存していることを私たち全員が知っているので、このデータは新鮮である必要はありません。 RAMに何を入れるべきかについては、スプレイツリーと同じ原則を使うことができます。これまでに最も検索しているものをRAMに保存し、最も検索の少ないものをハードディスクにフラッシュします。

彼らの索引付けや他の人が彼らの答えの中で言及した他のすべてのものと結び付けられたこの小さな考えは、それがハードドライブ検索より速い理由の一つかもしれません。

  • 他の検索に基づいて予測する力。
  • ほとんどの場合、データはRAMにあります。
  • 複数のシステムを使用して分割して征服する
  • 検索が彼らの最優先事項です。

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

30
Touch

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

20
Frank Thomas

2004年に、何人かのGoogleの従業員が論文を発表しました: MapReduce そしてそれ以来彼らはその何百倍も改善しました。

また、彼らはGoogleファイルシステム(GFS)を使用します。これはHadoop Distribud File System(HDFS)のような分散ファイルシステムです。彼らの目的のために最適化されています。また、私の知る限りでは、GFSHDFSよりも数千倍高速です。

4
smttsp

私もしばらく前にこの質問をしていたので、私はこれに追加しようと思いました。見て面白いです。

YouTube上のGoogle 1
YouTube上のGoogle 2

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

乾杯。

2
Mogget

ここで素晴らしい答えに何かを加えてください。 Googleは人気のある検索語句のキャッシュを使用します。これらの検索結果はメモリに保存されます。そのため、たくさん検索されたものを検索すると、結果はすぐに表示されます。

1
Mellowcandle

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

ハードディスクを検索するのは(少なくとも単純に)本を1ページずつ調べて、各行をスキャンしてキーワードの出現箇所を探すのと同じです。

インターネット検索エンジンを使用することは、インデックスでキーワードを検索して、それからそれが与えるページ番号に直接目を向けるようなものです。

もちろん実際には、これよりはるかに複雑です。たとえば、通常はインターネットとは異なる種類の情報をハードディスクから検索します。しかし奪うべき基本的なことは検索エンジンがインデックスを使用しているということです。それはすでに「本」、Word by Wordを通り抜け、そしてそれらを見つける場所と共にそれらの単語のリストをまとめ、そしてそれがその中のものを非常に素早く調べることができるような方法でリストを編成しました。

たとえば、本の中の索引の構成について考えてみましょう。第一に、それは通常アルファベット順にソートされ、第二にそれは文字の見出しがあるかもしれません。索引で単語を検索すると、目的の文字で始まる単語のリストがすぐにわかります。また、リストはソートされているので、リスト内で必要な単語を見つけたり、存在しない場合はすばやく指示したりできます。

要約すると、検索エンジンにはインデックスがありますが、ハードディスクには本しかありません。他の人が指摘したように、ハードディスクを索引付けするためにソフトウェアを使うことは可能です、そしてそれからあなたは全部の代わりに索引を使うことができます。

0
mwfearnley