2011-04-13 13 views
6

Soy un principiante completo con Solr, así que tengan paciencia conmigo. :)Solr y MySQL, ¿Cómo mantener un índice actualizado, y, es una base de datos incluso necesaria si es simple?

En mi proyecto actual tengo un DB muy simple - solo 1 tabla que contiene 4 campos: id, name, subject, msg.

La forma en que entiendo, cada vez que se agrega (o elimina) un nuevo registro, necesitaría agregar ese registro al índice, esencialmente realizando dos operaciones: insertar el registro en el DB y agregarlo al índice .

¿Es este el procedimiento estándar, o hay una manera de ordenar a Solr que vuelva a indexar automáticamente la tabla DB en algún intervalo o siempre que haya actualizaciones?

Además, dado que la tabla es tan simple, ¿tiene sentido almacenar esta información en la base de datos? ¿Por qué no mantenerlo en el índice de Solr, teniendo en cuenta que quiero que los registros se puedan buscar por nombre, tema y mensaje?

Mi configuración es Java, Hibernate, MySQL y Solrj.

Respuesta

5

Usar una base de datos o no realmente se reduce a cuánto tiempo desea mantener y hacer crecer estos datos. Es mucho, mucho más fácil corromper un índice completo de Solr (y perder todos sus datos) que corromper una base de datos completa. Además, Solr no tiene un gran soporte para modificar un esquema sin comenzar con un nuevo índice. Por ejemplo, podría agregar otro campo muy bien, pero no podría cambiar el nombre o el tipo de un campo sin borrar su índice.

Si va con una base de datos, puede configurar Solr para indexar directamente desde la base de datos usando DataImportHandler. Para su esquema, esto debería ser bastante sencillo, pero esto puede ser doloroso rápidamente a medida que su base de datos se vuelve más compleja. Creo que hay alguna ventaja al usar los objetos de Hibernate que ya tienes configurados y simplemente insertarlos usando Solrj. El otro punto de dolor con DataImportHandler es que está completamente controlado mediante http. Por lo tanto, debe gestionar trabajos cron por separado (u otro código) para gestionar la programación utilizando wget o curl.

-1

La única razón por la que veo que una base de datos podría ser útil es porque tiene una mejor compatibilidad con transacciones. De todas formas, lucene (motor subyacente de SOLR) solo puede permitir un indexwriter, por lo que no puede estropear fácilmente el registro subyacente mediante una modificación simultánea.

Por lo que a mí respecta, no necesita una base de datos. SOLR se encargará de todo lo que necesite.

Cuestiones relacionadas