2012-01-09 72 views
0

我們有不同的記錄存儲在不同的對象中。 假設有8個對象,並且每個對象都有一些對該對象唯一的記錄。 每個對象都包含一個具有可更改屬性的記錄。現在過了一段時間,我們正在嘗試同步所有記錄。 初始方法: 分別鎖定每個對象(每次一個),以便通過讀取其他對象中的記錄來處理請求,並同步其中的記錄。記錄中屬性同步的算法

有沒有其他的方法,以便我們可以最大化請求處理和更少的時間對象鎖定?

+0

也許你可以跟蹤對象的變化?如果是這樣,您只需檢查更改。 – duedl0r 2012-01-09 08:36:37

回答

0

因此,如果記錄可以sort()以任何方式,即集的記錄是一個偏序集,則集可以在BST(Binary Search Tree)來組織,這需要O(log)與指定找到一個項目鍵。

因此,對於對象中的每個記錄,在所有其他對象中找到它,然後更新它。

您有N(N = 8)個對象,每個對象都有M(M = 1,000,000)條記錄。整個算法需要O(N*N*M*Log(M))這肯定是可以接受的。

順便說一句,如果所有的東西都在一個數據庫中,只需枚舉和更新。

+0

我們不必在不同的對象記錄中同步記錄,每個對象中的記錄都是唯一的。詢問的主要目的是,是否有辦法通過我們可以減少鎖定對象的時間或通過我們可以毫不拖延地處理一些關鍵的請求。 – gold 2012-01-09 08:33:26

+0

我的意思是整個過程都可以在宿舍裏完成,所以你可以在適應變化時鎖定它們。如果不是這樣,對不起,我不知道 – Topro 2012-01-09 08:54:29