将应用程序数据库与Google云端硬盘同步-算法/逻辑

时间:2019-06-10 22:07:58

标签: android google-drive-api client-server android-syncadapter data-synchronization

我有一个允许用户使用Google帐户登录的应用。一个用户可以同时使用多个Android设备上的同一帐户登录。这些设备上的应用程序维护一个本地数据库,该数据库需要定期同步。这些设备可以同时添加或删除或更新这些条目。

  1. 数据将存储在用户的Google云端硬盘中。
  2. 需要同步的数据很简单(很像没有关系的键值对)
  3. 如果发生更新冲突,则以最近的更新为准。
  4. 最好是进行增量更新,尽管不是强制性的。
  5. 假设-每个条目大约需要150个字节,每个设备的最大条目数为1000,最大数量为1000。每个用户登录的设备总数为3。因此,同步的最大数据量约为500 KB。

我不想托管实际的服务器。由于该应用程序是免费的,并且用户数量很大,因此我无法寻求付费解决方案(例如Firebase等)。 此外,我正在使用SyncAdapter进行同步(如果有帮助的话)。

我的问题是:

  1. 实现它的逻辑/算法是什么? (也可以解决冲突)
  2. 除了将文件存储在Google云端硬盘中以进行同步之外,还有其他更好的方法吗?

到目前为止我一直在想:

  • 我将一个JSON文件保存在用户的驱动器存储中,代表整个数据库。
  • 在本地数据库上,当用户删除条目时,我将deleted_at列的值设置为当前时间戳,而不是删除条目。
  • 在本地数据库上,添加/更新/删除条目时,我将updated_at列更新为当前时间戳。
  • 同步将如下进行:
    1. 从云端硬盘中获取文件。
    2. 对于每个记录:如果来自Drive文件的updated_at值是较新的,则更新本地数据库中的记录。如果本地数据库的updated_at值是较新的,则更新JSON文件中的记录。
    3. 添加“文件”中存在的所有记录,但不添加本地数据库中的所有记录,反之亦然。
    4. 将JSON文件上传并覆盖到云端硬盘。

请提出更好的方法,这种方法会遇到什么问题。

0 个答案:

没有答案