CouchDB文件的大小

dan*_*ast 3 couchdb

我在ouchdb数据库中具有以下文档:

{
   "_id": "000013a7-4df6-403b-952c-ed767b61554a",
   "_rev": "1-54dc1794443105e9d16ba71531dd2850",
   "tags": [
       "auto_import"
   ],
   "ZZZZZZZZZZZ": "910111",
   "UUUUUUUUUUUUU": "OOOOOOOOO",
   "RECEIVING_OPERATOR": "073",
   "type": "XXXXXXXXXXXXXXXXXXX",
   "src_file": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
Run Code Online (Sandbox Code Playgroud)

如果保存在我的本地文件系统中,则此JSON文件恰好占用319个字节。我的文档都是这样的(给定或占用几个字节,因为某些字段的长度不同)。

在我的数据库中,我目前大约有600万个文档,它们使用15 GB。这样一来,每个文档大约有2.5 KB。这意味着文档在CouchDB上占用的空间是磁盘上的8倍。

这是为什么?

dan*_*ast 5

问题与文档ID的使用方式有关:它不仅存储在文档中,还存储在其他数据结构中。这意味着使用标准UUID(000013a7-4df6-403b-952c-ed767b61554a36个字符)将占用大量磁盘空间。如果冲突是一个小问题,则使用base64可以为1600万个文档(仅包含4个字符)和超过10亿个文档(包含5个字符)进行编号。字典的一个不错的选择是排序(在“查看排序规则”的意义上):

-@0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
Run Code Online (Sandbox Code Playgroud)

使用这种方法,我将数据库的大小从2.5Kbytes / doc减少到0.4Kbytes / doc。我的新数据库仅使用旧数据库的16%的空间,我认为这是一个很大的改进。