RoaringBitmap

RoaringBitmap是一种高效的位图数据结构,通过独特的索引方式和三种容器(ArrayContainer,BitmapContainer,RunContainer)的智能切换,有效提升位图的内存使用效率。适用于大数据场景下的位图操作。

GITHUB实现地址

RoaringBitmap

RoaringBitmap是最近刚刚看到的一个压缩位图数据结构,可以有效的提升位图的内存使用效率,整个算法基本结构并不复杂,对于2^32位的数据, 将数据分成两部分做索引,高16位主要用来用来索引container, container中存放低16位数据, 其中container的实现分成三种,ArrayContainer, BitmapContainer, RunContainer

ArrayContainer

是用一个数组来存储一个short整数, 每次插入需要使用二分查找,插入数据的时候需要进行数组拷贝,适用于数量比较稀疏的场景,数据没有压缩

BitmapContainer

当ArrayContainer的数量超过4096(可以自行计算一下存储效率)的时候,ArrayContainer变成一个BitmapContainer, BitmapContainer是一个是用位图存储,这个时候数据是压缩的

RunContainer

RunContainer比较时候存储连续数据,比如11,12,13,14,15 压缩后的数据就是11,5,

总结

RoaringBitmap是一个效率比较高的位图实现,这里只是一个简单的介绍,具体的实现可以参考github上的开源实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值