首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当与Couchbase-lite一起使用时,同步网关为每个更改创建一个文档。

当与Couchbase-lite一起使用时,同步网关为每个更改创建一个文档。
EN

Stack Overflow用户
提问于 2015-06-07 14:01:46
回答 1查看 572关注 0票数 3

据我所观察到:

  1. 对于您创建的每个文档,还会创建一个修订管理器文档。此修订管理器跟踪最新版本,并维护数组中所有修订的历史记录。
  2. 每次更新文档时,都会创建一个新文档(whyyyyy?)。修订管理器文档的最新指针指向此新文档,并将以前的文档添加到其修订历史记录列表中。
  3. 因此,在每次更新操作中,Sync都添加了一个新文档,同时也修改了修订管理器文档.

这是一种非常低效率的版本控制方法,在这种情况下,整个文档的副本被维护用于版本控制,而不仅仅是差异,因为这将占用大量的空间。(例如:它占用了8.03MB的磁盘空间,用于在“GrocerySync”示例应用程序中对单个待办项目执行500次点击。此外,修改管理器文档已超过2.5kb,我收到一条消息,表示您不能修改大于2.5kb的文档。为什么?

问题:

  1. _sync:local:文档是关于什么的?
  2. 是否可以关闭在更新时创建新文档并仅保留最新副本的默认行为。(一种方法是删除客户端中较旧的revs,但我想这不会修改修订管理器文档。)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-16 04:19:05

在分布式系统中,特别是用于iOS/Android和其他嵌入式设备中,重要的是在每个修订版中保持完整的属性集。

在这样的系统中使用补丁/diff方法可能会导致更多的不一致,例如,只有在以前的状态也存在时,更新才有意义。否则,向用户展示文档的差异并不能提供很好的用户体验。但是,它非常适合于其他用例,例如源代码的版本控制(Git,Mercurial.)

可以在复制协议中利用补丁/diff方法。Couchbase Lite iOS存储库中有一个iOS,讨论了只传输修订的增量的可能性。

如果只想保留少量的修订,请更改maxRevTreeDepth属性以指定要在文档树历史记录中保留的修订数(默认值为20,请阅读更多这里)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30694393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档