如何在另一个客户端和服务器之间同步现有的客户端数据库?

时间:2016-03-21 17:19:32

标签: android client-server data-synchronization

当然,我不会要求你发给我客户端和服务器的代码。我从来没有早点过。我想了解这个过程的逻辑。
现在,我有一个Android应用程序,在不同用户的数据库中有不同的数据。 (用户的每个设备上的数据可以不同)。我需要编写一个服务器并更新我的app-client以支持数据同步。
我现在有什么问题?如果客户端此时无法连接到服务器,我无法理解如何从数据库中删除项目(我可以删除服务器上的数据,我需要保存所有删除的项目,直到app-client没有连接到服务器)
如何纠正同步时间等
如何在客户端存储事务日志?例如,用户修改某个项目但客户端没有连接。服务器如何理解这个I项被修改了?
我很乐意通过我的主题和任何链接和文档提供任何帮助。
附:对不起我的英语不好。我真的很无聊,因为我的英语不好找不到细节文档。
P.S.S.如果您需要更多详细信息,请写信给我,我会添加。
ADDED
我现在的模特。我拿了一张简单的桌子作为例子。
客户端具有包含字段的本地表:

  • ID - 本地ID
  • SID - 服务器ID(首次同步行之前为null)
  • 修订版 - 行的本地修订版
  • 标志
    • m - 有本地修改
    • n - 没有任何修改
    • d - 已被删除
  • 其他字段


服务器表有:   - ID - 服务器ID   - Rev - 修订服务器数据库中的行

逻辑

  • 如果客户端数据库中的行没有SID,则表示新行:将其添加到服务器数据库中,并在客户端集修订版0上设置修订版0,并为该行添加服务器ID。
  • 如果在服务器数据库中找不到SID的客户端中的行将在客户端数据库中删除。
  • 如果客户端数据库中的行与服务器中的修订版SID一样 数据库和旗帜' m'然后更新服务器数据库中的行和 两个数据库中的增量修订。 (所以,如果有些设备都有 相同的修订和标志只有第一个连接的设备写入更改 服务器数据库;所有其他客户只是获得此更新 服务器并失去他们的)。
  • 如果客户行有标记' d'然后是SID 它将随处移除。

我不会写所有我认为可以理解的案例。我的模特中有什么不好的。我怎样才能改进它?我不能使用时间戳,因为不同设备上的时钟可能有不同的时间。

0 个答案:

没有答案