gpt4 book ai didi

ios - 压缩适用于 iOS 的加密 SQLite FTS3 数据库

转载 作者:行者123 更新时间:2023-12-02 02:52:22 25 4
gpt4 key购买 nike

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

看起来没有一个很好的方法来压缩加密的 FTS SQLite 数据库。有人对此有什么建议吗?我必须缩小它才能将应用程序保持在 20mb 3g 下载限制以下。

谢谢!

最佳答案

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

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

如果清理数据库不能解决问题,这里有一些后续问题;

  1. 您确定 FTS3 索引不仅仅与文件大小有关吗?
  2. 您是否尝试过在非加密数据库中使用 FTS3 创建完全相同的架构和表结构来比较文件大小,以确保这实际上是 SQLCipher 的问题? FTS3 的非加密数据库是否为 7 MB?
  3. 如果 1 和 2 的答案都是肯定的,您能否提供从未加密数据库转换为加密数据库的具体步骤?

为了回答您的一般问题,SQLCipher 数据库可能无法很好地压缩。如果文件大小增长实际上是 FTS3 而不是 SQLCipher 的结果,那么您可以考虑将数据传输到应用程序上,然后在设备上构建 FTS3 虚拟表。

关于ios - 压缩适用于 iOS 的加密 SQLite FTS3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com