پرش به مطلب اصلی

Bloom Filters

میاد مقدار مارو هش میکنه و توی یه خونه میزاره. مقدار اولیه اش ۶۴ بایته و اگر توی اون خونه عدد ۱ باشه یعنی اون توی دیتابیس وجود داره یا یکی هش اش شبیه اشه وجود داره، پس:

اگه بگه مقدار نیست، ۱۰۰٪ مطمئنیم که واقعاً نیست.
اگه بگه مقدار هست، شاید اشتباه کنه و مقدار واقعی توی دیتابیس نباشه. (یعنی False Positive داره)

🔹 به درد جاهایی می‌خوره که می‌خوایم سریع چک کنیم یه چیزی توی دیتابیس هست یا نه، بدون اینکه کل جدول رو بگردیم.


🔢 آیا ۶۴ بایت برای یه جدول ۱ میلیونی کمه؟

ببین، Bloom Filter حافظه رو فوق‌العاده بهینه مصرف می‌کنه، اما دقتش وابسته به سایزشه!
🔹 اگه خیلی کوچیک باشه (مثلاً ۶۴ بایت)، احتمال خطای False Positive بالا می‌ره.


📏 فرمول برای اندازه‌ی Bloom Filter چیه؟

دو تا چیز رو باید در نظر بگیری:

1️⃣یک: n = تعداد آیتم‌هایی که قراره ذخیره کنیم (مثلاً ۱ میلیون رکورد)
2️⃣ دو: p = احتمال خطای False Positive (مثلاً ۱٪)