また、CouchDB ドキュメントでこの質問に対する直接的な回答を見つけることができなかったので、簡単な経験的テストを考案しました (CouchDB 1.4 を使用):
実験:
3 つのドキュメントを段階的に追加しました。各ドキュメントには、ドキュメント間で同一の複数の大きな (マルチ MB) 添付ファイルが含まれていました。次に、ドキュメントを挿入するたびに、結果の db.couch ファイルのディスク上のサイズを調べました。
結果:
db.couch ファイルは、1 回目、2 回目、3 回目のドキュメント挿入でそれぞれ 8MB から 16MB に、次に 24MB に増加しました。そのため、CouchDB は異なるドキュメントの同一の添付ファイルを重複排除していないようです。3 つのドキュメントが追加された後にデータベースを手動で圧縮しても、ファイル サイズに違いはありませんでした。そのため、バックグラウンド メンテナンス プロセスによって、これに気付いたり修正されたりすることもほとんどありません。
この添付ファイルの重複排除の欠如は、次の 3 つの観察結果を考えると、興味深い省略です。
作成者は、大きな添付ファイルを効率的に処理することに十分な関心を持っていたので、保存された添付ファイルの自動 gzip 圧縮を追加しました (何らかのテキスト コンテンツを示す MIME タイプを使用する場合)。
添付ファイルを追加すると、MD5 ダイジェストが計算され、添付ファイルのメタデータと共に保存されます。
CouchDB は、DB にまだ保持されている同じドキュメントの複数のリビジョン間で共有されている同一の添付ファイルを重複排除しているようです (おそらく MD5 ダイジェストの 1 つの使用)。
これらの要因を考慮すると、CouchDB がこの点でよりインテリジェントではないことは驚くべきことです。