Perché Google è molto più veloce di una ricerca sul disco rigido?


251

Quando cerco un file sul mio HD in Windows 7 o Windows XP ci vogliono alcuni minuti per completare il processo. Se inserisco un termine di ricerca in Google, la risposta è sul mio schermo in millisecondi

In che modo è possibile per Google cercare su Internet, che è molte volte più grande del mio disco rigido, più velocemente di quanto il mio sistema operativo possa cercare sul mio computer? È solo una questione di potenza di calcolo e l'algoritmo giusto?


98
Hai provato a indicizzare tutti i file sul tuo disco e a cercare solo l'indice? Prova tutto e vedi.
Karan,

11
Google Desktop "ha usato" per farlo anche per Windows ...
rogerdpack,

14
Google cerca attraverso gli indici memorizzati nella RAM, non attraverso i file su un disco rigido.
Ari

13
L'indice è importante, ma Google utilizza anche un algoritmo di riduzione delle mappe per condurre una serie di operazioni massicciamente parallele. Indipendentemente dal numero di core presenti nel tuo computer, garantisco che Google ne ha di più.
Adam Wuerl,

41
Non c'è nulla che precluda un'implementazione della ricerca desktop dall'uso dell'indicizzazione. Tuttavia , ricorda che Google ha abbastanza denaro per a) un sacco di CPU / server molto veloci per parallelizzare una query; b) molta RAM molto veloce per evitare di dover mai accedere a un disco; c) molti dischi rigidi molto più veloci di quello che usi; d) molti ingegneri molto intelligenti per ottimizzare gli algoritmi coinvolti. (Ad esempio, memorizzare nella cache i risultati per (molte) query usate di frequente e molto altro ancora.) Non è "solo" una questione di una di queste due cose, ma tutte recitano in concerto.
millimoose

Risposte:


211

Google non sta cercando in Internet: sta cercando un indice. Google ha server farm enormi che eseguono costantemente la scansione e l'indicizzazione di Internet. Questo processo richiede molto tempo, proprio come la ricerca del tuo disco rigido non indicizzato. In Windows 7, c'è un'opzione per indicizzare i tuoi dischi rigidi. Inizialmente questo processo richiede un po 'di tempo, ma una volta avviato, i risultati di una ricerca saranno istantanei.

Se vuoi sapere di più su come funziona la ricerca di Google puoi leggere l'articolo di Google " Come funziona la ricerca " o leggere l'articolo " Come funzionano le cose: come funziona Google ".


46
Ultimo paragrafo: questo link è molto più autorevole e complessivamente migliore.
Ulidtko,

4
Perdonate la mia curiosità, ma i file system non indicizzano già i file sul disco? Quello che vedi nel tuo esploratore di file non è un semplice indice di collegamenti ai settori fisici reali sul disco? Perché, quindi, dobbiamo fare ancora più indicizzazione?
Adi,

9
@Adnan l'indice dei file system è progettato per trovare la posizione in cui un file è archiviato su un supporto fisico. È come l'indice di un libro che ti dice in quale pagina inizia un capitolo. Un indice di ricerca è progettato per trovare contenuti. Un buon indice di ricerca non solo indicizza il nome di un file, ma anche il contenuto di tipi di file noti come pdf, doc, html, ... Gli indici avanzati usano anche sinonimi, quindi se cerchi "auto" potresti trovare risultati con la parola "automobile".
Simon,

3
@Adnan, il file system non è in realtà un "indice", solo un albero di nomi di file. La ricerca di tale albero non è veloce, perché la sua struttura non è ottimizzata per la ricerca. OTOH google (e database) utilizza specifiche strutture di indice ordinate che rendono veloce la ricerca di particolari voci. Anche in questo caso, non tutte le ricerche possono beneficiare di tale indice e saranno lente (er).
PiRX

8
@Adnan In un certo senso, l'albero di FS è ottimizzato contro la ricerca. È progettato per consentire l'indirizzamento di posizioni note. Dal tuo nodo radice, tutto ciò che ottieni è un elenco di directory e file in root. Ogni directory conosce solo i file in essa contenuti e le directory sottostanti. L'accesso a un percorso file noto è molto veloce in questo e offre molta flessibilità, ma non esiste un elenco globale di file da cercare. Devi sempre scendere attraverso la struttura di directory e questo porta a molte ricerche distinte.
Phoshi,

71

Google è come cercare nelle pagine gialle un indirizzo (indicizzato). La ricerca di Windows è simile a quella di controllare i numeri sugli edifici (non indicizzati).

Un'altra analogia sarebbe guardare attraverso una biblioteca ben organizzata e un catalogo di carte, o semplicemente smistare una pila di libri non organizzata ogni volta.

Fondamentalmente è tutto il lavoro organizzativo svolto prima della ricerca che lo rende veloce.

A proposito: durante la ricerca di posizioni indicizzate, la ricerca di Windows può essere altrettanto reattiva.


5
Oppure: Scansione di un libro di testo vs ricerca di un sommario (dettagliato)
bobobobo

36

L'attività di Google è la ricerca (e la pubblicazione di annunci) ed è molto focalizzata su questo. Ci sono molte cose che Google fa per garantire che i dati ti vengano restituiti molto velocemente:

  • In primo luogo utilizza MapReduce e PageRank per generare un indice completo del World Wide Web. Lo aggiorna regolarmente in modo che i risultati siano aggiornati.
  • Tale indice è distribuito e replicato sui numerosi server di Google
  • La query è suddivisa su più server per creare i risultati restituiti. Ciò consente al processo di essere altamente parallelizzato.
  • Le query e i risultati comuni vengono memorizzati nella cache, riducendo la necessità di eseguire la ricerca.

Vedi questo link per ulteriori informazioni su come funziona la ricerca

Comparativamente una ricerca del disco rigido senza un indice deve leggere tutti i file sul disco e questo può richiedere molto tempo.

Inoltre puoi pensare sia a un filesystem che a un indice come un albero. Nel filesystem la radice dell'albero è la cartella di livello superiore e può contenere rami (cartelle) o foglie (file) in quella cartella. Ogni ramo può avere rami secondari per più cartelle e foglie per più file. Per cercare questa struttura devi 'camminare' su tutti i rami (e sotto-rami) per trovare la foglia che stai cercando. Un indice inverte questa gerarchia. La base diventa l'alfabeto e tutti i sotto-rami perfezionano ulteriormente questo. Le foglie sono la posizione dell'oggetto che stai cercando. La ricerca in questa struttura consente di potare (escludere) grandi sezioni dell'albero (ad es. La prima lettera del termine di ricerca consente di tagliare altri 25 rami immediatamente).


30

Circa 4 anni fa mi sono anche posto la stessa domanda. Ma mentre cercavo su Internet di fare le mie ricerche, alla fine ho letto che oltre al fatto che assumono il meglio del meglio per trovare alcuni degli algoritmi di ricerca più sofisticati e tutto il resto.

Uno dei design chiave che hanno usato è simile all'idea di ridurre la mappa, credo. Hai molti computer economici nelle fattorie. Lascia che questi computer abbiano solo circa 80 gig di spazio sul disco rigido e spingi forte per avere circa 16 gig RAM o anche meglio 32 gig RAM su questi computer (il più possibile). Ricorda che sono collegati attraverso un sofisticato sistema che hanno progettato. Ma l'idea chiave qui è che quando una query viene inviata, viene passata al loro sistema dove proverà a cercare i nuovi dati nella RAM. Tieni presente che hanno molti di questi computer economici. E poiché i dati sono nella RAM, si trovano molto più velocemente di quanto non sarebbero su un disco rigido. Ma non dimenticare che hanno anche un sistema sofisticato (indicizzazione e tutti quegli algoritmi) che aiuta molto.

E questi dati non devono essere aggiornati, perché sappiamo tutti che Google memorizza tutto. Per quanto riguarda ciò che dovrebbe essere nella RAM, è possibile utilizzare lo stesso principio con gli alberi di visualizzazione, mantenere tutto ciò che la gente cerca di più nella RAM e scaricare le cose meno cercate sul disco rigido.

Questa piccola idea unita alla loro indicizzazione e tutte le altre cose che altri hanno menzionato nelle loro risposte, potrebbe essere uno dei motivi per cui è più veloce di una ricerca sul disco rigido.

  • Il potere di prevedere in base ad altre ricerche.
  • I dati sono molto probabilmente nella RAM che tutti sappiamo è più veloce.
  • Usa più sistemi per dividere e conquistare
  • La ricerca è la loro priorità principale.

Certo, potrei sbagliarmi, ma per me aveva senso. E sono stato contento di quello che ho imparato.


7
Hai inchiodato alcune delle cose che mancavano agli altri poster più popolari. Google non cerca tutto così spesso. Sicuramente non su tutta Internet, e nemmeno tutto nella sua cache. Inoltre, quando effettui una ricerca su Google.com, la ricerca effettiva non avviene in tempo reale, ma solo una rapida copia e visualizzazione dei risultati di ricerca che sono già stati prodotti e organizzati negli ultimi mesi da Google. È estremamente complicato descrivere il processo di produzione / organizzazione, ma può vagamente essere chiamato "indicizzazione" come qualcuno ha detto.
Joseph Myers,

E 'estremamente complicato per descrivere il processo di produzione / organizzazione ... . Sì, è quello che mi riferisco alla parte sofisticata di esso. Pollice in alto, lo hai riassunto bene.
Tocca il

1
@JosephMyers google indicizza costantemente. Fai una ricerca su una domanda posta su SuperUser all'inizio del giorno (ad es. Google.com/search?q=google+faster+than+a+hard+drive ) e si presenta nei risultati.
Brad Patton

@Touch Accetto le ricerche nella RAM. Questo è stato il quarto punto del mio post sulla memorizzazione nella cache
Brad Patton,

@Brad Patton True. Ho dovuto menzionarlo perché era la base di ciò che ho imparato. E la parte sull'indicizzazione costante, beh, la parte dell'indicizzazione è una specie di parte organizzativa. Pertanto, l'affermazione sostiene che si cerca ciò che è stato organizzato e non ciò che viene indicizzato al momento. Per quanto riguarda il motivo per cui il risultato viene mostrato, StackOverflow ha una maggiore credibilità rispetto a molti siti Web, quindi è bene idea di indicizzarlo più frequentemente. Ecco perché si presenta. Se non fosse per quello, dovresti aspettare un giorno o due prima che ciò che cerchi venga visualizzato. Penso che sia quello che dice l'onorevole JosephMyers.
Tocca il

20

Google utilizza un sistema di indicizzazione estremamente sofisticato, operazioni parallele e una serie di tecniche di bilanciamento del carico non disponibili per un computer autonomo standard. c'è davvero poca somiglianza tra una ricerca web e una ricerca di file sul disco rigido e google ottimizza fortemente per i loro casi d'uso specifici.


4

Nel 2004, alcuni dipendenti di Google hanno pubblicato un articolo: MapReduce e da quel momento in poi lo hanno migliorato centinaia di volte.

Inoltre, usano Google File System (GFS) che è un file system distribuito come Hadoop Distribud File System (HDFS) ed estremamente ottimizzato per i loro scopi. Inoltre, per quanto ne so, GFS funziona forse mille volte più velocemente di HDFS .


2

Ho pensato di aggiungere a questo dato che anch'io ho fatto questa domanda qualche tempo fa e ho trovato questi fantastici video che descrivono ciò che Google fa in superficie. Interessante da guardare.

Google su Youtube 1
Google su Youtube 2

Va un po 'più in profondità ma non abbastanza in profondità da farti perdere nei tecnicismi.

Saluti.


1

Basta aggiungere qualcosa alle meravigliose risposte qui. Google utilizza la memorizzazione nella cache delle frasi di ricerca più diffuse. I risultati di queste ricerche risiedono in una memoria. Quindi, se cerchi qualcosa che viene cercato molto, i risultati appariranno quasi immediatamente.


0

Per rispondere alla domanda a un livello semplicistico: immagina di avere un libro di testo con un indice di parole chiave sul retro.

Cercare un disco rigido (almeno ingenuamente) è come sfogliare il libro, pagina per pagina, scansionando ogni riga alla ricerca di una parola chiave.

Usare un motore di ricerca su Internet è come cercare la parola chiave nell'indice e poi passare direttamente al numero di pagina che fornisce.

In realtà, ovviamente, è molto più complesso di così. Ad esempio, di solito dovresti cercare sul tuo disco rigido diversi tipi di informazioni rispetto a Internet. Ma la cosa fondamentale da portare via è che il motore di ricerca sta usando un indice. Ha già esaminato il "libro", parola per parola, e ha compilato un elenco di quelle parole insieme a dove trovarle, e ha organizzato l'elenco in modo tale che possa cercare le cose in esso molto rapidamente .

Ad esempio, pensa all'organizzazione di un indice in un libro. In primo luogo, di solito è in ordine alfabetico, e in secondo luogo può avere intestazioni di lettere. Quando cerchi una parola nell'indice puoi vedere immediatamente l'elenco delle parole che iniziano con la lettera che desideri. E poiché l'elenco è ordinato, è facile trovare la parola desiderata all'interno dell'elenco o dire rapidamente se manca.

Quindi per riassumere, è come se il tuo disco rigido avesse solo un libro, mentre il motore di ricerca ha l'indice. Sebbene, come alcuni altri hanno sottolineato, è possibile utilizzare il software per indicizzare il disco rigido e quindi è possibile utilizzare l'indice invece dell'intera cosa.


-1

Immagino che uno dei motivi per cui Google sia emerso Auto Completee utilizzato sia AJAXstato il problema della velocità. Ora quando scrivi, le parole vengono inviate in background in modo che Google possa svolgere una parte del lavoro mentre non hai ancora finito. Inoltre gli indici si basano su più combinazioni di parole (che puoi trovare come suggerimenti in fondo alla pagina). Attualmente la velocità della rete è superiore rispetto ai dischi rigidi e probabilmente gran parte di quegli indici risiede nella RAM dei server nella loro farm.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.