gpt4 book ai didi

couchdb - 从只读的 couchdb 复制

转载 作者:行者123 更新时间:2023-12-04 18:42:46 25 4
gpt4 key购买 nike

我有一个服务器,有一个 couchdb 数据库,其中包含我的应用程序需要的信息。它包含几兆字节的内容,一些每天都在变化的文档(添加最新消息,删除旧文档,更新一些)。

应用程序尽可能与服务器数据库同步(以使此信息可脱机使用)。

但是,此信息对我的应用程序的每个用户都是全局的——因此必须将其限制为严格的只读访问。但是,我读到 couchdb 需要对源进行写访问才能有效地复制(为了检查点)。

性能影响是什么?有没有办法解决这个问题?

最佳答案

您可以通过写 validate_doc_update() 来限制写访问。 _design 文档中的函数。您可以在 official CouchDB documentation 中找到详细信息.
例如,此函数会将写入操作仅限于管理员:

function(newDoc, oldDoc, userCtx, secObj) {
// allow modifications by admins only.
if ((userCtx.roles.indexOf('_admin') !== -1)) {
return;
}
throw({forbidden: 'You are not allowed to edit public documents.'});
}
将其放入 _design/readonly文档(或任何您想要的设计文档名称),并将函数命名为 validate_doc_update .
每个设计文档只能有一个 validate_doc_update 函数,但您当然可以定义多个设计文档。每当任何人尝试写入操作时,文档都会按顺序发送到所有这些验证功能。如果任何函数抛出错误,更新将被拒绝。
因此请注意不要将此设计文档复制到普通用户应该能够写入的数据库中!
据我所知,常规复制仍然有效,因为验证功能不会针对复制检查点文档执行(它们具有特殊的/_local/前缀)。但是你应该明确地尝试一下以确保。
性能影响:
每次发生文档写入时都会执行验证功能,即使是管理员写入,也适用于复制。根据您的应用程序,您可能会考虑一些特殊的复制策略以提高性能。
不过,您描述的设置应该不会造成问题:用户不允许写入,所以如果他们遇到慢速复制也没关系 您的公共(public)数据库。如果您的公共(public)数据库很少更新,那么也不应该有任何性能问题。
希望我能帮上忙!

关于couchdb - 从只读的 couchdb 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285461/

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