SQL服务代理:收集数据 - 插件情景分析(SQL Service Broker: Collecti

2019-09-22 19:41发布

从2012年12月6日更新第二 -新的协议,一个sligtly不同视图)

现在的问题是,是否下面的解决方案似乎是合理的你,或是否存在,我没有注意到(是相当新的SQL Server Service Broker的)任何瑕疵...

我想继续在提出问题的分析SQL服务代理:从分布源收集数据 。 我想重点放在协议的问题从卫星SQL服务器收集数据时被使用。 SQL Server服务代理的使用是必须的 - 它是由这里就不介绍其他的原因也决定。 所以,请,不建议完全替代解决方案。

我想重点应该做些什么以及怎样使用Service Broker的自然(最好的方式)的确切问题。 总的目标是在上面提到的问题提出 。 图片第一:

要考虑现在,更多详细信息...

插件架构通缉

卫星机都与真实的物理生产线。 它可以发生一些机器加入到技术过程中,有些机器可以消失,有的机器可以将使用同一条生产线的认同感所取代,但它在物理上是不同的 - 即它的SQL服务器是不同的实例。

中央服务器一无所知,直到卫星它得到来自它的邮件。 还有就是卫星服务器没有统一的数据库。 没有什么,有多少卫星SQL服务器将被列入该系统的知识。 它总是决定了卫星站点。

与收集数据的任何活动应该由卫星机生成的事件来启动。

重要提示:我们的目标是不断地传输所有新创建的数据(来自传感器),以及发现和解决辍学-独立于任何可能会导致他们。

给你具体的例子:

  1. 由行号3(黄色)所确定的机器最近添加到环境中。 它的SQL Server Express的推出,并开始收集传感器数据(第三方解决方案,专用表具有特殊结构)。 本机没有连接到中央服务器,但。

  2. 的唯一配置的就是生产线(此处为3)的可靠分配固定识别,并且所有的细节neccessary连接到中央SQL服务器。 但是,中央SQL服务器不知道的信息。 中央才刚刚准备从任何新的烃源接受数据,但从来不知道什么时候。 (它已经测试了一台机器使用瑞摩斯Rusanu答案建议的方法的问题SQL服务代理-一个中心SQL多卫星SQL ... 。)

  3. 这件作品的SQL软件是3只是有点以后部署的机器上。 它开始与中央谈。 该卫星的部分是不哑,但其自身的活性是每当新的记录被插入到传感器数据表(见上述第1点)发送传感器数据。 从记录,UTC时间的计算(从专有格式),若干传感器数据从一个记录被转换成相同数量的归一化的记录(格式化为一个XML消息),并且发送给中央SQL服务器。

  4. 中央通过与来自卫星机发送的传感器数据的消息激活。 物理连接的故障是业务代理队列掩盖。

  5. 一个合理的时间间隔(在此一小时)后,中央服务器检查是否迄今收集的数据应被处理或不。 有工作单元,需要一些生产时间,和数据应被处理并添加到该单元的文档。 该单元结束时,处理应该只发生。

  6. 中央还将检查是否具有为单位的所有数据。 由于传感器采样中已知的有规律的间隔(在此约1分钟)完成,中央能检查是否有一些中途退出 。 还存在一个初始“滴出”,用于当经由卫星SSB未连接到中央的时间间隔。 该机制应来自任何情况中恢复。 它也可能发生的是没有收集的传感器,其中乱序或数据。 检测到的辍学在中央可能实际上意味着中央问:“我没有从你的数据在这个时间间隔给我发送一些人如果存在,或者告诉我,他们不存在。”

  7. 卫星应该发送可在采样时间之间只发送如此多的数据。 从辍学的复苏可能相当缓慢。 在中央服务器处理该数据的延迟不是关键的。 然而,中央应该知道当数据准备好(或所检测的时间间隔不存在)。

一些画面,更多的解决方案细节

我所选择的“回收会话”由瑞摩斯Rusanu作为用于卫星和中心之间的通信的基本框架。 它定义了EndOfStream消息类型以表示该会话句柄应该被丢弃,而新的应该被使用。 寿命被由服务代理定时器产生的上述的一个小时的时间间隔所限制。

该消息是在中央服务器中使用也为数据处理的活化(MIS)。 大约在同一时间,为辍学中央检查。 中央保持低于地方已经检查了辍学的时间。 这样,它知道什么数据已准备好进行处理。

你认为该方案是否合理? 你可以看到它的任何问题?

(我要细化问题,以反映您的建议。)

感谢您的时间和经验,并有一个愉快的一天。

切赫

Answer 1:

  1. 所有的数据应该存储在表中。 在卫星方面,应创建一个表来存储最后处理一行。 当从中央的新请求到达时,新的数据包将被送回中央根据上次处理的记录值。 注:我建议限制取决于您的数据不会产生非常大的数据包被发送的行数。

  2. 当中央处理所有行,相应的消息应该发送到卫星。 它也应该包含大约发生在数据导入错误的信息。

  3. 当数据库活动注册(使用DML / DDL两个中央/卫星数据库触发器)或时间表内(使用中央代理工作),你就可以开始Service Broker的谈话。



文章来源: SQL Service Broker: Collecting data — plug-in scenario analysis