0

我有几个关于 NotesView.update 功能的问题。

我目前在我的 domino 服务器上有一个 Notes 数据库,它通过同步代理从其他几个数据库中提取信息,使其成为我的 DTG 移动应用程序的主要数据源。

我的 Notes 同步代理从与 Domino To Go 同步的主 Notes 数据库中删除/硬删除文档。

当我在设备上的 DTG 视图中的文档在 NotesView.update 期间不再位于服务器数据库中时,它们是否也会自动删除,或者它们是否仍然存在于 DTG 视图中,而忽略了它们的父级已被删除的事实?

我问的原因是我想设置 syncModifiedOnly 参数,并且文档描述了需要在我的 Notes 视图末尾添加一个 $dtgIsRemoved 列以加快速度。

还描述了需要向列添加公式以使 DTG 视图了解我要删除基础 DTG 文档。

话虽如此,这是否意味着:

  1. 我不应该在我的同步代理中或从 NotesDatabase 中删除 NotesDocuments。

  2. 将它们保留在 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 视图中的所有条目,

  1. 检查 $dtgIsRemoved 列,如果 = "1",则从 DTG 视图中删除文档

  2. 获取父NotesDatabase中对应的NotesDocument

  3. 如果没有句柄,则将 DTG 文档标记为删除

  4. 否则检查 syncModifiedOnly 参数

  5. 如果设置为 true 然后查看上次同步日期参数

  6. 检查 NotesDocument 的最后修改日期 >= last sync

  7. 如果为真,则同步所有字段/列。

  8. 在同步结束时,运行清理过程以实际删除标记为删除或未在父 NotesDatabase 中找到的文档。

如果 NotesView.update 从 DTG 视图中删除不在源数据库视图中的文档,仍然看不到 $dtgIsRemoved 列的意义。从源视图中删除它们将发生在 Notes 视图选择公式中或在像我这样的同步代理中的直接 NotesDocument.Remove 中。

  • 结核病
4

1 回答 1

1

塔米尔,

我现在很着急,但我现在想快速回答:

  1. 是的,如果应用程序中的文档不再存在于 Domino 端,它们将被删除。

  2. $dtgisremoved 列是可选的,但如果与 syncModifiedOnly 选项一起使用可以加快速度,否则没有效果。

  3. SyncModifiedOnly 为创建 JSON 数据的 DTG XPage 提供一个日期,而 XPage 仅为自该日期以来已更改的文档创建 JSON 数据。因此,如果几天内只有很少的文档更改,这可以大大加快同步速度。

  4. SyncModifiedOnly 关注 Notes 文档的“修改”日期。但是您可以在 Domino 视图中添加 SyncModifiedOnly 逻辑应该使用的列(类型 datetime)。我相信 DTG 选项是 syncModifedOnlyColumn - 但我现在不确定。

  5. 如果您使用 SyncModifiedOnly,但没有 $dtgisremoved 列,则 DTG XPage 需要将每个文档的 UNID 放在 JSON 数据的视图中,以便能够检测到哪个文档已被删除。这意味着更大的 JSON 数据集、更多要传输的数据和更多要在应用程序中计算的数据。但是,如果硬删除 Domino 数据库中的文档,则无法创建 $dtgisremoved 列。

我希望这已经有所帮助!

于 2016-01-25T08:36:49.810 回答