Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3:最小化SQLite3db大小的最佳字符串压缩方法_Python_Sqlite_Compression - Fatal编程技术网

Python3:最小化SQLite3db大小的最佳字符串压缩方法

Python3:最小化SQLite3db大小的最佳字符串压缩方法,python,sqlite,compression,Python,Sqlite,Compression,我最近创建了一个脚本,可以将几个web代理日志解析成一个整洁的sqlite3 db文件,这对我来说非常有用。。。有一个障碍。文件大小。我被要求使用这种格式(SQLite3DB),python像champ一样处理它,所以我的问题是。。。当文件大小是唯一需要考虑的问题时,我可以对db条目使用的字符串压缩的最佳形式是什么。兹利布?base-n?克林贡 任何建议都可以帮助我加载,同样,只需对符合URL的字符进行字符串压缩。这里是一个带有SQLite扩展的示例,用于提供压缩 此扩展提供了一个可以在单个字段

我最近创建了一个脚本,可以将几个web代理日志解析成一个整洁的sqlite3 db文件,这对我来说非常有用。。。有一个障碍。文件大小。我被要求使用这种格式(SQLite3DB),python像champ一样处理它,所以我的问题是。。。当文件大小是唯一需要考虑的问题时,我可以对db条目使用的字符串压缩的最佳形式是什么。兹利布?base-n?克林贡

任何建议都可以帮助我加载,同样,只需对符合URL的字符进行字符串压缩。

这里是一个带有SQLite扩展的示例,用于提供压缩

此扩展提供了一个可以在单个字段上调用的函数

下面是本页的一些示例文本

创建一个测试表

sqlite>创建表测试(名称varchar(20),姓氏varchar(20))

通过压缩文本向测试表中插入一些文本,也可以压缩二进制文件 内容并将其插入blob字段

sqlite>插入测试值(mycompress(“这是一个示例文本”),mycompress(“这是一个示例文本”) 样本文本);

这并没有显示任何内容,因为我们的数据是二进制格式并经过压缩的

sqlite>从测试中选择*

接下来,它将解压缩数据

sqlite>从测试中选择myuncompress(名称)、myuncompress(姓氏)


在将其放入数据库之前,您会进行什么样的解析?我得到的印象是,这是相当简单的一个单一的表格容纳每个条目-如果不是,那么我道歉

压缩就是要消除重复,而在日志文件中,大部分重复是在条目之间而不是在每个条目内,因此单独压缩每个条目不会是一个巨大的胜利

这是我的头顶,所以可以自由地在火焰中射击,但是我会考虑把桌子分解成一组较小的桌子来保存入口的各个部分。然后,日志条目主要由一个时间戳(作为日期类型而不是字符串)加上一组其他表的索引(例如,请求IP、请求类型、请求URL、浏览器类型等)组成


这当然会有一个折衷,因为它会使数据库的维护变得更加复杂,但另一方面,它会支持有意义的查询,例如“向我显示上周请求第X页的所有唯一IP”。

而不是在程序中插入压缩/解压缩代码,您可以将表本身存储在压缩的驱动器上。

听起来好像在a)压缩sqlite db文件和B)压缩插入sqlite db的值之间存在一些混淆。大多数人似乎认为你想要A,但我怀疑你想要B。