如何逐步更新本地parse.com数据库?

Dzi*_*mid 9 javascript database database-design parse-platform

我有一个基于parse.com的应用程序,具有离线功能,其中整个数据库存储在本地(web客户端上的localStorage和移动客户端上的parse.com本地数据库).我正在寻找一种设计解决方案,以便使用远程数据库中的最新更改来有效地更新本地数据库.我能想到的选择是:

  1. 使用代码触发器进行日记功能.为每个对象设置云代码触发器(afterSave,afterDelete),并在每次保存或销毁对象时将日志添加到日志表.客户端将查询表以获取更新并记住lastUpdateTime后续请求.

    优点:a)我们可以非常详细地总结已经改变的内容和做出改变的人.b)所有更改都可立即供其他客户使用(例如,实时通知表呼叫,几乎没有延迟)

    缺点:a)表中可能有太多条目

  2. 记录与后台工作.设置查询所有表的后台作业updatedAt,填充日记表并保存lastUpdateTime后续请求.

    优点:a)日记表中的条目较少

    缺点:a)变化可用不可预测的延迟(不适合实时通知?)b)无法跟踪删除,仍然需要设置另一个表来跟踪删除或实现软删除c)日志中的细节较少(例如当一个用户创建对象并被另一个用户删除时,我们将不知道谁创建了一个对象)

  3. 没有期刊.所有客户端查询所有表updatedAt并存储lastUpdateTime后续请求.

    优点:a)易于实施,b)即时可用变更

    缺点:a)与删除相同的问题,如2,b)效率低(我相信所有客户查询20多个表不是一个好主意

我们也有一个UI,其中用户可以浏览最近的活动(谁改变了什么),所以我对数种瘦1的方法,但该表的潜在规模是令人担忧的我.

小智 1

无论当前状态如何,客户都需要能够恢复。如果您使用的本地存储可能被用户清除,这一点至关重要。在这种情况下,您需要一个可恢复的状态。此外,客户端需要能够仅获取所需/与其相关的交易。

  1. 在后端实现交易存储
  2. 创建恢复机制,以防本地存储离线损坏
  3. 使用代码触发器进行日志记录或使用事件源数据库类型机制,以便您拥有完整的历史记录并可以使用它为客户端构建表。

结论 - 使用代码触发器修改日志记录(修改为在服务器中恢复和存储客户端的状态并使用它来查询数据)