我有几个关于 NotesView.update 功能的问题。
我目前在我的 domino 服务器上有一个 Notes 数据库,它通过同步代理从其他几个数据库中提取信息,使其成为我的 DTG 移动应用程序的主要数据源。
我的 Notes 同步代理从与 Domino To Go 同步的主 Notes 数据库中删除/硬删除文档。
当我在设备上的 DTG 视图中的文档在 NotesView.update 期间不再位于服务器数据库中时,它们是否也会自动删除,或者它们是否仍然存在于 DTG 视图中,而忽略了它们的父级已被删除的事实?
我问的原因是我想设置 syncModifiedOnly 参数,并且文档描述了需要在我的 Notes 视图末尾添加一个 $dtgIsRemoved 列以加快速度。
还描述了需要向列添加公式以使 DTG 视图了解我要删除基础 DTG 文档。
话虽如此,这是否意味着:
我不应该在我的同步代理中或从 NotesDatabase 中删除 NotesDocuments。
将它们保留在 Notes 视图中并在 $dtgIsRemoved 列中创建一个公式,如果我希望在 NotesView.update 期间删除 DTG 文档,该公式将返回“1”?
最初我认为删除服务器数据库上的 Notes 文档会在 NotesView.update 期间自动从 DTG 中删除该文档,而无需用户干预 cleanupCallback。
有点不清楚 $dtgIsRemoved 如何帮助我加快更新速度。
最终我想加快我的view.update。
我有 5 个视图,它们在回调和 view.updates 中耦合并显示进度条。
尽管在我的 iOS 设备上运行时非常不一致,但总文档数约为 73000,有时需要 60 秒,有时需要 180 - 200。
显示信息的速度很快,使用 SQL 搜索速度很快,这只是 NotesView.update 在这个阶段对我来说是个问题。
这就是我认为它的工作方式:NotesView.update - 为 DTG 视图中的每个文档运行 DTG 视图中的所有条目,
检查 $dtgIsRemoved 列,如果 = "1",则从 DTG 视图中删除文档
获取父NotesDatabase中对应的NotesDocument
如果没有句柄,则将 DTG 文档标记为删除
否则检查 syncModifiedOnly 参数
如果设置为 true 然后查看上次同步日期参数
检查 NotesDocument 的最后修改日期 >= last sync
如果为真,则同步所有字段/列。
在同步结束时,运行清理过程以实际删除标记为删除或未在父 NotesDatabase 中找到的文档。
如果 NotesView.update 从 DTG 视图中删除不在源数据库视图中的文档,仍然看不到 $dtgIsRemoved 列的意义。从源视图中删除它们将发生在 Notes 视图选择公式中或在像我这样的同步代理中的直接 NotesDocument.Remove 中。
- 结核病