【问题标题】:Is there a way to sync a single document in couchdb between two databases?有没有办法在两个数据库之间同步 couchdb 中的单个文档?
【发布时间】:2013-04-01 10:18:07
【问题描述】:

我需要在数据库之间同步单个文档,以便在更新一个文档时,另一个在同一台服务器上。动机是尝试在数据库之间共享单个文档以进行协作,因为没有文档级别的权限。这意味着如果databaseA 和userA 有一个userA 想要与“拥有”databaseB 的userB 共享的文档。没有好方法(据我所知)在 userA 的数据库上共享文档,因为 userB 不是数据库 A 上的读者。

现在我的解决方案是允许在数据库之间链接单个文档(应所有者的请求和目标数据库的接受),然后让它们不断更新。有什么想法可以实现吗?

【问题讨论】:

    标签: couchdb replication sync


    【解决方案1】:

    您可以使用一个名为过滤复制的功能。在普通复制使整个数据库保持同步的情况下,您可以提供一个 filter 函数,该函数对任何应该被复制的文档返回 true,否则返回 false。结合连续复制任务,您可以使用此功能近乎实时地保持单个文档同步。

    实际上,您必须决定如何设置复制任务。假设您的应用程序中有许多用户可以共享任意数量的文档,您可以使用以下方法:每个用户 1 个数据库 + 1 个包含所有文档的主数据库。也就是说,您设置了从任何用户的数据库到主数据库的连续复制(您的任何用户都无法读取,只有管理员可以读取)。在每个文档中,您存储一个字段,例如“所有者”,其中包含一组用户,这些用户可以访问该文档(用户可以编辑)。然后设置从主数据库到每个用户数据库的过滤复制,过滤功能根据“所有者”字段决定是否复制文档。这种方法需要每个用户执行两个复制任务。

    有关过滤复制的更多信息,请参阅http://wiki.apache.org/couchdb/Replication#Filtered_Replication,对于一般复制,另请参阅http://guide.couchdb.org/draft/replication.html。请注意,用于复制的 API 在 CouchDB 1.1 中略有变化,本质上是用 _replicator 替换了 _replicate。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2022-12-28
    • 2011-12-04
    • 2020-08-04
    • 2019-08-27
    相关资源
    最近更新 更多