핵심 인사이트 (3줄 요약)
- 본질: 블룸 필터(Bloom Filter)는 원본 데이터를 저장하지 않고 비트 배열과 해시 함수로 집합 포함 여부를 빠르게 추정하는 확률적 자료구조다.
- 가치: "없다"는 답을 빠르게 얻어 디스크 I/O를 줄이고, LSM Tree 기반 저장소의 읽기 병목을 완화한다.
- 판단 포인트: 거짓 양성(False Positive)은 허용되지만 거짓 음성(False Negative)은 없어야 하며, 삭제가 필요하면 Counting Bloom Filter를 고려해야 한다.
Ⅰ. 개요 및 필요성
LSM Tree 계열 저장소는 쓰기를 빠르게 하려고 SSTable을 많이 만든다. 그런데 읽을 때는 후보 파일을 많이 뒤져야 하므로 디스크 I/O가 폭증한다.
블룸 필터는 "이 파일에 그 키가 절대 없다"를 아주 싸게 판별해, 불필요한 디스크 접근을 막는다. 즉, 읽기 패널티를 줄이는 문지기 역할이다.
- 📢 섹션 요약 비유: 건물마다 문을 다 열어 보지 않아도 경비원이 명부를 보고 바로 아니라고 알려 주는 것과 같다.
Ⅱ. 아키텍처 및 핵심 원리
블룸 필터는 비트 배열(Bit Array)과 여러 해시 함수로 동작한다. 데이터를 넣을 때는 여러 비트를 1로 바꾸고, 조회할 때는 그 비트들이 모두 1인지 확인한다.
데이터 추가
↓
해시 1, 해시 2, 해시 3
↓
비트 배열의 여러 칸을 1로 설정
↓
조회 시 모든 칸이 1이면 "있을 수도"
| 요소 | 의미 |
|---|---|
| Bit Array | 0/1만 가진 저장 공간 |
| Hash Functions | 위치를 찍는 함수들 |
| False Positive | 없는데 있다고 나오는 경우 |
| False Negative | 블룸 필터에서는 없어야 하는 경우 |
수학적으로는 m(비트 수), k(해시 수), n(원소 수)의 조합이 성능을 결정한다. 비트가 너무 작으면 전부 1로 차버리고, 해시 수가 맞지 않으면 거짓 양성이 늘어난다.
- 📢 섹션 요약 비유: 여러 도장을 찍어 놓고, 하나라도 빈칸이 있으면 "절대 안 왔다"라고 바로 판단하는 방식이다.
Ⅲ. 비교 및 연결
블룸 필터는 정확한 저장 구조가 아니라 빠른 판별 구조다.
| 방식 | 장점 | 한계 |
|---|---|---|
| 해시 집합 | 정확함 | 메모리 사용 큼 |
| 블룸 필터 | 매우 빠르고 메모리 효율적 | False Positive 가능 |
| Counting Bloom Filter | 삭제 가능 | 메모리와 복잡도 증가 |
특히 Cassandra, HBase, RocksDB 같은 시스템에서 SSTable 앞단 필터로 자주 쓰인다. 즉, 블룸 필터는 디스크를 열어보기 전에 "열 필요 없는 파일"을 걸러 주는 1차 관문이다.
- 📢 섹션 요약 비유: 우편함 목록을 먼저 훑어보고, 없다고 나오면 굳이 집 문을 두드리지 않는 것이다.
Ⅳ. 실무 적용 및 기술사 판단
블룸 필터는 메모리와 정확도의 균형이 핵심이다. 같은 데이터라도 비트 배열을 크게 잡으면 거짓 양성이 줄어든다.
체크리스트
- False Positive 허용 범위가 정해져 있는가?
- 원소 수
n과 비트 수m이 맞게 설계되었는가? - 삭제가 필요하면 Counting Bloom Filter가 필요한가?
- 디스크 I/O 절감 효과가 실제 병목과 맞는가?
안티패턴
-
비트 배열이 부족해 모든 값이 1이 되는 설계
-
삭제가 필요한데 일반 Bloom Filter만 쓰는 설계
-
메모리 절감보다 거짓 양성 증가를 더 크게 만드는 설계
-
📢 섹션 요약 비유: 경비실 명부가 너무 작으면 결국 누구를 물어봐도 다 들어오게 된다.
Ⅴ. 기대효과 및 결론
블룸 필터는 "아닌 것"을 빨리 걸러서 디스크를 덜 읽게 만드는 장치다. 그래서 대규모 저장소에서 읽기 성능을 살리는 데 효과적이다.
다만 완전한 정답을 주는 도구는 아니므로, 정확한 자료구조와 함께 써야 한다. 결국 블룸 필터는 성능 최적화용 1차 필터로 기억하면 된다.
- 📢 섹션 요약 비유: 서랍을 다 열기 전에 먼저 "이 서랍은 아니야"라고 골라주는 빠른 탐색 도구다.
관련 개념 맵
LSM Tree / SSTable
↓
블룸 필터
↓
False Positive 관리
↓
디스크 I/O 절감
관련 키워드 및 발전 흐름도
랜덤 I/O 병목
↓
확률적 집합 판별
↓
Bloom Filter
↓
Counting Bloom Filter
↓
LSM 기반 읽기 최적화
어린이를 위한 3줄 비유 설명
블룸 필터는 친구가 왔는지 빠르게 확인하는 명부예요.
없다고 나오면 진짜 없다고 믿어도 돼요.
하지만 있다고 나와도 한 번 더 확인해야 할 때가 있어요.