SQL Server分布式分區視圖簡介
我們大家都知道SQL Server分布式分區視圖能使來自一個或是多個SQL Server數據庫中的數據簡潔的連接起來。當開發一個水平來分區數據庫環境時,你可以使用分布式分區視圖將來自不同服務器的分區表連接起來,使得這些數據看起來像來自同一個服務器。
你可以設計這些視圖,因此,如果你的潛在數據表結構設計合理的話,查詢優化器就可以知道從那個數據表得到查詢需要的數據,從而加速運行。一個設計合理的SQL Server分布式分區視圖還可以實現更新、插入和刪除。我們將在本文的下一部分深入探討它是如何實現這樣操作的。
示例
本例中,我們假設SalesHistory表非常大,如果水平分割表中的各行記錄到不同的服務器上,這將對我們很有利。每個服務器上的SalesHistory表的表結構是一樣的,不過,一臺服務器上存放該國東部地區的銷售信息,而另外一臺存放該國西部地區的銷售信息。
我們根據Region(地區)字段和SaleID 來區分表中的各條記錄。其中SaleID字段是整型數據域,我們為該國不同的地區設定了不同的SaleID。
這個字段對于設計概念來說非常重要,因為這是我們用來作為分區鍵值字段。(注意:要在縮小場景中進行表的設計,這一點極其重要,因為這樣表中的各行是唯一的,從而可區別于其它服務器上的表。)這個字段集合是分區鍵。
設計很多SaleHistory表,根據所在的表SaleID始終是唯一可區別的。我們可以通過CHECK約束來實現這一點。
我們將使用兩個獨立的SQL Server實例,對于本例,這兩個實例在同一臺機器上。服務器的名字叫Chapman,實例分別稱為實例A和實例B。這兩個實例都是SQL Server 2005開發版,允許遠程連接以及Windows和SQL Server認證。
使用腳本創建SalesDB數據庫,設置每臺服務器的lazy schema validation選項,使用該選項在SQL Server中通過確保在確實需要服務器上的數據時才進行服務器鏈接請求來提高性能。
列表A中的腳本需要在兩個數據庫實例上運行。SQL Server分布式分區視圖列表B用來創建SalesDB數據庫中的讀者登錄及用戶,該腳本也需要在兩個數據庫實例上運行。
列表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將獨自在每臺數據庫實例上運行。該腳本在每臺服務器上創建一個鏈接到對方的鏈接服務器。連接服務器允許SQL Server依靠某個OLEDB數據源來執行命令,就像其它的SQL Server。
我們使用上面的腳本中創建的登錄作為連接服務器進行連接的安全上下文。這些鏈接服務器允許我們從一臺服務器查詢另一臺服務器。
上述的相關內容就是對SQL Server分布式分區視圖分解數據表的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】