2012-01-03 33 views
5

Estoy usando la base de datos MySQL para mi aplicación web. Necesito buscar en varias tablas & columnas múltiples, es muy similar a la búsqueda de texto completo dentro de esas columnas.¿cuánto espacio extra/RAM/CPU utiliza apache solr?

Necesito saber su experiencia de usar cualquier texto completo API de búsqueda (por ejemplo, Solr/Lucene/MapReduce/hadoop etc ...) Sobre el uso de SQL simple en términos de:

  1. funcionamiento de la velocidad
  2. el uso de espacio adicional
  3. CPU extra de uso (es continuamente construyendo índice?)
  4. ¿Cuánto tiempo se tarda en construir índice o se disponía para su uso?
  5. Háganme saber su experiencia al utilizar estos marcos.

¡Muchas gracias!

+1

No programación relacionada. –

+1

@Rosdi pero creo que esta pregunta tiene un impacto en el diseño de la aplicación y las herramientas y marcos que usa para crear su aplicación –

Respuesta

8

para responder a sus preguntas

1.) tengo una base de datos con alrededor de 5 millones de documentos. MySQL Fulltextsearch necesita 2-3 minutos. Solr/Lucene necesita la misma ronda de búsqueda entre 200 y 400 milisegundos.

2.) El espacio que necesita depende de su configuración, el número de campos copiados y si almacena los datos o si solo los indexa. En mi configuración, la base de datos completa está indexada, pero solo los metadatos se califican. Entonces, un DB de 30 GB necesita 40 GB para Solr/Lucene. Tenga en cuenta que si desea (re) optimizar su índice, necesita de nuevo el 100% del tamaño del índice.

3.) Si migra de MySQL fulltext-Index a Lucene/Solr, ahorrará energía de la CPU. El uso de MySQL El texto completo necesita mucha más potencia de CPU que Solr Búsqueda de texto completo -> ver respuesta 1.)

4.) depende de la cantidad de documentos, el tamaño de los documentos y la velocidad del disco. Por supuesto, el rendimiento de la CPU es muy importante. No hay una buena escala sobre múltiples CPU durante el tiempo de indexación. 2 núcleos grandes son mucho más rápidos que 8 núcleos pequeños. Indexación 5 millones de documentos (44 GB) en mi entorno necesitan 2-3 horas en un servidor dual ware VM VM.

5.) La migración de MySQL Fulltext-Index a Lucene/Solr Fulltextindex fue la mejor idea de la historia. ;-) Pero probablemente deba rediseñar su aplicación.

// Editar para responder a la pregunta "¿El Índice de Lucene se actualizan inmediatamente después de algunas instrucciones de inserción"

que depende de su configuración Solr, pero es posible

+1

Muchas gracias, es realmente muy útil :) – SmartSolution

+0

Hasta el punto y descripción específica. Muchas gracias – ChikuMiku

3

P1: Lucene es generalmente más rápido y más potente en términos de características (si se aplica correctamente)

P2: si no almacena el contenido original, es por lo general un 20-30% del original (indexado) contenido

Q4: depende del tamaño del contenido que desea indexar, de la cantidad de procesamiento que va a realizar (puede tener sus propios analizadores, etc.), luego su hardware ... lo hará tiene que hacer un punto de referencia. Para uno de mis proyectos, la última vez tomó 15 minutos construir un índice de 500MB (rendimiento fuera de la caja, sin retoques), por otro lado, tomó 3 días construir un índice de 17GB.

+0

gracias por la respuesta. En mi proyecto, básicamente se supone que el usuario cargue el archivo zip/tar y lo hará analizados y tantos registros se ingresarán en DB así que mi pregunta es: ¿Se actualizará el Índice Lucene inmediatamente después de algunas instrucciones Insert o tendremos que desencadenar explícitamente a lucene para reconstruir el índice, quiero decir, ¿la indexación ocurre en tiempo real? – SmartSolution

+0

Lucene es una biblioteca de búsqueda de texto libre, eso es todo, no sabe nada sobre bases de datos relacionales, sistemas de mensajería, lo que sea que tengas. Utilizará la API para enviar contenido para indexación y luego para buscar. – milan

Cuestiones relacionadas