Почему Google намного быстрее, чем поиск по жесткому диску?

251

Когда я ищу файл на своем HD в Windows 7 или Windows XP, процесс занимает несколько минут. Если я введу поисковый запрос в Google, ответ появится на моем экране в миллисекундах

Как Google может осуществлять поиск в Интернете, который во много раз больше моего жесткого диска, быстрее, чем моя ОС может выполнять поиск на моем компьютере? Это только вопрос вычислительной мощности и правильного алгоритма?

Arne
источник
99
Вы пытались проиндексировать все файлы на вашем диске и искать только индекс? Попробуйте все и увидите.
Каран
11
Google Desktop "использовал", чтобы сделать это для Windows также ...
rogerdpack
14
Google выполняет поиск по индексам, хранящимся в оперативной памяти, а не по файлам на жестком диске.
Ари
13
Индекс важен, но Google также использует алгоритм сокращения карты для проведения массово параллельного набора операций. Независимо от того, сколько ядер у вас на компьютере, я гарантирую, что у Google их больше.
Адам Вюрл
41
Ничто не мешает реализации поиска на рабочем столе использовать индексацию. Однако помните, что у Google достаточно денег для: а) множества очень быстрых процессоров / серверов для распараллеливания запроса; б) много очень быстрой оперативной памяти, чтобы избежать доступа к диску; в) много жестких дисков намного быстрее, чем тот, который вы используете; г) множество очень умных инженеров для оптимизации используемых алгоритмов. (Например, кеширование результатов для (многих) часто используемых запросов и многое другое.) Это не «только» вопрос любого из них, это все они действуют согласованно.
миллимус

Ответы:

211

Google не ищет в Интернете: он ищет в индексе. У Google есть огромные фермы серверов, которые постоянно сканируют и индексируют Интернет. Этот процесс занимает много времени, так же как поиск вашего неиндексированного жесткого диска. В Windows 7 есть возможность индексировать ваши жесткие диски. Поначалу этот процесс занимает некоторое время, но после его запуска результаты поиска будут мгновенными.

Если вы хотите узнать больше о том, как работает поиск Google, вы можете прочитать статью Google « Как работает поиск » или статью « Как работает материал: как работает Google ».

Саймон
источник
46
Последний абзац: эта ссылка гораздо более авторитетна и в целом лучше.
ulidtko
4
Извините за любопытство, но разве файловые системы не индексируют файлы на диске? Разве то, что вы видите в вашем файловом обозревателе, не является просто указателем ссылок на реальные физические сектора на диске? Тогда зачем нам нужно еще больше индексировать?
Ади
9
@ Adnan индекс файловых систем предназначен для поиска позиции, в которой файл хранится на физическом носителе. Это похоже на указатель книги, в которой указано, с какой страницы начинается глава. Поисковый индекс предназначен для поиска контента. Хороший поисковый индекс не только индексирует имя файла, но также и содержимое известных типов файлов, таких как pdf, doc, html, ... Расширенные индексы используют также синонимы, поэтому при поиске «car» он может также найти результаты с слово "автомобиль".
Симон
3
@ Adnan, файловая система на самом деле не «индекс», это просто дерево имен файлов. Поиск такого дерева не быстрый, потому что его структура не оптимизирована для поиска. OTOH Google (и базы данных) использует определенные отсортированные структуры индекса, что делает поиск по определенной записи молниеносно. Даже тогда не все поиски могут извлечь выгоду из такого индекса и будут медленными (er).
PiRX
8
@Adnan В некотором смысле, FS Tree оптимизирован против поиска. Он предназначен для разрешения адресации известных мест. Из вашего корневого узла вы получаете только список каталогов и файлов в корневом каталоге. Каждый каталог просто знает о файлах в нем и каталогах под ним. При этом доступ к известному пути к файлам очень быстрый, и он предлагает большую гибкость, но не существует глобального списка файлов для поиска. Вы должны всегда спускаться по дереву каталогов, и это делает для многих различных поисков.
Фоши
71

Google подобен поиску на желтых страницах адреса (проиндексирован). Поиск в Windows сродни проверке номеров на зданиях (не индексируется).

Другой аналогией будет просмотр хорошо организованной библиотеки и карточного каталога или просто сортировка неорганизованной стопки книг каждый раз.

По сути, это вся организационная работа, проделанная до поиска, которая делает его быстрым.

К вашему сведению: при поиске в индексированных местах поиск Windows может быть таким же отзывчивым.

Райан
источник
5
Или: Сканирование учебника по сравнению с (подробным) оглавлением
бобобо
36

Google занимается поиском (и обслуживанием рекламы), и он очень сосредоточен на этом. Google делает несколько вещей, чтобы обеспечить очень быстрый возврат данных:

  • Сначала он использует MapReduce и PageRank для создания всеобъемлющего индекса Всемирной паутины. Он регулярно обновляет это, чтобы результаты были свежими.
  • Этот индекс распространяется и реплицируется на многих серверах Google
  • Ваш запрос распределен по нескольким серверам для получения возвращаемых результатов. Это позволяет процессу быть очень распараллеленным.
  • Общие запросы и результаты кэшируются, что снижает необходимость выполнения поиска вообще.

Смотрите эту ссылку для получения дополнительной информации о том, как работает поиск

Для сравнения, поиск по жесткому диску без индекса должен прочитать каждый файл на диске, и это может занять много времени.

Кроме того, вы можете рассматривать как файловую систему, так и индекс как дерево. В файловой системе корнем дерева является папка верхнего уровня, и в этой одной папке могут быть ветви (папки) или листья (файлы). Каждая ветвь может иметь подветви для большего количества папок и оставляет для большего количества файлов. Для поиска этой структуры вам нужно «пройтись» по всем ветвям (и подветвям), чтобы найти искомый лист. Индекс переворачивает эту иерархию. Основа становится алфавитом, и все его ответвления еще более уточняются. Листья - это местоположение предмета, который вы ищете. Поиск в этой структуре позволяет вам обрезать (исключить) большие участки дерева (например, первая буква вашего поискового запроса позволяет сразу обрезать 25 других ветвей).

Брэд Паттон
источник
30

Около 4 лет назад я тоже задавал себе тот же вопрос. Но пока я гуглил, проводя исследования, я в конце концов прочитал об этом, кроме того факта, что они нанимают лучших из лучших, чтобы придумать некоторые из самых сложных алгоритмов поиска и все такое.

Я думаю, что один из ключевых дизайнов, которые они использовали, похож на идею уменьшения карты. У вас много дешевых компьютеров на фермах. Пусть на этих компьютерах будет всего около 80 гигабайт дискового пространства и настойчиво потребуется около 16 гигабайт оперативной памяти или даже лучше 32 гигабайт оперативной памяти на этих компьютерах (насколько это возможно). Помните, что они связаны через какую-то сложную систему, которую они разработали. Но ключевая идея здесь заключается в том, что при отправке запроса он передается в их систему, где он пытается найти свежие данные в оперативной памяти. Имейте в виду, у них много этих дешевых компьютеров. А поскольку данные находятся в оперативной памяти, они обнаруживаются намного быстрее, чем на жестком диске. Но не забывайте, что у них есть сложная система (индексация и все эти алгоритмы), которая очень помогает.

И эти данные не должны быть свежими, потому что мы все знаем, что Google хранит все. Что касается того, что должно быть в ОЗУ, можно использовать тот же принцип, что и для деревьев сплайнов: сохраняйте то, что люди ищут больше всего в ОЗУ, и записывайте наименее искомый материал на жесткий диск.

Эта небольшая идея в сочетании с их индексацией и всеми другими вещами, упомянутыми другими в их ответах, может быть одной из причин, почему это быстрее, чем поиск по жесткому диску.

  • Возможность прогнозировать на основе других поисков.
  • Данные, скорее всего, находятся в оперативной памяти, которая, как мы все знаем, быстрее.
  • Используйте несколько систем, чтобы разделить и победить
  • Поиск является их основным приоритетом.

Конечно, я могу ошибаться, но для меня это имело смысл. И я был счастлив с тем, что я узнал.

потрогать
источник
7
Вы прибили это к некоторым вещам, которые пропустили другие, более популярные плакаты. Google не ищет все так часто. Определенно не во всем Интернете, и даже не все в его собственных кэшах. Более того, когда вы выполняете поиск на Google.com, фактический поиск не происходит в режиме реального времени, это просто быстрое копирование и отображение результатов поиска, которые уже были созданы и организованы Google в последние месяцы. Очень сложно описать процесс производства / организации, но его можно смутно назвать «индексацией», как кто-то сказал.
Джозеф Майерс
Это крайне сложно описать продуктивный / организационный процесс ... . Да, это то, что я называю сложной частью этого. Недурно, вы суммировали это хорошо.
Коснитесь
1
@JosephMyers Google постоянно индексирует. Выполните поиск по вопросу, заданному в SuperUser ранее в тот же день (например, google.com/search?q=google+faster+than+a+hard+drive ), и он отобразится в результатах.
Брэд Паттон
@ Сенсорный я согласен с поиском в оперативной памяти. Это был четвертый пункт в моем посте о кешировании
Брэд Паттон,
@ Брэд Паттон Правда. Я должен был упомянуть это, потому что это было основой того, что я узнал. И часть, касающаяся индексации постоянно, ну, в общем, часть индексации является своего рода организационной частью. Поэтому утверждение гласит, что вы ищете то, что было организовано, а не то, что индексируется в данный момент. Что касается того, почему результат показывает, у stackoverflow больше доверия, чем у многих веб-сайтов, поэтому неплохо было бы индексировать его чаще. Вот почему это появляется. Если бы не это, вам пришлось бы подождать день или два, прежде чем появится то, что вы ищете. Я думаю, что это то, что говорит мистер ДжозефМайерс.
Нажмите
20

Google использует чрезвычайно сложную систему индексации, параллельные операции и ряд методов балансировки нагрузки, недоступных для стандартного автономного компьютера. на самом деле очень мало общего между поиском по сети и поиском по жесткому диску, и Google сильно оптимизирует их для конкретных случаев использования.

Фрэнк Томас
источник
4

В 2004 году некоторые сотрудники Google опубликовали статью MapReduce, и с тех пор они улучшались в сотни раз.

Кроме того, они используют Google File System (GFS), которая является распределенной файловой системой, такой как Hadoop Distribud File System (HDFS), и чрезвычайно оптимизирована для своих целей. Также, насколько я знаю, GFS работает, может быть, в тысячи раз быстрее, чем HDFS .

smttsp
источник
2

Я думал, что добавлю к этому, поскольку у меня тоже был этот вопрос некоторое время назад, и я нашел эти отличные видео, которые описывают то, что Google делает на поверхности. Интересно посмотреть.

Google на Youtube 1
Google на Youtube 2

Он идет немного глубже, но недостаточно глубоко, чтобы вы терялись в технических деталях.

Приветствия.

Mogget
источник
1

Просто добавив что-то к замечательным ответам здесь. Google использует кеширование популярных поисковых фраз. Результаты этих поисков хранятся в памяти. Так что если вы ищете что-то, что искали много, результаты будут отображаться почти сразу.

Mellowcandle
источник
0

Чтобы ответить на вопрос упрощенно: представьте, что у вас есть учебник с указателем ключевых слов в конце.

Поиск на жестком диске (по крайней мере наивно) - это все равно, что пролистывать книгу, страницу за страницей, сканируя каждую строку на предмет совпадения вашего ключевого слова.

Использование поисковой системы в Интернете похоже на поиск ключевого слова в индексе, а затем переход непосредственно к номеру страницы, который он дает.

В действительности, конечно, это намного сложнее, чем это. Например, вы обычно будете искать на своем жестком диске информацию, отличную от Интернета. Но самое главное, что поисковая система использует индекс. Он уже прошел слово «книга» слово за словом и составил список этих слов вместе с тем, где их найти, и организовал этот список таким образом, что он может очень быстро находить в нем информацию. ,

Например, подумайте об организации указателя в книге. Во-первых, он обычно сортируется по алфавиту, а во-вторых, он может иметь буквенные заголовки. Когда вы ищите слово в индексе, вы сразу видите список слов, начинающихся с буквы, которую вы хотите. А поскольку список отсортирован, легко найти нужное слово в списке или быстро определить, отсутствует ли оно.

Подводя итог, можно сказать, что на вашем жестком диске есть книга, а поисковая система имеет индекс. Хотя, как отмечали некоторые другие, для индексирования вашего жесткого диска можно использовать программное обеспечение, а затем вы можете использовать индекс вместо всего этого.

mwfearnley
источник
-1

Я думаю, что одной из причин появления Auto Completeи использования Google AJAXбыла проблема со скоростью. Теперь, когда вы печатаете, слова отправляются в фоновом режиме, поэтому Google может выполнять часть работы, пока вы еще не закончили. Также индексы основаны на нескольких словосочетаниях (которые вы можете найти в качестве подсказок внизу страницы). В настоящее время скорость сети выше, чем у жестких дисков, и, вероятно, многие из этих индексов находятся в оперативной памяти серверов их фермы.

Xaqron
источник