আমি একটি ব্লুম ফিল্টার কী, এটি কী করতে পারে এবং কী করতে পারে না তার ব্যাখ্যা দিয়ে শুরু করব, আমাদের এটির কেন দরকার, এটি কীভাবে কাজ করে তা একটি স্বজ্ঞাত বিবরণ দেখান এবং তারপরে যখন তারা কার্যকর হতে পারে তখন কিছু উদাহরণ দেই।
সুতরাং একটি মান পুষ্প ফিল্টার একটি হল সম্ভাব্য ডাটা স্ট্রাকচার যে পারেন * :
- একটি সেটে উপাদান যুক্ত করুন
- কোনও উপাদান সেটিংয়ে আছে কিনা তা বলার মাধ্যমে
definitely not in the set
বা পরীক্ষা করে দেখুনpossibly in the set
এই possibly in the set
ঠিক কেন এটা সম্ভাব্য বলা হয়। স্মার্ট শব্দ ব্যবহার করে এর অর্থ হ'ল মিথ্যা ইতিবাচক সম্ভাবনা রয়েছে (এমন ঘটনা ঘটতে পারে যেখানে এটি মিথ্যাভাবে উপাদানটিকে ইতিবাচক মনে করে) তবে মিথ্যা নেতিবাচক অসম্ভব।
তবে এটি * করতে পারে না :
- সেট থেকে একটি আইটেম সরান
- আপনাকে বর্তমানে আপনার সেটে থাকা সমস্ত উপাদানগুলির একটি তালিকা দিন
* এই ক্যান / সেটটি বেসিক ব্লুম ফিল্টারের জন্য for কারণ এটি একটি দরকারী ডেটা কাঠামো যা অনেক আগে তৈরি হয়েছিল, লোকেরা কীভাবে অন্যান্য দরকারী বৈশিষ্ট্যগুলি দিয়ে এটি বাড়িয়ে তুলতে পারে তা খুঁজে পেয়েছিল found
তবে এক মিনিট অপেক্ষা করুন: আমরা ইতিমধ্যে এমন একটি ডেটা স্ট্রাকচার জানি যা এটি অসম্পূর্ণ 'সম্ভাব্য' ছাড়াই এবং সমস্ত সীমাবদ্ধতা ছাড়াই (মুছে ফেলতে পারে না, সব দেখাতে পারে না) এই সমস্তটির উত্তর দিতে পারে। এবং একে সেট বলে । এবং এখানে একটি ব্লুম ফিল্টারটির একটি প্রধান সুবিধা আসে: এটি স্থান দক্ষ এবং স্থান ধ্রুবক ।
এর অর্থ হ'ল আমরা সেখানে কতগুলি উপাদান সঞ্চয় করি তা বিবেচ্য নয়, স্থানটি একই হবে। হ্যাঁ 10^6
উপাদানগুলির সাথে একটি ব্লুম ফিল্টার (অকেজো ব্লুম ফিল্টার) 10^20
উপাদানগুলির সাথে একটি ব্লুম ফিল্টার এবং উপাদানগুলির সাথে ব্লুম ফিল্টার হিসাবে একই স্থান গ্রহণ করবে 0
। তাহলে কত জায়গা লাগবে? এটি সিদ্ধান্ত নেওয়া আপনার উপর নির্ভর করে (তবে এর একটি বাণিজ্য রয়েছে: possible in the set
উত্তরগুলির সাথে আপনার যত বেশি অনিশ্চয়তা রয়েছে তত বেশি অনিশ্চিত হয়ে পড়ে ।
আর একটি দুর্দান্ত জিনিস হ'ল এটি স্থান ধ্রুবক। আপনি যখন কোনও সেটে ডেটা সংরক্ষণ করেন, আপনাকে আসলে এই ডেটাটি সংরক্ষণ করতে হবে। সুতরাং আপনি যদি সঞ্চয় করেন তবে আপনার this long string in the set
কমপক্ষে 27 বাইট স্পেস ব্যবহার করতে হবে। তবে 1% ত্রুটি এবং কে ** এর সর্বোত্তম মানের জন্য আপনার কোনও উপাদান প্রতি 9.6 বিট (<2 বাইট) প্রয়োজন হবে (এটি সংক্ষিপ্ত আন্ত বা পাঠ্যের বিশাল প্রাচীর)।
আরেকটি সম্পত্তি হ'ল সমস্ত ক্রিয়াকলাপ ধ্রুবক সময় নিচ্ছে, যা সেটগুলির ক্ষেত্রে নিয়মিত ধ্রুবক সময়ের মতো একেবারে সমান নয় (মনে রাখবেন যে সেটে যদি সংঘর্ষ হয় তবে এটি O(n)
সময়ের সাথে খারাপ হতে পারে)।
** কে ব্লুম ফিল্টারে ব্যবহৃত হ্যাশ ফাংশনের একটি মান
ব্লুম ফিল্টারগুলি কীভাবে কাজ করে তা আমি বর্ণনা করব না (উইকিপিডিয়া নিবন্ধটি সবকিছু ব্যাখ্যা করার জন্য খুব ভাল কাজ করে)। এখানে আমি সংক্ষিপ্তভাবে বেসিকগুলি বলব।
- আপনি দৈর্ঘ্যের একটি খালি বিট অ্যারে শুরু করেন
m
- আপনি
k
বিভিন্ন হ্যাশ ফাংশন নির্বাচন করুন (আরও স্বাধীনতর আরও ভাল)
- আপনি যদি উপাদান যুক্ত করতে চান তবে আপনি
k
এই মানটির সমস্ত হ্যাশ গণনা করুন এবং সংশ্লিষ্ট বিটগুলি 1 তে সেট করুন
- যদি আপনি উপাদানটি বিদ্যমান কিনা তা পরীক্ষা করতে চান তবে আপনি সমস্ত
k
হ্যাশও গণনা করুন এবং যদি তাদের মধ্যে কমপক্ষে একটি সেট না করা থাকে তবে এটি অবশ্যই সেটে নেই। অন্যথায় এটি সেটে থাকতে পারে।
এমনকি এই বিবরণটি কেন আমরা নিশ্চিত হতে পারি না তা বুঝতে যথেষ্ট (আপনি সমস্ত বিট অন্যান্য বিভিন্ন মান থেকে সেট করতে পারেন)। এটি কীভাবে কাজ করে তার একটি দুর্দান্ত দৃশ্যায়ন এখানে ।
সুতরাং ফুলের ফিল্টারগুলি কখন কার্যকর হতে পারে? সংক্ষিপ্ত উত্তর সর্বত্রই যেখানে মিথ্যা ইতিবাচক গ্রহণযোগ্য এবং আপনি সেটে কিছু পরীক্ষা করতে চান যেখানে সেগুলি রয়েছে, তবে তা না থাকলেও যাচাইকরণকারীদের কাছে ব্যয়বহুল কলগুলি বাতিল করা প্রতিরক্ষা প্রথম লাইন হতে পারে।
এখানে আরও কংক্রিট বর্ণনার তালিকা রয়েছে:
- দূষিত ওয়েবসাইটগুলির একটি স্ট্যান্ডার্ড উদাহরণ এবং ব্রাউজারের প্রায় কোনও জায়গাতেই বর্ণনা করা হয় যেখানে লোকেরা ব্লুম ফিল্টার সম্পর্কে কথা বলে
- একটি পাসওয়ার্ড দুর্বল: সমস্ত সম্ভাব্য দুর্বল পাসওয়ার্ডগুলির একটি বিশাল সেট রাখার পরিবর্তে, আপনি কেবল এটি পরীক্ষা করতে পারেন যে কোনও ক্ষুদ্র ব্লুম ফিল্টার দিয়ে পাসওয়ার্ডটি দুর্বল নয় কি না?
- আপনার যদি নিবন্ধগুলির একটি তালিকা এবং ব্যবহারকারীর একটি তালিকা থাকে তবে ব্যবহারকারীর নিবন্ধগুলি না পড়ার জন্য আপনি ব্লুম ফিল্টার ব্যবহার করতে পারেন। মজার বিষয় হ'ল আপনার কেবলমাত্র একটি ফিল্টার থাকতে পারে (আপনি ব্যবহারকারী_আইডি + নিবন্ধ_আইডির সংমিশ্রণটি আছে কিনা তা পরীক্ষা করে দেখুন)
- বিটকয়েন ওয়ালেট সিঙ্ক্রোনাইজেশনের জন্য ব্লুম ফিল্টার ব্যবহার করে
- আকামাইয়ের ওয়েব সার্ভারগুলি "এক-হিট-আশ্চর্য" কে এর ডিস্ক ক্যাশে সংরক্ষণ করা থেকে বিরত রাখতে ব্লুম ফিল্টার ব্যবহার করে। এক-হিট-আশ্চর্য হ'ল কেবল একবার ব্যবহারকারীদের দ্বারা অনুরোধ করা ওয়েব অবজেক্ট, যা আকামাই তাদের ক্যাসিং পরিকাঠামোর প্রায় তিন-চতুর্থাংশের জন্য প্রয়োগ করেছিল। কোনও ওয়েব অবজেক্টের জন্য দ্বিতীয় অনুরোধ সনাক্ত করতে একটি ব্লুম ফিল্টার ব্যবহার করা এবং কেবলমাত্র দ্বিতীয় অনুরোধে সেই অবজেক্টটি ক্যাশে করা ডিস্কের ক্যাশে প্রবেশের ফলে হিট আশ্চর্য আটকায়, ডিস্কের কাজের চাপকে উল্লেখযোগ্যভাবে হ্রাস করে এবং ডিস্ক ক্যাশে হিট রেট বাড়িয়ে তোলে (ব্লুমের ফিল্টারের উদাহরণ থেকে নেওয়া উইকিতে নিবন্ধ)