与 Couchbase-lite 一起使用时,Sync Gateway 每次更改都会创建一个文档
Sync Gateway creates one document per change when used with Couchbase-lite
据我观察:
- 对于您创建的每个文档,还会创建一个修订管理器文档。此修订管理器跟踪最新修订并维护数组中所有修订的历史记录。
- 每次更新文档时,都会创建一个新文档 (whyyyyy???)。修订管理器文档的最新指针指向这个新文档并将以前的文档添加到其修订历史列表中。
- 因此,在每个更新操作中,Sync-Gateway 都在添加一个新文档并修改修订管理器文档。
这是一种非常低效的版本控制方式,其中维护整个文档的副本以进行版本控制,而不仅仅是差异,因为这将占用大量 space。 (例如:在 "GrocerySync-Android" 示例应用程序中,在单个待办事项上点击 500 次需要占用 8.03MB 的磁盘 space。此外,修订管理器文档已变得大于 2.5 kb,我收到一条消息说您不能修改大小超过 2.5 kb 的文档。为什么????)
问题:
- _sync:local: 文档是关于什么的?
- 是否可以关闭这种在更新时创建新文档并仅保留最新副本的默认行为。 (一种方法是删除客户端中的旧版本,但我想这不会修改修订管理器文档。)
在分布式系统中,尤其是用于 iOS/Android 和其他嵌入式设备的系统中,在每个修订版中保留完整的属性集非常重要。
在这样的系统中使用 patch/diff 方法可能会导致更多的不一致,例如,只有当也有一些先前的状态时,更新才有意义。否则,向用户显示文档的差异不会提供良好的用户体验。它非常适合其他用例,例如源代码的版本控制(Git、Mercurial...)
可以在复制协议中利用 patch/diff 方法。 Couchbase Lite iOS 存储库中有一个 open ticket 讨论了仅传输修订增量的可能性。
如果您只想保留少量修订,请更改 maxRevTreeDepth
属性 以指定要保留在文档树历史记录中的修订数(默认为 20,阅读更多 here).
据我观察:
- 对于您创建的每个文档,还会创建一个修订管理器文档。此修订管理器跟踪最新修订并维护数组中所有修订的历史记录。
- 每次更新文档时,都会创建一个新文档 (whyyyyy???)。修订管理器文档的最新指针指向这个新文档并将以前的文档添加到其修订历史列表中。
- 因此,在每个更新操作中,Sync-Gateway 都在添加一个新文档并修改修订管理器文档。
这是一种非常低效的版本控制方式,其中维护整个文档的副本以进行版本控制,而不仅仅是差异,因为这将占用大量 space。 (例如:在 "GrocerySync-Android" 示例应用程序中,在单个待办事项上点击 500 次需要占用 8.03MB 的磁盘 space。此外,修订管理器文档已变得大于 2.5 kb,我收到一条消息说您不能修改大小超过 2.5 kb 的文档。为什么????)
问题:
- _sync:local: 文档是关于什么的?
- 是否可以关闭这种在更新时创建新文档并仅保留最新副本的默认行为。 (一种方法是删除客户端中的旧版本,但我想这不会修改修订管理器文档。)
在分布式系统中,尤其是用于 iOS/Android 和其他嵌入式设备的系统中,在每个修订版中保留完整的属性集非常重要。
在这样的系统中使用 patch/diff 方法可能会导致更多的不一致,例如,只有当也有一些先前的状态时,更新才有意义。否则,向用户显示文档的差异不会提供良好的用户体验。它非常适合其他用例,例如源代码的版本控制(Git、Mercurial...)
可以在复制协议中利用 patch/diff 方法。 Couchbase Lite iOS 存储库中有一个 open ticket 讨论了仅传输修订增量的可能性。
如果您只想保留少量修订,请更改 maxRevTreeDepth
属性 以指定要保留在文档树历史记录中的修订数(默认为 20,阅读更多 here).