压缩的Sqlite数据库和索引

fzwojiic  于 2022-11-14  发布在  SQLite
关注(0)|答案(2)|浏览(479)

我读到可以使用像sqlite-zstd这样的扩展来压缩SQLite数据库。
在Sqlite3中,有没有可以在Python中使用的方法,它们允许:

  • 压缩一个文本列(假设有10亿行,至少有一个<20个字符的文本列)
  • 保持本栏有索引时的快速查找(甚至全文搜索,例如LIKE 'foo%')


我本来打算编写一些包含LZ4压缩行的代码,但随后的单次搜索/查找将需要完整扫描(解压缩所有值以查看是否存在匹配)。
是否有适用于此(或其他数据结构)的Sqlite技术?

vh0rcniy

vh0rcniy1#

默认情况下,SQLITE不会压缩它的数据,但他们确实有一些Proprietary SQLite Extensions可以完成所需的工作。ZIPVFS就是这样一个扩展/插件,它允许您使用zlib或任何其他应用程序提供的压缩和解压缩函数来读写压缩数据。

vwoqyblh

vwoqyblh2#

因此,由于最简单的解决方案是由单独压缩的SQLite或拼图文件组成的Trie,但这是一个非常常见的问题,可能会为其构建一种文件格式。
最大的目标是跨前缀维护数据的局部性,并且数据不断变化和未排序。如果只压缩单个SQLite数据库,则每次插入都会导致压缩引擎适应数据中的两次移动。在数据表的末尾,但另一个可能在btree本身的中间。
如果您建议的表是您拥有影子主键的原因。为什么有必要这样做?显然,您的文本是主键,为什么不这样使用它呢?

相关问题