我正在研究用户笔记的基本同步算法。我已经弄清楚了大部分,但在我开始编程之前,我想在这里运行它,看看它是否有意义。通常我最终没有意识到一件别人很容易看到而我无法看到的重要事情。以下是它的工作原理:
我的数据库中有一个表,我在其中插入名为SyncOperation
. ASyncOperation
是一种关于每个设备需要执行以保持最新状态的性质的元数据。假设用户有 2 个注册设备,firstDevice
并且secondDevice
. firstDevice
创建一个新笔记并将其推送到服务器。现在,SyncOperation
使用便笺的 Id、操作类型和创建a processedDeviceList
。我创建了一个SyncOperation
类型为“ e”的NewNot
设备,并将原始设备 ID 添加到. 所以现在检查服务器以查看它是否需要进行任何更新。它进行查询以获取所有secondDeviceId 不在. 它发现它的类型是,所以它得到新的注释并将自己添加到. 现在此设备已同步。SyncOperation
processedDeviceList
secondDevice
SyncOperations
processedDeviceList
NewNote
processedDeviceList
当我删除一个笔记时,我发现已经SyncOperation
在表格中创建了类型为“NewNote”的笔记。我将类型更改为删除,删除processedDevicesList
除删除笔记的设备之外的所有设备。因此,现在当新设备调用以查看他们需要更新的内容时,由于他们的 deviceId 不在 中processedList
,他们将不得不处理该SyncOperation
,这会告诉他们的设备删除相应的注释。
这通常是它的工作方式。我的解决方案太复杂了吗?可以简化吗?谁能想到这不起作用的情况?这在大规模上会效率低下吗?