【发布时间】:2011-06-30 03:24:09
【问题描述】:
我正在寻找构建用于存储/处理数据的后端的最有效方法。基本上,数据被发送到服务器,解析然后保存到数据库。然后根据数据库中的其他数据对其进行一些处理,然后通过电子邮件或短信发出警报。
平台是 .NET,数据库是 SQL Server 2005 或 2008。
即
- 温度传感器向服务器发送 4 个字节的数据。
- 服务器将数据转换为实际值,例如 20。
- 然后将值保存到 SQL 服务器数据库。
- 然后根据表中为该传感器设置边界的行检查该值,即 0-50
- 如果超出范围,则会引发警报。 (通过短信或电子邮件发送。)
这一切看起来都很简单,但我正在寻找最好的方法,因为理想的情况是这一切都是“实时”发生的,并且每秒可能有 100 或 1000 个请求。我想利用 SQL 2005/08 的一些“新”功能,例如 Service Broker、CLR 集成、触发器等,我对此几乎没有经验。
步骤 1 和 2 已经完成。
考虑到排队的事务数量,使用服务代理或 MSMQ 是否明智?鉴于我需要查找边界数据,我应该在什么时候处理警报数据?我有一些想法,我希望如何处理数据,但不确定要使用的最佳技术/方法。
我的想法是(从第 3 步开始)是将数据提交给服务代理,后者又调用 CLR 过程来处理数据上的“业务逻辑”。或者我是否使用触发器将数据添加到服务代理以处理数据?服务代理可以直接调用 CLR 过程吗?考虑到我希望以事件驱动而非轮询的方式处理数据,使用服务代理是否是正确的想法?
从我在 Service Broker 上看到的示例来看,您似乎需要有代码来接收数据,而我真正想做的只是将数据添加到队列中并自动清空队列(处理提醒数据)。
我可以通过标准存储过程完成所有这些操作,但我希望尽可能少地使用存储过程,而是使用 CLR 集成,因为业务逻辑将比示例中复杂得多。
鉴于服务代理处理队列和线程,我认为它可能是调用 CLR 过程来处理警报数据并发送短信或电子邮件的理想选择?
请给我亮光!谢谢!
【问题讨论】:
标签: sql sql-server database service-broker clrstoredprocedure