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

如何用SQL Server將數據庫橫向擴展

2013-11-15 14:47:32  來源: SQL Server 

  一般人們會選擇縱向擴展(scale up)SQL Server數據庫而非橫向擴展(scale out)縱向擴展很容易增加硬件處理能力內存磁盤和提高網絡速度其原理就是仍然在一台服務器上運行數據庫但是增加了服務器的處理能力和資源這種方法很昂貴但是非常簡單直接

  采用雲技術

  有時候最簡單的方法就是將問題交由其他人處理微軟的Windows Azure雲服務包含一個基於雲的SQL Server版本SQL Azure這在技術上並非真正意義的橫向擴展因為它是一種無限縱向擴展方法所以轉移到Azure並不需要對您的應用程序進行大改動實際上您只需要將應用程序遷移到SQL Azure然後支付存儲處理和數據傳輸費用這些都是收費服務但是您不需要再擔心擴展問題

  復制

  SQL Server原生復制是一種支持橫向擴展的解決方案與數據庫的創建和使用方式有關您只需要在多台服務器上復制多個數據庫副本然後將不同的用戶指向各台服務器這種方法通常最適合支持地理位置分散的用戶如亞洲辦公室的用戶使用服務器而北美辦公室的用戶則使用服務器每一台服務器都擁有完整的數據副本並且會復制伙伴服務器的所有修改

  這種方法不支持自動負載均衡並且最適合用在用戶固定只使用一部分數據的情況換而言之如果亞洲用戶只需要編輯與他們辦公室相關的數據例如主要是亞洲客戶的信息那麼復制能夠保證其他數據庫副本也包含這些記錄的副本如果所有用戶都需要編輯完整的數據集那麼復制就變得有一些復雜因為SQL Server必須在支持用戶的同時編輯位於不同服務器的同一個數據

  SQL Server的合並復制能夠處理這種沖突但是您必須進行一些自定義合並編程這意味著您的開發人員必須開發一些算法確定用戶並發訪問數據時誰獲取編輯權限客戶應用程序也需要增加編程;使它們不僅向數據庫提交數據修改也要循環檢查這些修改是否被其他並發用戶重寫用戶也需要重新培訓因為客戶端應用程序可能會提示"您正在編程的數據已經發生變化您需要重新檢查確定您的編輯是否仍然有效"

  聯合數據庫

  另一個重要的橫向擴展方法是聯合通過這種方法您可以將數據庫劃分到多台服務器上垂直分割將同一個表的不同行保存到不同的服務器上同時地理分區是最常用的方法將所有亞洲數據記錄保存在一台服務器上而所有歐洲數據則保存在另一台服務器上這種方法不同於整體復制每一個位置的服務器都不具備完整的數據庫而只擁有該位置的數據通過實現一種SQL Server分布式分區視圖而形成完整的表用戶就可以浏覽一個"聯合"或組合的數據視圖水平分割則將表的字段保存在不同的服務器上因此各台服務器一起協作構成組合的表

  這些數據庫的創建並不簡單其中涉及一種整體操作您需要掌握關於數據訪問和使用的詳細信息才能夠實現正確的部署此外您還需要一位SQL Server數據庫架構師他應該全面理解這些技術分析您的業務情況並且能夠正確地創建這些組件

  在一些情況中實現這種橫向擴展對客戶端應用程序的改動很小對於本身在設計上大量使用視圖和存儲過程進行數據訪問的應用程序更是如此因為這些元素只是是在後台抽象在客戶端上不會發生變化但是這些應用程序並不常見;通常實現橫向擴展都需要修改客戶端程序使客戶端與後台結構分離

  橫向擴展並不簡單

  毫無疑問實現SQL Server橫向擴展非常復雜這也是Azure等雲數據庫系統流行的原因之一此外有一些第三方供應商能夠幫助實現橫向擴展技術而不需要完全依賴SQL Server的原生特性您需要自己下功夫了解這些方法理解數據訪問和使用方法這樣才能夠選擇最符合您要求的方法


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