我的应用程序使用带有FTS3的SQLite数据库进行产品搜索。我正在尝试使用SQLCipher加密数据库,但它会导致数据库大小膨胀(7mb - > ~20mb)。
看起来压缩加密的FTS SQLite数据库并不是很好的方法。有没有人对此提出建议?我必须缩小它以使应用程序保持在20mb 3g下载限制之下。
谢谢!
答案 0 :(得分:0)
与没有SQLCipher的数据库相比,没有理由使用SQLCipher的数据库那么大。 SQLCipher数据库的每个页面仅使用48个字节的页面用于IV和HMAC。因此,对于1024字节的页面大小,如果您有一个7mb未加密的数据库,SQLCipher加密版本应该只有7.34 MB。
更可能的解释是,由于删除和插入,您的数据库已经增长。如果数据库上未启用auto vacuum,则已删除的行可能会继续占用空间。尝试在数据库上运行VACUUM以回收空间。
如果真空吸尘数据库没有处理它,这里有一些后续问题;
要回答您的一般问题,SQLCipher数据库可能无法很好地压缩。如果文件大小增长实际上是FTS3而不是SQLCipher的结果,那么您可以考虑在应用程序上传输数据,然后在设备上构建FTS3虚拟表。