2012-04-28 20 views
3

我期待爲CouchDB提供一些免費主機。授權部分非常簡單(用戶可以訪問1個數據庫),但我想知道是否有任何簡單的方法爲該數據庫/用戶分配空間配額。CouchDB上的多主機配額

回答

3

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

您可以使用CouchDB的一小部分或相關託管軟件自己執行它,並使用CouchDB返回的使用情況信息。自1.2版以來,CouchDB不僅指示磁盤使用情況,還指出「數據」大小,不包括元數據和舊數據。

0

我通過將Linux inotify支持與只讀couchdb驗證功能結合在一起來解決此問題。

這樣,我把它的工作是這樣的:

  1. 我與顯示器寫了inotify的程序(蟒蛇,在我的情況)的所有訪問在/ var/lib中/ CouchDB的/ foo的每個文件。長椅。每次訪問都會一起進行批處理,直到達到時間窗口。

  2. 當窗口到達時,我在數據庫本身查詢沙發的「info」API,詢問數據庫的當前大小是多少。

  3. 如果數據庫在配額範圍內,我針對有問題的數據庫安裝驗證功能設計文檔,用於阻止新寫入並因此遵守配額。 (分配配額本身是對讀者的練習)。

注意:只有當a)附件被刪除時,CouchDB數據庫纔會收縮,並且b)您還記得壓縮數據庫。否則,如果沒有這兩個數據庫,數據庫的大小將只會隨着新文檔的添加而持續增長。如果你達到了足夠數量的刪除點,但用戶仍然用盡了配額,那麼你實在別無選擇,只能複製到一個新的數據庫並銷燬舊的數據庫。

  1. 如果數據庫文件DOES縮小(如上所述),則刪除驗證函數並允許對數據庫進行新的寫操作。

但是,至少,上述解決方案可以讓您放心,在下一段時間採取行動之前,永遠不會用完磁盤空間。