gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:07:34 25 4
gpt4 key购买 nike

我想设置 postgres 和 elasticsearch。但是在将数据放入 elasticsearch 之前,我想防止网络或服务器出现故障时数据丢失。阅读本主题后:https://gocardless.com/blog/syncing-postgres-to-elasticsearch-lessons-learned/ .我想出了 3 个解决方案。

  1. 创建一个数据库表 ei: store,并向其中添加任何新的/更新的数据。

    • 在查询期间:将数据插入store
    • 选择新数据:SELECT data FROM store WHERE modified > (:last modified time from elasticsearch)
    • 将"new"数据发送到 elasticsearch
  2. 使用redis 来pub/sub 请求,并让elasticsearch 监听/订阅即将到来的数据。如果elasticsearch坏了,数据会在队列中

  3. 在与 elasticsearch 的交易过程中捕获任何错误并将数据保存到安全的地方(ei:上面提到的 store 表)。然后有一个 cron 作业将这些数据推回。


当然,最简单的事情是直接向elasticsearch插入数据。但这样做可以防止数据在损坏期间存储在安全的地方。 1 在我看来太慢了,不像 23 需要维护错误处理代码。

目前 2 是我的选择。


有没有更好的方法来做到这一点?我想听听您的意见和新的建议

:D

最佳答案

Redis (2) 不可靠。

我决定立即将数据添加到 elasticsearch 并将数据添加到 updates 表。然后在连接到 elasticsearch 客户端后立即运行 sync() 函数(如果集群之前出现故障)+ 每 24 小时运行一次 cron 作业以启动 sync()sync() 所做的就是从 updates A 和 elasticsearch B 中选择最新的数据(时间或 ID)并进行比较如果有记录 A > B。如果是这样,请使用批量 API 插入数据。

希望这有帮助:)

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

关于node.js - 带有 elasticsearch 的 Postgres(保持同步)- nodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39667292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com