RoaringBitmap / CRoaring

Roaring bitmaps in C (and C++), with SIMD (AVX2, AVX-512 and NEON) optimizations: used by Apache Doris, ClickHouse, and StarRocks
http://roaringbitmap.org/
Other
1.58k stars 269 forks source link

Implement Bit-sliced index for CRoaring #435

Open Smallhi opened 1 year ago

Smallhi commented 1 year ago

There are implements for bit slice index in java and go. Do we need in C/C++?

I think implementing Bit-sliced index for CRoaring include these tasks:

@lemire we've implemented mutable Bit-sliced index in C and using it for postgres. Due to there are two implements for bit-sliced index, (BSI and RangeBitmap), one is mutable but the performance is poor, the other is immutable ,but the performance is great. Could we make a decision or re-design it ?

cc @ richardstartin

refer to :

  1. https://richardstartin.github.io/posts/range-bitmap-index
  2. https://richardstartin.github.io/posts/range-predicates
  3. https://github.com/RoaringBitmap/RoaringBitmap/tree/master/bsi
  4. https://github.com/lemire/BitSliceIndex/issues/1
lemire commented 1 year ago

Yes, a pull request to provide this functionality in C is invited.

patelprateek commented 1 year ago

@Smallhi : I alos have this use case , any idea when would we be able to merge this implementation. Also i have a noob question : Why is bit sliced index dependent on Rangebitmap implementation ? What exactly is the difference between range index and bit slice index ?