CouchDB简单文档设计:需要反馈

时间:2015-03-10 20:48:31

标签: couchdb pouchdb

我正在为CouchDB设计文档存储,并且非常感谢一些反馈。这些文件代表资产"。 这些数据库也将通过pouchdb在本地同步到浏览器。

要求:

  • 每个用户都可以拥有多个资产
  • 用户可以通过向其提供诸如(xyz.com/some_id)之类的URI来与他人共享资源。一旦用户点击此URI,他们就会被认为已加入"现在是小组的一部分。
  • 群组用户可以与群组中的其他成员共享自己的资产。

我的设计

  • 每个用户都有他/她自己的数据库来存储资产 - 让我们称之为用户"。每个用户数据库都将以他/她的唯一ID为前缀。
  • 共享资源将存储在一个单独的数据库中 - 让我们称之为" group"。共享资源在这里是DUPLICATED,并且有一个userId的附加字段(表示创建者)。
  • 组数据库的前缀是唯一ID,就像用户数据库也有一个前缀一样。

将组资产存储在单独的数据库中的原因是因为当pouchdb在本地运行时,它只知道当前用户和他/她的共享资产。它不了解其他用户,也不应该查询这些"其他用户"用户'数据库。

任何输入都会非常感激。

1 个答案:

答案 0 :(得分:2)

看起来像一个伟大的设计。另一种方法是每组只有一个数据库(“角色”),然后从用户的组复制​​到他们的本地PouchDB中。

但是,当复制回服务器时,可能会变得毛茸茸,因为当文档离开用户的本地数据库时,它们必须过滤文件,具体取决于它们属于哪个组数据库。不过,无论如何,无论如何,使用您当前的设计,您将不得不这样做。

无论哪种方式都很好,老实说。当前方法的唯一缺点是文档在服务器端重复(每个用户db一次,每组db一次)。另一方面,您的客户端代码变得简单,因为您不必进行任何过滤复制。如果你的服务器上有足够的空间而不用担心它,那么我肯定会采用你的方法。 :)