- আমরা প্রথমে একটি মেমরি ব্লক সিলেক্ট করি।
- তারপর প্রতিটি ব্লকে লোকাল ব্লুম ফিল্টার সিলেক্ট করি।
- এটি মেমরি ব্লকের মাঝপথে ইমব্যালেন্স ঘটাতে পারে।
- এই ফিল্টার ইফিশিয়েন্ট, কিন্তু পुअর ফолস পজিটিভ রেট (FPR)।
- প্রথম দৃষ্টিতে, ব্লকড ব্লুম ফিল্টারর একই FPR (False Positive Rate) থাকা উচিত স্ট্যান্ডার্ড ব্লুম ফিল্টারর মতো একই সাইজের।
- ব্লকড ব্লুম ফিল্টার একটি সিকোয়েন্স অফ ব্লক b নিয়ে গঠিত যেটি কমপারেটিভলি কম স্ট্যান্ডার্ড ব্লুম ফিল্টারর (ব্লুম ফিল্টার ব্লক) চেয়ে, প্রতিটি যেটি একটি ক্যাশ-লাইনে ফিট করে।
- ব্লকড ব্লুম ফিল্টার স্কিম পার্টিশন স্কিম থেকে আলাদা, যেখানে প্রতিটি বিট একটি আলাদা ব্লকে ইনসার্ট করা হয়।
ব্লকড ব্লুম ফিল্টার নিম্নলিখিতভাবে বাস্তবায়িত হয় −
বিট প্যাটার্ন (Bit Patterns - pat)
এই টপিকে, আমরা ডিসকাস করব ব্লকড ব্লুম ফিল্টার বাস্তবায়ন প্রি-কম্পিউটেড বিট প্যাটার্ন ব্যবহার করে। k হ্যাশ ফাংশন ইভ্যালুয়েট করে k বিট সেট করার বদলে, একটি সিঙ্গেল হ্যাশ ফাংশন একটি প্রি-কম্পিউটেড প্যাটার্ন সিলেক্ট করে একটি র্যান্ডম k-বিট প্যাটার্নের টেবিল থেকে প্রস্থ B। অনেক কেসে, এই টেবিল ক্যাশে ফিট করবে। এই সলিউশনে, শুধু একটি ছোট (বিটস হিসেবে) হ্যাশ ভ্যালু দরকার, এবং অপারেশনটি ফিউ SIMD (Single Instruction Multiple Data) ইনস্ট্রাকশন ব্যবহার করে বাস্তবায়ন করা যায়। ব্লুম ফিল্টার ট্রান্সফার করার সময়, টেবিলটি এক্সপ্লিসিটলি ডেটা-তে ইনক্লুড করা লাগবে না, কিন্তু সিড ভ্যালু ব্যবহার করে রিকনস্ট্রাক্ট করা যায়।
বিট প্যাটার্ন মেথডের মূল ডিজ্যাডভান্টেজ হলো দুটি এলিমেন্ট টেবিল কলিশন ঘটাতে পারে যখন সেগুলো একই প্যাটার্নে হ্যাশ করা হয়। এতে FPR বাড়ে।
মাল্টিপ্লেক্সিং প্যাটার্ন (Multiplexing Patterns)
এই আইডিয়া একবার আর রিফাইন করতে, আমরা একটি বড় ভ্যারাইটি অফ প্যাটার্ন অর্জন করতে পারি একটি সিঙ্গেল টেবিল থেকে বিটওয়াইজ-অর করে x প্যাটার্ন whose average number of k/x set bits।
মাল্টি-ব্লকিং (Multi-Blocking)
একটি আরো ভ্যারিয়েন্ট যা FPR উন্নত করতে সাহায্য করে, তাকে মাল্টি-ব্লকিং বলা হয়। আমরা কোয়েরি অপারেশনকে X ব্লুম ফিল্টার ব্লক অ্যাক্সেস করার অনুমতি দিই, রেসপেক্টিভলি প্রতিটি ব্লকে k/X বিট সেট বা টেস্ট করে। (যখন k X-দিয়ে ডিভISIBLE নয়, আমরা এক্সট্রা বিট সেট করি ফার্স্ট k mod X ব্লকে।) মাল্টি-ব্লকিং শুধু ব্লক সাইজ XB-এ বাড়ানোর চেয়ে ভালো পারফর্ম করে (B-প্রতিটি ব্লক সাইজ), কারণ এইভাবে বেশি ভ্যারাইটি ইন্ডিউস করা হয়। যদি আমরা সেট বিটগুলো একাধিক ব্লকে ভাগ করি, প্রতিটি পার্টisipেটিং ব্লকে এক্সপেক্টেড নম্বর অফ ১ বিট একই থাকে। যাইহোক, শুধু k/X বিট কনসিডার করা হয় প্রতিটি পার্টisipেটিং ব্লকে, একটি এলিমেন্ট অ্যাক্সেস করার সময়।