Couchdb如何存储重复的附件?
我有一个CouchDB数据库,它主要存储文档附件 文件在数据库中排序,URL结构如下: /db name/numeric file id/official-human-readable-file-name.ext 一个文档始终只有一个附件。 今天,我计算了所有文件的md5总和,似乎其中有许多是重复的 我想知道couchdb是否知道重复的附件,并且在内部只存储指向文件的某种指针,并跟踪引用计数,或者只是按原样存储每个附件Couchdb如何存储重复的附件?,couchdb,Couchdb,我有一个CouchDB数据库,它主要存储文档附件 文件在数据库中排序,URL结构如下: /db name/numeric file id/official-human-readable-file-name.ext 一个文档始终只有一个附件。 今天,我计算了所有文件的md5总和,似乎其中有许多是重复的 我想知道couchdb是否知道重复的附件,并且在内部只存储指向文件的某种指针,并跟踪引用计数,或者只是按原样存储每个附件 我的意思是,如果我把5个相同的100MB文件作为附件,数据库会使用100MB
我的意思是,如果我把5个相同的100MB文件作为附件,数据库会使用100MB还是500MB?我在CouchDB文档中也找不到这个问题的直接答案,所以我设计了一个简单的实证测试(使用CouchDB 1.4): 实验: 我增量添加了3个文档,每个文档都有几个大的(多MB)附件,这些附件在文档之间是相同的。然后,在每次插入文档后,我检查了生成的db.coach文件在磁盘上的大小 结果: db.coach文件的容量从8MB增加到16MB,第1、第2和第3次文档插入分别增加到24MB。因此,CouchDB确实而不是似乎在消除不同文档上相同附件的重复数据。添加三个文档后手动压缩数据库不会对文件大小产生任何影响,因此一些后台维护过程也不太可能注意到/修复这一点 鉴于以下三个观察结果,缺少附件重复数据消除是一个奇怪的遗漏: