Vous êtes sur la page 1sur 5

Mestrado em Informtica e Sistemas

SEMINRIO 1

ARQUITECTURA DE UM MOTOR DE
BUSCA:
EXEMPLO DO GOOGLE
por Vasco Nuno Sousa Simes Pereira
vasco@dei.uc.pt

Sumrio. Este artigo explica em modos gerais a arquitectura de um dos motores de busca mais populares
actualmente, o Google. Pretende-se mostrar como uma aplicao que lida com um volume de dados gigantesco pode
beneficiar de uma abordagem que envolve computao paralela e de bases de dados distribudas. No fim so feitas
algumas consideraes sobre aplicaes desta arquitectura a outros cenrios.
Palavras chave. Internet, bases de dados distribudas, computao paralela, motores de busca

1. Introduo
No incio a Internet era um meio de comunicao
acedido por apenas uma comunidade restrita. Com o
aparecimento da WWW (World Wide Web) com base
no protocolo HTTP (Hyper Text Transfer Protocol),
essa comunidade teve um crescimento exponencial,
permitindo o acesso generalizado de uma vasta faixa
de populao. Os novos utilizadores no s passaram
a poder aceder a um conjunto de informao de uma
maneira rpida como puderam tambm participar no
aumento dessa mesma informao criando sites
acerca dos mais variados temas e contedos. Isto
gerou uma dinmica nunca antes vista com milhares
de novos sites a aparecerem num curto espao de
tempo. Comeou ento a surgir a questo de como
catalogar esses sites, como fazer para que fossem do
conhecimento do resto da comunidade. As
abordagens tradicionais, como a lista telefnica,
tiveram um xito limitado pois a dinmica da Internet
no se compadecia com um meio de divulgao to
esttico. Na data de sada de cada lista j esta estava
completamente desactualizada, com uma grande parte
dos sites a ficar irremediavelmente de fora. Era ento
necessria outra forma de catalogar a Internet. Essa
soluo foi encontrada com motores de busca,
aplicaes que permitiam pesquisas pela Internet com
base em uma ou mais palavras-chave. Neste pequeno
artigo vai-se apresentar a arquitectura de um dos mais
populares motores de busca do momento, o Google.
O artigo no pretende ser exaustivo nem demasiado
profundo, apenas dar a conhecer uma aplicao
prtica, de grande relevncia, do uso massivo de
computao paralela e de bases de dados distribudas.
Este trabalho insere-se no mestrado em Informtica e
Sistemas do Departamento de Engenharia Informtica
da Universidade de Coimbra, e foca dois dos temas
abordados na disciplina de Seminrio 1, computao
paralela e bases de dados distribudas.

2. Soluo Google
Criado por dois investigadores da Universidade de
Stanford em 1998, o Google um dos mais populares
motores de busca da Internet, existindo em vrias
lnguas e distribudo por vrios continentes. Nas suas
bases de dados constam cerca de 6 bilies de itens,
maioritariamente pginas web [1], os quais tm
actualmente cerca de 200 milhes de acessos por dia.
De modo a suportar esta performance foi criado um
cluster de cerca de 15000 servidores Linux de baixo
custo que, num tempo mdio prximo do meio
segundo, devolve os resultados pretendidos pelo
utilizador. Na gnese da arquitectura do Google um
factor foi essencial: a relao preo/performance [2].

2.1 Enquadramento do problema


Os motores de busca para a Internet so programas
que, dadas determinadas palavras-chave ou
expresses, por um qualquer utilizador, devolvem
uma lista de hiper-ligaes para documentos onde
essas palavras existem. De modo a poderem realizar
essa tarefa os motores de busca tm armazenadas na
sua base de dados um vasto conjunto de informao
extrada da Internet, que previamente indexaram e
catalogaram. Para criar essas bases de dados existem
programas auxiliares (webcrawlers ou spiders) que
percorrem constantemente a Internet procura de
sites novos, os quais so posteriormente tratados e
adicionados s bases de dados. Cada motor de busca
usa um algoritmo especfico de indexao das
palavras existentes nos documentos encontrados, de
modo a poder depois devolver resultados por ordem
de relevncia.
Cada pedido a um motor de busca gera uma sequncia
de operaes que necessita de uma grande capacidade
de computao, bem como de um grande nmero de
acessos a disco. necessrio pesquisar Terabytes de
informao constantes das bases de dados, agregar e
ordenar resultados e, por fim, devolver os dados

Departamento de Engenharia Informtica, Universidade de Coimbra

2003/2004

Mestrado em Informtica e Sistemas

obtidos ao utilizador. Alm disso, tem de se ter em


conta que o nmero de pedidos de pesquisas, por
segundo, est na ordem dos milhares. Para que o
sistema tenha um tempo de resposta aceitvel ento
necessrio uma grande velocidade de processamento
e de acesso a disco. Uma das formas de tornar real
este cenrio era recorrer a alguns dos mais rpidos
super-computadores do mundo. O uso de supercomputadores tem no entanto vrios problemas. O
primeiro o custo. Alm de um elevado custo inicial
h ainda o custo de se usar um sistema proprietrio,
onde qualquer alterao ou operao de manuteno
implica ainda mais elevados custos. Outro factor
importante a escalabilidade. Com o aumento
previsvel do nmero de pginas nos prximos anos,
bem como a indexao de outro tipo de contedos
(ex. imagens), existir uma inevitvel diminuio da
performance do sistema, requerendo alteraes que se
traduziro num novo aumento exponencial de custos.
Outro problema ainda a fiabilidade desse sistema
quando o que se pretende um servio contnuo sem
falhas nem perodos de manuteno perceptveis.

SEMINRIO 1

que distribui equitativamente os pedidos pelos vrios


servidores. Estes GWS vo ser responsveis por gerir
a execuo da pesquisa do utilizador e por formatar
no fim os resultados em HTML (Hyper Text Markup
Language).
Pesquisa do
utilizador

Escolha do
cluster no DNS

Cluster A

...

GWS 2

Verificador de
sintaxe

O que a Google descobriu foi que as operaes


realizadas por um motor de busca eram altamente
paralelizveis, i.e., vrias operaes poderiam ser
realizadas em paralelo devido ao facto de no
dependerem umas das outras [2]. Esse foi o factor
chave para a soluo que viriam a adoptar. Essa
soluo passou pela criao de um cluster (conjunto
de mquinas que trabalham com um mesmo
objectivo, portando-se como uma nica) de mquinas
vulgares que, aproveitando a possibilidade de
processamento paralelo, tinham a performance de um
super-computador por uma fraco do custo. Esta
arquitectura trazia ainda mais uma vantagem
essencial, tornava o processo escalvel. Em seguida
ser apresentada a arquitectura geral e alguns
componentes de um cluster Google.

O inicio de qualquer pesquisa no Google comea pela


introduo de palavras-chave, ou expresses, por um
utilizador, usando um vulgar browser. Aps o
utilizador introduzir os termos a pesquisar, o primeiro
passo saber a qual dos clusters distribudos por
vrios locais do mundo que o utilizador se vai ligar.
Essa seleco feita por um balanceador de carga a
nvel do DNS (Domain Name Server), o qual devolve
o endereo do cluster mais prximo do utilizador.
Deste modo, proporcionado um menor trajecto dos
dados entre o utilizador e os servidores Google, ao
mesmo tempo que se distribui a carga por vrios
locais do mundo. Em seguida, depois de escolhido o
cluster, o pedido redireccionado para um servidor
web da Google (Google Web Server - GWS). Esta
operao tambm feita por um balanceador de carga

...

GWS 1

2.2. Arquitectura do Google

Pesquisa. O objectivo do Google responder s


pesquisas dos vrios utilizadores. Um esquema
simplificado de todo o processo de pesquisa e
devoluo de resultados apresentado na Figura 1.

Cluster B

Servidor de
publicidade

Servidor de Indces 1

Servidor de docs 1

Servidor de Indces 2

Servidor de docs 2

...

...

Servidor de ndices 1

Sub-ndice 1

PC 1

PC 2

Sub-ndice 2

...

PC 1

...

...

Agregar resultados e calcular


relevncia dos documentos
Lista de Documentos por ordem

Figura 1 Esquema simplificado da arquitectura


do Google
Quando a expresso de pesquisa chega ao GWS, e
depois de verificada a sua sintaxe, vai comear a
pesquisa s bases de dados. O primeiro acesso feito
pelos servidores de ndices. Estes servidores acedem
aos ndices com base nas palavras-chave pedidas e
retornam identificadores das pginas onde os termos
foram encontrados. Devido ao seu grande tamanho, o
ndice subdividido em vrias partes, cada uma tendo
um conjunto especfico de mquinas associadas. Cada
mquina destas replica as outras permitindo assim
vrias pesquisas simultneas a essa parte do ndice
geral. Para que o trabalho
seja dividido
equitativamente, tambm aqui usado um
balanceador de carga. Os resultados finais da pesquisa

Departamento de Engenharia Informtica, Universidade de Coimbra

2003/2004

Mestrado em Informtica e Sistemas

so ento agregados e intersectados de modo a obter


uma lista ordenada por relevncia. O critrio usado
para calcular a relevncia de uma pgina
proprietrio da Google e designado por PageRank
[3]. Aps saber quais os identificadores dos
documentos, um processo anlogo pesquisa nos
ndices realizado sobre os servidores de
documentos. Pretende-se agora obter o ttulo dos
documentos, o seu URL e a parte do texto onde a
palavra-chave referida. Para que isto seja possvel
os servidores de documentos armazenam vrias
cpias da web! Em paralelo, tambm feita uma
pesquisa a um servidor de publicidade que determina
se existe algum anncio relevante tendo como base as
palavras-chave inseridas pelo utilizador. Por fim a
pgina devolvida ao utilizador, depois de formatada
em HTML.
Populao das bases de dados. Devido grande
dinmica da Internet as bases de dados tm de ser
actualizadas com bastante regularidade, o que implica
uma constante pesquisa de pginas na Internet. Isso
feito por vrios spiders que, a partir de um URL
(Uniform Resource Locator) inicial percorrem as
vrias pginas disponveis. Essas pginas so depois
indexadas por um programa indexador que faz o
parsing do documento convertendo-o numa lista de
palavras. De tempos a tempos as bases de dados de
ndices presentes nos vrios milhares de mquinas,
so actualizadas [4].
Paralelismo. Devido ao facto da maioria das
operaes poder ser realizada em paralelo, possvel
ter pesquisas diferentes a usar diferentes
processadores e ter uma mesma pesquisa dividida por
vrios processadores. Pode-se por exemplo dividir
uma pesquisa nos seu vrios termos (palavras-chave)
e usar mquinas diferentes para pesquisar resultados.
No final, aps encontrados os resultados parcelares,
apenas necessria uma operao de agregao dos
resultados que, comparativamente, bastante mais
rpida. Ao mesmo tempo, no h problemas
relevantes de coerncia de dados visto que a grande
maioria de operaes so apenas de leitura.
Escalabilidade. A soluo apresentada pela Google
apresenta-se bastante escalvel. Conforme os ndices
e o nmero de documentos vo crescendo apenas
necessrio juntar estrutura mais um conjunto de PCs
que pesquisem o novo pedao do ndice ou o novo
conjunto de documentos. Ao mesmo tempo, se o
problema for o tempo mdio de resposta, basta
acrescentar mquinas a cada grupo para que cada uma
trate de menos pedidos de cada vez.
Fiabilidade. Uma das grandes vantagens desta
arquitectura a sua inerente tolerncia a falhas, que
assegurada por software. No so feitos investimentos
em hardware redundante como vrias fontes de
alimentao ou solues RAID (Redundant Array of
Inexpensive Disks), mas assegura-se por software que
caso uma das mquinas tenha algum problema, outra
tome o seu lugar. Embora esta soluo possa implicar

SEMINRIO 1

uma perda de performance temporria, manter


sempre o sistema completamente funcional. Deste
modo, aproveita-se a replicao natural inerente
arquitectura usada, diminuindo ao mesmo tempo os
custos. Como resultado final, consegue-se obter uma
estrutura fivel a partir de mquinas individualmente
no fiveis.
Hardware. Na Google grande parte dos
computadores usados so vulgares PCs, correndo
Linux, apenas se distinguindo por terem bastante
capacidade de disco. As mquinas usadas no so
escolhidas em termos de performance mxima mas
sim pela relao performance/custo. A arquitectura
orientada para uma lgica de alto dbito de respostas
do cluster, em detrimento de uma lgica de
performance pura de uma mquina. Todas as
mquinas esto ligadas por uma rede Ethernet a 100
Mbps com as ligaes principais entre grupos de
mquinas a chegarem aos 2Gbps. No so usados
esquemas complexos para redundncia visto que esta
assegurada pela replicao intrnseca prpria
arquitectura.
PageRank. O PageRank usado pelo Google para
permitir ordenar por relevncia os resultados de uma
pesquisa. O algoritmo usado algoritmo interpreta um
link de uma Pgina A para a Pgina B como um voto
da Pgina A para a Pgina B[5], avaliando a
importncia de uma pgina pelos votos que ela
recebe.[3][6]

3. Concluses
A soluo apresentada pela Google, idealizada para o
universo especfico dos motores de busca, permite
obter escalabilidade, fiabilidade e um elevado
desempenho, tendo como base um cluster de
mquinas comuns. No entanto, esta soluo s
possvel devido ao facto do problema dos motores de
busca ter algumas propriedades especiais. Entre estas
propriedades podemos destacar o facto de a maior
parte das operaes serem de leitura e de poderem
ocorrer em paralelo. Em cenrios que impliquem uma
constante actualizao ou insero de dados, o
software de controle e os processos de replicao dos
dados pelas vrias mquinas, teriam de ser bastante
mais complexos. Apesar disso, h uma srie de
aplicaes que podem beneficiar desta abordagem,
como o caso de servidores web que guardem
grandes quantidades de informao e em que as
escritas no sejam frequentes. Tambm repositrios
de informao como bases de dados de artigos
cientficos, catlogos on-line de equipamentos,
bibliotecas digitais on-line, podem beneficiar desta
abordagem. Outras aplicaes que no partilhem das
caractersticas enunciadas podem beneficiar de
solues mistas. Para isso ser necessrio criar uma
nova arquitectura, complementada com um software
de gesto que permita a manuteno da coerncia dos
dados
dentro
do
cluster,
sem
diminuir
significativamente a performance.

Departamento de Engenharia Informtica, Universidade de Coimbra

2003/2004

Mestrado em Informtica e Sistemas

SEMINRIO 1

Referncias
1.

Google Press Release (2004), Google Achieves


Search Milestone With Immediate Access To
More Than 6 Billion Items,
http://www.google.com/intl/pt/press/pressrel/6bil
lion.html

2.

Barroso, L., Dean, J., Hlzle, U. (2003) Web


Search For a Planet: The Google Cluster
Architecture, IEEE Micro, March-April 2003, pp.
22-28
http://www.computer.org/micro/mi2003/m2022.p
df

3.

Brin, S., Page L. (1998) The Anatomy of a LargeScale Hypertextual Web Search Engine, Proc.
Seventh World Wide Web Conference
http://wwwdb.stanford.edu/pub/papers/google.pdf

4.

Sobek, M. Google Dance - The Index Update of


the Google Search Engine
http://dance.efactory.de/

5.

Google Inc. Technology Overview


http://www.google.com/press/overview_tech.htm
l

6.

Rogers, I. (2002) The Google Pagerank


Algorithm and How it Works,
http://www.iprcom.com/papers/pagerank/Pageran
k Explained Correctly with Examples.htm

Departamento de Engenharia Informtica, Universidade de Coimbra

2003/2004

Mestrado em Informtica e Sistemas

SEMINRIO 1

Ficha de Caracterizao de Trabalho


Ttulo: Arquitectura de um motor de busca: exemplo do Google
Resumo: Este artigo explica em modos gerais a arquitectura de um dos motores de busca mais
populares actualmente, o Google. Pretende-se mostrar como uma aplicao que lida com um
volume de dados gigantesco pode beneficiar de uma abordagem que envolve computao
paralela e de bases de dados distribudas. No fim so feitas algumas consideraes sobre
aplicaes desta arquitectura a outros cenrios.
URL: www.dei.uc.pt/~vasco/portfolio/Google_v1.pdf
Data: 19-Fev-2004
Esforo:
Motivao: Conhecer o funcionamento de uma aplicao que trabalha com um volume de
dados gigantesco e que, atravs de um cluster constitudo por PCs normais consegue alcanar
performances muito elevadas.
Aprendizagem: Clusters, computao paralela, bases de dados distribudas
Contedos:
Processos: (que procedimentos e comportamentos aprendeu)
Futuro:

Departamento de Engenharia Informtica, Universidade de Coimbra

2003/2004

Vous aimerez peut-être aussi