CouchDB上的多主机配额

CouchDB上的多主机配额,couchdb,couchdb-futon,Couchdb,Couchdb Futon,我期待着提供一些免费托管CouchDB。授权部分相当简单(用户可以访问1个数据库),但我想知道是否有任何简单的方法可以为该数据库/用户分配空间配额。CouchDB本机不支持配额,因此您可能需要一些自定义的内容 您可以使用CouchDB的一个小分支或您的相关托管软件自行实施它,并使用CouchDB返回的使用信息。从1.2版开始,CouchDB不仅指示磁盘使用情况,还指示“数据”大小,不计算元数据和旧数据。我通过将Linux inotify支持与只读CouchDB验证功能结合起来解决了这一问题 我是

我期待着提供一些免费托管CouchDB。授权部分相当简单(用户可以访问1个数据库),但我想知道是否有任何简单的方法可以为该数据库/用户分配空间配额。

CouchDB本机不支持配额,因此您可能需要一些自定义的内容


您可以使用CouchDB的一个小分支或您的相关托管软件自行实施它,并使用CouchDB返回的使用信息。从1.2版开始,CouchDB不仅指示磁盘使用情况,还指示“数据”大小,不计算元数据和旧数据。

我通过将Linux inotify支持与只读CouchDB验证功能结合起来解决了这一问题

我是这样做的:

  • 我编写了一个inotify程序(在我的例子中是python),它监视对/var/lib/couchdb/foo.coach中每个文件的所有访问。每次访问都被批处理在一起,直到到达一个时间窗口

  • 当到达该窗口时,我在DB上查询Coach的“info”API,询问数据库的当前大小

  • 如果数据库在配额范围内,我将针对所讨论的数据库安装一个验证函数设计文档,该文档将阻止新的写入,从而遵守配额。(分配配额本身是读者的一项练习)

  • 注意:CouchDB数据库仅在a)删除附件和b)记住压缩数据库时才会收缩。否则,如果没有这两者,数据库的大小只会随着新文档的添加而继续增长。如果您有足够数量的删除,但用户仍然耗尽了配额,那么您真的别无选择,只能复制到新数据库并销毁旧数据库

  • 如果数据库文件确实收缩(如上所述),则删除验证函数并允许对数据库进行新的写入
  • 但是,至少,上述解决方案让您确信,在以后采取行动之前,您永远不会耗尽磁盘空间