2009-08-19 12 views
9

Di volta in volta, quando la ricerca di un argomento su Google, Google mi restituisce i risultati e anche stampa alcune statistiche comeIn che modo Google fornisce i risultati così velocemente?

"Risultati 1 - 10 su circa 8.850.000 per J2ME (0,24 secondi)."

Ho notato che i secondi trascorsi da Google per servire i risultati sono in una frazione di secondo.

Come fa Google a pubblicare pagine così velocemente, che tipo di trucchi di ottimizzazione del database ha utilizzato alla fine?

+0

Programmazione correlata ??? – tw39124

+4

Immagino che gli utenti SO possano beneficiare di questa risposta. –

+0

In realtà alla seconda ricerca sono circa 0,1 secondi! Perché devono memorizzare nella cache i criteri di ricerca per un po 'di tempo. Se qualcun altro in tutto il mondo ha cercato i tuoi criteri, sarebbe la prima volta anche a 0.1 secondi! Per provare questo: digita "mappa" e cerca e vedi che questo è sempre di circa 0,1 secondi perché è costantemente ricercato dagli utenti. Ma se cerchi un testo casuale come 'asdasddsfdsfsf' ci vorranno 0.2 -0.5 secondi. – user44298

risposta

9

Credo che la ragione principale per la prestazione frontend sono:

  • Ogni richiesta viene distribuito a una serie di macchine in parallelo (ho letto da qualche parte che ogni query colpisce circa 12 macchine), probabilmente un le singole macchine raccolgono le risposte da queste macchine
  • Tutti i dati dell'indice sono conservati nella RAM. Con i dati dell'indice, intendo il termine vocabolario e l'indice dell'elenco dei messaggi e, nel caso di Google, probabilmente molti più indici, ad es. per le correzioni ortografiche. Anche con un singolo I/O su disco, la latenza della ricerca del disco da qualche parte impedisce una simile prestazione.

Googles Map/Reduce, GFS sono grandi strumenti per l'elaborazione in background, ma non hanno nulla a che fare con le prestazioni frontend.

+0

Beh, signore, penso che ti manchi un punto. Google non restituisce solo l'elenco di URL ma ne contiene un elenco classificato. Quindi, alcuni tipi di calcoli devono essere effettuati una volta che una query raggiunge una di quelle 12 macchine. E considerando che anche la personalizzazione viene eseguita e che Google ha una base di utenti di miliardi, io piazzerei la mia scommessa su GFS e MapReduce in uso sull'elenco di URL recuperati dall'indice in ciascuna di quelle 12 macchine per calcolare la rilevanza di ciascuna recuperata url wrt la query. E poi offcourse è possibile ordinare su quei numeri di rilevanza per restituire l'elenco classificato – Shatu

+0

Signore, scommetto ancora contro. MapReduce è di progettazione un sistema di elaborazione batch con una latenza piuttosto elevata. In entrambi i casi, si tratta di ipotesi (istruite). Non lo so per certo. – dmeister

+0

'Tutti i dati dell'indice sono conservati nella RAM'. Questo è semplicemente sciocco. – michaelmeyer

5

Map and Reduce + enorme datacenter distribuito.

+1

MapReduce è improbabile che sia la chiave per il calcolo veloce in tempo reale. Quando si invia un lavoro, la latenza di Hadoop è in genere superiore a un minuto a causa della sua natura progettuale. – user1036719

Problemi correlati