【发布时间】:2015-09-01 13:04:29
【问题描述】:
我有一个基于 parse.com 的应用程序,它具有离线功能,其中整个数据库都存储在本地(Web 客户端上的 localStorage 和移动客户端上的 parse.com 本地数据库)。我正在寻找一种设计解决方案,以使用远程数据库中的最新更改有效地更新本地数据库。我能想到的选项是:
-
使用代码触发器进行日志记录。为每个对象设置云代码触发器(afterSave、afterDelete),并在每次保存或销毁对象时将日志添加到日志表中。客户端将查询表以获取更新,并记住
lastUpdateTime以获取后续请求。优点:a) 我们可以非常详细地总结更改的内容以及更改的人员。 b) 所有更改都可立即供其他客户端使用(例如,实时轮询表调用以获取通知,几乎没有延迟)
缺点:a) 表中的条目可能太多
-
使用后台作业进行日志记录。设置一个后台作业,通过
updatedAt查询所有表,填充日志表并保存lastUpdateTime以供后续请求。优点:a) 日记帐表中的条目更少
缺点:a) 更改会出现不可预知的延迟(不适合实时通知?) b) 无法跟踪删除,仍然需要设置另一个表来跟踪删除或实施软删除 c) 中的详细信息较少日志(例如当对象被一个用户创建并被另一个用户删除时,我们将不知道是谁创建了一个对象)
-
没有日记。所有客户端通过
updatedAt查询所有表并存储lastUpdateTime以供后续请求。优点:a) 易于实施,b) 更改立即可用
缺点:a) 与 2 中的删除问题相同,b) 效率低下(我认为所有客户端查询 20 多个表不是一个好主意
我们还有一个 UI,用户可以在其中查看最近的活动(谁更改了什么),所以我有点倾向于数字 1 的方法,但表格的潜在大小让我担心。
【问题讨论】:
-
您是否受限于任何库,或者您是否愿意使用原生 javascript?
-
@RichardGrant 我不限于任何图书馆
标签: javascript database database-design parse-platform