Dlaczego Google jest o wiele szybszy niż wyszukiwanie na dysku twardym?

251

Kiedy szukam pliku na moim dysku HD w systemie Windows 7 lub Windows XP, proces ten trwa kilka minut. Jeśli wprowadzę wyszukiwane hasło w Google, odpowiedź pojawi się na ekranie w milisekundach

Jak Google może przeszukiwać Internet, który jest wielokrotnie większy niż mój dysk twardy, szybciej niż mój system operacyjny może przeszukać mój komputer? Czy to tylko kwestia mocy obliczeniowej i właściwego algorytmu?

Arne
źródło
99
Czy próbowałeś indeksować wszystkie pliki na dysku i przeszukiwać tylko indeks? Wypróbuj wszystko i zobacz.
Karan
11
Pulpit Google „kiedyś” robił to również w
systemie
14
Google przeszukuje indeksy przechowywane w pamięci RAM, a nie pliki na dysku twardym.
Ari
13
Indeks jest ważny, ale Google używa również algorytmu zmniejszania mapy, aby przeprowadzić masowo równoległy zestaw operacji. Bez względu na to, ile rdzeni masz na swoim komputerze, gwarantuję, że Google ma więcej.
Adam Wuerl
41
Nic nie stoi na przeszkodzie, aby implementacja wyszukiwania na pulpicie korzystała z indeksowania. Pamiętaj jednak , że Google ma wystarczającą gotówkę na: a) wiele bardzo szybkich procesorów / serwerów do równoległego zapytania; b) dużo bardzo szybkiej pamięci RAM, aby uniknąć konieczności dostępu do dysku; c) wiele dysków twardych znacznie szybszych niż ten, którego używasz; d) wielu bardzo inteligentnych inżynierów w celu optymalizacji zaangażowanych algorytmów. (Np. Buforowanie wyników dla (wielu) często używanych zapytań i wiele innych.) To nie jest „tylko” kwestia jednego z nich, to wszystkie działające razem.
millimoose

Odpowiedzi:

211

Google nie przeszukuje Internetu: przeszukuje indeks. Google ma ogromne farmy serwerów, które stale skanują i indeksują Internet. Ten proces zajmuje dużo czasu, podobnie jak wyszukiwanie nieindeksowanego dysku twardego. W systemie Windows 7 istnieje możliwość indeksowania dysków twardych. Proces ten na początku zajmuje trochę czasu, ale po jego uruchomieniu wyniki wyszukiwania będą natychmiastowe.

Jeśli chcesz dowiedzieć się więcej o tym, jak działa wyszukiwarka Google, przeczytaj artykuł Google „ Jak działa wyszukiwanie ” lub artykuł „ Jak działają rzeczy: jak działa Google ”.

Szymon
źródło
46
Ostatni akapit: ten link jest znacznie bardziej wiarygodny i ogólnie lepszy.
ulidtko
4
Przepraszam za ciekawość, ale czy systemy plików nie indeksują już plików na dysku? Czy to, co widzisz w eksploratorze plików, nie jest zwykłym indeksem linków do rzeczywistych sektorów fizycznych na dysku? Dlaczego zatem potrzebujemy jeszcze więcej indeksowania?
Adi
9
@Adnan indeks systemów plików ma na celu znalezienie pozycji, w której plik jest przechowywany na nośniku fizycznym. To jest jak indeks książki, która mówi, na której stronie zaczyna się rozdział. Indeks wyszukiwania służy do wyszukiwania treści. Dobry indeks wyszukiwania nie tylko indeksuje nazwę pliku, ale także zawartość znanych typów plików, takich jak pdf, doc, html, ... Zaawansowane indeksy używają również synonimów, więc jeśli szukasz wyrażenia „samochód”, równie dobrze może znaleźć wyniki z słowo „samochód”.
Simon
3
@Adnan, system plików nie jest tak naprawdę „indeksem”, tylko drzewem nazw plików. Wyszukiwanie takiego drzewa nie jest szybkie, ponieważ jego struktura nie jest zoptymalizowana do wyszukiwania. OTOH google (i bazy danych) używa określonych posortowanych struktur indeksu, co sprawia, że ​​szybkie wyszukiwanie konkretnych wpisów jest błyskawiczne. Nawet wtedy nie wszystkie wyszukiwania mogą skorzystać z takiego indeksu i będą wolne (er).
PiRX
8
@Adnan W pewnym sensie drzewo FS jest zoptymalizowane pod kątem wyszukiwania. Został zaprojektowany, aby umożliwić adresowanie znanych lokalizacji. Z węzła głównego wszystko, co otrzymujesz, to lista katalogów i plików w katalogu głównym. Każdy katalog po prostu wie o plikach w nim zawartych i katalogach poniżej. Dostęp do znanej ścieżki pliku jest bardzo szybki i oferuje dużą elastyczność, ale nie istnieje globalna lista plików do przeszukania. Zawsze musisz zejść przez drzewo katalogów, co powoduje wiele różnych wyszukiwań.
Phoshi,
71

Google przypomina przeszukiwanie żółtych stron w poszukiwaniu adresu (zindeksowanego). Wyszukiwanie w systemie Windows przypomina poruszanie się po numerach budynków (nieindeksowanych).

Inną analogią byłoby przeglądanie dobrze zorganizowanej biblioteki i katalogu kart lub po prostu sortowanie niezorganizowanego stosu książek za każdym razem.

Zasadniczo jest to cała praca organizacyjna wykonana przed wyszukiwaniem, która przyspiesza.

Informacje: Podczas wyszukiwania indeksowanych lokalizacji wyszukiwanie w systemie Windows może być równie responsywne.

Ryan
źródło
5
Lub: Skanowanie podręcznika a przeglądanie (szczegółowego) spisu treści
Bobobobo
36

Firma Google zajmuje się wyszukiwaniem (i wyświetlaniem reklam) i jest na tym bardzo skoncentrowana. Istnieje wiele rzeczy, które Google robi, aby zapewnić szybki zwrot danych:

  • Najpierw wykorzystuje MapReduce i PageRank do generowania kompleksowego indeksu sieci WWW. Aktualizuje to regularnie, aby wyniki były świeże.
  • Indeks ten jest dystrybuowany i replikowany na wielu serwerach Google
  • Twoje zapytanie jest podzielone na wiele serwerów, aby zbudować zwrócone wyniki. Umożliwia to wysoce zrównoleglony proces.
  • Typowe zapytania i wyniki są zapisywane w pamięci podręcznej, co ogranicza potrzebę wyszukiwania.

Zobacz ten link, aby uzyskać więcej informacji o tym, jak działa wyszukiwanie

Dla porównania, wyszukiwanie dysku twardego bez indeksu musi przeczytać każdy plik na dysku, co może zająć dużo czasu.

Dodatkowo możesz myśleć o systemie plików i indeksie jak o drzewie. W systemie plików katalog główny drzewa jest folderem najwyższego poziomu i może zawierać gałęzie (foldery) lub liście (pliki) w tym jednym folderze. Każda gałąź może mieć podgałęzie dla większej liczby folderów i pozostawia więcej plików. Aby przeszukać tę strukturę, musisz „przejść” wszystkie gałęzie (i gałęzie), aby znaleźć poszukiwany liść. Indeks odwraca tę hierarchię. Baza staje się alfabetem, a wszystkie pododdziały dodatkowo udoskonalają tę kwestię. Liście to miejsce, którego szukasz. Przeszukiwanie tej struktury pozwala przycinać (wykluczać) duże sekcje drzewa (np. Pierwsza litera wyszukiwanego terminu pozwala od razu przyciąć 25 innych gałęzi).

Brad Patton
źródło
30

Jakieś 4 lata temu zadałem sobie to samo pytanie. Ale kiedy przeglądałem swoje badania, w końcu przeczytałem, że oprócz tego, że zatrudniają najlepszych z najlepszych, aby wymyślić niektóre z najbardziej wyrafinowanych algorytmów wyszukiwania i tak dalej.

Myślę, że jeden z kluczowych projektów, z których korzystali, jest podobny do pomniejszenia mapy. Na farmach masz dużo tanich komputerów. Niech te komputery mają tylko około 80 gigabajtów miejsca na dysku twardym i naciskaj mocno, aby mieć około 16 gigabajtów RAM lub nawet lepiej 32 gig RAM na tych komputerach (jak najwięcej). Pamiętaj, że są one połączone przez jakiś skomplikowany system, który zaprojektowali. Ale kluczową ideą jest to, że po przesłaniu zapytania jest ono przekazywane do ich systemu, w którym spróbuje przeszukać świeże dane w pamięci RAM. Pamiętaj, że mają wiele takich tanich komputerów. A ponieważ dane znajdują się w pamięci RAM, można je znaleźć znacznie szybciej niż na dysku twardym. Ale nie zapominaj, że mają również zaawansowany system (indeksowanie i wszystkie te algorytmy), który bardzo pomaga.

Te dane nie muszą być świeże, ponieważ wszyscy wiemy, że Google przechowuje wszystko. Jeśli chodzi o to, co powinno znajdować się w pamięci RAM, można zastosować tę samą zasadę z drzewkami splay, zachować to, co ludzie najczęściej szukają w pamięci RAM, i spuść najmniej wyszukiwane rzeczy na dysk twardy.

Ten mały pomysł w połączeniu z ich indeksowaniem i wszystkimi innymi rzeczami, o których wspominali inni w swoich odpowiedziach, może być jednym z powodów, dla których jest szybszy niż wyszukiwanie na dysku twardym.

  • Moc przewidywania na podstawie innych wyszukiwań.
  • Dane najprawdopodobniej znajdują się w pamięci RAM, która, jak wszyscy wiemy, jest szybsza.
  • Używaj wielu systemów do dzielenia i podbijania
  • Wyszukiwanie jest ich głównym priorytetem.

Oczywiście mogłem się mylić, ale to miało dla mnie sens. I byłem zadowolony z tego, czego się nauczyłem.

Dotknąć
źródło
7
Przybiłeś go do niektórych rzeczy, których przegapiły inne, bardziej popularne plakaty. Google nie przeszukuje wszystkiego tak często. Na pewno nie w całym Internecie, a nawet we wszystkich własnych pamięciach podręcznych. Ponadto podczas wyszukiwania w Google.com wyszukiwanie nie odbywa się w czasie rzeczywistym, a jedynie szybkie kopiowanie i wyświetlanie wyników wyszukiwania, które zostały już opracowane i zorganizowane przez Google w ostatnich miesiącach. Opis procesu produkcyjnego / organizacyjnego jest niezwykle skomplikowany, ale można go niejasno nazwać „indeksowaniem”, jak ktoś powiedział.
Joseph Myers
Jest to bardzo skomplikowane do opisania produkującą / ... proces organizacyjny . Tak, to właśnie nazywam wyrafinowaną częścią tego. Kciuki w górę, dobrze to podsumowałeś.
Dotknij
1
@JosephMyers Google indeksuje stale. Wykonaj wyszukiwanie pytania zadanego na SuperUser wcześniej tego samego dnia (np. Google.com/search?q=google+faster+than+a+hard+drive ), a pojawi się ono w wynikach.
Brad Patton,
@ Dotknij Dotknij Zgadzam się na wyszukiwanie w pamięci RAM. To był czwarty punkt w moim poście o buforowaniu
Brad Patton
@Brad Patton True. Musiałem o tym wspomnieć, ponieważ była to podstawa tego, czego się nauczyłem. A część dotycząca ciągłego indeksowania, dobrze część indeksująca jest rodzajem organizującym. Dlatego stwierdzenie mówi, że przeszukujesz to, co zostało zorganizowane, a nie to, co jest obecnie indeksowane. Jeśli chodzi o to, dlaczego wynik jest wyświetlany, przepełnienie stosu ma większą wiarygodność niż wiele stron internetowych, dlatego warto go indeksować częściej. Dlatego się pojawia. Gdyby tak nie było, musiałbyś poczekać dzień lub dwa, zanim pojawi się wyszukiwane hasło. Myślę, że tak właśnie mówi pan JosephMyers.
Dotknij
20

Google korzysta z niezwykle zaawansowanego systemu indeksowania, operacji równoległych i szeregu technik równoważenia obciążenia niedostępnych dla standardowego komputera autonomicznego. istnieje naprawdę bardzo małe podobieństwo między wyszukiwaniem w sieci a wyszukiwaniem pliku na dysku twardym, a Google bardzo optymalizuje pod kątem konkretnych przypadków użycia.

Frank Thomas
źródło
4

W 2004 r. Niektórzy pracownicy Google opublikowali artykuł: MapReduce i od tego czasu poprawiali to setki razy.

Ponadto używają Google File System (GFS), który jest rozproszonym systemem plików, takim jak Hadoop Distribud File System (HDFS) i jest wyjątkowo zoptymalizowany do swoich celów. O ile mi wiadomo, GFS działa może tysiąc razy szybciej niż HDFS .

smttsp
źródło
2

Pomyślałem, że dodam do tego, ponieważ ja też miałem to pytanie jakiś czas temu i znalazłem świetne filmy, które opisują, co Google robi na powierzchni. Ciekawe do obejrzenia.

Google na Youtube 1
Google na Youtube 2

Wchodzi trochę głębiej, ale nie na tyle głęboko, by zatracić się w szczegółach technicznych.

Twoje zdrowie.

Mogget
źródło
1

Po prostu dodając coś do wspaniałych odpowiedzi tutaj. Google używa buforowania popularnych wyszukiwanych słów. Wyniki tych wyszukiwań znajdują się w pamięci. Więc jeśli szukasz czegoś, co jest często wyszukiwane, wyniki pojawią się prawie natychmiast.

Mellowcandle
źródło
0

Aby odpowiedzieć na pytanie w uproszczony sposób: wyobraź sobie, że masz podręcznik z indeksem słów kluczowych z tyłu.

Przeszukiwanie dysku twardego (przynajmniej naiwnie) jest jak przeglądanie książki, strona po stronie, skanowanie każdej linii w poszukiwaniu wystąpienia słowa kluczowego.

Korzystanie z wyszukiwarki internetowej przypomina wyszukiwanie słowa kluczowego w indeksie, a następnie przejście bezpośrednio do podanego numeru strony.

W rzeczywistości jest to o wiele bardziej skomplikowane. Na przykład zwykle przeszukujesz dysk twardy w poszukiwaniu różnych rodzajów informacji niż Internet. Ale podstawową rzeczą do usunięcia jest to, że wyszukiwarka korzysta z indeksu. Przeszedł już przez „książkę” słowo po słowie i opracował listę tych słów wraz z miejscem ich znalezienia, i uporządkował listę w taki sposób, aby mógł bardzo szybko znaleźć w niej rzeczy .

Pomyśl na przykład o organizacji indeksu w książce. Po pierwsze, jest zwykle sortowane alfabetycznie, a po drugie może mieć nagłówki liter. Gdy szukasz słowa w indeksie, możesz od razu zobaczyć listę słów zaczynających się na żądaną literę. A ponieważ lista jest posortowana, łatwo jest znaleźć żądane słowo na liście lub szybko powiedzieć, czy go brakuje.

Podsumowując, to tak, jakby na dysku twardym była tylko książka, podczas gdy wyszukiwarka ma indeks. Chociaż, jak zauważyli inni, możliwe jest użycie oprogramowania do indeksowania dysku twardego, a następnie można użyć indeksu zamiast całej rzeczy.

mwfearnley
źródło
-1

Myślę, że jednym z powodów, dla których pojawił się Auto Completei wykorzystał Google, AJAXbył problem z prędkością. Teraz, gdy piszesz, słowa są wysyłane w tle, dzięki czemu Google może wykonać część zadania, gdy jeszcze nie skończyłeś. Również indeksy oparte są na wielu kombinacjach słów (które można znaleźć jako sugestie na dole strony). Obecnie prędkość sieci jest wyższa niż dysków twardych i prawdopodobnie wiele z tych wskaźników znajduje się w pamięci RAM serwerów w ich farmie.

Xaqron
źródło