도구스개발

블룸 필터 크기 계산기

원소 수와 목표 오탐률을 넣으면 필요한 비트 배열 크기와 해시 함수 개수를 계산합니다. 원소당 비트 수가 원소 개수와 무관하게 오탐률만으로 정해진다는 것을 표로 확인할 수 있습니다.

없는데 있다고 답할 확률입니다. 있는데 없다고 하는 일은 없습니다.

%
바이트

그대로 담았을 때와 비교하려는 값입니다. 0으로 두면 비교하지 않습니다.

필요한 비트 배열 크기

1.14 MB

9,585,058비트 · 해시 함수 7개

원소 하나당 비트9.59비트
최적 해시 개수6.64개 → 7개
해시 7개로 쓸 때 실제 오탐률1.004%
오탐 한 번까지 평균 조회100회
그대로 담으면30.52 MB
몇 분의 1인가26.71분의 1
원소당 비트 수는 오탐률만으로 정해집니다 — 원소 개수와 무관합니다. m/n = −ln p ÷ (ln2)²이라 n이 아예 들어가지 않습니다. 원소가 100개든 100억 개든 하나당 9.59비트가 필요합니다. 그래서 규모를 키울 때 메모리가 정확히 비례해 늘고, 미리 계산해 둘 수 있습니다. 최적 해시 개수도 같습니다 — k = −log₂ p이므로 6.64개입니다.
오탐률원소당 비트해시이 규모의 크기
10%4.793585.03 KB
1%9.5971.14 MB
0.1%14.38101.71 MB
0.01%19.17132.29 MB
0.001%23.96172.86 MB
오탐률을 10분의 1로 줄일 때마다 4.79비트가 더 듭니다. 표에서 보듯 4.79비트씩 일정하게 늘어납니다. 곱하기가 아니라 더하기라서, 오탐률을 100배 낮춰도 메모리는 두 배가 채 되지 않습니다. 지금 규모에서 1%를 0.01%로 바꾸면 1.14 MB에서 2.29 MB이 됩니다.
틀리는 방향이 하나뿐입니다. 블룸 필터는 없는 것을 있다고 할 수는 있어도 있는 것을 없다고 하지는 않습니다. 그래서 “없다”는 답은 언제나 믿을 수 있고, “있다”는 답만 실제로 확인하면 됩니다. 캐시 앞에 두어 디스크를 안 두드리게 하거나 이미 본 항목을 거르는 데 쓰는 이유입니다. 지금 설정이면 오탐이 한 번 나오기까지 평균 100번을 조회합니다.
삭제할 수 없습니다. 비트를 0으로 되돌리면 그 비트를 함께 쓰는 다른 원소까지 지워져, 오탐이 아니라 누락이 생깁니다. 삭제가 필요하면 비트 대신 카운터를 두는 카운팅 블룸 필터를 쓰는데 메모리가 보통 네 배 듭니다. 담은 것이 무엇인지, 몇 개인지도 알 수 없습니다 — 되꺼낼 수 없다는 것이 이 자료구조가 이렇게 작은 이유입니다.
지금 크기 그대로 두고 오탐률만 10%까지 허용하면 원소를 1,741,528개까지 담을 수 있습니다. 반대로 원소가 늘면 오탐률이 함께 오르므로, 실제 서비스에서는 예상 최대 개수로 설계하고 넘어서면 새로 만들어 갈아끼웁니다.

사용 방법

  1. 1담을 원소 수를 넣습니다.
  2. 2목표 오탐률을 고릅니다. 없는 것을 있다고 답할 확률이며, 있는 것을 없다고 하는 일은 없습니다.
  3. 3필요한 비트 배열 크기와 해시 함수 개수를 확인합니다.
  4. 4원소 하나의 크기를 넣으면 그대로 담았을 때와 몇 배 차이인지 함께 나옵니다.

자주 묻는 질문

m = −n·ln p ÷ (ln2)²입니다. n은 담을 원소 수, p는 목표 오탐률입니다. 해시 함수 개수는 k = −log₂ p로 정하며, 이 k가 오탐률을 최소로 만듭니다. 원소 100만 개를 오탐률 1%로 담으려면 약 9,585,058비트, 곧 1.14MB에 해시 7개가 필요합니다.

오탐률에 따라 정해지고 원소 개수와는 무관합니다. 10%면 4.79비트, 1%면 9.59비트, 0.1%면 14.38비트, 0.01%면 19.17비트입니다. 식 m/n = −ln p ÷ (ln2)²에 n이 아예 들어가지 않기 때문이며, 오탐률을 10분의 1로 줄일 때마다 정확히 4.79비트씩 더 듭니다.

한 방향으로만 틀립니다. 없는 것을 있다고 답할 수는 있어도(오탐), 있는 것을 없다고 하지는 않습니다. 그래서 "없다"는 답은 언제나 믿을 수 있고 "있다"는 답만 실제로 확인하면 됩니다. 캐시나 디스크 조회 앞에 두는 이유가 이것입니다.

표준 블룸 필터는 지울 수 없습니다. 비트를 0으로 되돌리면 그 비트를 함께 쓰는 다른 원소까지 지워져, 오탐이 아니라 누락이 생기기 때문입니다. 삭제가 필요하면 비트 대신 카운터를 두는 카운팅 블룸 필터를 쓰는데 메모리가 보통 네 배 듭니다.

오탐률 곡선이 최적점 근처에서 평평하기 때문입니다. 최적 k를 정수로 반올림하면 오탐률이 목표보다 1% 안쪽으로만 나빠집니다. 예를 들어 목표 1%의 최적 k는 6.64인데, 7로 올리면 실제 오탐률이 1.004%가 됩니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 오탐률 식 p = (1 − e^(−kn/m))^k는 해시 함수가 서로 독립이고 비트를 고르게 흩뿌린다고 가정합니다. 실제 해시가 치우치면 오탐률이 이보다 높아집니다.
  • 크기 표기는 1024진법입니다(1KB = 1,024바이트). 데이터 용량 변환기와 같은 관행입니다.
  • 원소가 설계한 개수를 넘으면 오탐률이 함께 오릅니다. 예상 최대 개수로 설계하고, 넘어서면 더 큰 필터를 새로 만들어 갈아끼우는 것이 보통입니다.
  • 블룸 필터는 담은 것이 무엇인지, 몇 개인지 알려 주지 않습니다. 되꺼낼 수 없다는 것이 이 자료구조가 이렇게 작은 이유입니다.

함께 보면 좋은 도구

마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.