Node.js - 监视数据库以进行更改

Han*_*pan 12 node.js

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

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

我知道在这样的实例中使用NoSQL数据库更常见,但我对这项技术并不熟悉,而且我更倾向于使用SQL.

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

Jos*_*osh 11

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

例如:

  1. 有人要求更改模型
  2. 模型广播改变事件
  3. 将更改排队以保留在数据库中
  4. 触发消息队列中特定通道上的更改集,以便分发给所有感兴趣的各方

你可以使用一个非常简单的进程发布/发布机制来使用节点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
});
Run Code Online (Sandbox Code Playgroud)

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

玩笑