2012-03-04 16 views
2

私のアプリは、FTS3でSQLiteデータベースを使用して製品検索を行います。 SQLCipherを使用してデータベースを暗号化しようとしていますが、データベースサイズがバルーンになります(7MB→20MB)。暗号化されたSQLiteの圧縮iOS用FTS3データベース

暗号化されたFTS SQLiteデータベースを圧縮する素晴らしい方法はありません。誰にもこれに関する提案はありますか?私はアプリを20MB 3gのダウンロード制限の下に保つためにそれを縮小しなければならない。

ありがとうございます!

答えて

0

SQLCipherを使用しないデータベースと比較して、SQLCipherを使用するデータベースがそれほど大きくない理由はありません。 SQLCipherデータベースの各ページは、IVおよびHMAC用に48バイトのページしか使用しません。したがって、1024バイトのページ・サイズでは、暗号化されていないデータベースが7MBの場合、SQLCipherで暗号化されたバージョンは7.34MBになります。

あなたのデータベースは、削除と挿入の結果として増加している可能性が非常に高いです。 auto vacuumがデータベースで有効になっていない場合、削除された行は引き続き領域を占める可能性があります。スペースを再利用するには、VACUUMをデータベース上で実行してみてください。

データベースを掃除しても問題が解決しない場合は、以下のような質問があります。

  1. FTS3インデックスは、単にファイルサイズの責任を負いませんか?
  2. 暗号化されていないデータベースにFTS3と同じ厳密なスキーマとテーブル構造を作成してみましたが、ファイルサイズを比較して実際にSQLCipherに問題がないことを確認しましたか? FTS3非暗号化データベースは7MBですか?
  3. 1と2の回答が両方ともyesの場合、暗号化されていないデータベースから暗号化されたデータベースへの変換方法を正確に記述してください。

一般的な質問に答えるために、SQLCipherデータベースはおそらくうまく圧縮されません。ファイルサイズの増加が実際にはSQLCipherではなくFTS3の結果である場合は、アプリでデータを出荷してデバイスにFTS3仮想テーブルを作成することを検討できます。

+0

私はSQLCipherと組み合わせてFTSを使用していると思いますか? – Rangers4me

+0

メーリングリストから投稿するフォローアップ: –

+0

Hey Stephen - すべてのアドバイスをいただき、ありがとうございます。アプリのサイズには、いくつかの内訳: 1.暗号化されていない/非圧縮FTSと:21メガバイト 2. FTSで圧縮/暗号化されていない:FTSで圧縮 3.暗号化された(SQLCipher)/ 7MB:22メガバイト 私は考えていませんSQLCipherに問題があります - 私はちょうど暗号化とアプリケーション内で使用可能なサイズに圧縮する方法の知らない。 – Rangers4me

関連する問題