从只读 couchdb 复制

2024-04-26

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

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

然而,这些信息对于我的应用程序的每个用户来说都是全局的——因此必然需要限制为严格的只读访问。但是,我读到 couchdb 需要write访问源以便有效复制(以便检查点)。

对性能有何影响?有什么办法可以解决这个问题吗?


您可以通过写入来限制写访问validate_doc_update()_design 文档中的函数。您可以在以下位置找到详细信息CouchDB 官方文档 http://docs.couchdb.org/en/latest/couchapp/ddocs.html#vdufun.

例如,此函数将仅限管理员进行写入操作:

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/ 前缀)。但你一定要尝试一下才能确定。

性能影响:

每次发生文档写入时都会执行验证函数,即使是管理员写入,也适用于复制。根据您的应用程序,您可能会考虑一些特殊的复制策略以提高性能。

不过,您描述的设置不应造成问题:用户不允许写入,因此如果他们遇到复制速度慢也没关系to您的公共数据库。如果您的公共数据库很少更新,那么也不应该有任何性能问题。

希望我能帮忙!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从只读 couchdb 复制 的相关文章

  • CouchDB 视图:MapReduce 中可以接受多少处理?

    我一直在尝试使用 CouchDB 进行 MapReduce 一些示例显示了映射归约函数中可能存在的一些繁重逻辑 在一种特殊情况下 他们在映射内执行 for 循环 在发出您选择的文档之前 MapReduce 是否会在每个可能的文档上运行 如果
  • 数据库复制还是镜像?

    SQL Server 2005 中的复制和镜像有什么区别 简而言之 镜像允许您让第二台服务器成为主服务器的 热 备用副本 随时准备在主服务器发生故障时接管 因此镜像提供了故障转移和可靠性 另一方面 复制允许两个或多个服务器保持 同步 这意味
  • 有人可以解释一下 Ektorp 中的 Cascading 和 FetchType 惰性吗?

    我是 CouchDB 和 Ektorp 的新手 实际上我今天就开始尝试使用它 我找到的帮助我入门的最详细的文档是这个 http www ektorp org reference documentation html d100e394 htt
  • CouchDB 每用户 db 具有共享数据可扩展性

    I have an application with the following architecture 主 couchdb 需要在用户之间共享数据 EG 如果 user 1 将数据写入云 则会复制到主服务器并返回到 user 2 和 u
  • CouchDB 入门

    我已经在我的 Linux 云服务器上安装了 CouchDB 并且我正在尝试访问 Futon 欢迎屏幕 O Reilly 书中说要转到 127 0 0 1 portnum 但我不在本地主机上工作 它是我的远程服务器 所以我应该能够使用 xxx
  • couchdb 视图使用另一个视图?

    我对 couchdb 中的视图有疑问 目前 我有许多视图 例如 view A view B view Z 对于每个视图 它们包含相同范围的键但具有不同的值 IE view A key key 1 value 10 key key 2 val
  • CouchDB 备份和克隆数据库

    我们正在寻找 CouchdDB 作为类似 CMS 的应用程序 围绕备份我们的生产数据库有哪些常见模式 最佳实践和工作流程建议 我对克隆数据库以用于开发和测试的过程特别感兴趣 仅从实时运行的实例下复制磁盘上的文件就足够了吗 您可以在两个实时运
  • CouchDB 对 _users 数据库的读/写限制

    我想限制用户权限 以便普通用户只能读 写自己的用户文档 我设法设置写入权限 以便用户只能编辑自己的文档 通过设计文档中的 validate doc update 函数 现在我只需限制用户查看用户列表或其他用户文档即可 如果我将数据库读取权限
  • Redis部署配置-主从复制

    目前我有两台服务器 我已经部署了基于node js Express JS的Web服务API 我正在使用 Redis 来缓存 JSON 字符串 将此设置部署到生产中的最佳选择是什么 我懂了here https stackoverflow co
  • 解决 CouchDB 中已删除文档的复制冲突

    官方文档推荐的解决复制冲突的方式是 使用文档阅读冲突的修订版本 conflicts字段 例如通过视图 获取列出的所有修订的文档 执行特定于应用程序的合并 删除不需要的修订 当我想合并的时候问题就来了deleted文件 他们没有出现在 con
  • 用于 C# 和 iPhone 应用程序的 MongoDB

    我正处于设计应用程序的初始阶段 该应用程序将具有用 C 实现的后端 该后端将使用 IIS 上托管的 WCF Web 服务为其他平台提供数据 iPhone 就是其中之一 由于是个人项目 所以想用它来学习MongoDB 我已经知道有社区开发的
  • 如何在CouchDB 2.0中创建TEXT索引?

    我正在读这篇文章https cloudant com blog mango json vs text indexes https cloudant com blog mango json vs text indexes我想在我的 Couch
  • 是否有 NoSQL 解决方案的比较(在某些情况下哪个更好?)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我在 Linux PHP 架构中构建基于密钥的归档应用程序时 我正在尝试了解有关 NoSQL 的更多信息 谁能解释一下主要解决方案
  • 数据库镜像/Postgres流复制

    我不是 DBA 我是基于企业数据库的应用程序的主要开发人员 我目前正在指定一些新机器来升级我们现有的企业数据库 目前 我们在 DR 站点上运行带有数据库的 Postgres 8 4 该数据库通过前员工执行的一些自定义 rsync 工作定期接
  • CouchDB 通过三个索引键进行查询和过滤

    我目前正在尝试按具有三个值的键进行排序和排序 但让我们从文档结构开始 id DOCIDGOESHERE01 type MESSAGE date 2011 08 24 06 49 02 author USERIDGOESHERE01 rece
  • 使用 glmnet 纠正 n 个数据集上的 n 个 LASSO 回归的输出(严格来说是所选的特征/变量)

    注意 这是对上一个问题 https stackoverflow com questions 75006466 how to replicate my results from running n lassos iteratively usi
  • CouchDB .view 文件增长失控?

    我最近遇到一种情况 我的 CouchDB 实例使用了 20GB VM 实例上的所有可用磁盘空间 经过调查 我发现 usr local var lib couchdb 中的一个目录包含一堆 view 文件 其中最大的有 16GB 我能够删除
  • 对如何在 Android 上使用 CouchDB 感到困惑

    我想让 CouchDB 作为我的移动应用程序的后端运行 取代 SQlite 作为这项技术的新手 我一直感到非常困惑 因为除了去年 Couchbase 发布的所有听起来类似的产品 Couchbase Couchbase Single Serv
  • Nodejs 中的 Couchdb

    我刚刚开始在nodejs 中使用couchdb 我正在寻找可以帮助我入门的教程或文章 或者至少是一些代码行 我不想使用任何模块进行数据库抽象 因为这会违背学习的目的 我希望制作自己的与 Couch 一起使用的模块 根据我的理解 这可以通过请
  • 如何删除带有空“”文档 ID 的 couchdb 文档?

    我在数据库中看到的文档是这样的 id rev 1 2f11e026763c10730d8b19ba5dce7565 禁止 必须提供最新的 rev以更新现有包 我在文档中看到的所有内容都显示引用带有 ID 的文档 但这当然不可能发生 我不太确

随机推荐

  • 我们能让 1 == 2 成立吗? [复制]

    这个问题在这里已经有答案了 Python ints are objects封装实际数值 我们可以修改该值吗 例如设置对象的值1到2 以便1 2变成True 我们可以 但不要在家里这样做 说真的 1对象在很多地方使用 我不知道这可能会破坏什么
  • R 错误:“check.data 中的错误:参数应该是数字”

    我正在学习 R 编程语言的 kohonen 库 我创建了一些人工数据来尝试一些功能 我尝试仅对连续 即 type as numeric 数据使用 supersom 函数 一切正常 然而 当我尝试在连续和分类 type as factor 上
  • 播放 video.js ustream m3u8 文件流

    我尝试在网页中播放带有 video js 的 m3u8 文件流 但我无法做到这一点 我不知道错误在哪里
  • 当前安全范围书签的内核资源限制是多少?

    的文档 NSURL startAccessingSecurityScopedResource state 您必须平衡对 startAccessingSecurityScopedResource 方法的每次调用与对 stopAccessing
  • 这是 VB.NET 编译器中的错误还是设计造成的?

    我发现 C 和 VB 编译器之间的重载解析存在差异 我不确定这是错误还是设计使然 Public Class Class1 Public Sub ThisBreaks These work Foo Of String Function Str
  • 为什么 MYSQL DB 在对 Django models.DateTimeField 求平均值时返回损坏的值?

    我正在 MySQL 实际上是 MariaDB 数据库上运行 Django 应用程序 我的 Django 模型如下所示 from django db import models from django db models import Avg
  • 在可移植 C 中模拟打包结构

    我有以下结构 typedef struct Octree uint64 t data uint8 t alignas 8 alloc uint8 t dataalloc uint16 t size datasize node0 Node8
  • Delphi COM 对象中的早期绑定和后期绑定在性能方面哪个更好

    在delphi中 如果要创建COM对象 可以通过两种方式来完成 第一个是早期绑定 例如 uses MSScriptControl TLB MS Script Control var obj IScriptControl begin obj
  • 处理嵌入式系统中的堆栈溢出

    在嵌入式软件中 如何以通用方式处理堆栈溢出 我遇到过一些确实以硬件方式提供保护的处理器 例如最近的 AMD 处理器 维基百科上有一些技术 但这些是真正实用的方法吗 任何人都可以给出一个在当今 32 位嵌入式处理器的所有情况下都适用的明确建议
  • CRC 16 -DECT 与聚 x^16 + x^10 + x^8 + x^7 + x^3 + 1

    相信我 我已经尝试过编写这个代码 尝试过谷歌 但没有任何运气 我正在尝试使用这个 Poly 实现 CRC16 x 16 x 10 x 8 x 7 x 3 1 使用C语言 因为我对 PHP 有了更好的了解 所以我试图让一个函数运行 但我没有得
  • 有没有好的 LINQ 方法来计算笛卡尔积?

    我有一个像这样的类结构 Person Dogs dog 1 dog 2 etc Puppies puppy A puppy B etc 有一个人 他有 1 n 只狗 每只狗有 1 n 只小狗 我想要一份所有可能的小狗组合的列表 从每只狗中取
  • LLVM到底是什么?

    我一直听说 LLVM 它是 Perl 语言 然后是 Haskell 语言 然后有人用其他语言使用它 它是什么 它与 GCC 到底有什么区别 视角 安全等 LLVM 是一个用于构建 优化和生成中间和 或二进制机器代码的库 LLVM 可以用作编
  • 找不到 Android 支持库和媒体路由器 .jar 文件

    我对 Xamarin 完全陌生 我想将地图添加到 Xamarin Android 中的默认 hello world 我已经按照指南一步步准备了清单 还通过 sdk 管理器下载了支持库 但出现错误 要求我安装 SL 和 SL 媒体路由器 这里
  • AVCaptureMetadataOutput().rectOfInterest 不工作

    我正在构建一个UIView它有一个覆盖的盒子 最终目标是让 QR 码阅读器仅在 QR 落入盒子内时触发 我知道我需要设置 rectOfInterest 与黄色框相同 但在当前实现 下面的代码 中 阅读器不起作用 public overrid
  • Dotfuscator Pro无法读取Jenkins构建服务器下的许可信息

    我试图让 Dotfuscator Pro 4 13 在单元测试和创建安装包之间运行 我们使用的构建服务器是 Windows Server 2008 R2 上的 Jenkins 1 487 dotfuscator 的命令行非常简单 我使用 q
  • URL 重写查询数据库?

    我试图了解 URL 重写的工作原理 我有以下链接 mysite com profile php id 23 我想用用户的名字和姓氏重写上面的网址 mysite com directory liam gallagher 然而 根据我读到的内容
  • 扩展《斯巴达克斯》中的产品模型

    我正在尝试使用我在 items xml 中创建的新属性来扩展产品模型 但我似乎无法在 Spartacus 前面获取它 我添加了一个带有以下代码的product model ts文件 import Product as CxProduct f
  • Nativescript ios 中闪屏后显示白屏

    在 Nativescript ios 中 启动屏幕后几秒钟显示白屏 这种情况仅发生在我们的项目中 但示例项目运行良好 我检查了模拟器和 iPhone 5 iPhone 6 iPad mini 所有设备都显示白屏 我将 Nativescrip
  • 如何按会计季度分组的日期计算平均值

    我有下表 Date Country Class Value 6 1 2010 USA A 45 6 1 2010 Canada A 23 6 1 2010 Brazil B 65 9 1 2010 USA B 47 9 1 2010 Can
  • 从只读 couchdb 复制

    我有一台服务器 其中包含一个 couchdb 数据库 其中包含我的应用程序所需的信息 它包含几兆字节的内容 一些每天都会变化的文档 添加最新新闻 删除旧文档 更新一些文档 应用程序会尽可能与服务器数据库同步 以便离线使用此信息 然而 这些信