3

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

4

2 回答 2

3

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

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

于 2012-04-28T04:49:08.270 回答
1

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

我使它工作的这种方式是这样的:

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

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

  3. 如果数据库在配额内,我会针对有问题的数据库安装一个验证功能设计文档,该文档会阻止新的写入,从而遵守配额。(分配配额本身是读者的练习)。

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

  1. 如果数据库文件确实缩小了(如上所述),则删除验证功能并允许对数据库进行新的写入。

但是,至少,上述解决方案让您确信,在您稍后采取行动之前,您永远不会耗尽磁盘空间。

于 2016-09-29T19:19:35.870 回答