BLOB(或任何其他数据)可以(即时)压缩到 SQLite3 数据库中吗? 我在 C# 中使用 System.Data.SQLite,目标是 .net 3.5。
在我的搜索中,我不断看到像这样的连接字符串...... “数据源=base.db;版本=3;压缩=true;”
但是我找不到有关 compress=true 的信息,我已将其添加到我的连接字符串中进行测试,并将文件添加为 BLOB 数据,但似乎没有压缩,我已经使用大型文本文件进行了测试,所以没有已经压缩的图像或其他文件。
据我所知,System.Data.SQLite.SQLiteConnection 字符串中的“compress=True”参数没有被考虑在内。
基本上,它有点无用:没有为 .NET System.Data.SQLite 提供内置压缩。
为了将一些压缩功能引入 System.Data.SQLite 世界,您基本上有两个选择:
我最近创建了一个 sqlite-compressions 扩展,它将
gzip
和 brotli
压缩、解压和测试功能添加到 sqlite 作为扩展(或者您可以直接从 Rust 代码中使用它)。加上另一个扩展中的许多哈希函数。
这将允许您使用 SQL 插入和检索原始数据,同时将其存储为 gzip 或 brotli blob:
INSERT INTO table (..., myblob) VALUES (..., gzip(?))
SELECT gzip_decode(myblob) FROM table