微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 到Node.JS的SQL Server实时推送通知

我正在构建一个Web应用程序,简而言之就是在sql Server中使用结构相当差的数据,并通过Node.JS将其移植到MongoDB.我需要这个的原因是我需要访问来自编写得相当糟糕的应用程序的数据,该应用程序是组织的核心,我无法更改输入初始数据的代码.翻译后,我可以让我的应用程序执行业务所需的操作.

现在我的应用程序每隔30分钟轮询sql Server进行更改,然后通过Node.JS更新我的MongoDB,并且由于数据量大,不希望更频繁地轮询.

我需要做的是将sql Server的实时通知以某种方式推送到我的Node.JS应用程序,无论是主动还是被动,没有Node.JS的结束,以便它可以更新我的Mongo数据库.

我用来获取数据的节点库是:https://github.com/patriksimek/node-mssql

我有一些可能的想法:

>让sql Server向我的NodeJS HTTP服务端点发送某种通知
>让NodeJS运行一个流式查询,每次进行更改时都会在我的终端运行
>在C#中编写一个应用程序来监视这些更改并将它们推送到我的NodeJS HTTP端点.

有几个似乎在谈论这个,但大多数似乎谈论数据源起点(我不能改变)的变化,而不是从sql Server本身.

解决方法

我必须先说明我没有实时解决方案.如果有实时解决方案,我不知道.我要谈谈减少民意调查的负担.

我假设您可以控制sql Server本身.您可以在sql Server中设置某些内容以跟踪更改并获取轮询,仅查看Node尚未提取的更改.

您是否可以控制更新/插入过程?如果您这样做,请轻松将更改跟踪代码放在插入/更新代码旁边.我假设你没有,在这种情况下,我建议*查看triggers.这些基本上是附加到表的事件监听器,允许您在插入/更新表之前,期间或之后执行sql,并允许您使用已删除和插入的表访问要更改/插入的数据.

*由于一些原因,sql Server社区不喜欢触发器,其中一些是在on this SQLServerCentral article讨论的.事情的要点:它们很难调试,它们会降低性能,因为它们成为写操作的一部分,并且要小心不创建循环触发器(更新了table1,触发trig1,更新table1,触发trig1等).因此,如果您使用表上的触发器进行更改跟踪,请创建一个单独的表,在其中跟踪这些更改,并且只让触发器更新/插入该表.

现在,您可以设置一个更改跟踪表,触发器将填充所做的任何更改,以及何时进行更改,甚至可能还有一些字段表示Node是否已撤消这些更改.现在你所要做的就是让Node查看那个表,并且只引入尚未引入的更改.这个表可能会变得非常快,因此调查速度很慢,因此我建议在标志或字段上添加一个索引,指出更改的日期.现在,由于民意调查很快,您应该能够减少间隔.

这不是一个理想的解决方案,可能需要做很多工作,所以最好等一会儿,看看是否有人想出更好的解决方案.

原文地址:https://www.jb51.cc/js/157384.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐