【发布时间】:2019-07-19 05:36:36
【问题描述】:
我正在开发一款移动应用,其主要功能是让用户在其中执行大量 CRUD(创建、读取、更新和删除)任务。
App的主要数据存储是本地的sqlite数据库,但用户可以选择注册账号并使用云数据库备份数据。
此应用需要能够离线和在线工作。并且用户应该能够使用包含相同数据的多个设备。
目前在我的所有 sql 表中,我有 3 个额外的列来跟踪数据库中的哪些条目已同步:createdAt(datetime)、updatedAt(datetime) 和 synced(boolean)。 有了这个,我可以跟踪哪些条目是最新的,并相应地更新本地或云数据库。
我将 Cloud Firestore 用作云,在我的情况下,使用它的离线功能不是一个可行的选择。
我的问题是;在应用能够与云同步之前,在跟踪已删除条目之前,哪种解决方案最好?
解决这个问题的一个想法是有一个表,其中包含所有已删除条目的 ID 以及它所属的表,然后当应用程序能够同步时;在本地数据库(在所有设备上)和云数据库上删除这些条目。 我对这个解决方案的问题是,这个“删除”表很快就会变得很大,从这个表中删除条目将是一个问题,因为在删除之前需要所有用户的设备都是最新的,并且在用户放弃他的一台设备的情况下,这意味着该设备将永远不会同步,从而导致条目不会从“删除”表中删除。
您对跟踪已删除条目的稳健方法有何建议?
【问题讨论】:
标签: android ios sqlite google-cloud-firestore