我正在使用node.js服务器在我的Web应用程序和数据库之间创建一个"接近实时"的套接字.目前我正在使用MySQL,我在节点中每秒轮询一次以检查表中是否有任何更改(基于时间戳).
我想知道是否有任何特定的技术可以用MySQL做这样的事情?目前,我正在运行SQL查询并在下次轮询之前使用setTimeout.
我知道在这样的实例中使用NoSQL数据库更常见,但我对这项技术并不熟悉,而且我更倾向于使用SQL.
有没有人有任何使用节点监控SQL数据库的经验或技巧?
Jos*_*osh 11
我不会亲自使用轮询机制.我认为这是一个非常好的用例,它将pub/sub mq作为数据库之上的一个组件,允许消费者为他们关心的实体订阅特定的通道以获取更改事件.
例如:
你可以使用一个非常简单的进程发布/发布机制来使用节点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)
这样你就不会对数据库施加愚蠢的轮询压力.实际上,更改分发完全独立于写入数据库
玩笑