CouchDB上的多主机配额

时间:2012-04-28 02:43:24

标签: couchdb couchdb-futon

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

2 个答案:

答案 0 :(得分:3)

CouchDB本身不支持配额,因此您可能需要一些自定义配置。

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

答案 1 :(得分:0)

我通过将Linux inotify支持与只读的couchdb验证功能结合在一起来解决这个问题。

这样我的工作就是这样:

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

  2. 当到达窗口时,我在数据库本身查询沙发的“信息”API,询问数据库的当前大小。

  3. 如果数据库在配额范围内,我会针对相关数据库安装验证功能设计文档,以阻止新写入并因此遵守配额。 (分配配额本身对读者来说是一种练习。)

  4. 注意:CouchDB数据库仅在a)删除附件和b)您记得压缩数据库时缩小。否则,如果没有这两者,数据库的大小将仅在添加新文档时继续增长。如果你达到了足够数量的删除,但用户仍然用尽了他们的配额,你真的别无选择,只能复制到新数据库并销毁旧数据库。

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