我读到可以使用像sqlite-zstd这样的扩展来压缩SQLite数据库。
在Sqlite3中,有没有可以在Python中使用的方法,它们允许:
- 压缩一个文本列(假设有10亿行,至少有一个<20个字符的文本列)
- 保持本栏有索引时的快速查找(甚至全文搜索,例如
LIKE 'foo%'
)
?
我本来打算编写一些包含LZ4压缩行的代码,但随后的单次搜索/查找将需要完整扫描(解压缩所有值以查看是否存在匹配)。
是否有适用于此(或其他数据结构)的Sqlite技术?
我读到可以使用像sqlite-zstd这样的扩展来压缩SQLite数据库。
在Sqlite3中,有没有可以在Python中使用的方法,它们允许:
LIKE 'foo%'
)?
我本来打算编写一些包含LZ4压缩行的代码,但随后的单次搜索/查找将需要完整扫描(解压缩所有值以查看是否存在匹配)。
是否有适用于此(或其他数据结构)的Sqlite技术?
2条答案
按热度按时间vh0rcniy1#
默认情况下,SQLITE不会压缩它的数据,但他们确实有一些Proprietary SQLite Extensions可以完成所需的工作。ZIPVFS就是这样一个扩展/插件,它允许您使用zlib或任何其他应用程序提供的压缩和解压缩函数来读写压缩数据。
vwoqyblh2#
因此,由于最简单的解决方案是由单独压缩的SQLite或拼图文件组成的Trie,但这是一个非常常见的问题,可能会为其构建一种文件格式。
最大的目标是跨前缀维护数据的局部性,并且数据不断变化和未排序。如果只压缩单个SQLite数据库,则每次插入都会导致压缩引擎适应数据中的两次移动。在数据表的末尾,但另一个可能在btree本身的中间。
如果您建议的表是您拥有影子主键的原因。为什么有必要这样做?显然,您的文本是主键,为什么不这样使用它呢?