Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Blocked Bloom Filter (บลูมฟิลเตอร์แบบบล็อก) ในโครงสร้างข้อมูล

Blocked Bloom Filter Overview

  • เลือก Memory Block ก่อน
  • ในแต่ละ Block ใช้ Local Bloom Filter
  • อาจทำให้ Memory Blocks Imbalance
  • Efficient แต่ False Positive Rate (FPR) แย่กว่า Standard
  • ทฤษฎี: Blocked Bloom Filters ควรมี FPR เท่า Standard Bloom Filters ขนาดเดียวกัน
  • ประกอบด้วย Sequence ของ Blocks (b) ขนาดเล็กกว่า Standard (แต่ละ Block Fit 1 Cache Line)
  • ต่างจาก Partition Schemes ที่กระจาย Bits ไป Block ต่างกัน

Implementation Techniques

1. Bit Patterns (pat)

แทน Set k Bits ด้วย k Hash Functions → ใช้ 1 Hash Function เลือก Precomputed Pattern จาก Table ของ Random k-bit Patterns (Width = B)
Table มัก Fit ใน Cache → 1 Small Hash Value + Few SIMD Instructions
Transfer Bloom Filter: Table ไม่ต้อง Include Explicitly → Reconstruct จาก Seed Value

ข้อเสีย: Table Collision (2 Elements Hash ไป Pattern เดียวกัน) → FPR เพิ่มขึ้น

2. Multiplexing Patterns

ปรับปรุง: Bitwise-OR x Patterns ที่มี Average k/x Set Bits → Pattern Variety มากขึ้นจาก Table เดียว

3. Multi-Blocking

Query Access X Bloom Filter Blocks, Set/Test k/X Bits ต่อ Block
(k ไม่หาร X ลงตัว → Set Extra Bit ใน First k mod X Blocks)

ดีกว่าเพียงเพิ่ม Block Size เป็น X×B: Introduce Variety มากขึ้น
Expected 1-bits/Block เหมือนเดิม แต่ Consider แค่ k/X Bits/Block → FPR ดีขึ้น

สรุป

Blocked Bloom Filters = Cache-Friendly Bloom Filters
Techniques: Bit Patterns, Multiplexing, Multi-Blocking
Trade-off: Implementation Simplicity/Cache Efficiency ↔ FPR