联合数据库服务器计划指南
建立数据库服务器的联合包括设计一组用于在服务器间传送数据的分布式分区视图。如果数据库中的表自然划分为相似的分区,而且可以将分区中 SQL 语句访问的大部分行放置在同一成员服务器上,分区将非常有效。表聚集在相关单元中。例如,假设某个订单项引用 Orders、Customers 和 Parts 表以及记录客户、订单和部件之间关系的所有表。如果可以将逻辑群集中的所有行放置在同一成员服务器上,分区将最有效。
对称分区
如果可以按下列方法对数据库中的所有表进行对称分区,分区将更加有效:
将相关数据放置在同一成员服务器上,以便某成员服务器上的数据对路由到其他正确成员服务器的大多数 SQL 语句的需求(如果有)降至最低。可以将分布式分区视图的设计目标称为 80/20 规则:设计分区后,可以将大多数 SQL 语句路由到成员服务器,该服务器中包含至少 80% 的数据,而只有 20% 或更少的数据需要分布式查询。测试能否达到目标的较好方法是看分区是否允许将所有行及其引用的外键行放置在同一成员服务器上。支持此目标的数据库设计是分区的良好选择。
在成员服务器之间对数据进行统一分区。
例如,假设某个公司将北美洲分成了多个区域。每个雇员负责一个区域,客户主要在其居住的州或省购物。按区域对区域表和雇员表进行分区。按州或省对不同区域间的客户进行分区。虽然某些查询需要多个区域中的数据,但大部分查询所需的数据位在一个区域的服务器上。应用程序将 SQL 语句路由到包含从用户输入的内容推知其所在区域的成员服务器。
非对称分区
虽然对称分区是理想的目标,但大多数应用程序具有复杂的数据访问模式,这阻碍了对称分区。非对称分区导致某些成员服务器所担当的角色比其他服务器多。例如,只能对数据库中的部分表进行分区,未分区的表仍保留在原始服务器上。非对称分区可以提供对称分区的很多性能,并具有如下优点:
显著提高无法通过非对称分区某些表来对其进行对称分区的数据库的性能。
通过一系列反复的非对称改进,成功地对大型现有系统进行分区。每一步中选择进行分区的表通常是在当时提供最大性能提升的表。
在非对称方法中,原始服务器通常保留一些不适合分区方案的表。这些保留表的性能通常比原始系统中表的性能更高,因为成员表移动到成员服务器,这会减轻原始服务器的负荷。
有多种方法可以对许多数据库进行分区。选定要实现的特定分区必须能够最好地满足由业务服务层执行的典型范围的 SQL 语句要求。