PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quelle est la bonne façon de snyc/importer des tables d'une base de données postgres vers elasticsearch ?

Cela dépend de votre cas d'utilisation. Une pratique courante consiste à gérer cela sur la couche application. Fondamentalement, ce que vous faites est de répliquer les actions d'une base de données sur l'autre. Ainsi, par exemple, si vous enregistrez une entrée dans postgres, vous faites de même dans elasticsearch.

Si vous faites cela, vous devrez toutefois mettre en place un système de file d'attente. Soit la file d'attente est intégrée sur votre couche application, par ex. si l'enregistrement dans elasticsearch échoue, vous pouvez rejouer l'opération. De plus, sur votre système de file d'attente, vous implémenterez un mécanisme de limitation afin de ne pas submerger elasticsearch. Une autre approche consisterait à envoyer des événements à une autre application (par exemple, logstash, etc.), de sorte que la limitation et la persistance soient gérées par ce système et non par votre application.

Une autre approche serait celle-ci https://www.elastic.co/blog/ plug-in d'entrée logstash-jdbc . Vous utilisez un autre système qui "interroge" votre base de données et envoie les modifications à elasticsearch. Dans ce cas, logstash est idéal car il fait partie de la pile ELK et il a une excellente intégration. Vérifiez cela aussi https://www.elastic. co/guide/en/logstash/current/plugins-inputs-jdbc.html

Une autre approche consiste à utiliser le NOTIFY mécanisme de postgres pour envoyer des événements à une file d'attente qui gérera l'enregistrement des modifications dans elasticsearch.