elasticsearch,redis,synchronization,Node.js,Postgresql,elasticsearch,Redis,Synchronization" /> elasticsearch,redis,synchronization,Node.js,Postgresql,elasticsearch,Redis,Synchronization" />

Node.js 带elasticsearch的Postgres(保持同步)-nodeJS

Node.js 带elasticsearch的Postgres(保持同步)-nodeJS,node.js,postgresql,elasticsearch,redis,synchronization,Node.js,Postgresql,elasticsearch,Redis,Synchronization,我想建立postgres和elasticsearch。但在将数据放入elasticsearch之前,我想防止网络或服务器停机时数据丢失。阅读本主题后:。我想出了3个解决方案 创建数据库表ei:存储,并向其中添加任何新的/更新的数据 查询过程中:将数据插入存储 选择新数据:从修改的存储中选择数据>(:elasticsearch的上次修改时间) 将“新”数据发送至elasticsearch 使用redis发布/订阅请求,并使elasticsearch侦听/订阅即将发布的数据。如果elastics

我想建立postgres和elasticsearch。但在将数据放入elasticsearch之前,我想防止网络或服务器停机时数据丢失。阅读本主题后:。我想出了3个解决方案

  • 创建数据库表ei:
    存储
    ,并向其中添加任何新的/更新的数据

    • 查询过程中:将数据插入
      存储
    • 选择新数据:
      从修改的存储中选择数据>(:elasticsearch的上次修改时间)
    • 将“新”数据发送至elasticsearch
  • 使用redis发布/订阅请求,并使elasticsearch侦听/订阅即将发布的数据。如果elasticsearch中断,数据将在队列中

  • 捕获事务处理过程中的任何错误,以elasticsearch并将数据保存到安全的地方(ei:
    store
    上述表格)。然后使用cron作业将这些数据推回


  • 当然,最简单的方法是直接将数据插入elasticsearch。但这样做可以防止数据在腐蚀期间存储在安全的地方<代码>1在我看来太慢了,不像
    2
    。而
    3
    需要保留错误处理代码

    目前,
    2
    是我的选择


    有更好的方法吗?我想听听你的意见和新的建议

    :D

    Redis(2)不可靠

    我决定直接将数据添加到elasticsearch,并将数据添加到
    updates
    表中。然后在连接到elasticsearch客户端后直接运行
    sync()
    功能(如果之前集群宕机)+每24小时运行一次cron作业以启动
    sync()
    sync()
    所做的就是从
    更新
    A和elasticsearchB中选择最新数据(时间或id),并比较是否有记录
    A>B
    。如果是,请使用批量API插入数据

    希望这有帮助:)


    我仍然乐于接受建议和反馈

    好奇的是,我们将如何处理案例1的删除。我只是在探索一些方法来做你正在做的事情…还有,看看这个@FacePalm see Anwser是我的新问题: