首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择性地复制CouchDB数据库的私有和共享部分?

如何选择性地复制CouchDB数据库的私有和共享部分?
EN

Stack Overflow用户
提问于 2012-03-09 15:21:37
回答 1查看 472关注 0票数 3

我们正在考虑使用CouchDB/CouchCocoa将数据复制到我们的移动应用程序中。

我们的系统拥有大量的用户。数据库的一部分对每个用户都是私有的,例如他们的任务。我在使用过滤复制时,能够毫无问题地复制这些文件。

这是陷阱..。数据库还只包括一些与给定用户有关的共享信息。如何有选择地复制共享的信息?例如,用户的任务可能引用特定的共享文档。是否有方法确保这些文档包含在复制中,而不包括所有共享文档?

从文档中可以看出,向复制中添加doc_ids (或者使用这些文档ids添加另一个复制)可能是一种解决方案。有人试过这个吗?还有其他解决办法吗?

编辑:考虑到用户的数量,用所有共享的用户来标记每个共享文档似乎是不切实际的,但也许这是唯一的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-23 09:28:30

最后的解决方案主要取决于您的文档结构,但目前我看到了两个用例:

  1. 当您将所有内容保存在单个数据库中时,可能有一些字段设置为要识别,文档是共享的还是文档是私有的,对吗?示例: 业主:“迈克” 与会者:[] //如果没有人提到,文件看起来就像私人的(?) 因此,您只需要一些只处理私有文档和共享文档的筛选器:通过标记、参与者数量、引用或某种方式。 另外,如果只需要为特定用户复制某些文档(例如,只对Mike),则需要特殊的视图来处理所有这些文档,当然,还需要通过文档ids进行复制,但这不是原子请求:您需要一些服务脚本来处理这些步骤。如果通过对共享文档的引用来定义共享文档,那么唯一的解决方案是相同的:一些服务脚本、生成文档引用树的视图以及doc.id的复制。
  2. 回顾一下你的架构。拥有每个用户的数据库是CouchDB的正常用例,并且遵循数据分区和隔离的方式。因此,您可以创建仅针对该用户的每个用户数据库。对于共享文档,可以使用安全选项的数据库成员创建其他数据库。每个“共享”数据库将只按名称或组处理一定数量的参与者,因此不会有任何数据泄漏,除非这不是CouchDB错误(: 乍一看,这种方法看起来太奇怪了,但是您所需要的一切都是创建一些管理脚本来处理数据库的创建和发布,复制将尽可能简单,并且用户数据是安全的。

我认为“共享”操作使文档不是对每个人都可见,而是对一些用户可见。如果我错了,“共享”状态意味着“公共”状态,而不是p2。将更简单:n个用户数据库+1个公共数据库。

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

https://stackoverflow.com/questions/9636498

复制
相关文章

相似问题

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