Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为iOS压缩加密的SQLite FTS3数据库_Ios_Sqlite_Fts3_Sqlcipher - Fatal编程技术网

为iOS压缩加密的SQLite FTS3数据库

为iOS压缩加密的SQLite FTS3数据库,ios,sqlite,fts3,sqlcipher,Ios,Sqlite,Fts3,Sqlcipher,我的应用程序使用带有FTS3的SQLite数据库进行产品搜索。我试图使用SQLCipher加密数据库,但这会导致数据库大小膨胀(7mb-->~20mb) 似乎没有什么好方法可以压缩加密的FTS SQLite数据库。有人对此有什么建议吗?我必须缩小它,以保持在20mb的3g下载限制下的应用程序 谢谢 没有理由认为使用SQLCipher的数据库比不使用SQLCipher的数据库大。SQLCipher数据库的每个页面仅使用IV和HMAC页面的48字节。因此,对于1024字节的页面大小,如果您有一个7m

我的应用程序使用带有FTS3的SQLite数据库进行产品搜索。我试图使用SQLCipher加密数据库,但这会导致数据库大小膨胀(7mb-->~20mb)

似乎没有什么好方法可以压缩加密的FTS SQLite数据库。有人对此有什么建议吗?我必须缩小它,以保持在20mb的3g下载限制下的应用程序


谢谢

没有理由认为使用SQLCipher的数据库比不使用SQLCipher的数据库大。SQLCipher数据库的每个页面仅使用IV和HMAC页面的48字节。因此,对于1024字节的页面大小,如果您有一个7mb的未加密数据库,SQLCipher加密版本应该只有7.34MB

更可能的解释是,数据库的增长是删除和插入的结果。如果未在数据库上启用,则删除的行可能会继续占用空间。尝试在数据库上运行以回收空间

如果对数据库进行真空处理不能解决问题,下面是一些后续问题

  • 您确定FTS3索引不仅仅是文件大小的原因吗
  • 您是否尝试过在未加密的数据库中使用FTS3创建相同的模式和表结构来比较文件大小,以确保这实际上是SQLCipher的问题?非加密数据库是否为FTS3 7 MB
  • 如果1和2的答案都是肯定的,您能否提供从未加密数据库转换为加密数据库的确切步骤
    为了回答您的一般问题,SQLCipher数据库可能不会很好地压缩。如果文件大小的增长实际上是FTS3而不是SqLCIPHER的结果,那么您可以考虑在应用程序上传输数据,然后在设备上构建FTS3虚拟表。

    您认为这是因为我正在使用FTS结合邮件列表中的SqLCIPHER发布吗?嘿,史蒂芬-谢谢所有的建议。应用程序大小的一些细分:1。未加密/未压缩FTS:21mb 2。使用FTS未加密/压缩:7mb 3。加密(SQLCipher)/用FTS压缩:22mb我不认为问题出在SQLCipher上——我只是不知道如何加密和压缩到应用程序中可用的大小。啊,现在我明白了,7mb是数据库的压缩大小。谢谢你的澄清。我认为目前没有一个好的压缩解决方案。您如何看待发布内容,然后在设备上构建FTS索引?