设计使用联合数据库服务器的应用程序
可更新的分布式分区视图支持多组 SQL Server 2005 服务器一起协同处理大型多层网站的数据库工作负荷。虽然各台服务器是分开管理的,但每台服务器上的 SQL Server 2005 实例使用分布式分区视图来分担工作。一组进行协作以分担工作的自主服务器称为一个联合体。
通过在每台服务器上创建数据库,然后在各数据库间对表进行分区来建立联合数据库服务器。在每台成员服务器上,将每个原始表拆分为一个成员表。每个成员表拥有原始表的一个行子集,原始表在各成员表间进行水平分区。设计联合数据库系统时,应对所有表进行分区,以使所有相关的数据都位于同一台成员服务器上。
在一组联合数据库服务器间分区表的一个结果是一套数据路由规则。应用程序可将从用户请求推断出的某个数据块与数据路由规则进行匹配。由此可以确定哪台成员服务器拥有应用程序为了满足用户请求必须生成的 SQL 语句所需的大多数数据。有关详细信息,请参阅设计联合数据库服务器。
在多层体系结构中,系统在下列层中实现:
- 用户服务层。 这是一组着重于管理应用程序用户界面的瘦客户端。用户服务层调用下一层,以执行支持用户请求所需的业务功能。
- 业务服务层。 一组封装单位的业务逻辑的 COM+ 组件。业务服务层使用下一层完成必须执行的任何永久性数据存储。
- **数据服务层.**一组可将数据存储在永久性媒体上的组件,如 SQL Server 数据库。这也称为保持数据的持久性。
业务服务层旨在作为运行于应用程序服务器上的一组 COM+ 组件。这使 Microsoft Windows 网络负荷平衡能够将用户请求均匀地分布到业务层上。因为任何用户请求都可以在任何应用程序服务器上进行处理,所以业务组件必须具有某种机制,将生成的 SQL 语句路由到适当的成员服务器。业务组件必须能够将从客户端接收的数据中的某个信息块与数据路由规则匹配,以确定应由哪台成员服务器处理请求。
在业务服务层实现数据路由的灵活机制是将路由规则存储在持久性存储中,如 SQL Server 2005 或 Windows Active Directory,并使业务组件在运行时检索它们。可对 COM+ 组件进行编码,使其将键与路由规则进行匹配,以确定哪台成员服务器可最有效地处理查询。这样,需要访问分区数据的业务服务层中的任何其他 COM+ 组件都可调用此 COM+ 路由组件。例如,在访问按客户 ID 分区的客户数据的系统中,可以执行下列操作:
- 创建一个路由规则表,记录各成员服务器上维护的键。
- 创建一个数据路由业务组件,将某个键值或某个键值范围的起始键或结束键作为输入。COM+ 组件将读取该路由规则表,将输入键或键范围与记录的各成员服务器的键范围进行比较,然后返回与调用组件或应用程序最匹配的成员服务器的名称。
- 对常规业务服务层组件或应用程序进行编码,使其在执行引用分区视图的 SQL 语句时始终调用数据路由组件。业务组件将使用数据路由组件所返回的服务器名称来选择在其上执行 SQL 语句的数据库连接。
此方法要求在更改数据分区时不能更改应用程序代码。可以在应用程序运行时更改数据路由规则。