Bienvenidos visitantes

Bienvenidos a Chata Technology donde damos los mejores tips para el mantenimiento de tu computadora y tambien como usarla a su maximo potencial y un poco de información
Entra y unetenos !

viernes, 6 de abril de 2012

Crear Tu Propio Buscador

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
Aunque muchos opinan que 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

No hay comentarios:

Publicar un comentario