2012-07-03 46 views
3

我正在考虑将MySql compress()函数应用到varchar字段,并且趋向于从几千个字符运行到每列超过一百万。文本几乎是正常的英文,所以我得到了8比1或更好的压缩。由于我拥有数百万条记录,并且很少想要真正查看数据,所以压缩似乎是一个很好的工程折衷。需要与MySQL兼容compress()/ decompress()for Java

我需要在Java中完成大部分的处理,并且有很好的zip,gzip和bzip2实现。这很酷。

但我真的很想能够使用标准的MySQL客户端做的查询,如

选择解压缩(longcolumn)其中...

所以我想我的Java代码使用相同的或兼容的压缩算法作为内置函数。我发现的文档说“编译与压缩库,如zlib”

这是有点含糊,我怎么能确切地知道要使用什么?

===编辑== 要清楚,我希望能够用“mysql的”客户端程序做调试,所以像:

选择解压缩(longcolumn),其中...

根本不使用Java。但我想要使用JDBC进行更新和插入。 和主线用法,必须先获取压缩的博客,然后解压。某种包装或ZipInputStream很好。

回答

2

我不能肯定,但我会尽量只包裹输出与InflaterInputStream()

ResultSet resultSet = statement.executeQuery("SELECT blobfield FROM table"); 
InputStream stream = new InflaterInputStream(resultSet.getBlob(1).getBinaryStream()); 

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/zip/InflaterInputStream.html被转移到https://docs.oracle.com/javase/7/docs/api/java/util/zip/InflaterInputStream.html

我这篇文章可能是有趣的,你还有: http://www.mysqlperformanceblog.com/2012/05/30/data-compression-in-innodb-for-text-and-blob-fields/