我們有一個用例,我們保留一個單調遞增的密鑰來表示當前版本的客戶數據。如果在讀取數據及其處理之間存在延遲並且它們獲得多個版本,則系統將使用它來計算出最新版本並解決第三方調用者的衝突。自我管理的單調遞增密鑰OR系統的時間戳
CUSTOMER_RESOURCE_ID CURRENT_VERSION
132323 1234
如果有什麼這個資源的變化,我們增加1234至1235年的版本(這是完全正常,即使我們把它提高到1300,只要它不下去)。爲此,我們需要先讀取值並更新它。
其他替代方法是使用數據庫的時間戳並使用數據庫時間戳保持更新版本,該時間戳將始終增加。由於這只是一個系統,因此只有在更改數據庫時纔會發生時鐘偏差。另外,我們並沒有對多線程在一小部分時間內(即時間戳的最小粒度)更新數據的情況沒有特別關心,因爲我們有另一個鎖,因爲一次只有一個線程更新資源。
我想知道我們是否可以使用數據庫的系統時間戳來避免剛更新時的選擇和增量。
這種方法有什麼問題嗎?我認爲它會減少數據庫的開銷,但我不知道我們在這裏節省了多少。
你能否用一個例子解釋一下嗎? –
根據系統時鐘的粒度,您可能無法保證多個線程之間的唯一性。 –
謝謝,請參閱更新。 – instanceOfObject