2011-03-03 77 views
2

我在SQL Server中获得了一张表,它几乎每秒都会从另一个软件(股票价格)中更新。SQL Server上的跟踪视图

我需要使用显示SQL Server视图的网格创建WPF应用程序。 (视图只是一个复杂的查询,在股票表和其他表上有内连接)。

但由于视图保持更新,我不能每秒钟都做SqlDataAdapter.Fill(ds)

到目前为止;我听说过以下技巧..

  • SQL-依赖
  • 推送订阅与可绑定,LINQ
  • SQL的StreamInsight结合。
  • SQLstream.com

哪一个是实现这一目标的正确方法?

感谢

回答

0

下面是我们做什么:

  • 使用触发器,写受灾 实体ID来推送通知 队列表

  • 使用SQL服务代理,发送通知队列表到所有最终客户端连接的通知服务器

  • 分发从通知服务器受影响的entityids批次推送通知事件给所有连接的客户端

  • 对受影响的实体视图中的客户端重新查询并相应地更新UI(删除任何删除,更新任何改变,插入任何新的)

它运作良好。

+0

非常感谢你,但我不太了解“队列表”和“批量推送通知事件”的概念。 – Stylus 2011-03-03 14:00:06

+0

通过队列表,我只是指一个表,它包含已插入,更新或删除的记录的实体类型和ID - 直到这些被刷新到通知服务器。 由于性能方面的原因,让通知服务器做一些缓冲,并一次性发送批量实体的通知,而不是一收到通知即可。 – 2011-03-04 08:23:36

+0

我非常感谢你。 – Stylus 2011-03-04 08:56:13

0

StreamInsight是一个好的开始,但是你正在以错误的方式看待它。 构建StreamInsight输入适配器以读取库存Feed。你可以做的不仅仅是阅读它们。您可以对它们执行分析和其他处理以及在运行中。从那里,你将有一个输出适配器去SQL Server和一个输出适配器发布WCF双工服务或多播服务(某种网络推送发布服务),并让你的客户端订阅它。如果您不需要存储报价,则根本不需要使用Sql Server。 一件值得注意的事情 - 取决于你进入的数据量多少,你可能会压倒你的Sql Server和/或你的客户端。 StreamInsight可以处理比它们中的任何一个都更多的数据 - 全部都在内存中(无磁盘)。