我的應用程序使用SQLite數據庫與FTS3做產品搜索。我正在嘗試使用SQLCipher加密數據庫,但它會導致數據庫大小膨脹(7mb - >〜20mb)。壓縮加密的SQLite FTS3數據庫的iOS
看起來好像沒有很好的方法來壓縮加密的FTS SQLite數據庫。有沒有人有這方面的建議?我必須縮小它以保持應用程序在20mb 3g下載限制下。
謝謝!
我的應用程序使用SQLite數據庫與FTS3做產品搜索。我正在嘗試使用SQLCipher加密數據庫,但它會導致數據庫大小膨脹(7mb - >〜20mb)。壓縮加密的SQLite FTS3數據庫的iOS
看起來好像沒有很好的方法來壓縮加密的FTS SQLite數據庫。有沒有人有這方面的建議?我必須縮小它以保持應用程序在20mb 3g下載限制下。
謝謝!
沒有理由使用SQLCipher的數據庫與不使用SQLCipher的數據庫相比會更大。 SQLCipher數據庫的每個頁面僅爲IV和HMAC使用48個字節的頁面。因此,對於1024字節的頁面大小,如果您有7mb未加密的數據庫,SQLCipher加密版本應該只有7.34 mb。
更可能的解釋是數據庫因刪除和插入而增長。如果數據庫未啓用auto vacuum,刪除的行可能會繼續佔用空間。嘗試在數據庫上運行VACUUM以回收空間。
如果抽真空數據庫沒有處理它,這裏有一些後續問題;
要回答您的一般問題,SQLCipher數據庫可能無法很好地壓縮。如果文件大小增長實際上是FTS3而不是SQLCipher的結果,那麼您可以考慮在應用中傳送數據,然後在設備上構建FTS3虛擬表。
您是否認爲它是因爲我將FTS與SQLCipher結合使用? – Rangers4me 2012-03-06 00:28:55
從郵件列表跟帖發佈: – 2012-03-06 21:57:26
嘿斯蒂芬 - 感謝您的所有建議。對應用程序大小的幾個故障: 1.未加密/非壓縮與FTS:21MB 2.未加密/壓縮與FTS:7MB 3.加密(SQLCipher)/壓縮與FTS:22MB 我不認爲問題在於SQLCipher - 我只是不知道如何同時加密和壓縮到應用程序內可用的大小。 – Rangers4me 2012-03-07 22:19:39