Bloom Filter Folding with Optimized Fold Count for False Positives

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Bloom filters face challenges in determining an optimal size prior to inserting members into a set, as resizing is not reversible, leading to inefficiencies in false positive rates and storage capacity.

Innovation Solution

The method involves determining an initial size based on dataset properties and simulating fold operations to reduce the Bloom filter size while monitoring the false positive rate, allowing for optimal folding and storage capacity optimization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the Bloom filter size is increased, then the false positive rate decreases, but the storage capacity increases

Engineering Contradiction:
Improvefalse positive rateVSAvoidstorage capacity
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The Bloom filter is divided into multiple segments or folds, where each segment can be independently processed. This segmentation allows the filter to maintain lower false positive rates by distributing hash function mappings across segments, while the overall storage requirement is managed by only loading necessary segments into memory, thus resolving the contradiction between reliability and storage capacity.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If the Bloom filter size is decreased, then the storage capacity is reduced, but the false positive rate increases

Engineering Contradiction:
Improvestorage capacityVSAvoidfalse positive rate
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The Bloom filter implementation uses dynamic segment loading where segments are loaded into memory on-demand based on query patterns and available resources. This dynamic approach allows the system to maintain a large virtual filter size for low false positive rates while only occupying minimal physical storage capacity by loading only necessary segments, thus resolving the contradiction between storage capacity and reliability.

Inventive Principle:
Principle #15Dynamics

3Ease of manufacture

If the Bloom filter size is determined before inserting members, then the filter can be optimized for expected data, but the filter cannot be resized if the actual data size differs

Engineering Contradiction:
Improvefilter configurationVSAvoidfilter resizing capability
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The Bloom filter is implemented as a dynamic structure with segments that can be loaded and unloaded from memory based on actual data insertion patterns. This allows the filter to adapt its effective size during runtime, combining the benefits of pre-configured optimization with the flexibility to adjust to actual data sizes, thus resolving the contradiction between ease of manufacture and adaptability.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

By dividing the Bloom filter into multiple segments, the system can dynamically load only the necessary number of segments based on actual data size and available memory. This segmentation enables both pre-configured optimization for expected data sizes and adaptive resizing for actual data sizes, resolving the contradiction between ease of manufacture and adaptability.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS20240356535A1Bloom filter folding using an optimized fold count
Publication Date: 2024.10.24 WORKDAY INC
  • US20240356535A1 patent drawing
  • US20240356535A1 patent drawing
  • US20240356535A1 patent drawing

AI summary

In some aspects, the techniques described herein relate to a method including: receiving a Bloom filter, the Bloom filter having an initial size and a first number of bits set; computing a number of folds for the Bloom filter by simulating a plurality of fold operations using the initial size and the first number of bits set; executing fold operations on the Bloom filter based on the number of folds to generate a folded Bloom filter, the folded Bloom filter having a size smaller than the initial size; and storing the folded Bloom filter.