SQL Server橫向擴展:設計,實現與維護(2)- 分布式分區視圖(上)
之前我們已經發布了一些與數據庫擴展相關的文章,很多朋友表示非常的感興趣,而且也說到了大家的痛處,在大家的呼聲下,我們團隊再次整理和撰寫本系列文章。
在本篇文章中,我們將會講述分布式分區視圖如何設計和實現,也會講述如何在實際中使用分布式分區視圖,最后會講述分布式分區視圖使用的一些場景和優缺點。
為了使得朋友們對分布式分區視圖有個概念,也為了方便后面的內容展開,我們先看看下面一個圖:
雖然說,我們本篇講述分布式分區視圖,其實在SQL Server 2005(以及后續版本),也是支持“本地分區視圖”,這里是一個相對的概念。因為在SQL Server2005以后已經有了分區表的引入,所以,很多時候,“本地分區視圖”僅僅只是用來與之前的數據庫版本兼容。現在我們直接采用分區表來替代“本地分區視圖”。
當我們用分區的時候,主要有兩個目的:
1.把歷史的當前數據分開
2.用它來把數據划分為不同范圍,如把某個大型的Customer表中的數據按照用戶名字的字母順序分開,如A-F,G-N,O-Z,分為三個區。
其實當我們在橫向擴展方案中拆分數據的時候,也會進行一些類似分區的操作,但是,使用分區的時候,情況就沒有在一個數據庫上面使用分區划分數據那么的簡單了,因為數據此時已經拆分到了不同的數據庫實例中,甚至不同的服務器上面,,此時,我們就要考慮一些分布式情況,如下:
到現在為止,也說了一些分布式分區視圖的一些概念,朋友可能已經有些迫不及待的要知道如何實現,那么,我這里先緩緩。我們先來看幾個與它相關的重要的內容。
假設,現在分布式的視圖已經建立好了,我們下一步要做的就是如何使用它。
下面,我們就談談實現分布式視圖的實現的原理和分布式查詢相關的知識。
分布式分區視圖工作原理
分布式查詢和分布式分區視圖中使用了OLE DB提供程序來實現數據庫實例之間間信息溝通。
訪問遠程數據庫中的數據采用的是Linked Server技術(鏈接服務器)。一個鏈接服務器其實就是位於數據庫實例中的一個對象。查詢引擎是建立在OLE DB之上的,所以,不管是從當前本地的數據庫存儲引擎中檢索數據,還是從遠程的數據庫的存儲引擎中檢索數據,他們的機制都是一樣的。如果大家對數據庫的內部結構稍微知道一點,就非常容易理解這個問題:
朋友們看到上面的圖,查詢引擎(也稱之為“關系引擎”)通過存儲引擎提供的OLE DB接口訪問達到訪問方法。在這里,OLE DB提供程序就可以訪問遠程的存儲引擎的反問方法。
待續!