javascript - 如何增量更新本地 parse.com 数据库?

标签 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. 在后端实现交易存储
  2. 创建恢复机制以防本地存储脱机损坏
  3. 使用代码触发器或使用事件源数据库类型机制记录日志,以便您拥有完整的历史记录并可以使用它为客户端构建表。

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

关于javascript - 如何增量更新本地 parse.com 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32220624/

相关文章:

javascript - 在javascript中将xml中的 ' & '替换为 ' & '

mysql - 删除数据库中的行是否会使该数据库释放空间?

php - 更改我的登录脚本的错误

javascript - 使用angularjs在选择框中选择选项

javascript - 编辑帖子 AJAX、PHP、javascript

javascript - 如何使用带有 Angular 6 的 save-svg-as-png

php - MySQL:根据另一个表数据选择一个表(用于电子邮件)

MongoDB 模式设计适用于 Tinder 之类的应用程序、嵌入式文档还是单独的集合?

database - stackoverflow 如何存储代码片段

mysql - 包含 8000 万条记录并添加索引的表需要超过 18 小时(或永远)!怎么办?