Bitmap压缩算法(RLE,ROARING)

本文介绍了Bitmap数据结构及其在大数据量场景下的优势。针对Bitmap在稀疏数据集下的空间浪费问题,文章详细阐述了RLE(Run-Length Encoding)编码,包括WAH、EWAH和CONCISE等压缩算法。最后,文章重点解析了Roaring.Bitmap,它通过将32位整数分组并使用不同容器存储,提高了插入、查询和位运算的效率。Roaring.Bitmap适用于处理大量的稀疏数据,提供了一种高效的压缩解决方案。
摘要由CSDN通过智能技术生成

1、关于bitmap
  bitmap是使用bit位来存储数据的一种结构,当数据有明确的上下界时,我们可以转换到bitmap去存储,比如0~8区间的数,如果使用int来存,则需要耗费32字节大小,如果使用位来存,只需要花费1个字节大小,相差32倍,在大数据量的情况下,比较节约空间,而且索引效率高。
  bitmap的缺点也很明显,首先,当数据比较稀疏时,bitmap显然比较浪费空间,如果要存储整个int32的数据,则需要512MB的空间大小,其次,无法对重复数据进行排序和查找。
  为了解决bitmap在稀疏数据集下浪费空间的问题,出现了几种改进算法,下面将结合实例来讲解。

2、RLE bitmap
  一种常见的思路是 run-length encoding(RLE)编码,其大致思想是对于bitmap中重复的值(很多个0或者很多个1),采用值加上重复出现的次数表示,从而起到压缩的目的。这种算法包括Oracle’s BBC、WAH、EWAH、 Concise等。我们从WAH开始,介绍一下压缩思路的改进
  WAH(Word Aligned Hybrid)是在Fastbit项目中提出的,这个算法的核心在于两点:Word Aligned和Hybrid,其中,Word Aligned利用现代CPU特性:操作Word比Byte效率高,所以首先会以Word为单元对bitmap数组进行分割,而Hybrid思想是对一个Word的数据格式进行分类处理。
  把现存的Word分为两类:literal words和fill words,如果一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值