SQL Server分布式分區(qū)視圖簡介
我們大家都知道SQL Server分布式分區(qū)視圖能使來自一個(gè)或是多個(gè)SQL Server數(shù)據(jù)庫中的數(shù)據(jù)簡潔的連接起來。當(dāng)開發(fā)一個(gè)水平來分區(qū)數(shù)據(jù)庫環(huán)境時(shí),你可以使用分布式分區(qū)視圖將來自不同服務(wù)器的分區(qū)表連接起來,使得這些數(shù)據(jù)看起來像來自同一個(gè)服務(wù)器。
你可以設(shè)計(jì)這些視圖,因此,如果你的潛在數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)合理的話,查詢優(yōu)化器就可以知道從那個(gè)數(shù)據(jù)表得到查詢需要的數(shù)據(jù),從而加速運(yùn)行。一個(gè)設(shè)計(jì)合理的SQL Server分布式分區(qū)視圖還可以實(shí)現(xiàn)更新、插入和刪除。我們將在本文的下一部分深入探討它是如何實(shí)現(xiàn)這樣操作的。
示例
本例中,我們假設(shè)SalesHistory表非常大,如果水平分割表中的各行記錄到不同的服務(wù)器上,這將對(duì)我們很有利。每個(gè)服務(wù)器上的SalesHistory表的表結(jié)構(gòu)是一樣的,不過,一臺(tái)服務(wù)器上存放該國東部地區(qū)的銷售信息,而另外一臺(tái)存放該國西部地區(qū)的銷售信息。
我們根據(jù)Region(地區(qū))字段和SaleID 來區(qū)分表中的各條記錄。其中SaleID字段是整型數(shù)據(jù)域,我們?yōu)樵搰煌牡貐^(qū)設(shè)定了不同的SaleID。
這個(gè)字段對(duì)于設(shè)計(jì)概念來說非常重要,因?yàn)檫@是我們用來作為分區(qū)鍵值字段。(注意:要在縮小場景中進(jìn)行表的設(shè)計(jì),這一點(diǎn)極其重要,因?yàn)檫@樣表中的各行是唯一的,從而可區(qū)別于其它服務(wù)器上的表。)這個(gè)字段集合是分區(qū)鍵。
設(shè)計(jì)很多SaleHistory表,根據(jù)所在的表SaleID始終是唯一可區(qū)別的。我們可以通過CHECK約束來實(shí)現(xiàn)這一點(diǎn)。
我們將使用兩個(gè)獨(dú)立的SQL Server實(shí)例,對(duì)于本例,這兩個(gè)實(shí)例在同一臺(tái)機(jī)器上。服務(wù)器的名字叫Chapman,實(shí)例分別稱為實(shí)例A和實(shí)例B。這兩個(gè)實(shí)例都是SQL Server 2005開發(fā)版,允許遠(yuǎn)程連接以及Windows和SQL Server認(rèn)證。
使用腳本創(chuàng)建SalesDB數(shù)據(jù)庫,設(shè)置每臺(tái)服務(wù)器的lazy schema validation選項(xiàng),使用該選項(xiàng)在SQL Server中通過確保在確實(shí)需要服務(wù)器上的數(shù)據(jù)時(shí)才進(jìn)行服務(wù)器鏈接請(qǐng)求來提高性能。
列表A中的腳本需要在兩個(gè)數(shù)據(jù)庫實(shí)例上運(yùn)行。SQL Server分布式分區(qū)視圖列表B用來創(chuàng)建SalesDB數(shù)據(jù)庫中的讀者登錄及用戶,該腳本也需要在兩個(gè)數(shù)據(jù)庫實(shí)例上運(yùn)行。
列表A:
- CREATE DATABASE SalesDB; EXECUTE sp_serveroption @server = 'CHAPMANServerA, @optname = 'lazy schema validation',@optvalue = 'true'
列表B:
- CREATE LOGIN reader WITH Password = '654asod3e**!!' USE SalesDB CREATE USER reader FROM LOGIN reader
列表C:
- ServerA: EXECUTE sp_addlinkedserver 'CHAPMANServerB',
- 'SQL Server' EXEC sp_addlinkedsrvlogin 'CHAPMANServerB', 'false',NULL,'reader',
- '654asod3e**!!' ServerB: EXEC sp_addlinkedserver 'CHAPMANServerA', 'SQL Server'
- EXEC sp_addlinkedsrvlogin 'CHAPMANServerA', 'false',NULL,'reader','654asod3e**!!'
列表C將獨(dú)自在每臺(tái)數(shù)據(jù)庫實(shí)例上運(yùn)行。該腳本在每臺(tái)服務(wù)器上創(chuàng)建一個(gè)鏈接到對(duì)方的鏈接服務(wù)器。連接服務(wù)器允許SQL Server依靠某個(gè)OLEDB數(shù)據(jù)源來執(zhí)行命令,就像其它的SQL Server。
我們使用上面的腳本中創(chuàng)建的登錄作為連接服務(wù)器進(jìn)行連接的安全上下文。這些鏈接服務(wù)器允許我們從一臺(tái)服務(wù)器查詢另一臺(tái)服務(wù)器。
上述的相關(guān)內(nèi)容就是對(duì)SQL Server分布式分區(qū)視圖分解數(shù)據(jù)表的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】