程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server數據庫橫向擴展技巧

SQL Server數據庫橫向擴展技巧

編輯:關於SqlServer

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

然而,一些應用程序的 增長速度會超過一台服務器的處理極限,因此縱向擴展並不能解決問題。這時應 該選擇橫向擴展SQL Server,將數據庫部署到多台服務器上。SQL Server對此提 供了一些支持,而方法選擇取決於您的具體需求和可接受程度。

采用雲技 術

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

復制

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

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

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

聯合數據庫

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

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

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

橫向擴展並不簡單

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved