问题
我有两个对象列表。每个对象包含以下内容:
GUID
(允许确定对象是否相同 - 从业务角度来看)Timestamp
(每次对象更改时更新到当前 UTC)Version
(正整数;每次对象改变时递增)Deleted
(布尔标志;切换到“真”而不是实际删除对象)Data
(一些有用的有效载荷)接下来,我需要根据这些规则同步两个列表:
GUID
仅出现在一个列表中,则应将其复制到另一个列表中GUID
两个列表中都出现了一些对象,Version
则应将具有较少的实例替换为具有较大的实例Version
(如果版本相同,则无关紧要)实际要求:
解决方案#1(目前已实施)
T
)Timestamp
> T
(即最近修改过的对象;在生产中它是 ... > ( T
- day ) 以获得更好的健壮性)Version
's 进行比较并保存到专用列表(如果需要)过程:
缺点:
T
,这使算法变得脆弱:同步上次更新很容易,但很难确保列表完全同步(使用T
1970-01-01 …