datatypeとドキュメントのサイズ。
ログ。
{ "a" : "1" }
のドキュメントを/test_data に10000件放り込む。サイズが1.1MBになる。
$ ls -al /opt/local/var/lib/couchdb/test_data.couch -rw-r--r-- 1 couchdb couchdb 1199137 5 16 01:36 /opt/local/var/lib/couchdb/test_data.couch $ curl -X GET http://localhost:5984/test_data {"db_name":"test_data","doc_count":10000,"doc_del_count":0,"update_seq":10000,"purge_seq":0,"compact_running":false,"disk_size":1199137,"instance_start_time":"1242405387471218"}
同じようにして、
{"a" : 1}
のドキュメントを/test_data2 に10000件放り込む。サイズが1.1MBになる。
$ ls -al /opt/local/var/lib/couchdb/test_data2.couch -rw-r--r-- 1 couchdb couchdb 1158022 5 16 01:39 /opt/local/var/lib/couchdb/test_data2.couch $ curl -X GET http://localhost:5984/test_data2 {"db_name":"test_data2","doc_count":10000,"doc_del_count":0,"update_seq":10000,"purge_seq":0,"compact_running":false,"disk_size":1158022,"instance_start_time":"1242405567779251"}
ということで、1ドキュメントあたり、(1199137 - 1158022) / 10000 = 4.1 byte の削減?になる。まあでも、ストレージに蓄積されるサイズより、ネットワークに乗っかるサイズを考えないとだめだと思う。
で、
{ "a" : "1" }
で放り込んだ10000件について、Viewで { "a" : 1 } に直すという方法にする。これだと、HTTP経由ではもともと { "a" : 1 } と入れた場合と同じ量のコンテンツがネットワークに乗っかることになる。
function(doc){ emit(null, { a : parseInt(doc.a) } ) }
一応ディスクサイズ確認。
これを_design/test/hoge というビューとして作っておいて、Viewに一度アクセスする(FutonでやればOK)。
View の結果ファイルは /${DBDIR}/.${db_name}_design/${design}.view にできあがるので、そのファイルを確認すると、
$ ls -al /opt/local/var/lib/couchdb/.test_data_design/test.view -rw-r--r-- 1 couchdb couchdb 480530 5 16 01:45 /opt/local/var/lib/couchdb/.test_data_design/test.view
オーバーヘッドは40KBと意外と小さい?大きい?。