Table of Contents
Bloom Filter는 요소가 설정된 구성원인지 테스트하는 데 사용되는 유연한 데이터 구조입니다. 그들은 공간과 속도 측면에서 효율적이며 빠른 멤버십 쿼리가 허용한 false 긍정적 인 점으로 요구되는 응용 프로그램에 적합합니다.
Bloom Filters 작업 방법
Bloom filter는 비트 어레이와 여러 해시 함수를 사용합니다. 요소가 추가되면, 각 해시 함수는 배열에 위치하여, 그 비트를 1로 설정합니다. 요소가 존재한다면, 동일한 해시 함수가 적용되고, 해당 비트가 검사됩니다. 모든 것이 1로 설정되면 요소가 설정될 가능성이 있습니다. 만약 0이면 반드시 그렇지 않습니다.
Bloom Filters에 대한 계산
false 긍정적인 확률은 비트 어레이 (m)의 크기에 따라, 삽입 요소 (n)의 수, 해시 함수 (k)의 수. false 긍정적인의 확률 (p)는 다음과 같이 대략적으로 일 수 있습니다:
p ≈ (1 - e-kn/m]]]]]k]]
k와 m에 대한 최적의 값은 주어진 n에 대한 false 긍정적 인 최소화 할 수 있습니다. 일반적으로 k는 다음과 같이 선택됩니다.
k = (m/n) * ln 2
Bloom Filters의 사용 사례
Bloom Filter는 다음과 같은 다양한 분야에서 사용됩니다.
- 빠른 회원 테스트에 대한 데이터베이스 시스템
- 디스크 룩업을 줄이기위한 웹 캐싱
- 데이터 동기화를 위한 분산 시스템
- 스팸 필터링을위한 네트워크 보안
Bloom Filters의 제한
효율적인 동안 Bloom 필터는 제한이 있습니다. 그들은 거짓한 긍정적을 일으키지만 거짓한 부정적인 영향을 줄 수 있습니다. 한 번 비트가 1로 설정되면, 그들은 시간이 지남에 따라 부적절한 상태로 이어질 수 없습니다. 또한 추가 데이터 구조없이 개별 요소를 삭제하는 것은 적합하지 않습니다.