分布式資料(4)分布式與版本化

2021-10-24 21:38:26 字數 2199 閱讀 5796

二、同步和版本管理

地理資料庫複製基於傳統版本化。複本建立期間,系統會將源和目標企業級地理資料庫中的版本設定為複本版本。這些複本版本中的更改將在同步過程中進行交換。由於複本版本處於關聯狀態,因此可將其視為是通過擴充套件版本樹來跨越多個地理資料庫的方法。

可將預設版本或任何命名的版本用作父複本或子複本的複本版本。多個複本也可以共用同一複本版本。

下圖顯示了單向複製和雙向複製中的複本版本。對於雙向複製,父複本將命名的版本 rv1 用作複本版本。單向複製示例中的父複本則將命名的版本 rv2 用作兩個單向示例的複本版本。

對於企業級地理資料庫中託管的兩個子複本,預設版本即為複本版本。除了複本版本將用於複製過程之外,複本版本與其他版本沒有任何區別。由於檔案地理資料庫不支援版本化,因此不會在單向複本的子複本地理資料庫中建立複本版本。

注:也可以使用指定版本作為下圖中任一企業級地理資料庫中的複本版本。

檢出/檢入複製能夠複製版本化和非版本化資料。對於涉及版本化資料的檢出複本,將建立乙個新的指定版本以用作子複本上的複本版本,前提是子複本為企業級地理資料庫。

檢出/檢入複製同時允許檔案地理資料庫託管子複本。由於這些地理資料庫型別不支援版本管理,因此不會為子複本建立任何複本版本。檢出非版本化資料時也是如此。對於此類情況,同步期間將使用附加邏輯來確定要傳送的更改。

在檢出/檢入複製中,將使用複本的名稱建立乙個新版本。使用者名稱和複本名稱的組合必須是唯一的。例如,user1 和 user2 都可以建立乙個名為 myreplica 的複本,因為完整的複本名稱是 user1.myreplica 和 user2.myreplica。但是,user1 不能建立多個名為 myreplica 的複本,因為這樣會造成複本名稱不唯一。

下圖顯示了檢出/檢入複本及其複本版本的兩個示例。乙個父複本將版本 rv1 用作複本版本,而另乙個父複本則將版本 rv2 用作複本版本。乙個子複本由檔案託管,另乙個由企業級地理資料庫託管。對於託管子複本的企業級地理資料庫,建立期間會自動建立 rv2 並將其設定為複本版本。此複本版本的名稱 rv2 取自複本的名稱。將在此複本版本中對子複本執行編輯以同步回父複本。

對於企業級地理資料庫中的複本,地理資料庫複製在同步過程中使用版本化。版本化用於確定要傳送和接收的變更。使用存檔追蹤單向複製中的變更是個例外。

下面分別介紹在上述每個同步過程中如何使用版本化:

複本接收變更時,會發生以下情況:

首先,變更將作用於同步版本。同步版本是複本版本的子版本,用於臨時儲存已同步的更改,直到對其進行協調並提交到複本版本。對於雙向和單向複本,可能不會在同步之前建立版本,而對於檢出/檢入複本,將在建立複本時建立版本。下圖中,複本版本可能是預設版本或指定版本。

接下來,將針對複本版本協調同步版本。此步驟中的行為取決於複本型別:

•雙向複本 - 對於雙向複本,協調過程中可能存在衝突。如果檢測到衝突,則可使用協調策略確定如何處理這些衝突。如果沒有衝突,或衝突已被自動協調策略解決,則複本版本將以同步版本提交。

•檢出/檢入複本 - 對於檢出/檢入複本,協調和提交過程可選,且預設不執行。如果選擇不執行協調和提交,則變更將保留在同步版本中。以後可以手動協調和提交。如果決定執行協調和提交,則行為將與雙向複本相同。

•單向複本 - 對於單向複本,將始終覆蓋複本版本中的變更,且不會產生未解決的衝突。使用簡單模型型別時,不必版本化子複本中的資料。如果未對子複本進行版本化,則變更將直接作用於基表。對於子複本託管在檔案地理資料庫中的情況,也會直接覆蓋變更。

將變更提交到複本版本後,同步版本隨即刪除。對於雙向複本,只要存在同步版本,就認為複本存在衝突。存在衝突時,複本可以接收變更但不會傳送變更。

注:建議以複本所有者身份登入時執行協調和提交。預設情況下,同步版本是私有版本,只有複本所有者才能訪問。如果將其設為公共版本,則不是複本所有者也可以協調和儲存更改。但是,必須以複本版本所有者身份登入時,才能提交更改。

分布式 2分布式事務

分布式 1概述cap和base 分布式 2分布式事務 分布式 3分布式一致性演算法 分布式 4集群 分布式 5服務限流演算法 分布式 6分布式id 分布式 7效能壓測 分布式 8日誌鏈路跟蹤 分布式 9分布式鎖 redis鎖的幾種實現 參考 分布式系統間各種問題 宕機 網路不穩定 本地事務無法滿足需...

分布式隨筆1 分布式概述

分布式,好寬泛的話題,來來咱扯兩句。你乙個人再強壯,也扛不了100袋大公尺,單機的資源也很有限,大 的大資料量 高併發以及各種業務需求 童鞋們的web應用,伺服器 rdb mq 服務 快取以及各類基礎設施,更別說還有安全 大資料方面的需求 於是,我們常見的面向服務的dubbo springcloud...

分布式計算(三)分布式的昨天

當今的我們已經處於計算機比較發達的時代,計算機的很多技術已經發展很久,很多我們現在使用的都是在一定基礎結構之上的研究,就好像我們學會了hadoop,webservices.學會了大資料計算,就是掌握了分布式技術嗎?感覺心慌 疑惑。這些疑惑不知道從什麼時候開始的,所以要想弄清是怎麼回事,還是回到遙遠的...