CouchDB 简单文档设计:需要反馈
CouchDB simple document design: need feedback
我正在为 CouchDB 设计文档存储,非常感谢您的反馈。这些文档代表 "assets"。
这些数据库也将通过 pouchdb 在本地同步到浏览器。
要求:
- 每个用户可以拥有多个资产
- 用户可以通过向他人提供诸如 (xyz.com/some_id) 的 URI 来与他人共享资产。用户单击此 URI 后,他们将被视为 "joined",现在是组的一部分。
- 群组用户可以与群组中的其他成员共享自己的资产。
我的设计
- 每个用户将有 his/her 自己的数据库来存储资产 - 我们称之为 "user"。每个用户数据库都将以 his/her 唯一 ID 为前缀。
- 共享资产将存储在单独的数据库中 - 我们称之为 "group"。共享资产在这里重复,并且有一个额外的 userId 字段(以指示创建者)。
- 组数据库以唯一 ID 为前缀,就像用户数据库也以唯一 ID 为前缀一样。
之所以将组资产存储在单独的数据库中,是因为当 pouchdb 在本地运行时,它只知道当前用户和 his/her 共享资产。它不知道其他用户,也不应该查询这些 "other" 用户的数据库。
任何输入将不胜感激。
看起来是个不错的设计。另一种选择是每个组只有一个数据库 ("role"),然后从用户组复制到他们的本地 PouchDB。
不过,当需要复制回服务器时,这可能会变得棘手,因为当文档离开用户的本地数据库时,您将不得不过滤文档,具体取决于它们属于哪个组数据库到。尽管如此,您仍然必须在服务器端使用当前设计执行此操作。
老实说,任何一种方式都可以。当前方法的唯一缺点是文档在服务器端被复制(每个用户数据库一次,每个组数据库一次)。另一方面,您的客户端代码变得非常简单,因为您不必进行任何过滤复制。如果你的服务器上有足够的 space 不用担心它,那么我肯定会采用你的方法。 :)
我正在为 CouchDB 设计文档存储,非常感谢您的反馈。这些文档代表 "assets"。 这些数据库也将通过 pouchdb 在本地同步到浏览器。
要求:
- 每个用户可以拥有多个资产
- 用户可以通过向他人提供诸如 (xyz.com/some_id) 的 URI 来与他人共享资产。用户单击此 URI 后,他们将被视为 "joined",现在是组的一部分。
- 群组用户可以与群组中的其他成员共享自己的资产。
我的设计
- 每个用户将有 his/her 自己的数据库来存储资产 - 我们称之为 "user"。每个用户数据库都将以 his/her 唯一 ID 为前缀。
- 共享资产将存储在单独的数据库中 - 我们称之为 "group"。共享资产在这里重复,并且有一个额外的 userId 字段(以指示创建者)。
- 组数据库以唯一 ID 为前缀,就像用户数据库也以唯一 ID 为前缀一样。
之所以将组资产存储在单独的数据库中,是因为当 pouchdb 在本地运行时,它只知道当前用户和 his/her 共享资产。它不知道其他用户,也不应该查询这些 "other" 用户的数据库。
任何输入将不胜感激。
看起来是个不错的设计。另一种选择是每个组只有一个数据库 ("role"),然后从用户组复制到他们的本地 PouchDB。
不过,当需要复制回服务器时,这可能会变得棘手,因为当文档离开用户的本地数据库时,您将不得不过滤文档,具体取决于它们属于哪个组数据库到。尽管如此,您仍然必须在服务器端使用当前设计执行此操作。
老实说,任何一种方式都可以。当前方法的唯一缺点是文档在服务器端被复制(每个用户数据库一次,每个组数据库一次)。另一方面,您的客户端代码变得非常简单,因为您不必进行任何过滤复制。如果你的服务器上有足够的 space 不用担心它,那么我肯定会采用你的方法。 :)