Synchronisation du serveur de recherche

Etant donné que Generic Search Server n'effectue pas de recherche sur les données réelles mais sur un index généré à partir de ces données, les mises à jour des données d'application doivent être répliquées dans l'index. Dans les implémentations Cúram, il est essentiel que les mises à jour des données interrogeables se reflètent dans les index concernés de manière prévisible et opportune. Avec Generic Search Server, le délai est court (et configurable).

Figure 1. Synchronisation de données

Tout comme l'importation initiale de données décrite ci-avant, il existe deux étapes dans le processus de synchronisation.

La première étape du processus se produit lorsque les données d'application (utilisées dans un index) changent, généralement suite à une insertion, une mise à jour ou une suppression logique. Lorsque cela se produit, l'application doit écrire des informations sur ce changement de données dans les tables de transfert de Generic Search Server. Tous les éléments, nouveaux et mis à jour, sont marqués avec un horodatage.

Durant la seconde étape (qui se produit périodiquement), Generic Search Server synchronise ses index avec le contenu actuel de la base de données de transfert. Pour ce faire, il lit tous les éléments modifiés depuis la dernière synchronisation, puis importe ces éléments dans les index. Cela se réalise en particulier par la comparaison des horodatages associés avec chaque élément modifié avec le dernier horodatage utilisé durant la précédente étape de synchronisation.

Remarque : Lors de l'écriture des tests d'unité qui comprennent des appels de recherches Generic Search Server, il est important de garder à l'esprit le temps d'attente de synchronisation des données. En outre, puisque l'instance de Generic Search Server s'exécute dans un processus distinct des tests d'unité, elle ne fait pas partie de la même transaction. Par conséquent, les synchronisations Generic Search Server ne récupérent pas les données modifiées dans la transaction de test, sauf si cette dernière est explicitement validée.