聯(lián)合SQL 2000服務(wù)器(Federated SQL Server 2000 Servers)
可能大家都聽說過集群服務(wù)器Clustered Server,但是在SQL 2000里面我卻驚奇的發(fā)現(xiàn),集群服務(wù)器不見了!取而代之的是一個(gè)叫聯(lián)合服務(wù)器的東東。
現(xiàn)在就讓我們來看看它們之間有什么區(qū)別吧。
SQL 2000的數(shù)據(jù)庫能夠被分散在一組獨(dú)立的數(shù)據(jù)庫服務(wù)器上以支持大規(guī)模的Web站點(diǎn)的訪問需求和企業(yè)級的數(shù)據(jù)處理系統(tǒng)。面對日益增長的需求,只需要簡單的添加一個(gè)節(jié)點(diǎn)服務(wù)器就可以了。
——我怎么看不出來和集群服務(wù)器有什么區(qū)別嘛?
——上課的時(shí)候,不要發(fā)出這種聲音!急什么,下面自然會講到的。再亂講話就罰站了哦。
Windows 2000的COM+組件就是被設(shè)計(jì)來用于在集群的Windows 2000服務(wù)器上實(shí)現(xiàn)商業(yè)邏輯層的。每個(gè)服務(wù)器上都有一套同樣的COM+組件,WIndows 2000自己來平衡各個(gè)服務(wù)器之間的負(fù)載。使用Cluster Administrator可以很方便的配置集群服務(wù)器。
但是SQL 2000并不支持這樣的集群。SQL 2000支持可更新的分布式視圖(distributed partitioned views ),用它來水平的將數(shù)據(jù)分割在一組服務(wù)器上。這使得用戶可以把一個(gè)數(shù)據(jù)庫服務(wù)器添加到一組數(shù)據(jù)庫服務(wù)器中,這些數(shù)據(jù)庫相互合作,以提供和集群數(shù)據(jù)庫服務(wù)器相同的性能標(biāo)準(zhǔn)。雖然它們合作管理這些數(shù)據(jù),但是它們之間是獨(dú)立運(yùn)作的。每個(gè)服務(wù)器有獨(dú)立的管理界面,(當(dāng)然,你可以使用Enterprise Manager來管理一組服務(wù)器,但總是作為一個(gè)Group中多個(gè)Server來管理的,并不能把它們當(dāng)作是一個(gè)Server),也有各自的運(yùn)作規(guī)則,可以有其他的數(shù)據(jù)和進(jìn)程,只是在聯(lián)合起來處理一個(gè)工作的時(shí)候才聯(lián)合在一起。
SQL 2000現(xiàn)在在多CPU的系統(tǒng)上可以有非常優(yōu)異的性能(可以有8個(gè)或者更多的CPU),但是使用聯(lián)合服務(wù)器,你幾乎可以處理無限的負(fù)載?,F(xiàn)在http://www.tpc.org 最高的tpcc紀(jì)錄就是12臺8CPU的聯(lián)合服務(wù)器完成的。(2月17日的測試結(jié)果,到現(xiàn)在仍然是最高的。)
數(shù)據(jù)庫服務(wù)器和商業(yè)邏輯服務(wù)器不一樣,運(yùn)行商業(yè)邏輯的時(shí)候每個(gè)服務(wù)器都可以完成相同的工作,即使一臺服務(wù)器down了也不會對系統(tǒng)有什么影響。而數(shù)據(jù)庫就不一樣,你必須把數(shù)據(jù)分散在不同的服務(wù)器上,否則對性能就沒有什么提高了。而在這樣的情況下,如果數(shù)據(jù)庫服務(wù)器不能用于處理獨(dú)自的事務(wù),那么就顯得有些浪費(fèi)。
OK,課間休息15min.下面我們講重要的話題,如何使用聯(lián)合服務(wù)器
1、建立Linked Server
SQL 7就有了的東東,打開你的Enterprise Manager,Security|Linked Servers,右鍵New Linked Server...,Server Type選SQL Server,然后填上用戶名口令什么的
2、在每個(gè)服務(wù)器上建立表
-- On Server1:
CREATE TABLE Table_1_To_30000
(ID INT PRIMARY KEY
CHECK (ID BETWEEN 1 AND 29999),
... other fields
)
-- On Server2:
CREATE TABLE Table_30000_To_60000
(ID INT PRIMARY KEY
CHECK (ID BETWEEN 30000 AND 59999),
... other fields
)
-- On Server3:
CREATE TABLE Table_60000_To
(ID INT PRIMARY KEY
CHECK (ID > 60000),
... other fields
)
3、在每個(gè)服務(wù)器上建立視圖
CREATE VIEW Partitioned_Views AS
SELECT * FROM MyDatabase.dbo.Table_1_To_30000
UNION ALL
SELECT * FROM Server2.MyDatabase.dbo.Table_30000_To_60000
UNION ALL
SELECT * FROM Server3.MyDatabase.dbo.Table_60000_To
4、Mission Accomplished
現(xiàn)在你就只要簡單的使用這個(gè)視圖就可以了,服務(wù)器自己知道把數(shù)據(jù)放到該放的地方去,查詢的時(shí)候也知道該從那里去取數(shù)據(jù),是不是很easy呢?