CouchDB HTTP データベース API の概要
名前付けとアドレス指定
データベースには、すべての小文字 (a-z)、数字 (0-9)、または _$()+-/ のうちの任意の文字を使って名前を付けなければならず、URL の最後はスラッシュで終わらなければなりません。名前の先頭は文字である必要があります。
http://couchserver/databasename/ http://couchserver/another/databasename/ http://couchserver/another/database_name(1)/
データベース名に大文字を使用することは「できません」。
http://couchserver/DBNAME/ (invalid) http://couchserver/DatabaseName/ (invalid) http://couchserver/databaseName/ (invalid)
データベース名の中の / 文字は、URL の中で使う場合にはエスケープしなければなりません。たとえばデータベース名が his/her である場合には、
http://localhost:5984/his%2Fher でデータベースにアクセスできます。
文字を制限することの根拠
データベース名に使用できる文字を制限しているのは、ファイルシステムの名前付け規則の最小公分母を満たす必要があると考えているためです。たとえば、大文字の使用を禁止することで、大文字と小文字を区別しないファイルシステムでも問題が起きることはありません。
すべてのデータベース・ファイルは、ファイルシステム上の単一のディレクトリに格納されます。データベースに / が含まれている場合、CouchDB はデータベース・ディレクトリにサブディレクトリ構造を作成します。つまり、his/her という名前のデータベースでは、データベース・ファイルは $dbdir/his/her.couch として格納されることになります。この仕組みは、データベースの数が膨大で、使用しているファイルシステムが 1 つのディレクトリに大量のファイルを持つことを苦手とする場合に有益です。
データベースの一覧の取得
CouchDB サーバー上のデータベースの一覧を取得するには、/_all_dbs という URI を使います。
GET /_all_dbs HTTP/1.1 Date: Thu, 17 Aug 2006 05:39:28 +0000GMT
次のようなレスポンスが返されます。
HTTP/1.1 200 OK Date: Thu, 17 Aug 2006 05:39:28 +0000GMT Content-Length: 37 Content-Type: application/json Connection: close ["somedatabase", "anotherdatabase"]
PUT (データベースの新規作成)
新しく空のデータベースを作成するには、データベースの URL に対して PUT 操作を実行します。現時点では、実際の PUT のコンテンツは、ウェブサーバーから無視されます。
成功すると、HTTP ステータス 201 が返されます。データベースがすでに存在する場合には、412 エラーが返されます。
PUT /somedatabase/ HTTP/1.1 Content-Length: 0 Date: Thu, 17 Aug 2006 05:39:28 +0000GMT
サーバーから次のようなレスポンスが返されます。
HTTP/1.1 201 Created
Date: Thu, 17 Aug 2006 05:39:28 +0000GMT
Content-Length: 13
Content-Type: application/json
Connection: close
{"ok": true}
DELETE
データベースを削除するには、目的のデータベースの場所に対して DELETE 操作を実行します。
成功すると、HTTP ステータス 200 が返されます。データベースが存在しない場合には、404 エラーが返されます。
DELETE /somedatabase/ HTTP/1.1 Content-Length: 1 Date: Thu, 17 Aug 2006 05:39:28 +0000GMT
サーバーから次のようなレスポンスが返されます。
HTTP/1.1 200 OK
Date: Thu, 17 Aug 2006 05:39:28 +0000GMT
Content-Length: 67
Content-Type: application/json
Connection: close
{"ok": true}
データベースに関する情報
特定のデータベースに関する情報を取得するには、目的のデータベースに対して GET 操作を実行します。たとえば、次のようにします。
GET /somedatabase/ HTTP/1.1
サーバーのレスポンスは、次のような JSON オブジェクトです。
{"db_name": "dj", "doc_count":5, "doc_del_count":0, "update_seq":13, "compact_running":false, "disk_size":16845}
圧縮
ディスクの消費量を減らすために、データベースを圧縮することができます。詳細については、「圧縮」を参照してください。