gpt4 book ai didi

database - 基于 JSON 的数据库(如 Couchbase、CouchbaseLite、CouchDB 等)的理想复制过滤器?

转载 作者:太空狗 更新时间:2023-10-30 02:00:01 25 4
gpt4 key购买 nike

我准备在 CouchDB 服务器端编写一个过滤器函数,过滤特定于用户的文档。此过滤器将只允许复制特定用户有权访问的少数选定文档,而不是 TB 大小的整个数据库。

在这里我发现了一个类似的问题CouchDB: Restricting users to only replicating their own documents但它没有提供我需要的信息。

所以我的问题仍然存在:

  1. 指定此类过滤器的最佳方法是什么?
  2. 这样的过滤函数应该怎么写,有没有写的例子?
  3. 我应该在每个文档中包含什么,以便过滤器以这种方式工作:

    在社交网络的上下文中,假设您要从服务器获取图片等用户数据,在这种情况下,包含图片的文档将包含 userId。但有时会出现这种情况,此人的 friend 会访问他的个人资料,然后他们也将能够查看这些照片。在这种情况下,每当 friend 访问他的个人资料时,图片文档将被复制给 friend ,他也将能够查看这些照片。

我怎样才能完成这样的过滤器?

更多信息:在移动平台端,我使用 CouchbaseLite,在服务器端,我使用 CouchDB。我只想在移动平台上过滤文档。

最佳答案

CouchDB 过滤器函数只能访问被过滤的单个文档,因此您不能使用来自其他文档的任何信息。这排除了“类似加入”的方法,例如从照片发布文档取消引用到所有者文档以查找所有者的 friend 列表。

基本上,您必须在每个文档中包含一个属性,列出应该获得它的确切用户组。

另请注意,这不提供任何类型的访问控制。无法有选择地拒绝对 CouchDB 中文档的读取访问,因此您无法阻止用户查看陌生人的相册。为此,您必须采用每个用户一个数据库的方法,该方法有其自身的缺点——您最终必须在数据库之间设置大量复制以在它们之间共享文档,这不能很好地扩展.

看看 Couchbase Sync Gateway (https://github.com/couchbase/sync_gateway)——它与 CouchDB 复制兼容,但增加了支持这种选择性同步和访问控制的功能。用它来实现社交网络应该是绝对可行的;这是我们在设计它时想到的用例之一。 (我是该项目的首席工程师。)

关于database - 基于 JSON 的数据库(如 Couchbase、CouchbaseLite、CouchDB 等)的理想复制过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22216906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com