Jaehui Lee created HBASE-29842:
----------------------------------

             Summary: Add Ribbon Filter as an alternative to Bloom Filter
                 Key: HBASE-29842
                 URL: https://issues.apache.org/jira/browse/HBASE-29842
             Project: HBase
          Issue Type: New Feature
            Reporter: Jaehui Lee
            Assignee: Jaehui Lee


This patch implements the Ribbon Filter proposed in HBASE-27266.
h2. Summary

Ribbon Filter is a space-efficient alternative to Bloom Filter, achieving 
approximately ~30% space savings while maintaining comparable query performance.
 - Bloom Filter requires ~9.6 bits/key for 1% FPR (44% overhead vs theoretical 
minimum)
 - Ribbon Filter achieves ~7.3 bits/key for 1% FPR (~10% overhead)

h2. New BloomType Options
 - {{{}RIBBON_ROW{}}}: Row-based Ribbon filter (alternative to {{{}ROW{}}})
 - {{{}RIBBON_ROWCOL{}}}: Row+Column-based Ribbon filter (alternative to 
{{{}ROWCOL{}}})

h3. Usage Example

*HBase Shell:*
{code:java}
create 'mytable', {NAME => 'cf', BLOOMFILTER => 'RIBBON_ROW'}                   
                                                                                
                                                                                
                                                                                
                             
alter 'mytable', {NAME => 'cf', BLOOMFILTER => 'RIBBON_ROWCOL'}                 
                                                                                
                                                                                
                                                                                
                             
{code}
*Java API:*
{code:java}
ColumnFamilyDescriptor cfd = ColumnFamilyDescriptorBuilder                      
                                                                                
                                                                                
                                                                                
                             
  .newBuilder(Bytes.toBytes("cf"))                                              
                                                                                
                                                                                
                                                                                
                           
  .setBloomFilterType(BloomType.RIBBON_ROW)                                     
                                                                                
                                                                                
                                                                                
                           
  .build();                                                                     
                                                                                
                                                                                
                                                                                
                           
{code}
h2. References
 - Paper: [Ribbon filter: practically smaller than Bloom and 
Xor|https://arxiv.org/abs/2103.02515]
 - Design document: 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to