Dzi*_*mid 9 javascript database database-design parse-platform
我有一个基于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的方法,但该表的潜在规模是令人担忧的我.
小智 1
无论当前状态如何,客户都需要能够恢复。如果您使用的本地存储可能被用户清除,这一点至关重要。在这种情况下,您需要一个可恢复的状态。此外,客户端需要能够仅获取所需/与其相关的交易。
结论 - 使用代码触发器修改日志记录(修改为在服务器中恢复和存储客户端的状态并使用它来查询数据)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |