SQLite数据库中的压缩.Net C#

时间:2015-04-29 07:07:15

标签: sqlite compression

可以将BLOB(或任何其他数据)压缩(动态)到SQLite3数据库吗? 我在C#中使用System.Data.SQLite .net 3.5。

在我的搜索中,我一直看到像这样的连接字符串...... “数据源= base.db;版本= 3;压缩= TRUE;”

但我找不到有关compress = true的信息,我已将其添加到我的连接字符串中进行测试并将文件添加为BLOB数据但似乎没有压缩,我已经测试过例如一个大文本文件,所以不是已压缩的图像或其他文件。

1 个答案:

答案 0 :(得分:2)

据我所知," compress = True" System.Data.SQLite.SQLiteConnection字符串中的参数未被考虑在内。

基本上,它有点无用:没有为.NET System.Data.SQLite提供内置压缩。

为了给System.Data.SQLite世界带来一些压缩功能,你基本上有两个选择:

  • 使用一些第三方工具,无论是通过包含其中一个C库还是基于它重建System.Data.SQLite:Proprietary SQLite Extensions: SEE, CEROD, ZIPVFS / SQLite Crypt /等等。商业ORM Devart基于ADO.NET提供了对我刚刚提到的加密选项的支持,似乎它们可以无缝使用(尽管我个人从未尝试过那么多使用Devart)。
  • 围绕System.Data.SQLite创建一个包装器:是否使用一些关于封装数据的标头转换所有数据,并使用一些具有blob数据亲和性的字节集插入所有数据。你也可以顺便提供一些额外的加密过程。当然,这将比可用的C第三方库慢得多,并且可能不够,这取决于你的要求(插入,更新,... ,删除速度),但至少这是免费(和耗时)的方法。这可以通过特定的SQLite ORM实现,不应该那么难实现,但是非常耗时。