6 votes

Solr et MySQL, comment maintenir un index à jour, et, est-ce qu'une base de données est même nécessaire si c'est simple ?

Je suis un débutant complet avec Solr, alors soyez indulgent avec moi :)

Dans mon projet actuel, j'ai une base de données très simple - juste une table qui contient 4 champs : id, nom, sujet, msg.

Si je comprends bien, chaque fois qu'un nouvel enregistrement est ajouté (ou supprimé), je dois l'ajouter à l'index, ce qui revient à effectuer deux opérations : insérer l'enregistrement dans la base de données et l'ajouter à l'index.

S'agit-il d'une procédure standard, ou existe-t-il un moyen de demander à Solr de réindexer automatiquement la table de la base de données, soit à un certain intervalle, soit à chaque fois qu'il y a des mises à jour ?

De plus, puisque la table est si simple, cela a-t-il un sens de stocker ces informations dans la base de données ? Pourquoi ne pas simplement les conserver dans l'index Solr, étant donné que je veux que les enregistrements soient consultables par nom, sujet et message ?

Ma configuration est Java, Hibernate, MySQL et Solrj.

5voto

Bart Points 591

L'utilisation ou non d'une base de données dépend en fait de la durée pendant laquelle vous souhaitez conserver et développer ces données. Il est beaucoup, beaucoup plus facile de corrompre un index Solr entier (et de perdre toutes vos données) que de corrompre une base de données entière. De plus, Solr ne dispose pas d'une grande prise en charge de la modification d'un schéma sans commencer par un nouvel index. Par exemple, vous pouvez ajouter un champ supplémentaire sans problème, mais vous ne pouvez pas changer le nom ou le type d'un champ sans effacer votre index.

Si vous optez pour une base de données, vous pouvez configurer Solr pour indexer directement à partir de la base de données en utilisant DataImportHandler . Pour votre schéma, cela devrait être assez simple, mais cela peut devenir rapidement pénible lorsque votre BD devient plus complexe. Je pense qu'il y a un certain avantage à utiliser les objets Hibernate que vous avez déjà configurés et à les insérer simplement en utilisant Solrj. L'autre point douloureux avec DataImportHandler est qu'il est complètement contrôlé par http. Vous devez donc gérer des tâches cron distinctes (ou un autre code) pour gérer la programmation en utilisant le protocole http. wget ou curl .

-1voto

doc_180 Points 8017

La seule raison pour laquelle je vois qu'une DB pourrait être utile est qu'elle a un meilleur support des transactions. De toute façon, Lucene (le moteur sous-jacent de SOLR) ne peut autoriser qu'un seul indexeur, ce qui fait que vous ne pouvez pas facilement endommager l'enregistrement sous-jacent par des modifications simultanées.

En ce qui me concerne, vous n'avez pas besoin de DB. SOLR se chargera de tout ce dont vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X