同步Postgres和ElasticSearch的最佳方法是什么?

时间:2017-07-25 16:55:14

标签: postgresql elasticsearch

我可以选择在我的Postgres DB上同步ES和最新更改

1- Postgres收听/通知:

我应该创建一个trigger - >使用pg_notify - >并在一个单独的服务中创建监听器。

2- ES的异步查询:

我可以在更改数据库后异步更新ElasticSearch。即:

model.save().then(() => {model.saveES() }).catch()

哪一个会扩展得最好?

PS:我们在生产中试过了zombodb,但效果并不顺利,这减慢了产量。

2 个答案:

答案 0 :(得分:2)

我建议您考虑使用https://github.com/debezium/debezium。它具有Postgresql支持,并实现了其他帖子中提出的change capture模型,而不是dual write模型。

debezium的好处:

  • 低延迟更改流
  • 将更改存储在复制的日志中以提高持久性
  • 仅发出可使用并通过管道传输到其他系统的写入事件(创建,更新,删除)。

UPD。 Here is a simple github repository,以显示其工作原理

答案 1 :(得分:1)

在您寻求方法时,我假设您想知道应用更好的体系结构的可能性,我希望您提出融合的建议:

enter image description here

enter image description here

此处https://www.confluent.io/blog/bottled-water-real-time-integration-of-postgresql-and-kafka/