移动数据库和服务器数据库之间的同步

时间:2015-01-10 15:03:14

标签: android ios database mobile-application synchronisation

说明

这用于将服务器数据库同步到具有脱机存储的移动应用程序。 数据库仅通过服务器进行更改,所有客户端都应相应地设置数据。

要求:

如果将新数据添加到服务器,则应在客户端数据库中执行插入操作以及新数据。 如果在服务器中更新数据,则还应在客户端数据库中更新具有特定id的数据。 如果在服务器中删除了数据,那么该数据也应该从本地数据库中删除。

要同步的表的结构......

服务器数据库中的每个表都有 last_date 字段和 post_status 。客户端在表格中只有 last_date 字段。

每当管理员更新现有数据集 last_date 时, post_id 保持不变。

post_status 是开启和关闭的,如果管理员从数据库中删除帖子,它将处于关闭状态,否则它将处于开启状态。

过程:

  1. 首次同步客户端数据库时,将按顺序下载服务器数据库中的所有数据集。

  2. 当离线应用程序必须同步时,它请求服务器仅在最新的last_date之后向其发送数据。例如:对 API的get请求: getdata.php?timestamp = 1234。

  3. 收到服务器响应后客户端的任务:

    服务器响应将如下所示:以JSON格式:

    [
    {
      " post_id":"10", 
       "data":"Dummy Data",
       post_status: ON,
       last_modified:123124123
    },
    {
      " post_id":"11", 
       "data":"Dummy Data2",
       post_status: OFF,
       last_modified:5465465654
    },
    {
      " post_id":"4", 
       "data":"Dummy Data4",
       post_status: ON,
       last_modified:5465465654
    }
    ]
    

    我们假设:

    第一个词典项目:要插入。

    第二个字典项目:要删除。

    第3个字典项:表示对现有帖子的修改。

    现在我想知道什么是最能满足此要求的最佳同步算法

    问题:

    1. 客户应该如何了解更新的项目?检查从服务器返回的每个post_id是否已存在于本地数据库中?例如,如果在用户发送到服务器的时间戳之后有1000个数据添加到服务器,则客户端应比较本地数据库中是否存在每个id,如果在本地数据库中找到id,则更新该数据集以及服务器提供的新数据。

    2. 如果管理员直接从数据库中删除该行而未将其状态设置为OFF,该怎么办?

0 个答案:

没有答案