J'ai une table MySQL dans laquelle tous les utilisateurs peuvent INSERT. L'un des champs de la table est le nombre total de documents solr que la ligne correspond, appelez-le total results
.Consistance MySQL et Solr, sur insertion à
Dans le code API REST, lors de l'insertion, j'utilise un client solr pour trouver le nombre total de documents correspondant à la nouvelle ligne. Je mets à jour le champ, puis je renvoie la ressource complétée. Assez simple, bien que je préférerais déclencher cette mise à jour automatiquement via MySQL. Le plus gros problème est, lors de l'insertion de nouveaux documents ou de la suppression de vieux documents de solr, je n'ai pas de meilleur plan que d'exécuter un script shell qui a la même logique que le code API REST, et exécutez la mise à jour total results
sur chaque rangée.
Mes options, comme je le vois, sont les suivants:
1.) mettre à jour toutes les lignes après un data_import
à Solr, un par un. Cette table a environ 1.5M lignes, donc cela prend du temps. 2.) Renoncer complètement au champ dans la base de données, et obtenir chaque somme total results
de solr chaque fois que les ressources sont récupérées. (C'est une très mauvaise idée dans mon cas car un utilisateur récupère 20k lignes de cette table lors de la connexion avec GET/API/ressource comme une liste)
3.) Trouver un moyen de déterminer quelles tables MySQL spécifiques un nouveau Le document solr affecte et limite la mise à jour de ces lignes. Cela impliquerait essentiellement d'inverser le processus de recherche.
Les solutions 1 et 3 nécessitent essentiellement que j'écrive un script qui gère le solr data_import
et la mise à jour du champ total results
des lignes MySQL en un seul processus. Je peux le faire, mais je suis au point où je pourrais avoir un aperçu de la meilleure façon de gérer ces problèmes.
Alors, comment maintenez-vous la cohérence?
Regardez comment Alfresco gère le problème, la cohérence "éventuelle" et "transactionnelle", peut-être que cela vous aidera. – Lista