SQL Server 2005 Service Broker 初探
2007-05-13 09:26:17 来源:WEB开发网三、为什么排队应用程序难于编写?
既然异步排队应用程序具有许多优势,为什么不以这种方式编写所有应用程序?这是因为编写异步排队应用程序相当困难!许多尝试在应用程序中使用数据库表作为队列的开发人员发现,实际操作远比想象的困难。作为队列的表中包含多个进程,包括同时插入、读取和删除几条记录。这将带来并发问题、降低系统性能并导致频繁死机。尽管许多开发人员都成功地解决了这些难题,但实际操作却非常困难。Service Broker 通过使队列成为 SQL Server 2005 数据库中的第一级数据库对象解决了这些问题。编写队列的大多数难题都已解决,因此开发人员可以专注于编写异步应用程序,而不是编写排队基础结构。本文的其余内容将讨论编写排队应用程序涉及到的难题,并解释 Service Broker 如何帮助您解决这些难题。
消息的完整性在许多异步排队应用程序中,排队的消息实际上是有价值的业务对象。例如在订单输入系统中,如果将发货信息放入队列中以便稍后处理,那么丢失排队的数据将意味着无法按订单发货。许多可靠的消息传送系统都将消息存储在文件系统中,因此磁盘驱动器的损坏将导致消息丢失。Service Broker 将消息存储在隐藏的数据库表中,因此 SQL Server 为保护数据而提供的所有数据完整性功能同样可用于保护排队的消息。如果使用数据库镜像进行故障恢复,当因数据库故障而转移到第二个数据库后,所有消息都会转移到第二个数据库中,这样 Service Broker 应用程序将继续运行而不会丢失任何数据。
多读取器队列多读取器队列是一种扩展异步应用程序的最有效的方式。为证明这一点,我将通过大家都熟悉的两个示例说明如何进行排队。
在杂货店排队大多数杂货店都可以增设多个队列。每个收银台都有其自己的队列,因此要购买某些商品,您需要选择一个队列。如果您像我一样,大多数时候选择的队列中都有一个满载而归的顾客排在您前面,他/她购买的很多商品都需要核实价格,而且要使用第三方远期支票进行付款。在轮到您结帐之前,可能在您开始排队时还没有出门的顾客都已经为他们购买的商品付完了款。这个例子说明了使用多个队列时的一个问题:即,如果排在前面的任务需要很长时间才能处理完,后面的任务将无法得到及时处理。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接