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