CouchDB の無料ホスティングを提供したいと考えています。承認の部分は非常に簡単です (ユーザーは 1 つのデータベースにアクセスできます) が、そのデータベース/ユーザーにスペース クォータを割り当てる簡単な方法があるかどうか疑問に思っていました。
2 に答える
CouchDB はクォータをネイティブにサポートしていないため、何かカスタムが必要になる場合があります。
CouchDB の小さなフォークまたは関連するホスティング ソフトウェアを使用して、自分で強制し、CouchDB から返された使用情報を使用できます。バージョン 1.2 以降、CouchDB はディスク使用量だけでなく、メタデータと古いデータをカウントしない「データ」サイズも示します。
Linux の inotify サポートと読み取り専用の couchdb 検証機能を組み合わせることで、これを解決しました。
私がそれを機能させたこの方法は次のようなものです:
/var/lib/couchdb/foo.couch 内の各ファイルへのすべてのアクセスを監視する inotify プログラム (私の場合は Python) を作成しました。各アクセスは、時間枠に達するまでバッチ処理されます。
ウィンドウに到達したら、DB 自体でカウチの「情報」API をクエリして、データベースの現在のサイズを確認します。
データベースがクォータ内にある場合は、問題のデータベースに対して、新しい書き込みをブロックしてクォータを尊重する検証機能の設計ドキュメントをインストールします。(クォータ自体の割り当ては、読者の課題です)。
注: CouchDB データベースは、a) 添付ファイルが削除された場合、および b) DB を圧縮することを覚えている場合にのみ縮小します。そうしないと、これらの両方がなければ、データベースのサイズは、新しいドキュメントが追加されるにつれて増加し続けます。十分な数の削除が行われているにもかかわらず、ユーザーがまだクォータを使い果たしている場合は、新しい DB に複製して古い DB を破棄するしかありません。
- データベース ファイルが (上記のように) 縮小する場合は、検証機能を削除し、DB への新しい書き込みを許可します。
しかし、少なくとも、上記の解決策により、後でアクションを実行するまで、ディスク容量が不足することは決してないという確信が得られます。