zoukankan      html  css  js  c++  java
  • Optimizing Druid with Roaring bitmaps

    这篇主要是说,如何利用compressed bitmap来提升查询性能

    虽然之前有很多bitmap的压缩方案,但是,新提出的Roaring bitmap会更加高效

    参考,Better bitmap performance with Roaring bitmaps

    BitMap,为了有效和compact的表示integer

    只能表示integer,因为下标只能是integer

    为何是compact?

    int是32bit,而32bit的bitmap是可以表示32个int的

    很简单,bitmap有个问题,如果需要表示的integer很稀疏的时候,会有很多空间浪费

    比如,我只需要表示7和37,那我需要一个64bit的bitmap,把第7,37bit设置为1

    这样就没有compact,和直接用integer空间占用是一样的

    所以自然的想法就是要根据integer的稀疏程度来选择是否使用bitmap

    并且这个全局太粗了,所以要分段,不同的分段用不同的策略,

    这个就是Roaring Bitmap的思路,

    对于integer,32bit,分为high-16,和low-16

    high-16用于分段,形成2的16次方的bucket

    low-16如何存储,就取决于bucket中要存储的数据数量,

    如果大于4096,就用bitmap,称为bitmapContainer

    小于4096,就直接存value,称为arrayContainer

    为何是4096,因为直接存储4096个16bit的value的空间,等同于一个2的16次方的bitmap的大小?所以小于4096,不然直接存value

    当然这里根据low-16的情况,可以用其他的各种container来进行更为有效的compact

    感觉论文剩下的部分比较水

  • 相关阅读:
    管理者应有意识地提高以下八项能力
    weblogic调优
    嵌入式软件的基本测试方法
    LoadRunner Interview Questions
    测试类型概念解析
    要是下次他们放手机时戴了手套怎么办?
    外企面试智力题
    贴张我家养的狗狗们的照片!
    一样一句
    软件测试工程师面试英语
  • 原文地址:https://www.cnblogs.com/fxjwind/p/12787264.html
Copyright © 2011-2022 走看看