RoaringBitmap

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上的开源实现。

你可能感兴趣的:(数据结构)