私のアプリは、FTS3でSQLiteデータベースを使用して製品検索を行います。SQLCipherを使用してデータベースを暗号化しようとしていますが、データベースのサイズが膨らみます(7mb->〜20mb)。
暗号化されたFTSSQLiteデータベースを圧縮する優れた方法があるようには見えません。誰かがこれについて提案がありますか?アプリを20mb3gのダウンロード制限未満に保つには、縮小する必要があります。
ありがとう!
SQLCipher を使用するデータベースが、SQLCipher を使用しないデータベースと比較してそれほど大きくなる理由はありません。SQLCipher データベースの各ページは、IV と HMAC にページの 48 バイトのみを使用します。したがって、1024 バイトのページ サイズで、7 MB の暗号化されていないデータベースがある場合、SQLCipher で暗号化されたバージョンはわずか 7.34 MB になります。
より可能性の高い説明は、データベースが削除と挿入の結果として大きくなったということです。データベースで自動バキュームが有効になっていない場合、削除された行がスペースを占有し続ける可能性があります。データベースでVACUUMを実行して、スペースを再利用してみてください。
データベースをバキュームしても問題が解決しない場合は、いくつかのフォローアップの質問があります。
一般的な質問に答えると、SQLCipher データベースはおそらく十分に圧縮されません。ファイル サイズの増加が実際には SQLCipher ではなく FTS3 の結果である場合は、アプリでデータを配布してから、デバイスで FTS3 仮想テーブルを構築することを検討できます。