不得不掌握的三种BitMap、roaringbitmap

高猿1年前 ⋅ 1332 阅读

Bitmap 是大数据里面常见的数据结构,简单来说就是按位存储,为了解决在去重场景里面大数据量存储问题,目前在Druid/Spark等使用。在Java中一个字节占用8位,那么就代表可以存储8个数字,存储结构如下:

 

0

0

0

0

0

0

0

0

现在需要存储1与5这两个数字:

 

0

0

1

0

0

0

1

0

 只需要将对应的bit的下标置为1即可,每个bit位对应的下标就表示存储的数据。Java中一个int类型占用4个字节32位,假如说现在有一亿的数据量,使用普通的存储模式需要:100000000*4/1024/1024 约为381.5M的存储;使用bitmap存储模式需要:100000000/8/1024/1024 约为11.9M 的存储,可以看到存储减少了一个量级。

 

引用:

https://mp.weixin.qq.com/s?__biz=MzU5MTc1NDUyOA==&mid=2247484130&idx=1&sn=903afed428973f9e935ccdd46125a6d4&chksm=fe2b66adc95cefbbca512591a7e686ce50cb43cc88fdac6a469ed3bc2b027d28f569badd8a26

http://roaringbitmap.org/

 

全部评论: 0

    相关推荐