数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

向外扩展SQL Server系统的两个选项


发布日期:2021年12月29日
 
向外扩展SQL Server系统的两个选项

当我提到向外扩展数据库系统时我实际上只是讨论对数据库系统进行分割或划分以便你能利用那些部分把它们分配到单独的数据库服务器上这允许你在许多服务器间分散处理能力以适应不断扩张的增长

但是额外的特性和功能需要更高的复杂程度一个向外扩展的数据库很难进行设计或管理在你成功对一个数据库系统实行向外扩展之前你必须解决许多困难的商业和技术难题

本文说明向外扩展数据库系统的两个选项从而实现更高的可扩展性水平数据划分和垂直数据划分

水平数据划分

使用水平数据划分数据库结构在数据库实例方面没有变化通常数据库之间唯一的不同在于实例包含的数据不同

开发出中间层应用程序使得实例间的数据得到适当维护是这种解决方案的特点可能很难决定如何在数据库实例间划分数据数据分配方法十分关键因为我们需要在不同服务器间比较平均地分散数据负载不进行这种平均分割你就无法取得向外扩展数据库的任何好处因为查询或事务处理的大部分IO仍然只发生在一台服务器上

既然全部数据不再保存在一台服务器上因此在必要时更难对所有数据执行查询幸运的是你可以建立分布式划分视图连接两个服务器实例间的数据使得数据看起来就像保存在一台服务器上有一些特殊的视图它们利用连接的服务器和在数据表上建立的约束有效地返回数据就好像你只查询一台服务器上的数据一样(我将在下周的文章中详细讨论分布式划分视图

另外值得一提的是如果服务器处在不同的地理位置它们的性能可能会受到影响在这种情况下你可能希望复制实例间的数据以便每台服务器拥有完整的数据但只负责维护特定的一块数据

垂直数据划分

垂直数据划分包括把数据库表分割成在不同服务器上保存的不同数据库实例每台服务器一般分配完成一个特殊的任务这样就可以对那些表中的IO进行分割这种类型的分割取决于将系统逻辑地划分成许多部分以便这些部分能够独立操作如果实例间需要最少量的交互进行事务处理这种处理就很有必要

例如如果你的数据库系统维护销售营销和广告数据最好是把这些表分割成单个的数据库实例阻止它们共享同一台服务器上的IO可能你还需要处理这两个共享一些相同数据(例如客户数据)的系统能够分割这些商业功能你就可以在必要时向外扩展数据库环境提高系统效率

你可以采取一些措施如在每一台服务器上使用相互连接的表和视图以便实例可以从其它实例中查看数据这样做可以减少应用程序层决定在哪找到它需要的数据时所需的额外计算量你需要保证应用程序层具有必要的逻辑性以决定将数据保存在哪台服务器上

修改

你可以对水平和垂直数据划分方法进行修改使其更好地适应你的环境例如你可以使用一个面向服务的架构在服务器间分配处理能力应用复制确保数据库实例相互之间保持紧密同步以及组合应用这些技巧

上一篇:sql server新漏洞和一些突破口

下一篇:使用SQL Server 2008中对象相关性[2]