couchdb - 按用户角色划分的 Couchdb/Couchdb 复制策略

标签 couchdb pouchdb

我正在设计一个用于任务管理的移动应用程序(待办事项列表以及许多额外的好东西),可以离线使用并在重新连接时同步。 Couch 和 Pouch DB 给我留下了深刻的印象,但我仍然不确定数据库和角色的最佳结构。我的情况是,一个用户可以有很多任务,并且可以直接或通过将任务分配给一个组然后与特定用户共享该组来将任务共享给许多其他用户(只读)。

阅读完以下问题后: CouchDB replication strategy with dynamic groups of users我想我可能不允许直接共享任务并且只允许通过组共享。然后每个组实际上是 Couch 中的一个角色,然后我可以管理对它的授权。我可以从我的网络应用程序编写一个 API,以便移动用户可以获得共享给他们的组列表,然后设置从每个基于数据库的组到他们本地 Pouch DB 的单向复制。每个用户还可以通过从 Pouch 到 Couch 的两种同步方式对自己任务的数据库进行读写访问。将从他们自己的 Couch 数据库到任务所属的每个基于角色的数据库进行过滤复制。

我的主要问题是:

  1. 这是一个有效的结构,还是我的逻辑中存在缺陷,这会使这变得困难?
  2. 当用户从组/角色中删除时,最好的处理方式是什么?既然组不再与他们共享(他们不再拥有角色)?
  3. 用户可能会删除一个组,这意味着需要删除整个基于角色的数据库 - 这有什么影响吗?

最佳答案

好问题,保罗!这似乎最近不断出现。 :)

Is this a valid structure or are there flaws in my logic that would make this difficult?

我是这么认为的。我发布了一个architecture diagram作为对类似的以移动为中心(在这种情况下为 Cordova + PouchDB)工作流的回答。

What would be the best way to handle when a user was removed from a group/role and how to delete any previously replicated tasks on their local Pouch DB now that the Group is no longer shared to them (they no longer have that role)?

可能最好的方法是在用户数据库上使用 View 来查找与共享/组相关的所有文档,然后使用后台进程(或类似进程)删除这些文档(以节省空间;如果您需要到)。

您可以使用批量文档系统 in PouchDB or CouchDB在文档中设置了 "_deleted": true——这应该会简化删除过程。

A user may delete a group which will mean the entire role based DB will need to be deleted - are the any implications of this?

请务必同时删除复制任务,以避免在数据库消失后复制失败。否则,你应该没问题(据我所知)。

希望对您有所帮助!

关于couchdb - 按用户角色划分的 Couchdb/Couchdb 复制策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084322/

相关文章:

couchdb - 有没有办法在两个 pouchdb 实例之间同步?

javascript - PouchDB 中模糊的用户名和密码

couchdb - 如何从 couchdb 获取所有文档以某个单词开头。轻沙发有可能吗?

couchdb 文档设计带时间戳的有向加权图中的边

javascript - Couchdb 对带有字符串的大型文档的 View 作为键超时

couchdb - 特定的 couchdb View 突然开始超时

couchdb - 使用CouchDB的reduce函数聚合数据

caching - 内存缓存的 NoSQL 替代品

couchdb - 限制在 PouchDB/CouchDB 中同步的记录

javascript - 在 JavaScript 中声明 for 循环函数