Python3:最小化SQLite3db大小的最佳字符串压缩方法
我最近创建了一个脚本,可以将几个web代理日志解析成一个整洁的sqlite3 db文件,这对我来说非常有用。。。有一个障碍。文件大小。我被要求使用这种格式(SQLite3DB),python像champ一样处理它,所以我的问题是。。。当文件大小是唯一需要考虑的问题时,我可以对db条目使用的字符串压缩的最佳形式是什么。兹利布?base-n?克林贡 任何建议都可以帮助我加载,同样,只需对符合URL的字符进行字符串压缩。这里是一个带有SQLite扩展的示例,用于提供压缩 此扩展提供了一个可以在单个字段上调用的函数 下面是本页的一些示例文本 创建一个测试表 sqlite>创建表测试(名称varchar(20),姓氏varchar(20)) 通过压缩文本向测试表中插入一些文本,也可以压缩二进制文件 内容并将其插入blob字段 sqlite>插入测试值(mycompress(“这是一个示例文本”),mycompress(“这是一个示例文本”) 样本文本); 这并没有显示任何内容,因为我们的数据是二进制格式并经过压缩的 sqlite>从测试中选择* 接下来,它将解压缩数据 sqlite>从测试中选择myuncompress(名称)、myuncompress(姓氏)Python3:最小化SQLite3db大小的最佳字符串压缩方法,python,sqlite,compression,Python,Sqlite,Compression,我最近创建了一个脚本,可以将几个web代理日志解析成一个整洁的sqlite3 db文件,这对我来说非常有用。。。有一个障碍。文件大小。我被要求使用这种格式(SQLite3DB),python像champ一样处理它,所以我的问题是。。。当文件大小是唯一需要考虑的问题时,我可以对db条目使用的字符串压缩的最佳形式是什么。兹利布?base-n?克林贡 任何建议都可以帮助我加载,同样,只需对符合URL的字符进行字符串压缩。这里是一个带有SQLite扩展的示例,用于提供压缩 此扩展提供了一个可以在单个字段
在将其放入数据库之前,您会进行什么样的解析?我得到的印象是,这是相当简单的一个单一的表格容纳每个条目-如果不是,那么我道歉 压缩就是要消除重复,而在日志文件中,大部分重复是在条目之间而不是在每个条目内,因此单独压缩每个条目不会是一个巨大的胜利 这是我的头顶,所以可以自由地在火焰中射击,但是我会考虑把桌子分解成一组较小的桌子来保存入口的各个部分。然后,日志条目主要由一个时间戳(作为日期类型而不是字符串)加上一组其他表的索引(例如,请求IP、请求类型、请求URL、浏览器类型等)组成
这当然会有一个折衷,因为它会使数据库的维护变得更加复杂,但另一方面,它会支持有意义的查询,例如“向我显示上周请求第X页的所有唯一IP”。而不是在程序中插入压缩/解压缩代码,您可以将表本身存储在压缩的驱动器上。听起来好像在a)压缩sqlite db文件和B)压缩插入sqlite db的值之间存在一些混淆。大多数人似乎认为你想要A,但我怀疑你想要B。