블룸 필터(Bloom Filter)는 “이 값을 본 적이 있는가”라는 질문에 아주 적은 메모리로 답하는 확률적 자료구조다. 대용량 저장소 앞단에서 불필요한 디스크 조회를 걸러내는 데 쓰이기 때문에 분산 시스템과 데이터베이스 영역에서 자주 거론되며, 정보관리기술사 같은 서술형 시험에서 해시, 확률, 공간 효율의 트레이드오프를 한 번에 묻기 좋은 소재다.
블룸 필터는 m비트짜리 배열과 k개의 서로 독립적인 해시 함수로 구성된다. 원소를 넣을 때는 k개 해시값이 가리키는 비트를 모두 1로 만들고, 질의할 때는 그 k개 비트를 읽어 하나라도 0이면 “확실히 없음”, 전부 1이면 “있을 수도 있음”으로 판정한다. 핵심 키워드는 거짓 음성(false negative) 없음, 거짓 양성(false positive) 존재, 원소 삭제 불가(기본형)이다.
| 구성요소 | 의미 | 값을 키우면 |
|---|---|---|
| m (비트 수) | 배열 크기 | 비트가 덜 겹쳐 거짓 양성 감소, 메모리 증가 |
| n (원소 수) | 삽입된 원소 개수 | 1인 비트 비율이 올라 거짓 양성 증가 |
| k (해시 수) | 원소당 설정 비트 수 | 처음엔 감소, 너무 크면 배열이 빨리 차 오히려 증가 |
거짓 양성률은 근사식 p ≈ (1 − e^(−kn/m))^k 로 표현한다. 이 식을 k에 대해 최소화하면 최적 해시 수 k = (m/n)·ln 2 가 나오고, 이때 배열의 약 절반이 1이 된다. 목표 확률 p에서 필요한 크기는 m/n = −ln p / (ln 2)^2, 즉 원소당 비트 수로 환산된다.
n = 1,000, m = 10,000(원소당 10비트)이면 최적 k = 10 × 0.693 ≈ 6.93이므로 k = 7을 쓴다. 근사식에 대입하면 p ≈ (1 − e^(−0.7))^7 ≈ 0.0082, 약 0.82%다. 같은 m에서 k = 1이면 약 9.5%, k = 3이면 약 1.7%로 k를 늘릴수록 좋아지다가 k = 10에서는 약 1.0%로 다시 나빠진다(파이썬으로 검산). 정확식 (1 − (1 − 1/m)^(kn))^k 로 계산해도 0.0082로 같다. 거짓 양성률 1%를 목표로 하면 원소당 약 9.6비트(약 1.2바이트)가 필요하므로, 1억 개 키라면 약 120MB 수준이다. 키 자체를 저장하는 해시 집합과 비교하면 훨씬 작다.
| 기법 | 원리 | 장점 | 한계 |
|---|---|---|---|
| 표준 블룸 필터 | 비트 배열과 k개 해시 | 단순하고 매우 작음 | 삭제 불가, 원소 수 증가 시 오탐 증가 |
| 카운팅 블룸 필터 | 비트 대신 작은 카운터 사용 | 삭제 가능 | 메모리가 카운터 폭만큼 증가, 카운터 오버플로 주의 |
| 스케일러블 블룸 필터 | 가득 차면 더 엄격한 필터를 추가 | 원소 수를 몰라도 사용 가능 | 질의 시 여러 필터 확인, 구현 복잡 |
| 쿠쿠 필터 | 지문(fingerprint)을 버킷에 저장 | 삭제 지원, 낮은 오탐률 목표에서 공간 유리 | 삽입 실패(재배치 한계) 처리 필요 |
실무에서는 LSM 트리 기반 저장소(Bigtable 계열, Cassandra, HBase 등)가 SSTable 파일에 키가 없음을 먼저 확인해 디스크 읽기를 줄이는 데 블룸 필터를 쓴다. 크롤러의 중복 URL 검사, 캐시 앞단의 없는 키 조회 차단도 같은 발상이다. 반대로 거짓 양성을 허용할 수 없는 용도(결제, 권한 판정의 최종 근거)나 원소를 나열해야 하는 용도에는 맞지 않는다. 답안에는 정의, 동작 흐름, 오탐률 식과 최적 k, 변형 비교, 적용 사례와 한계를 순서대로 담고 그림 하나를 곁들이면 구성이 갖춰진다.
블룸 필터 = m비트 + k해시, “없음”은 확정, “있음”은 확률, 최적 k = (m/n)·ln 2, 오탐 1%에 원소당 약 9.6비트.
이 글은 학습용 정리이며 실제 시험 문항과 다를 수 있다. 출제 기준은 큐넷·KISA·한국데이터산업진흥원 등 공식 공지를 확인하라. 그림은 개념도 및 계산값 그래프로 실측 데이터가 아니다.
정해진 무게만 담을 수 있는 가방에 가치가 가장 크도록 물건을 고르는 문제는 예산 배분, 서버…
서울 아파트값이 89주째 올랐다는 소식과 강남구·서초구가 11주째 내렸다는 소식이 같은 주에 나왔습니다. 모순처럼 보이지만 둘…
처음 만난 두 사람이 모두가 듣고 있는 자리에서 대화하면서도 둘만 아는 비밀 키를 만들 수…
내비게이션이 가장 빠른 길을 찾고, 라우터가 패킷을 보낼 경로를 정할 때 바탕에 있는 생각은 같습니다.…
서버에 작업을 하나 더 얹었을 뿐인데 갑자기 전체가 느려지고, 정작 CPU 사용률은 바닥으로 떨어지는 경우가…