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


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

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


247
2018-04-03 18:44


Источник


Вы пробовали индексировать все файлы на вашем диске и искать только индекс? Пытаться Все и посмотреть. - Karan
Рабочий стол Google «используется» для Windows также ... - rogerdpack
Google осуществляет поиск по индексам, хранящимся в ОЗУ, а не через файлы на жестком диске. - Ari
Индекс имеет важное значение, но Google также использует алгоритм уменьшения карты для проведения массового параллельного набора операций. Независимо от того, сколько ядер у вас на вашем компьютере, я гарантирую, что у Google больше. - Adam Wuerl
Нет ничего, что бы исключало использование индексирования для настольного поиска. Однако, помните, что у Google достаточно денег для a) большого количества очень быстрых процессоров / серверов для параллелизации запроса; b) много очень быстрой ОЗУ, чтобы избежать необходимости доступа к диску; c) много жестких дисков намного быстрее, чем тот, который вы используете; d) множество очень умных инженеров для оптимизации используемых алгоритмов. (Например, кеширование результатов для (часто) часто используемых запросов и многое другое.) Это не «только» вопрос об одном из них, это все из них, действующих в согласии. - millimoose


Ответы:


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

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


210
2018-04-03 18:53



Последний абзац: эта ссылка является гораздо более авторитетным и в целом лучше. - ulidtko
Простите мое любопытство, но не делайте файловые системы уже индексировать файлы на диске? Разве это не то, что вы видите в своем файле explorer просто индексом ссылок на фактические физические сектора на диске? Почему же нам тогда нужно делать даже больше индексация? - Adi
@Adnan индекс файловых систем предназначен для поиска позиции, где файл хранится на физическом носителе. Это похоже на индекс книги, в котором рассказывается, на какой странице начинается глава. Индекс поиска предназначен для поиска контента. Хороший индекс поиска не только индексирует имя файла, но также и содержимое известных типов файлов, таких как pdf, doc, html, ... Усовершенствованные индексы также используют синонимы, поэтому, если вы ищете «автомобиль», он может также найти результаты с слово «автомобиль». - Simon
@Adnan, файловая система на самом деле не является «индексом», а просто деревом имен файлов. Поиск такого дерева происходит не быстро, потому что его структура не оптимизирована для поиска. OTOH google (и базы данных) использует определенные сортированные структуры индексов, которые делают поиск для конкретной записи молнией быстро. Даже тогда не все поиски могут извлечь выгоду из такого индекса и будут медленными (er). - PiRX
@Adnan В некотором смысле, FS-дерево оптимизировано против поиск. Он предназначен для адресации известных мест. Из вашего корневого узла все, что вы получаете, это список каталогов и файлов под root. Каждый каталог знает только о файлах в нем и каталогах под ним. Доступ к известному файловому пути очень быстро под этим, и он предлагает большую гибкость, но глобальный список файлов для поиска не существует. Вы всегда должны спускаться через дерево каталогов, и это делает много разных поисков. - Phoshi


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

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

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

FYI: при поиске индексированных местоположений поиск в окнах может быть столь же отзывчивым.


71
2018-04-03 21:09



Или: сканирование учебника и поиск в (подробном) оглавлении - bobobobo


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

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

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

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

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


36
2018-04-03 20:44





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

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

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

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

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

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


30
2018-04-03 22:57



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


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


20
2018-04-03 18:49





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

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


4
2018-04-04 06:49





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

Google на Youtube 1
Google на Youtube 2

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

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


2
2018-04-04 00:14





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


1
2018-04-08 06:34