SQLServer2005分散式分割槽檢視分解資料表

iSQlServer發表於2009-02-27

前面的兩篇文章中,我們分別介紹了擴大與縮小SQL資料庫環境之間的區別以及通過水平資料分割槽或垂直資料分割槽分解資料表。在本系列的最後一部分,我們將深入瞭解如何利用分散式分割槽檢視來分解資料表。

分散式分割槽檢視可以將來自一個或多個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中的指令碼需要在兩個資料庫例項上執行。列表B用來建立SalesDB資料庫中的讀者登入及使用者,該指令碼也需要在兩個資料庫例項上執行。

列表C將獨自在每臺資料庫例項上執行。該指令碼在每臺伺服器上建立一個連結到對方的連結伺服器。連線伺服器允許SQL Server依靠某個OLEDB資料來源來執行命令,就像其它的SQL Server。

我們使用上面的指令碼中建立的登入作為連線伺服器進行連線的安全上下文。這些連結伺服器允許我們從一臺伺服器查詢另一臺伺服器。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-558082/,如需轉載,請註明出處,否則將追究法律責任。

相關文章