2013年2月28日 星期四

MMR 衝突解決方案

MMR與SMR最直接的差異是交易資料的自動衝突解決方案, SMR沒有這樣的機制,
因為SMR的複製是單向的, 不會有衝突發生, 而在MMR裡衝突的解決方案就十分的重要,
以下分享MMR解決衝突的處理類型:
1. 唯一性的衝突: 發生在2台以上的伺服器, 同時新增相同primary key限制下的鍵值, 因而發生唯一性的衝突.
2. 更新的衝突: 發生在2台以上的伺服器, 同時更新相同一筆資料時, 在同步時會造成更新的衝突.
3. 刪除的衝突: 發生在2台以上的伺服器, 刪除一筆不存在的交易資料時, 在同步時會造成刪除的衝突.

衝突偵測

在同步複製時, 無論是依據需求或排程的作業, 每個主節點的變化推及到其他主節點, 都依據以下順序:

  • 主定義節點的shadow table記錄未完成的交易記錄, 並且會複製到其他主節點, 根據主機/系統架構設置複製模式, 可設置並列或串列模式複製到其他主節點.
  • 主定義節點在完成交易記錄複製至所有主節點後, 主節點會選擇具有最低的發佈資料庫識別碼中不包含主定義節點的主節點資料庫識別碼(主節點資料庫識別碼是在發佈主節點資料庫定義時由內部自行產生的正整數值).接著進行交易記錄的複製, 正如同上述作業程序.
  • 接下來的程序將會對其餘的主節點做主節點資料庫識別碼升冪排序.
衝突解決策略
系統內建的衝突解決方案, 並可以自動解決衝突. 適用於"更新/更新"和"刪除/刪除"衝突的解決衝突選項. 唯一性的"更新/刪除"衝突, 將會被標記為衝突未解決, 並且需要手動排除唯一性.
(註: 更新/更新 是指兩個主節點都執行更新, 刪除/刪除 是指兩個主節點都執行刪除, 更新/刪除 是指一個主節點執行更新另一主節點執行刪除, 所針對都是相同的表單)
以下是內建的衝突解決選項:
  • 最早時間戳記 - 當最早時間戳記選項被選中, 更新發生在特定節點時, 相關連的資料進行來源和目標主節點的時間戳記比較. 最早發生的資料變更將會被應用, 而最近發生的資料將會被丟棄.
  • 最新的時間戳記 - 僅最新的時間戳記資料被接受, 與最早時間戳記作業方法相同. 最早發生的資料變更將會被丟棄。
  • 節點的優先等級 - 資料變更的主節點將選擇最高優先等級的節點應用, 而較低優先等級主節點的資料變更將被丟棄. 節點的優先等級設定範圍在 1 至 10之間的整數, 其中 1 是最高優先等級 , 10 是最低優先等級.
解決衝突的範例

註: 資料參考源自 http://www.enterprisedb.com/docs/en/9.2/repguide/Postgres_Plus_xDB_Replication_Server_Users_Guide-32.htm#P2431_243698 

沒有留言:

張貼留言

HDB 擴充套件 PXF (Pivotal Extension Framework) 應用

在Hadoop生態圈裡, 雖然擁有眾多生態系統工具, 但大多用戶仍然需要的是SQL的操作介面, Pivotal HDB 提供一個在Hadoop上運行的標準SQL引擎介面, 箇中好處開發者最能感受, 但本篇重點不在這, 哈哈~ 主要分享在HDB上可以輕易整合外部資料的應用. ...