CouchDB の同じドキュメントに添付ファイルとして最大 2500 枚の画像を保存しています。これらのイメージはハード ドライブで約 15 MB を占め、結果の CouchDB は約 17 MB になります。
このドキュメントを PouchDB 経由でクライアントにプッシュすると、結果のデータベースが 40 MB を超えていることがわかりました。次の手順に従っていくつかのテストを行いました。
X 画像の添付ファイルを CouchDB ドキュメントにアップロードします。
コンパクトなCouchDB
クライアントのキャッシュを完全にクリアする
クライアントをリロードします (私のアプリでは、リロード時にデータを複製します)。
結果は次のとおりです。
number of attached files | Total size (KB) in HD | Inc | Size in Indexed DB | Inc
17 129 207
27 168.2 39.2 267 60
37 219.6 51.4 335 68
47 275.5 55.9 414 79
57 327.7 52.2 493 79
67 384.9 57.2 579 86
77 428.5 43.6 654 75
したがって、次のようです。
PouchDB は、約 2K の制御データを各添付ファイルに追加します。
この制御データは、添付ファイルが追加されると増加します。(1.6K -> 2.3K -> 2.6K -> 2.8K...)
イメージには、CouchDB と PouchDB の両方で content_type:image/png があります。これにより、base64として保存できないことがわかりました。私は正しいですか?
誰もこれを以前に見たことがありますか?誰もそれを回避できましたか?iOS の 50MB のスペース制限内にアプリを収めようとする場合、これは大きな問題です。
編集
先に進み、pouchDB と元のファイルのいくつかの画像のサイズを確認しました。
ファイル 1: 元のサイズ = 7.4K / PouchDB のサイズ = 10.2K
ファイル 2: 元のサイズ = 5.1K / PouchDB のサイズ = 6.8K
したがって、添付ファイルを PouchDB に保存するときのサイズの増加は、制御データ (少なくとも関連性はありません) によるものではなく、バイナリ ファイルがブラウザーの IndexedDB に保存される方法によるものだと思います (これらの計算には Chrome を使用しています)。
では、この PouchDB でのバイナリ サイズの増加を回避するために、何か追加で行う必要があることはありますか?