熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

向外擴展SQL Server系統的兩個選項

2013-11-15 14:51:28  來源: SQL Server 

  當我提到向外擴展數據庫系統時我實際上只是討論對數據庫系統進行分割或劃分以便你能利用那些部分把它們分配到單獨的數據庫服務器上這允許你在許多服務器間分散處理能力以適應不斷擴張的增長

  但是額外的特性和功能需要更高的復雜程度一個向外擴展的數據庫很難進行設計或管理在你成功對一個數據庫系統實行向外擴展之前你必須解決許多困難的商業和技術難題

  本文說明向外擴展數據庫系統的兩個選項從而實現更高的可擴展性水平數據劃分和垂直數據劃分

  水平數據劃分

  使用水平數據劃分數據庫結構在數據庫實例方面沒有變化通常數據庫之間唯一的不同在於實例包含的數據不同

  開發出中間層應用程序使得實例間的數據得到適當維護是這種解決方案的特點可能很難決定如何在數據庫實例間劃分數據數據分配方法十分關鍵因為我們需要在不同服務器間比較平均地分散數據負載不進行這種平均分割你就無法取得向外擴展數據庫的任何好處因為查詢或事務處理的大部分IO仍然只發生在一台服務器上

  既然全部數據不再保存在一台服務器上因此在必要時更難對所有數據執行查詢幸運的是你可以建立分布式劃分視圖連接兩個服務器實例間的數據使得數據看起來就像保存在一台服務器上有一些特殊的視圖它們利用連接的服務器和在數據表上建立的約束有效地返回數據就好像你只查詢一台服務器上的數據一樣(我將在下周的文章中詳細討論分布式劃分視圖

  另外值得一提的是如果服務器處在不同的地理位置它們的性能可能會受到影響在這種情況下你可能希望復制實例間的數據以便每台服務器擁有完整的數據但只負責維護特定的一塊數據

  垂直數據劃分

  垂直數據劃分包括把數據庫表分割成在不同服務器上保存的不同數據庫實例每台服務器一般分配完成一個特殊的任務這樣就可以對那些表中的IO進行分割這種類型的分割取決於將系統邏輯地劃分成許多部分以便這些部分能夠獨立操作如果實例間需要最少量的交互進行事務處理這種處理就很有必要

  例如如果你的數據庫系統維護銷售營銷和廣告數據最好是把這些表分割成單個的數據庫實例阻止它們共享同一台服務器上的IO可能你還需要處理這兩個共享一些相同數據(例如客戶數據)的系統能夠分割這些商業功能你就可以在必要時向外擴展數據庫環境提高系統效率

  你可以采取一些措施如在每一台服務器上使用相互連接的表和視圖以便實例可以從其它實例中查看數據這樣做可以減少應用程序層決定在哪找到它需要的數據時所需的額外計算量你需要保證應用程序層具有必要的邏輯性以決定將數據保存在哪台服務器上

  修改

  你可以對水平和垂直數據劃分方法進行修改使其更好地適應你的環境例如你可以使用一個面向服務的架構在服務器間分配處理能力應用復制確保數據庫實例相互之間保持緊密同步以及組合應用這些技巧


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22444.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.