为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊
2017-05-25 15:25
344 查看
看了下压缩算法的发展历史,根据倒排索引的数据结构特点,个人认为zstd不适合做倒排索引压缩,举例说明下:
假设有一份文档倒排列表为:[300, 302, 303, 332],对于这组倒排数据,是没法***直接***采用zstd这类字典压缩算法的,因为里面没有重复数据(字典压缩通常重复数据较多,例如一个重复单词较多的txt文档适合zstd字典压缩)。
但是,如果对他们做差值运算后变为[300, 2, 1, 29],实际上你会发现2,1,29这些数字比原始数据小得多而可以用更少的位数来存储。这就是目前倒排索引使用的压缩算法原理。
综上所述,es里原始数据其实比较适合zstd算法,但是由于其内置了Lz4,替换的价值不大。
补充:
(1)压缩算法的发展历史(见:http://blog.csdn.net/kimylrong/article/details/39405981 ),压缩算法的分类如下:
(2)倒排索引压缩的算法历史(见:http://www.cnblogs.com/bonelee/p/6879663.html )
假设有一份文档倒排列表为:[300, 302, 303, 332],对于这组倒排数据,是没法***直接***采用zstd这类字典压缩算法的,因为里面没有重复数据(字典压缩通常重复数据较多,例如一个重复单词较多的txt文档适合zstd字典压缩)。
但是,如果对他们做差值运算后变为[300, 2, 1, 29],实际上你会发现2,1,29这些数字比原始数据小得多而可以用更少的位数来存储。这就是目前倒排索引使用的压缩算法原理。
综上所述,es里原始数据其实比较适合zstd算法,但是由于其内置了Lz4,替换的价值不大。
补充:
(1)压缩算法的发展历史(见:http://blog.csdn.net/kimylrong/article/details/39405981 ),压缩算法的分类如下:
(2)倒排索引压缩的算法历史(见:http://www.cnblogs.com/bonelee/p/6879663.html )
相关文章推荐
- 【转贴】为什么Google不直接使用一套bigtable来存放网页的倒排索引_浮云随风_新浪博客
- 为什么很多时候我们在传输数据的时候都使用base64编码,因为这样我们可以减少数据量的传输。
- 饼干是这样压缩的――PHP使用zlib扩展实现页面GZIP压缩输出
- 饼干是这样压缩的——PHP使用zlib扩展实现页面GZIP压缩输出
- Zstandard(Zstd)新型压缩算法代替Zlib 简单使用教程
- 使用Zlib实现压缩和解压缩
- 为什么不直接使用Response.Write而要使用Response.Output.WriteLine
- 为什么?这到底是为什么?怎么会这样?天啊!因为什么啊?
- 使用Zlib实现压缩和解压缩
- WPF/Silverlight为什么要使用Canvas.SetLeft()这样的方法?
- 使用zlib/gzip压缩和解压缩?(Flash和GALGAME使用的压缩格式)
- 遗传算法与直接搜索工具箱学习笔记 五-----使用GPS算法寻找一个函数的最小值
- Gzip Zlib PNG 压缩算法 Gzip源码详解 - jiurl的专栏 - CSDNBlog
- VC使用Zlib对内存流进行压缩与解压缩
- .“在JAVA中,异常子类必须在它们任何父类之前使用,因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。这样,后面运行子类的catch语句将永远不会到达。而且,Java中不能到达的代码是一个错误。”
- firefox提示 内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。
- Delphi使用zlib来压缩文件
- 郁闷,母版页为什么会这样?怎么在使用了母版页的情况下使用js?大家帮忙
- 使用zlib来压缩文件-用delphi描述
- Gzip Zlib PNG 压缩算法 Gzip源码详解