复制的CouchDB数据库中的data_size不同

时间:2014-11-24 13:24:47

标签: couchdb database-replication

我使用包含有关唱片的信息的测试数据库对CouchDB进行测试。 有关特定时刻数据库的信息如下:

{   
    "db_name":"pink_floyd",
    "doc_count":15,
    "doc_del_count":0,
    "update_seq":18,
    "purge_seq":0,
    "compact_running":false,
    "disk_size":249967,
    "data_size":223234,
    "instance_start_time":"1416540541575948",
    "disk_format_version":6,
    "committed_update_seq":18
}

片刻之后我用curl回复了数据库:

curl -vH 'Content-Type: application/json' -X POST http://127.0.0.1:5984/_replicate -d ' {"source": "pink_floyd", "target": "pink_floyd_replica", "create_target": true, "continuous": true}'

然后(在该时间段内没有任何人使用过任何内容),有关复制数据库的信息是:

{
    "db_name":"pink_floyd_replica",
    "doc_count":15,
    "doc_del_count":0,
    "update_seq":15,
    "purge_seq":0,
    "compact_running":false,
    "disk_size":229487,
    "data_size":223198,
    "instance_start_time":"1416543583594649",
    "disk_format_version":6,
    "committed_update_seq":15
}

我能理解" disk_size"原始数据库的字段大于复制数据库的同一字段,但我看不出为什么原始数据库" data_size"比新的更大。包括哪些字段和元数据?它是如何计算的?

来自CouchDB docs

  • data_size(number) - 数据库数据的实际数据大小(以字节为单位)。
  • disk_size(number) - 存储在磁盘上的数据的字节大小。视图索引不包括在计算中。

...那么什么是"数据库数据的实际数据大小(以字节为单位)"

1 个答案:

答案 0 :(得分:2)

data_size不仅与所有存储文档的摘要大小有关。它还涉及复制检查点(存储在_local docs中),数据库文件头,安全对象和一些其他属性。复制只传输文档(不包括_local文档),所以源和目标data_size不同并不奇怪。