Un hecho que siempre me ha parecido gracioso es que Google está dirigido por la bioinformática (bueno, eso me parece gracioso porque soy una bioinf ... cosita). Dejame explicar.
La bioinformática tuvo desde el principio el desafío de buscar textos pequeños en cadenas gigantes muy rápido. Para nosotros, la "cadena gigantesca" es, por supuesto, ADN. A menudo, no es un solo ADN sino una base de datos de varios ADN de diferentes especies / individuos. Los pequeños textos son proteínas o su contraparte genética, un gen. La mayor parte del primer trabajo de los biólogos computacionales se limitó a encontrar homologías entre genes. Esto se hace para establecer la función de genes recién descubiertos al observar similitudes con genes que ya se conocen.
Ahora, estas cadenas de ADN se vuelven realmente muy grandes y (¡con pérdidas!) La búsqueda debe realizarse de manera extremadamente eficiente. La mayor parte de la teoría moderna de la búsqueda de cadenas se desarrolló así en el contexto de la biología computacional.
Sin embargo, hace bastante tiempo, la búsqueda de texto convencional se agotó. Se necesitaba un nuevo enfoque que permitiera buscar cadenas grandes en tiempo sublineal, es decir, sin mirar cada carácter individual. Se descubrió que esto se puede resolver procesando previamente la cadena grande y construyendo una estructura de datos de índice especial sobre ella. Se han propuesto muchas estructuras de datos diferentes. Cada uno tiene sus fortalezas y debilidades, pero hay una que es especialmente notable porque permite una búsqueda en tiempo constante. Ahora, en los órdenes de magnitud en los que opera Google, esto ya no es estrictamente cierto porque se debe tener en cuenta el equilibrio de carga entre los servidores, el preprocesamiento y algunas otras cosas sofisticadas.
Pero, en esencia, el llamado índice q-gram permite una búsqueda en tiempo constante. La única desventaja: la estructura de datos se vuelve ridículamente grande. Esencialmente, para permitir una búsqueda de cadenas con hasta q caracteres (de ahí el nombre), se requiere una tabla que tenga un campo para cada combinación posible de q letras (es decir, q S , donde S es el tamaño del alfabeto , digamos 36 (= 26 + 10)). Además, debe haber un campo para cada posición de letra en la cadena que se indexó (o en el caso de Google, para cada sitio web).
Para mitigar el gran tamaño, Google probablemente utilizará múltiples índices (de hecho, lo hacen , para ofrecer servicios como corrección ortográfica). Los más altos no funcionarán a nivel de personaje sino a nivel de palabra. Esto reduce q pero hace que S sea infinitamente más grande, por lo que tendrán que usar tablas hash y de colisión para hacer frente al número infinito de palabras diferentes.
En el siguiente nivel, estas palabras hash apuntarán a otras estructuras de datos de índice que, a su vez, apuntarán caracteres hash a sitios web.
En pocas palabras, estas estructuras de datos de índice de q -gram son posiblemente la parte más central del algoritmo de búsqueda de Google. Desafortunadamente, no hay buenos artículos no técnicos que expliquen cómo funcionan los índices q -gram. La única publicación que conozco que contiene una descripción de cómo funciona tal índice es ... ay, mi tesis de licenciatura .
Estas son algunas de las excelentes respuestas y sugerencias proporcionadas:
fuente
Han implementado buenos algoritmos distribuidos que se ejecutan en una gran cantidad de hardware.
fuente
Uno de los retrasos más importantes es que los servidores web están enviando su consulta al servidor web y la respuesta. Esta latencia está limitada por la velocidad de la luz, que incluso Google tiene que obedecer. Sin embargo, tienen centros de datos en todo el mundo. Como resultado, la distancia promedio a cualquiera de ellos es menor. Esto mantiene baja la latencia. Claro, la diferencia se mide en milisegundos, pero importa si la respuesta debe llegar en 1000 milisegundos.
fuente
Todos saben que es porque usan palomas , ¡claro!
Oh, sí, eso y Mapreduce.
fuente
Prácticamente tienen una copia local de Internet almacenada en caché en miles de PC en sistemas de archivos personalizados.
fuente
Google contrata lo mejor de lo mejor. Algunas de las personas más inteligentes en TI trabajan en Google. Tienen dinero prácticamente infinito para invertir en hardware e ingenieros.
Utilizan mecanismos de almacenamiento altamente optimizados para las tareas que están realizando.
Tienen granjas de servidores ubicadas geográficamente.
fuente
Un intento de hacer una lista generalizada (que no depende de que tenga acceso a las herramientas internas de Google):
fuente
Puede encontrar en la página de inicio de investigación de Google algunos consejos sobre los artículos de investigación escritos por algunos de los chicos de Google. Debe comenzar con la explicación del sistema de archivos de Google y el algoritmo map / reduce para intentar comprender qué sucede detrás de las páginas de Google.
fuente
Este enlace también es muy informativo Detrás de las escenas de una consulta de Google
fuente
Hardware.
Mucho, mucho hardware. Usan grupos masivos de PC básicos como su granja de servidores.
fuente
TraumaPony tiene razón. Toneladas de servidores y arquitectura inteligente para equilibrio de carga / almacenamiento en caché y listo, puede ejecutar consultas en menos de 1 segundo. Había muchos artículos en la red que describían la arquitectura de los servicios de Google. Estoy seguro de que puedes encontrarlos a través de Google :)
fuente
HenryR probablemente tenga razón.
Map Reduce no juega un papel en la búsqueda en sí, sino que solo se usa para indexar. Vea esta entrevista en video con los inventores de Map Reduce .
fuente
Una razón adicional parece ser que hacen trampa en el algoritmo de inicio lento de TCP.
http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html
fuente
Y algoritmos que pueden aprovechar esa potencia del hardware. Como mapreduce, por ejemplo.
fuente
Si está interesado en obtener más detalles sobre cómo funciona el clúster de Google, sugeriré esta implementación de código abierto de su HDFS .
Está basado en Mapreduce de Google.
fuente
Almacenamiento, procesamiento y recuperación de datos en múltiples etapas
Distribución EFICIENTE (cientos de miles de máquinas) de las tareas anteriores
Buen marco para almacenar los datos sin procesar y los resultados procesados
Buen marco para recuperar los resultados
Cómo se hacen exactamente todos estos se resume en todos los enlaces que tiene en el resumen de la pregunta
fuente