Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何增量更新本地parse.com数据库?_Javascript_Database_Database Design_Parse Platform - Fatal编程技术网

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

Javascript 如何增量更新本地parse.com数据库?,javascript,database,database-design,parse-platform,Javascript,Database,Database Design,Parse Platform,我有一个基于parse.com的应用程序,具有离线功能,其中整个数据库存储在本地(web客户端上的本地存储和移动客户端上的parse.com本地数据库)。我正在寻找一个设计解决方案,以有效地更新本地数据库的最新变化,在远程数据库。我能想到的选择是: 使用代码触发器记录日志。为每个对象设置云代码触发器(afterSave、afterDelete),并在每次保存或销毁对象时向日志表添加日志。客户端将查询表中的更新,并记住后续请求的lastUpdateTime 优点:a)我们可以有一个非常详细的摘要,

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

  • 使用代码触发器记录日志。为每个对象设置云代码触发器(afterSave、afterDelete),并在每次保存或销毁对象时向日志表添加日志。客户端将查询表中的更新,并记住后续请求的
    lastUpdateTime

    优点:a)我们可以有一个非常详细的摘要,说明更改了什么以及是谁进行了更改。b) 所有更改都可立即用于其他客户端(例如,可以在几乎没有延迟的情况下实时轮询表调用以获取通知)

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

  • 使用后台作业记录日志。设置一个后台作业,通过
    updatedAt
    查询所有表,填充日记账表,并保存
    lastUpdateTime
    以供后续请求

    优点:a)日记账表中的分录较少

    缺点:a)更改具有不可预测的延迟(不适用于实时通知?)b)无法跟踪删除,仍然需要设置另一个表来跟踪删除或实现软删除c)日志中的详细信息较少(例如,当一个用户创建了对象,而另一个用户删除了对象时,我们将不知道是谁创建了对象)

  • 无日记账。所有客户端通过
    updatedAt
    查询所有表,并存储
    lastUpdateTime
    以备后续请求

    优点:a)易于实施,b)可以立即进行更改

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


  • 我们还有一个用户界面,用户可以在其中查看最近的活动(谁更改了什么),所以我有点倾向于数字1方法,但表的潜在大小让我担心。

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

  • 在后端实现事务存储
  • 在本地存储脱机损坏时创建恢复机制
  • 使用代码触发器记录日志或使用事件源db类型机制,以便您拥有完整的历史记录,并可以使用它为客户端构建表

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

    您是否使用parse pin?您是否仅限于使用任何库或是否开放使用本机javascript?@RichardGrant我不限于任何库