6.9.06

¿ Como crear un buscador como Google ?

Yo por lo menos muchas veces me pregunte como crear un buscador tan eficaz y tan rapido como google , hace tiempo en un foro de google encontre estas respuestas que me parecieron interesantes... y hoy decidi postearlo en mi blog

Google no utiliza una base de datos, utiliza indices directamente creados por ellos, con su propio sistema de compresion, y su propio sistema de ficheros. Todo esta desarrollado desde muy bajo nivel, ya que el objetivo desde el principio era un motor de busqueda a gran escala (su primer hito eran 100 millones de paginas). Por eso como veras en el documento, las estructuras de datos están apuradas hasta el bit.

Sobre el tema de SQL, es tentador pensar que con una base de datos ligera (mysql,msql,etc..) se podría gestionar un buscador así, pero la respuesta es que en principio no. Por la cantidad de datos, aunque hicieras un buscador que fuera el 10% de google (2.000.000.000 de paginas), hay serias limitaciones que hay que considerar. Por ejemplo si utilizas mysql, para 10.000.000 de paginas, y sin mucha sofisticacion, en bruto, necesitas 1GB de ram para el índice de palabras, utilizando listas de parada (si quieres busquedas por frases necesitaras otro indice aparte). Debe estar en memoria para dar un buen rendimiento. El problema viene con las variables escalabilidad, rendimiento, y claro, dinero. Si quieres indexar 100.000.000 de páginas, el indice son 10gb (probablemente más, no es totalmente lineal)... necesitas mucha memoria, y aun mas disco, 100.000.000 de páginas no deberían estar en un solo servidor. 1.000.000.000 de paginas, 100 gb de memoria, solo para el indice NORMAL.

Puedes pensar.. mysql cluster, para utilizar multiples nodos, vale, aunque esta orientado mas a la alta disponibilidad que a la eficiencia, necesitarias el espacio en disco para 1.000.000.000 de paginas * (numero de replicas de la informacion) * 1,1 / numero de nodos. Mucha memoria por cada nodo, mucho dinero.

Para igualar a Google sin desarrollar tu propia tecnologia, utilizando bases de datos comerciales, y consultas sql necesitas mucho presupuesto, para mi gusto, para tablas con miles de millones de registros funciona mejor Oracle RAC, aunque necesitas mas hardware

La cuestion es que Google tiene desarrollado un sistema completo, desde bajo nivel, optimizado para busquedas, y preparado para un tamaño descomunal. Las bases de datos normalmente estan pensadas para propositos mas generales, y eso hace que malgastes recursos y no obtengas exactamente lo que quieres.

De ahi la importancia de estructuras de datos como los BigFiles (archivos que pueden existir entre varios nodos de un cluster), etc..

aqui os dejo dos links ( en ingles ) con informacion sobre ello

http://www-db.stanford.edu/pub/papers/google.pdf
http://www.infonortics.com/publications/google/technology.pdf

Tambien venden un libro completo en esta direccion ( en ingles )

http://www.infonortics.com/publications/google/google-legacy.html

19 comentarios:

Nico dijo...

Como todo en la vida los que inventaron Google habrán creado un pequeño sistema y luego lo fueron agrandando y a medida seguía creciendo, habrán ido migrando el sistema para prepararse para algo más grande.

Yo en lo personal no quisiera hacer un buscador como Google, sino me centraría más en soluciones que requieran algún sector de usuarios y crearía aplicaciones para ellos.

Technorati, se imaginó que iba a ser tan popular y reconocido? Creo un sistema desde el inicio preparado para soportar tal carga de usuarios?
No lo creo.

Cab dijo...

A lo mejor Google no, pero los desarrolladores actuales tienen claro que es Internet, y que supone crear algo para que funcione Internet. Cualquier herramienta o innovación que se precie, de tener futuro en Internet sabe que se enfrenta a esa posibilidad de popularidad masiva. De lo contrario no serian unos buenos desarrolladores, pues el trabajo de un buen programador, es saber lo que puede traer el futuro. Espero que se pille la alegoría…

Eso es lo fantástico de Internet, su potencial y lo relativamente fácil que es acceder a él.

Anónimo dijo...

Nutch es una buena opción, pero también hay otras opciones muy interesantes con mayor o menor grado de desarrollo, por ejemplo:
Terrier: http://ir.dcs.gla.ac.uk/terrier/
Lemur: http://www.lemurproject.org/
MG: http://www.math.utah.edu/pub/mg/

No todas estas herramientas implementan un sistema de ficheros tipo Map Reduce (que es lo que usa Nutch) pero son una buena base para implementarse un buen buscador sin dedicarle demasiado tiempo.

Para los que les interese ver como funciona Map Reduce http://en.wikipedia.org/wiki/MapReduce tienen una implementación Open Source que es la que usa Nutch llamada Hadoop
http://lucene.apache.org/hadoop/about.html

Y para terminar un video sobre el sistema de ficheros de Google que aunque es un poc antiguo es muy interesante http://www.researchchannel.org/prog/displayevent.asp?rid=2459

Eduardo dijo...

La verdad, que los creadores de google supieron utilizar todas las herramientas al nivel mas optimo, una vez lei que tiene varios servidores con RedHat que ellos mismos los optimizan... le llaman googlear servidores algo por el estilo, y ademas tienen un ex super experto en sistemas operativos que trabajo en Dell creo que diseño una forma al parecer demasiado eficaz para que todos trabajen en conjunto y se repartan sus tareas...

Anónimo dijo...

yO QUISIERA HACER UN BUSCADOR

Anónimo dijo...

que necesito para crear un buscador? y cual es el negocio principal de crearlo?

Anónimo dijo...

Yo tambien quise poner un buscador
tipo google pero con lo costoso que es esa tecnologia, mejor me decidi por hacer otra cosa en internet.

Anónimo dijo...

HOLA ME LLAMO JOSE ANDERSON HENRIQUEZ SOY UN APRENDIZ EN PROGRAMACION Y ESTOY INVESTIGANDO Y RECOPILANDO DATOS PARA CREAR UN BUSCADOR DOMINICANO ME ENCANTARIA QUE PERSONAS CON TU CONOCIMIENTO SE UNIERAN A MY GRUPO SY ESTAS INTERESADO EN PARTICIPAR PUEDES ESCRIBIRME A LA SIGUIENTE DIRECCION (JHENRI1402@GMAIL.COM)
TE REITERO QUE SI TOMAS LA DECISION DE UNIRTE A NOSOTROS PODRIAS ESTAR FORMANDO PARTE DE ALGO VERDADERAMENTE GRANDIOSO EN DONDE PERSONAS DE METAS DEFINIDAS PODRIAN LOGRAR CUMPLIR ESTE SUEÑO QUE TENEMOS EN COMUN SIN MAS SE DESPIDEN (Jose Anderson Henriquez y Adriano Reyes).

Anónimo dijo...

YO CREO KE NO ES NESESARIA TANTA PLATA y tecnologia con un poco de publicidad efectiva se puede hacer un buscador nuevo y menos makabro ke google la tecnologia en los ultimos años a estado bajando el costo de los computadores ya hay ekipos con muchisisma RAM , pienso ke se podria hacer algo mas economico como un directorio mundial.

para mi google era muy bueno y normal pues alguien tenia ke hacer el trabajo, pero me dio mucha rabia con eso del navegador de google ke en el contrato le autoriza a dar tu informacion de correo, y las paginas ke miras, con motivos de mercadeo claro.

lo triste es ke esta pagina la encontre en el mismo google...
estoy cANsado de google

en todo caso, es encontrar la forma de direccionar la informacion buscada de manera mas simple con un programa intuitivo es decir como una pulguita ke busca en la red un pulga super rapida y efectiva y no un SUPER archivo de datos.

ZARATUSTRA A.

daviddddd dijo...

Quizas podais ayudarme, tengo un disco duro externo lleno de información no estructurada a la que se le pasado el OCR , me gustaria saber que posibilidades o productos hay para crear un buscador por texto libre que me facilite acceder a informacion concreta SIN TARDAR UN AÑO.
gracias gente ,
un saludo

MIKEL dijo...

NO CREO YO QUE LOS CREADORES DE GOOGLE CUANDO LO CREARON TUVIERAN MUCHO DINERO PARA ELLO.SI HAN HECHO DINERO HA SIDO DESPUES,PERO NO CREO QUE ANTES TUVIERAN MILLONES.SI ALGUIEN ME PUEDE DECIR COMO HACER UN BUSCADOR QUE NO TENGA NADA QUE VER CON GOOGLE LE HAGO SOCIO Y LE DOY EL 1% DE LA COMPAÑIA.

Webs dijo...

Hola, yo tengo en mente crear un buscador, pero con solo unas 10 mil paginas como mucho, sobre algo muy concreto, quería saber que puedo hacer para llevarlo a cabo, tan caro sería para solo unos 10 mil resultados de busqueda?, puedo utilizar el buscador de google de adsense y meterlo en mi pagina?

Saludos y gracias!!

Jose dijo...

Buenas tardes, he llegado hasta esta pagina, rastreando en Internet, buscando una respuesta a "como crear un buscador", y me ha resultado muy interesante lo que he leido. Llevo tiempo pensando un una idea tan disparatada a priori como esta, maxime desconociendo el mundo de programacion, informatico, etc... pero tengo una conviccion, y es que a nivel publicitario y comercial, se puede crear un buscador "local" con una serie de valores añadidos para usuarios, empresas, y anunciantes.

Leonardo dijo...

Hola. Yo utilizo SES, creo que es la mejor aplicación para desarrollar un buscador y es muy sencillo de utilizar.
http://www.searchenginescript.info/es/

Anónimo dijo...

Hola. Mi hijo: PEDRO CORCHERO MURGA ha participado como diseñador del interfaz de un buscador llamado IPIARI que ya está en versión Beta,y saldrá tambien para móviles. Me gustaría saber su opinión. Puedes contactar a través de su blob: CSSBLOG o mi dirección es amurgat@gmail.com

Anónimo dijo...

hola!

soy un emprendedor y me encuentro en mexico si hacer un buscador como google tiene alguna opcion y existe un grupo de personas que quieran intentarlo pueden ponerse en contacto conmigo mi correo es halcon_79@live.com.mx

saludos

juegos de futbol dijo...

Buenas tardes, he llegado hasta esta pagina, rastreando en Internet, buscando una respuesta a "como crear un buscador", y me ha resultado muy interesante lo que he leido.

Gerardo Nicolato dijo...

Hola a todos bueno yo tenia en mente hacer un Server FTP para vender cuentas pero de alta velocidad y lo he hecho claro en algo robusto y muy espectacular por sus virtudes como lo es Linux Ubuntu particularmente también he terminado mi Server Web y ahora quería hacer un buscador y de hecho de alguna manera lo are les recuerdo que Google comenzó sin tecnología ni dinero era un server en la habitación del actual dueño luego comenzó a dar frutos porque los inversionistas lo apoyaron y llego al monstruo que es hoy día pero arranco así de la nada y con nada recuerden eso tengan animo de progresar.
http://server-2012.sytes.net:8080/web-server.htm

Saludos.

josefo dijo...

muy interesante, muy buen articulo