使用Google Drive同步App数据库-算法/逻辑

问题描述 投票:1回答:1

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

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

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

我的问题是:

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

到目前为止我一直在想:

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

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

android google-drive-api client-server android-syncadapter data-synchronization
1个回答
0
投票

是的!我知道我也在尝试左环

© www.soinside.com 2019 - 2024. All rights reserved.