【问题标题】:How to update local parse.com database incrementally?如何增量更新本地 parse.com 数据库?
【发布时间】:2015-09-01 13:04:29
【问题描述】:

我有一个基于 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 的方法,但表格的潜在大小让我担心。

【问题讨论】:

标签: javascript database database-design parse-platform


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多