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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同步Postgres和ElasticSearch的最佳方法是什么?相关的知识,希望对你有一定的参考价值。

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

1- Postgres收听/通知:

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

2-对ES的异步查询:

我可以在更改DB后异步更新ElasticSearch。即:

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

哪一个会扩展得最好?

PS:我们在生产中尝试过zombodb,但效果不佳,它减缓了产量。

答案

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

debezium的好处:

  • 低延迟变化流
  • 存储复制日志中的更改以确定持久性
  • 仅发出可以被消费并通过管道传输到其他系统的写事件(创建,更新,删除)。

UPD。 Here is a simple github repository,展示了它的工作原理

另一答案

正如你要求的方法,我想你想知道应用更好的架构的可能性,我希望你提出一个由汇合给出的建议:

enter image description here

enter image description here

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

以上是关于同步Postgres和ElasticSearch的最佳方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

如何在架构上同步应用程序工程师 (Postgres) 和数据工程师 (Redshift)

[elasticsearch怎么和数据库同步]elasticsearch和mysql的数据同步采用哪种方案合适。

在两个 postgres 数据库表之间同步数据

ElasticSearch---ElasticSearch同步Mysql

在 2 个 web 服务之间同步 postgres 数据库表

使用debeziumkafka-connect将postgres数据实时同步到kafka中