【问题标题】:CouchDB simple document design: need feedbackCouchDB 简单文档设计:需要反馈
【发布时间】:2015-03-10 20:48:30
【问题描述】:

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

要求:

  • 每个用户可以拥有许多资产
  • 用户可以通过向他人提供诸如 (xyz.com/some_id) 之类的 URI 来与他人共享资产。一旦用户单击此 URI,他们就会被视为已“加入”并成为群组的一部分。
  • 群组用户可以与群组的其他成员共享自己的资产。

我的设计

  • 每个用户都有他/她自己的数据库来存储资产 - 我们称之为“用户”。每个用户数据库都会以他/她的唯一 ID 为前缀。
  • 共享资产将存储在一个单独的数据库中 - 我们称之为“组”。共享资产在这里被复制,并且有一个额外的 userId 字段(表示创建者)。
  • 组数据库以唯一 ID 为前缀,就像用户数据库也以 1 为前缀一样。

之所以将群组资产存储在单独的数据库中,是因为 pouchdb 在本地运行时,它只知道当前用户及其共享资产。它不知道其他用户,也不应该查询这些“其他”用户的数据库。

非常感谢任何输入。

【问题讨论】:

    标签: couchdb pouchdb


    【解决方案1】:

    似乎是一个很棒的设计。另一种选择是每个组(“角色”)只有一个数据库,然后从用户组复制到他们的本地 PouchDB。

    但是,当需要复制回服务器时,这可能会变得很麻烦,因为您必须在文档离开用户的本地数据库时对其进行过滤,具体取决于它们属于哪个组数据库。尽管如此,您仍将不得不在您当前的设计中在服务器端执行此操作。

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

    【讨论】:

    • 感谢诺兰,感谢您的反馈。感谢您如此积极地回答 pouchdb 问题。
    • 没有问题。乐意效劳。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多