SQL Server数据库横向扩展技巧

一般人们会选择纵向扩展(scale up)SQL Server数据库,而非横向扩展 (scale out)。纵向扩展很容易:增加硬件、处理能力、内存、磁盘和提高网络 速度。其原理就是仍然在一台服务器上运行数据库,但是增加了服务器的处理能 力和资源。这种方法很昂贵,但是非常简单直接。

然而,一些应用程序的 增长速度会超过一台服务器的处理极限,因此纵向扩展并不能解决问题。这时应 该选择横向扩展SQL Server,将数据库部署到多台服务器上。SQL Server对此提 供了一些支持,而方法选择取决于您的具体需求和可接受程度。

采用云技 术

有时候,最简单的方法就是将问题交由其他人处理。微软的Windows Azure云服务包含一个基于云的SQL Server版本SQL Azure。这在技术上并非真正 意义的横向扩展,因为它是一种无限纵向扩展方法。所以,转移到Azure并不需要 对您的应用程序进行大改动。实际上,您只需要将应用程序迁移到SQL Azure,然 后支付存储、处理和数据传输费用。这些都是收费服务,但是您不需要再担心扩 展问题。

复制

SQL Server原生复制是一种支持横向扩展的解决方 案,与数据库的创建和使用方式有关。您只需要在多台服务器上复制多个数据库 副本,然后将不同的用户指向各台服务器。这种方法通常最适合支持地理位置分 散的用户,如亚洲办公室的用户使用服务器1,而北美办公室的用户则使用服务器 2。每一台服务器都拥有完整的数据副本,并且会复制伙伴服务器的所有修改。

这种方法不支持自动负载均衡,并且最适合用在用户固定只使用一部分数 据的情况。换而言之,如果亚洲用户只需要编辑与他们办公室相关的数据——例 如,主要是亚洲客户的信息,那么复制能够保证其他数据库副本也包含这些记录 的副本。如果所有用户都需要编辑完整的数据集,那么复制就变得有一些复杂, 因为SQL Server必须在支持用户的同时,编辑位于不同服务器的同一个数据。

SQL Server的合并复制能够处理这种冲突,但是您必须进行一些自定义合 并编程,这意味着您的开发人员必须开发一些算法,确定用户并发访问数据时谁 获取编辑权限。客户应用程序也需要增加编程;使它们不仅向数据库提交数据修改 ,也要循环检查这些修改是否被其他并发用户重写。用户也需要重新培训,因为 客户端应用程序可能会提示:“您正在编程的数据已经发生变化。您需要重新检 查,确定您的编辑是否仍然有效。”

联合数据库

另一个重要的横 向扩展方法是联合。通过这种方法,您可以将数据库划分到多台服务器上。垂直 分割将同一个表的不同行保存到不同的服务器上。同时,地理分区是最常用的方 法:将所有亚洲数据记录保存在一台服务器上,而所有欧洲数据则保存在另一台 服务器上。这种方法不同于整体复制:每一个位置的服务器都不具备完整的数据 库,而只拥有该位置的数据。通过实现一种SQL Server分布式分区视图而形成完 整的表,用户就可以浏览一个“联合”或组合的数据视图。水平分割则将表的字 段保存在不同的服务器上,因此各台服务器一起协作构成组合的表。

这些 数据库的创建并不简单,其中涉及一种整体操作。您需要掌握关于数据访问和使 用的详细信息,才能够实现正确的部署。此外,您还需要一位SQL Server数据库 架构师,他应该全面理解这些技术,分析您的业务情况,并且能够正确地创建这 些组件。

在一些情况中,实现这种横向扩展对客户端应用程序的改动很小 。对于本身在设计上大量使用视图和存储过程进行数据访问的应用程序,更是如 此。因为这些元素只是是在后台抽象,在客户端上不会发生变化。但是,这些应 用程序并不常见;通常,实现横向扩展都需要修改客户端程序,使客户端与后台结 构分离。

横向扩展并不简单

毫无疑问,实现SQL Server横向扩展 非常复杂——这也是Azure等云数据库系统流行的原因之一。此外,有一些第三方 供应商能够帮助实现横向扩展技术,而不需要完全依赖SQL Server的原生特性。 您需要自己下功夫了解这些方法,理解数据访问和使用方法,这样才能够选择最 符合您要求的方法。

时间: 2024-12-12 16:43:32

SQL Server数据库横向扩展技巧的相关文章

强烈推荐:SQL Server数据库操作实用技巧锦集

server|sql|技巧|数据|数据库 本文主要概括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等操作技巧. 1.挂起操作 在安装SQL或SP补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除PendingFileRenameOperations. 2.收缩数据库

SQL Server数据库性能优化技巧

设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事.在开发工具.数据库设计.应用程序的结构.查询设计.接口选择等方面有多种选择,这取决于特定的应用需求以及开发队伍的技能.本文以SQL Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议. 1 数据库设计 要在良好的SQL Server方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案.在实际工作中,许多SQL Server方案往往是由于数据库设计得不好导致性能很差.所以,要实

SQL Server数据库实用小技巧集合

server|集合|技巧|数据|数据库     包括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等. (一)挂起操作 在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileRenameOperations (二)收缩数据库 --重

SQL Server数据库实用小技巧

包括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等. (一)挂起操作 在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileRenameOperations (二)收缩数据库 --重建索引 DBCC REINDEXDBCC IND

如何用SQL Server将数据库横向扩展

一般人们会选择纵向扩展(scale up)SQL Server数据库,而非横向扩展(scale out).纵向扩展很容易:增加硬件.处理能力.内存.磁盘和提高网络速度.其原理就是仍然在一台服务器上运行数据库,但是增加了服务器的处理能力和资源.这种方法很昂贵,但是非常简单直接. 采用云技术 有时候,最简单的方法就是将问题交由其他人处理.微软的Windows Azure云服务包含一个基于云的SQL Server版本SQL Azure.这在技术上并非真正意义的横向扩展,因为它是一种无限纵向扩展方法.所

你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧

原文:你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧 目前SQL Server数据库作为微软一款优秀的RDBMS,其本身启动的时候是很少出问题的,我们在平时用的时候,很少关注起启动过程,或者很少了解其底层运行过程,大部分的过程只关注其内部的表.存储过程.视图.函数等一系列应用方式,而当有一天它运行的正常的时候突然启动不起来了,这时候就束手无策了,能做的或许只能是重装.配置.还原等,但这一个过程其实是一个非常耗时的过程,尤其当我们面对是庞大的生产库的时候,

SQL Server中通过扩展存储过程实现数据库的远程备份与恢复_MsSql

本文通过实例解析了 SQL Server 数据库扩展存储过程,实现远程备份与恢复的方法和步骤实例说明: 环境:win2k+sqlserver 2K+查询分析器 SQL SERVER服务实例名称:mainserver 需要备份的数据库名称: msdb 本地机器名称(Client端):david 本地用户:zf 密码:123 本地域名:domain 本地提供备份需求的文件夹:e: est 第一步: 建立共享文件夹 在程序代码中调用(或者CMD窗口) net share test=e: est 或者用

SQL Server 数据库索引其索引的小技巧_MsSql

一.什么是索引 减少磁盘I/O和逻辑读次数的最佳方法之一就是使用[索引] 索引允许SQL Server在表中查找数据而不需要扫描整个表. 1.1.索引的好处: 当表没有聚集索引时,成为[堆或堆表] [堆]是一堆未加工的数据,以行标识符作为指向存储位置的指针.表数据没有顺序,也不能搜索,除非逐行遍历.这个过程称为[扫描].当存在聚集索引时,非聚集索引的指针由聚集索引所定义的值组成,所以聚集索引变得非常重要. 因为页面大小固定,所以列越少,所能存储的行就越多.由于非聚集索引通常不包含所有列,所以一般

SQL Server 数据库索引其索引的小技巧

一.什么是索引 减少磁盘I/O和逻辑读次数的最佳方法之一就是使用[索引] 索引允许SQL Server在表中查找数据而不需要扫描整个表. 1.1.索引的好处: 当表没有聚集索引时,成为[堆或堆表] [堆]是一堆未加工的数据,以行标识符作为指向存储位置的指针.表数据没有顺序,也不能搜索,除非逐行遍历.这个过程称为[扫描].当存在聚集索引时,非聚集索引的指针由聚集索引所定义的值组成,所以聚集索引变得非常重要. 因为页面大小固定,所以列越少,所能存储的行就越多.由于非聚集索引通常不包含所有列,所以一般