Um fato que sempre achei engraçado é que o Google é, na verdade, administrado por bioinformática ('ok, acho isso engraçado porque sou um bioinfo ... coisinha). Deixe-me explicar.
A bioinformática teve desde o início o desafio de pesquisar pequenos textos em cadeias gigantescas com muita rapidez. Para nós, a “corda gigante” é, obviamente, DNA. Freqüentemente, não um único DNA, mas um banco de dados de vários DNAs de diferentes espécies / indivíduos. Os pequenos textos são proteínas ou sua contraparte genética, um gene. A maior parte do primeiro trabalho de biólogos computacionais se restringiu a encontrar homologias entre genes. Isso é feito para estabelecer a função de genes recém-descobertos, observando semelhanças com genes que já são conhecidos.
Agora, essas sequências de DNA ficam realmente muito grandes e a pesquisa (com perdas!) Deve ser feita de forma extremamente eficiente. A maior parte da teoria moderna de pesquisa de cordas foi desenvolvida no contexto da biologia computacional.
No entanto, há muito tempo, a busca convencional de texto estava esgotada. Era necessária uma nova abordagem que permitisse pesquisar grandes strings no tempo sublinear, ou seja, sem olhar para cada caractere único. Foi descoberto que isso pode ser resolvido com o pré-processamento da string grande e a construção de uma estrutura de dados de índice especial sobre ela. Muitas dessas estruturas de dados diferentes foram propostas. Cada um tem seus pontos fortes e fracos, mas há um que é especialmente notável porque permite uma pesquisa em tempo constante. Agora, nas ordens de magnitude em que o Google opera, isso não é estritamente verdadeiro porque o balanceamento de carga entre os servidores, o pré-processamento e algumas outras coisas sofisticadas devem ser levadas em consideração.
Mas, em essência, o chamado índice q-gram permite uma pesquisa em tempo constante. A única desvantagem: a estrutura de dados fica ridiculamente grande. Essencialmente, para permitir uma pesquisa de strings com até q caracteres (daí o nome), é necessária uma tabela que tenha um campo para cada combinação possível de q letras (ou seja, q S , onde S é o tamanho do alfabeto , digamos 36 (= 26 + 10)). Além disso, deve haver um campo para cada posição da letra na string que foi indexada (ou no caso do google, para cada site).
Para mitigar o tamanho, o Google provavelmente irá usar vários índices (na verdade, eles fazem , para oferecer serviços como correção ortográfica). Os primeiros não funcionam no nível do personagem, mas sim no nível da palavra. Isso reduz q, mas torna S infinitamente maior, de modo que eles terão que usar tabelas de hash e de colisão para lidar com o número infinito de palavras diferentes.
No próximo nível, essas palavras hash apontarão para outras estruturas de dados de índice que, por sua vez, farão hash caracteres apontando para sites.
Para encurtar a história, essas estruturas de dados de índice q -gram são indiscutivelmente a parte mais central do algoritmo de pesquisa do Google. Infelizmente, não existem bons artigos não técnicos explicando como funcionam os índices q -gram. A única publicação que conheço que contém uma descrição de como esse índice funciona é ... infelizmente, minha tese de bacharelado .
Aqui estão algumas das ótimas respostas e dicas fornecidas:
fonte
Eles implementaram algoritmos bons e distribuídos em uma grande quantidade de hardware.
fonte
Um dos atrasos mais importantes é que os servidores web estão obtendo sua consulta ao servidor web e a resposta de volta. Essa latência é limitada pela velocidade da luz, que até mesmo o Google tem que obedecer. No entanto, eles possuem datacenters em todo o mundo. Como resultado, a distância média para qualquer um deles é menor. Isso mantém a latência baixa. Claro, a diferença é medida em milissegundos, mas é importante se a resposta deve chegar em 1000 milissegundos.
fonte
Todo mundo sabe que é porque eles usam pombos , é claro!
Oh sim, isso e Mapreduce.
fonte
Eles praticamente possuem uma cópia local da Internet em cache em milhares de PCs em sistemas de arquivos personalizados.
fonte
O Google contrata o melhor dos melhores. Algumas das pessoas mais inteligentes em TI trabalham no google. Eles têm dinheiro virtualmente infinito para investir em hardware e engenheiros.
Eles usam mecanismos de armazenamento altamente otimizados para as tarefas que estão executando.
Eles têm farms de servidores localizados geograficamente.
fonte
Uma tentativa de lista generalizada (que não depende de você ter acesso às ferramentas internas do Google):
fonte
Você pode encontrar na página inicial de pesquisa do Google algumas dicas sobre os trabalhos de pesquisa escritos por alguns dos caras do Google. Você deve começar com a explicação do sistema de arquivos do Google e do algoritmo map / Reduzir para tentar entender o que está acontecendo por trás das páginas do Google.
fonte
Este link também é muito informativo, nos bastidores de uma consulta do Google
fonte
Hardware.
Muito e muito hardware. Eles usam clusters enormes de PCs básicos como seu farm de servidores.
fonte
TraumaPony está certo. Toneladas de servidores e arquitetura inteligente para balanceamento de carga / cache e voila, você pode executar consultas em menos de 1 segundo. Havia muitos artigos na rede descrevendo a arquitetura de serviços do Google. Tenho certeza que você pode encontrá-los através do Google :)
fonte
HenryR provavelmente está correto.
O Map Reduce não desempenha um papel para a pesquisa em si, mas é usado apenas para indexação. Confira esta entrevista em vídeo com os inventores do Map Reduce .
fonte
Uma razão adicional parece ser que eles trapaceiam no algoritmo de início lento do TCP.
http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html
fonte
E algoritmos que podem aproveitar essa potência do hardware. Como mapreduce, por exemplo.
fonte
Se você estiver interessado em mais detalhes sobre como o cluster do google funciona, vou sugerir esta implementação de código aberto de seu HDFS .
É baseado no Mapreduce do google.
fonte
Armazenamento, processamento e recuperação de dados em vários estágios
Distribuição EFICIENTE (centenas de milhares de máquinas) das tarefas acima
Boa estrutura para armazenar os dados brutos e os resultados processados
Boa estrutura para recuperar os resultados
Como exatamente tudo isso é feito é resumido por todos os links que você tem no resumo da pergunta
fonte