2

CouchDB データベースに保存されているドキュメントのサイズを知りたいです。ドキュメントのサイズを一覧表示するビューを作成するにはどうすればよいですか?

4

2 に答える 2

4

私自身の質問に答えて、これは受け入れられることがわかりました(Marcelloのコメントを取り入れています):

function(doc) {
  var json = JSON.stringify(doc);
  emit(json.length, null);
}

編集: @dch のコメントを組み込むと、これは有線サイズのより完全な見積もりですが、彼が指摘しているように、これはディスク上のドキュメントのサイズではありません。

function(doc) {
  var json = JSON.stringify(doc);
  var len = json.length;
  if (doc._attachments) {
    for (var attachmentKey in doc._attachments) {
      var attachment = doc._attachments[attachmentKey];
      len += attachment.length;
    }
  }
  emit(len, null);
}
于 2012-09-10T12:08:58.817 に答える
3

いつものように、答えはそのデータで何をしようとしているのかによって少し異なります。

  • CouchDB 1.2.0 以降では、snappy 圧縮により、各ドキュメントのディスク上のサイズが stringify の計算よりもかなり小さくなることが保証されます。
  • いずれにせよ、CouchDB は JSON をエンコードされた erlang タームとして格納しますが、これも 1 対 1 のサイズの等価ではありません。
  • 添付ファイルはアプローチに記録されませんが、スタブ メタデータで使用できます。

{
  "_id":"555b17372035fdeb9b4077c68e00053f",
  "_rev":"3-a6fa3aadf3bf64f11b721d7d4333e9ec",
  "_attachments":{
    "preview.png":{
      "content_type":"image/png",
      "revpos":3,
      "digest":"md5-fNhm5TL2NFnsujYKixr+3A==",
      "length":328076,
      "stub":true
    }
  }
}

于 2012-09-10T17:28:45.860 に答える