首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 資料庫複寫架構深度解析(中):角色、訂閱模式與發佈類型

     編輯:關於SqlServer

複寫三大核心角色

SQL Server 複寫架構採用「發行-分發-訂閱」模型,對應現實世界的「出版社-郵差-訂戶」關係:

角色別稱職責現實比喻
發行伺服器出版伺服器定義發佈內容、建立發行集、追蹤資料變更出版社/報社
分發伺服器暫存交易/快照、排程傳遞、維護複寫中繼資料郵差/物流中心
訂閱伺服器接收並套用資料變更、可為多個發行集訂閱訂戶/讀者

複寫角色關係圖

訂閱模式:推式 vs 拉式

模式資料流向資源消耗方適用場景
推式訂閱分發伺服器主動推送 → 訂閱伺服器分發伺服器訂閱者少、即時性要求高、網路穩定
拉式訂閱訂閱伺服器主動輪詢 ← 分發伺服器訂閱伺服器訂閱者多、離線/行動裝置、分散式環境

四大發佈類型詳細比較

1. 快照發佈

快照發佈圖示 快照發佈架構

定期將完整資料副本傳送給訂閱者。

適用條件(符合一項即可):

  • 資料極少變更
  • 允許資料在一段時間內過期
  • 資料量小
  • 短期內大量變更(重新產生快照比傳遞增量更有效)

2. 交易發佈

交易發佈圖示 交易發佈架構

初始快照後,以交易為單位即時流式傳輸變更。

核心特點:

  • 訂閱端變更不回寫發行端
  • 低延遲、高一致性、支援中繼資料查詢

適用場景:

  • 需將增量變更近即時傳播
  • 應用需存取中介資料狀態(如觸發器每次觸發)
  • 發行端有大量 INSERT/UPDATE/DELETE

3. 可更新訂閱的交易發佈

可更新訂閱圖示 可更新訂閱架構

差異在於:訂閱端變更會同步回寫發行端,實現雙向同步。

4. 合併發佈

合併發佈圖示 合併發佈架構

初始快照後,發行端與訂閱端可獨立更新,定期合併衝突解決。

獨有特性:

  • SQL Server Compact Edition 僅支援訂閱合併發佈
  • 支援資料分區(每個訂閱者只取需求子集)
  • 內建衝突偵測與解決機制

適用場景:

  • 多訂閱者不同時段更新同一資料
  • 離線操作後同步(筆記本/行動裝置)
  • 需要最終一致性而非中介狀態

選型決策樹

  1. 資料量小、變更極少 → 快照
  2. 伺服器對伺服器、高即時性、單向流 → 交易
  3. 伺服器對伺服器、需雙向寫入 → 可更新訂閱交易
  4. 伺服器對客戶端、離線/分散/衝突解決 → 合併
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved