SQLCipherを使用しないデータベースと比較して、SQLCipherを使用するデータベースがそれほど大きくない理由はありません。 SQLCipherデータベースの各ページは、IVおよびHMAC用に48バイトのページしか使用しません。したがって、1024バイトのページ・サイズでは、暗号化されていないデータベースが7MBの場合、SQLCipherで暗号化されたバージョンは7.34MBになります。
あなたのデータベースは、削除と挿入の結果として増加している可能性が非常に高いです。 auto vacuumがデータベースで有効になっていない場合、削除された行は引き続き領域を占める可能性があります。スペースを再利用するには、VACUUMをデータベース上で実行してみてください。
データベースを掃除しても問題が解決しない場合は、以下のような質問があります。
- FTS3インデックスは、単にファイルサイズの責任を負いませんか?
- 暗号化されていないデータベースにFTS3と同じ厳密なスキーマとテーブル構造を作成してみましたが、ファイルサイズを比較して実際にSQLCipherに問題がないことを確認しましたか? FTS3非暗号化データベースは7MBですか?
- 1と2の回答が両方ともyesの場合、暗号化されていないデータベースから暗号化されたデータベースへの変換方法を正確に記述してください。
一般的な質問に答えるために、SQLCipherデータベースはおそらくうまく圧縮されません。ファイルサイズの増加が実際にはSQLCipherではなくFTS3の結果である場合は、アプリでデータを出荷してデバイスにFTS3仮想テーブルを作成することを検討できます。
私はSQLCipherと組み合わせてFTSを使用していると思いますか? – Rangers4me
メーリングリストから投稿するフォローアップ: –
Hey Stephen - すべてのアドバイスをいただき、ありがとうございます。アプリのサイズには、いくつかの内訳: 1.暗号化されていない/非圧縮FTSと:21メガバイト 2. FTSで圧縮/暗号化されていない:FTSで圧縮 3.暗号化された(SQLCipher)/ 7MB:22メガバイト 私は考えていませんSQLCipherに問題があります - 私はちょうど暗号化とアプリケーション内で使用可能なサイズに圧縮する方法の知らない。 – Rangers4me