gpt4 book ai didi

Node.js - 监控数据库的变化

转载 作者:IT老高 更新时间:2023-10-28 23:15:59 24 4
gpt4 key购买 nike

我正在使用 node.js 服务器在我的 Web 应用程序和数据库之间创建一个“接近实时”的套接字。目前我正在使用 MySQL,我在 Node 中每秒轮询一次以检查表是否有任何更改(基于时间戳)。

我想知道是否有任何特定的技术可以用 MySQL 做这样的事情?目前,我只是在运行 SQL 查询并在下一次轮询之前使用 setTimeout。

我知道在这种情况下使用 NoSQL 数据库更为常见,但我对这项技术不太满意,我更愿意使用 SQL。

有没有人有任何使用 Node 监控 SQL 数据库的经验或技巧?

最佳答案

我个人不会为此使用轮询机制。我认为这是一个非常好的用例,将 pub/sub mq 作为数据库顶部的一个组件,它允许消费者订阅特定 channel 以获取他们关心的实体上的更改事件。

例如:

  1. 有人要求更改模型
  2. 模型广播更改事件
  3. 排队更改以持久保存在数据库中
  4. 在消息队列中的特定 channel 上触发更改集以分发给所有相关方

您可以使用 Node EventEmitter 对此类事情使用非常简单的进程中发布/订阅机制,并且当您需要扩展、有持久性要求或需要跨语言 MQ 时,您可以使用 rabbitmq 之类的技术, zeromq 等。我已经开始在我的一个应用程序中实现一些非常轻量级的功能:https://github.com/jmoyers/mettle/blob/master/src/pubsub.coffee

归结为:

pubsub.sub('users.*', function(updates){
// Interested party handles updates for user objects
});

这样您就不会对数据库施加愚蠢的轮询压力。实际上,更改分发完全独立于写入数据库

乔什

关于Node.js - 监控数据库的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145826/

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