top of page

Optimisation de l'indexation de la recherche

Les applications modernes utilisent généralement divers moteurs de base de données, chacun répondant à un besoin spécifique. la base de données MySQL (DB) est utilisée pour stocker des formes canoniques de données, et Elasticsearch pour fournir des capacités de recherche avancées. MySQL sert de stockage de données principal pour les données brutes et Elasticsearch de stockage dérivé.

Des efforts ont été faits pour synchroniser les données entre MySQL et Elasticsearch.



 
Synchronisation incrémentielle


La synchronisation des données du stockage de données principal vers le stockage de données dérivé est gérée par Food-Puxian, une plate-forme de synchronisation de données (DSP). Dans un contexte de service de recherche, il s'agit de la synchronisation des données entre MySQL et Elasticsearch.

Le processus de synchronisation des données est déclenché à chaque mise à jour de données en temps réel vers MySQL, ce qui rationalisera les données mises à jour vers Kafka. DSP utilise la liste des flux Kafka et met à jour de manière incrémentielle les index de recherche respectifs dans Elasticsearch. Ce processus est également connu sous le nom de synchronisation incrémentielle.

DSP utilise les flux Kafka pour implémenter la synchronisation incrémentielle. Un flux représente un ensemble de données illimité, mis à jour en permanence, ordonné, rejouable et tolérant aux pannes.



 
Indexer les données MySQL avec ElasticSearch

Les index dans Elasticsearch correspondent aux tables dans MySQL. Les données MySQL sont stockées dans des tables, tandis que les données Elasticsearch sont stockées dans des index. Plusieurs tables MySQL sont jointes pour former un index Elasticsearch. L'extrait ci-dessous montre le mappage Entité-Relation dans MySQL et Elasticsearch. L'entité A a une relation un-à-plusieurs avec l'entité B. L'entité A a plusieurs tables associées dans MySQL, les tables A1 et A2, et elles sont jointes en un seul index Elasticsearch A.

Parfois, un index de recherche contient à la fois l'entité A et l'entité B. Dans une requête de recherche par mot clé sur cet index, par exemple "Burger", les objets de l'entité A et de l'entité B dont le nom contient "Burger" sont renvoyés dans la réponse de recherche.





2 vues

Posts récents

Voir tout

Comments


bottom of page