Чому Google набагато швидше, ніж пошук на жорстких дисках?


247

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

Як Google може шукати в Інтернеті, який у багато разів перевищує мій жорсткий диск, швидше, ніж мої ОС можуть шукати в моєму комп'ютері? Це лише питання обчислювальної потужності і правильного алгоритму?


98
Ви пробували індексувати всі файли на диску і шукали лише індекс? Спробуйте Все і побачити.
Karan

11
Робочий стіл Google "використовується", щоб зробити це для вікон також ...
rogerdpack

14
Google здійснює пошук через індекси, збережені в оперативній пам'яті, а не через файли на жорсткому диску.
Ari

13
Індекс є важливим, але Google також використовує алгоритм зменшення карт для проведення масово паралельного набору операцій. Незалежно від кількості ядер у вашому комп'ютері, я гарантую Google більше.
Adam Wuerl

41
Ніщо не виключає використання індексування для пошуку на робочому столі. Однак , пам'ятайте, що Google має достатньо грошей для того, щоб a) багато дуже швидких процесорів / серверів, які паралельно виконують запит; б) дуже багато оперативної пам'яті, щоб уникнути необхідності доступу до диска; c) багато жорстких дисків набагато швидше, ніж той, який ви використовуєте; г) безліч дуже розумних інженерів для оптимізації задіяних алгоритмів. (Наприклад, кешування результатів для (багато) часто використовуваних запитів і багато іншого.
millimoose

Відповіді:


210

Google не шукає в Інтернеті: він шукає індекс. Google має величезні серверні ферми, які постійно сканують і індексують Інтернет. Цей процес займає багато часу, як і пошук вашого неіндексованого жорсткого диска. У Windows 7 є можливість індексувати жорсткі диски. Спочатку цей процес триває деякий час, але після його запуску результати пошуку будуть миттєвими.

Якщо ви хочете дізнатися більше про те, як працює пошук Google, ви можете прочитати статтю Google " Як працює пошук "або прочитати статтю" Як працює матеріал: як працює Google ".


45
Останній абзац: це посилання набагато авторитетніше і в цілому краще.
ulidtko

4
Вибачте мою цікавість, але ні файлові системи вже індексуєте файли на диску? Чи не те, що ви бачите у вашому файловому провіднику - це лише індекс посилання на фактичні фізичні сектори на диску? Чому ж нам тоді треба робити навіть більше індексування?
Adi

9
Індекс файлових систем @Adnan призначений для пошуку місця, де файл зберігається на фізичному носії. Це подібно до індексу книги, яка говорить вам, на якій сторінці починається глава. Індекс пошуку призначений для пошуку вмісту. Хороший індекс пошуку не тільки індексує ім'я файлів, але й вміст відомих типів файлів, таких як pdf, doc, html, ... Розширені індекси використовують також синоніми, тому, якщо ви шукаєте "автомобіль", він також може знайти результати з слово "автомобільний".
Simon

3
@Adnan, файлова система насправді не є "індексом", а лише деревом імен файлів. Пошук такого дерева не є швидким, оскільки його структура не оптимізована для пошуку. OTOH google (і бази даних) використовує конкретні сортовані структури індексів, що робить пошук для конкретної запису швидким. Навіть тоді не всі пошукові запити можуть скористатися таким індексом і будуть повільними.
PiRX

8
@Adnan У певному сенсі дерево FS оптимізовано проти пошук. Він розроблений, щоб дозволити адресацію відомих місць. З кореневого вузла ви отримаєте список каталогів і файлів під root. Кожен каталог просто знає про файли в ньому і каталоги під ним. Доступ до відомої файлової траси відбувається дуже швидко, і він пропонує велику гнучкість, але не існує глобального переліку файлів для пошуку. Ви завжди повинні спускатися через дерево каталогів, і це робить багато різних пошуків.
Phoshi

71

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

Іншою аналогією буде перегляд добре організованої бібліотеки та картотеки, або просто сортування скрізь неорганізованої купу книг.

Принципово це вся організаційна робота, проведена перед пошуком, що робить її швидкою.

FYI: Під час пошуку індексованих місць пошук вікон може бути настільки ж чуйним.


5
Або: Сканування підручника проти (детального) змісту
bobobobo

36

Діяльність Google - це пошук (і показ оголошень), і це дуже зосереджено на цьому. Існує ряд речей, які Google робить для забезпечення швидкого повернення даних:

  • Спочатку він використовує MapReduce і PageRank генерувати комплексний індекс Всесвітньої павутини. Він регулярно оновлює це, щоб результати були свіжими.
  • Цей індекс розповсюджується та тиражується на багатьох серверах Google
  • Ваш запит розділений на декілька серверів для створення отриманих результатів. Це дозволяє високо розпаралелювати процес.
  • Загальні запити та результати кешуються, зменшуючи необхідність виконання пошуку взагалі.

Для отримання додаткової інформації див. Це посилання Як працює пошук

Порівняно, пошук жорсткого диска без індексу повинен читати кожен файл на диску, і це може зайняти багато часу.

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


30

Близько 4 років тому я також задав собі одне й те саме питання. Але, як я googled навколо роблять моє дослідження я врешті-решт прочитав що крім того факту, що вони наймають кращих з кращих, щоб придумати деякі з найбільш складних алгоритмів пошуку і все це.

Один з ключових конструкцій, які вони використовували, схожий на ідею зменшення карти, я думаю. У вас на фермах багато дешевих комп'ютерів. Нехай ці комп'ютери мають тільки близько 80 гігабайт місця на жорсткому диску і тяжко підштовхнути близько 16 гігабайт або ще краще 32 гігабайт на цих комп'ютерах (наскільки це можливо). Пам'ятайте, що вони підключені через якусь складну систему, яку вони розробили. Але ключова ідея полягає в тому, що, коли запит подається, він передається в їхню систему, де він буде намагатися шукати свіжі дані в оперативній пам'яті. Майте на увазі, що у них багато таких дешевих комп'ютерів. А оскільки дані знаходяться в оперативній пам'яті, вона виявляється набагато швидше, ніж на жорсткому диску. Але не забувайте, що вони мають складну систему (індексацію і всі ці алгоритми), які дуже допомагають.

І ці дані не повинні бути свіжими, тому що всі ми знаємо, що Google зберігає все. Що стосується оперативної пам'яті, то можна використовувати той самий принцип з деревами розпізнавання, зберігати те, що люди найчастіше шукають у оперативній пам'яті, і очищати найменш шуканий матеріал на жорсткий диск.

Ця маленька ідея у поєднанні з їх індексацією та всіма іншими речами, про які згадували інші відповіді, може бути однією з причин, чому вона швидше, ніж пошук на жорстких дисках.

  • Потужність прогнозувати на основі інших пошуків.
  • Дані, швидше за все, в оперативній пам'яті, які ми всі знаємо, швидше.
  • Використовуйте декілька систем для розділяй і володарюй
  • Пошук є їхнім головним пріоритетом.

Звичайно, я можу помилятися, але це мало для мене сенс. І я був задоволений тим, що я дізнався.


7
Ви прибили його на деякі речі, які пропустили інші, більш популярні плакати. Google не шукає все так часто. Безумовно не по всьому Інтернету, і навіть не все в своїх кешах. Більше того, коли ви здійснюєте пошук на Google.com, фактичний пошук не відбувається в режимі реального часу, а лише швидке копіювання та відображення результатів пошуку, які Google вже розробив і організував за останні місяці. Надзвичайно складно описати процес виробництва / організації, але він може бути нечітко названий "індексацією", як сказав хтось.
Joseph Myers

Надзвичайно складно описати процес виробництва / організації ... . Так, це те, що я називаю складною його частиною. Великі пальці, ви підсумували його добре.
Touch

1
@JosephMyers Google індексує постійно. Здійснюйте пошук на запитання, що задається на SuperUser раніше в цей день (наприклад, google.com/search?q=google+faster+than+a+hard+drive ) і відображається в результатах.
Brad Patton

@Touch Я погоджуюся з пошуками в оперативній пам'яті. Це був четвертий пункт мого посту про кешування
Brad Patton

@Brad Patton Правда. Я повинен був згадати це, тому що це було основою того, що я дізнався. А частина про індексацію постійно, добре індексаційна частина - це свого роду організаційна частина. Тому твердження стверджує, що ви шукаєте те, що було організовано, а не те, що зараз індексується. Що стосується того, чому результат показується, stackoverflow має більше довіри, ніж багато веб-сайтів, тому ідея індексувати його частіше. Ось чому це проявляється. Якби не було цього, вам доведеться почекати день-два до того, як з'явиться пошук. Я думаю, що це говорить пан Джозеф Майєрс.
Touch

20

Google використовує надзвичайно складну систему індексування, паралельні операції та ряд методів балансування навантаження, які не доступні для стандартного автономного комп'ютера. насправді дуже мало схожості між пошуком веб-пошуку та пошуку файлів на жорсткому диску, і google оптимізує вагу для своїх конкретних випадків використання.


4

У 2004 році деякі працівники Google опублікували документ: MapReduce і з того часу вони поліпшувалися в сотні разів.

Також вони використовують Файлова система Google (GFS) як розподілена файлова система Розподілена файлова система Hadoop (HDFS) і надзвичайно оптимізовані для своїх цілей. Також, наскільки я знаю, GFS працює, можливо, тисячу разів швидше, ніж HDFS .


2

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

Google на Youtube 1
Google на Youtube 2

Він йде трохи глибше, але не настільки глибоко, що ви втрачаєтеся в технічному плані.

Привітання.


1

Просто додаємо тут чудові відповіді. Google використовує кешування популярних пошукових фраз. Результати цих пошуків знаходяться в пам'яті. Отже, якщо ви шукаєте те, що багато шукається, результати з'являться майже відразу.


0

Щоб відповісти на запитання на спрощеному рівні: уявіть, що у вас є підручник з індексом ключових слів у спині.

Пошук жорсткого диска (принаймні, наївно) подібний до того, як проходити книгу, сторінки за сторінкою, скануючи кожний рядок для виникнення вашого ключового слова.

Використання пошукової системи в Інтернеті подібне до пошуку ключового слова в індексі, а потім переходу безпосередньо на номер даної сторінки.

Насправді, звичайно, це набагато складніше, ніж це. Наприклад, ви зазвичай шукаєте на жорсткому диску різні види інформації, ніж Інтернет. Але основна річ, яку потрібно забрати - це те, що пошукова система використовує індекс. Вона вже пройшла "книгу", слово за словом, і вона склала список цих слів разом з де їх знайти, і вона організувала список таким чином, що він може швидко шукати речі в ньому дуже швидко .

Наприклад, подумайте про організацію індексу в книзі. По-перше, він зазвичай сортується в алфавітному порядку, а по-друге, він може мати заголовки листів. Коли ви шукаєте слово в індексі, можна відразу побачити список слів, що починаються з потрібної літери. Оскільки список сортується, легко знайти потрібне слово у списку або швидко повідомити, чи він відсутній.

Таким чином, підсумовуючи, це схоже на те, що на вашому жорсткому диску є лише книга, а пошукова система має індекс. Хоча, як зазначали інші, можна використовувати програмне забезпечення для індексування жорсткого диска, а потім можна використовувати індекс замість всього цього.


-1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.