提高可用性和延展性
在很多應用程式中,同時提供高可用性和高讀取延展性非常重要;而複寫就是可提供這兩種功能之方案中的一個關鍵部份。對於某些應用程式來說,其目標可能是透過複寫來提高可用性或延展性。如果您只需要解決其中一種情況,請考慮下列狀況之一:
下圖說明兩種應用程式,兩者均得益於使用了複寫來增強可用性和延展性。兩種情況下,圖表中的三個資料庫均彼此對等,而且都包含相同結構描述和資料。這些資料庫的寫入活動必須分割:如果資料庫含有產品目錄,則您要 (舉例來說) 導向更新的第一個資料庫是以 A-I 為開頭的產品名稱、第二個資料庫是以 J-R 為開頭的產品名稱、而第三個資料庫則是以 S-Z 為開頭的產品名稱。然後更新會複寫到其他資料庫中。
第一張圖說明各 Web 和應用程式伺服器使用來自特定快取伺服器之資料的組態。給定使用者的讀取和更新會流向特定應用程式伺服器,之後流向特定快取伺服器。由於應用程式伺服器會直接更新快取,因此無需使用中心來源伺服器。各快取上的更新會傳播到其他快取中。
第二張圖說明三台地理位置分散的伺服器以及三台伺服器之間的資料流動,每台伺服器都支援讀取要求並能提高可用性。
Adventure Works 循環範例
Adventure Works Cycles 是虛構的製造公司,用於示範資料庫概念與案例。 如需詳細資訊,請參閱<AdventureWorks 範例資料庫>。
Adventure Works Cycles 的辦事處遍佈全球,包括洛杉磯、倫敦和台北。客戶訂單資訊可在各地收集,然後再複寫到其他地區。
可以從任何地區讀取訂單資訊;因此,如果倫敦辦事處的讀取活動繁重,則內部應用程式會將部份活動分配到其他兩個辦事處。
例如,如果倫敦辦事處的伺服器因維護而暫停服務,還可以從其他地區擷取訂單,倫敦辦事處的工作人員則可以繼續讀取和輸入資料。當倫敦辦事處的伺服器恢復上線後,則在其暫停服務期間收到的變更會傳播到倫敦伺服器中,以確保其最新狀態。
這個狀況的一般需求
使用複寫提供延展性和可用性的應用程式通常會有下列要求 (適當的複寫方案必須滿足這些要求):
系統應允許在任何伺服器上進行變更,並且可將變更複寫到其他所有伺服器上。
系統必須維護交易一致性。
系統應有低度延遲:在某伺服器上的更新必須迅速傳送到其他伺服器。
系統應有高度輸送量:應處理大量交易的複寫。
複寫處理需要最低負擔。
這個狀況要使用的複寫類型
MicrosoftSQL Server 使用的是出版業的字眼,來描述複寫系統的元件。元件包含發行者、訂閱者、發行集與發行項,以及訂閱。
上圖中的所有快取伺服器均為「發行者」和「訂閱者」。每個伺服器複寫資料庫中的所有資料均會包含在發行集中,每張資料表均為一個發行項 (發行項可以是其他資料庫物件,例如預存程序)。每個伺服器都會從其他伺服器訂閱發行集,以訂閱的方式接收結構描述和資料。如需系統元件的詳細資訊,請參閱<複寫發行模型概觀>。
SQL Server 為不同的應用程式需求提供不同類型的複寫:快照式複寫、交易式複寫,以及合併式複寫。此狀況最好使用點對點交易式複寫來實作,此複寫類型相當適合處理上一節所概述的需求。如需點對點交易式複寫的詳細資訊,請參閱<點對點交易式複寫>。
[!附註]
如果應用程式要求在一個以上節點上同時修改給定資料列,則會發生資料衝突。在此情況下,請使用合併式複寫,此複寫非常適合用來處理衝突。如需合併式複寫的詳細資訊,請參閱<合併式複寫概觀>。
依設計,交易式複寫可解決此狀況的主體需求:
可在任何伺服器上進行變更
交易一致性
低度延遲
高度輸送量
最低負擔
交易式複寫的點對點選項可讓伺服器發行和訂閱相同的資料。點對點拓樸中的所有節點都是對等:每個節點會發行與訂閱相同的結構描述與資料。變更 (插入、更新及刪除) 可在所有節點上進行,然後再複寫到其他所有節點上。
實作這個狀況的步驟
若要實作此狀況,必須先建立發行集和訂閱,然後初始化每個訂閱。如需詳細資訊,請參閱:
SQL Server Management Studio: 如何:設定點對點交易式複寫 (SQL Server Management Studio)
複寫 Transact-SQL 程式設計:如何:設定點對點交易式複寫 (複寫 Transact-SQL 程式設計)
在已初始化訂閱且資料在對等端之間流動後,您可能需要參閱下列主題,以獲得一般管理和監視工作的資訊: