联合SQL 服务器(Federated SQL Server Servers)
可能大家都听说过集群服务器Clustered Server但是在SQL 里面我却惊奇的发现集群服务器不见了!取而代之的是一个叫联合服务器的东东
现在就让我们来看看它们之间有什么区别吧
SQL 的数据库能够被分散在一组独立的数据库服务器上以支持大规模的Web站点的访问需求和企业级的数据处理系统面对日益增长的需求只需要简单的添加一个节点服务器就可以了
——我怎么看不出来和集群服务器有什么区别嘛?
——上课的时候不要发出这种声音!急什么下面自然会讲到的再乱讲话就罚站了哦
Windows 的COM+组件就是被设计来用于在集群的Windows 服务器上实现商业逻辑层的每个服务器上都有一套同样的COM+组件WIndows 自己来平衡各个服务器之间的负载使用Cluster Administrator可以很方便的配置集群服务器
但是SQL 并不支持这样的集群SQL 支持可更新的分布式视图(distributed partitioned views )用它来水平的将数据分割在一组服务器上这使得用户可以把一个数据库服务器添加到一组数据库服务器中这些数据库相互合作以提供和集群数据库服务器相同的性能标准虽然它们合作管理这些数据但是它们之间是独立运作的每个服务器有独立的管理界面(当然你可以使用Enterprise Manager来管理一组服务器但总是作为一个Group中多个Server来管理的并不能把它们当作是一个Server)也有各自的运作规则可以有其他的数据和进程只是在联合起来处理一个工作的时候才联合在一起
SQL 现在在多CPU的系统上可以有非常优异的性能(可以有个或者更多的CPU)但是使用联合服务器你几乎可以处理无限的负载现在 最高的tpcc纪录就是台CPU的联合服务器完成的(月日的测试结果到现在仍然是最高的)
数据库服务器和商业逻辑服务器不一样运行商业逻辑的时候每个服务器都可以完成相同的工作即使一台服务器down了也不会对系统有什么影响而数据库就不一样你必须把数据分散在不同的服务器上否则对性能就没有什么提高了而在这样的情况下如果数据库服务器不能用于处理独自的事务那么就显得有些浪费
如何使用联合服务器
建立Linked Server
SQL 就有了的东东打开你的Enterprise ManagerSecurity|Linked Servers右键New Linked ServerServer Type选SQL Server然后填上用户名口令什么的
在每个服务器上建立表
On Server:
CREATE TABLE Table__To_
(ID INT PRIMARY KEY
CHECK (ID BETWEEN AND )
other fields
)
On Server:
CREATE TABLE Table__To_
(ID INT PRIMARY KEY
CHECK (ID BETWEEN AND )
other fields
)
On Server:
CREATE TABLE Table__To
(ID INT PRIMARY KEY
CHECK (ID > )
other fields
)
在每个服务器上建立视图
CREATE VIEW Partitioned_Views AS
SELECT * FROM MyDatabasedboTable__To_
UNION ALL
SELECT * FROM ServerMyDatabasedboTable__To_
UNION ALL
SELECT * FROM ServerMyDatabasedboTable__To
Mission Accomplished
现在你就只要简单的使用这个视图就可以了服务器自己知道把数据放到该放的地方去查询的时候也知道该从那里去取数据是不是很easy呢?