ডিএইচটি কীভাবে কাজ করে সে সম্পর্কে কেউ কি ব্যাখ্যা দিতে পারে?
খুব বেশি ভারী কিছুই নয়, কেবলমাত্র বেসিক।
ডিএইচটি কীভাবে কাজ করে সে সম্পর্কে কেউ কি ব্যাখ্যা দিতে পারে?
খুব বেশি ভারী কিছুই নয়, কেবলমাত্র বেসিক।
উত্তর:
ঠিক আছে, তারা মূলত একটি খুব সহজ ধারণা। একটি ডিএইচটি আপনাকে অভিধানের মতো ইন্টারফেস দেয় তবে নোডগুলি নেটওয়ার্ক জুড়ে বিতরণ করা হয়। ডিএইচটিগুলির সাথে কৌশলটি হ'ল যে নোড যা একটি নির্দিষ্ট কী সঞ্চয় করে তা সেই চাবিটি হ্যাশ করে পাওয়া যায়, ফলস্বরূপ আপনার হ্যাশ-টেবিল বালতি এখন কোনও নেটওয়ার্কে স্বাধীন নোড।
এটি প্রচুর ত্রুটি-সহনশীলতা এবং নির্ভরযোগ্যতা দেয় এবং সম্ভবত কিছু কার্যকারিতা বেনিফিট দেয় তবে এটি প্রচুর মাথা ব্যথাও ছুঁড়ে দেয়। উদাহরণস্বরূপ, কোনও নোড ব্যর্থতা বা অন্যথায় নেটওয়ার্ক ছেড়ে গেলে কী ঘটে? এবং যখন কোনও নোড যোগ দেয় তখন কী কী পুনরায় বিতরণ করবেন যাতে লোডটি মোটামুটি ভারসাম্যপূর্ণ হয়। এটি ভাবতে আসুন, আপনি কীভাবে সমানভাবে কীগুলি বিতরণ করবেন? এবং যখন কোনও নোড যোগ দেয়, আপনি কীভাবে সমস্ত কিছু পুনরায় করা এড়াবেন? (মনে রাখবেন আপনি যদি বালতির সংখ্যা বাড়িয়ে থাকেন তবে আপনাকে একটি সাধারণ হ্যাশ টেবিলের মধ্যে এটি করতে হবে)।
এর একটি উদাহরণ ডিএইচটি যা এই সমস্যার কিছুটা সমাধান করে তা হ'ল এন নোডের একটি লজিক্যাল রিং, যার প্রত্যেকটি কী স্পেসের 1 / n এর জন্য দায় গ্রহণ করে। আপনি একবার নেটওয়ার্কে কোনও নোড যুক্ত করলে এটি দুটি অন্য নোডের মধ্যে বসার জন্য রিংয়ের একটি জায়গা খুঁজে পায় এবং এর ভাইবোন নোডের কিছু কীগুলির জন্য দায় গ্রহণ করে। এই পদ্ধতির সৌন্দর্যটি হ'ল রিংয়ের অন্যান্য নোডগুলির কোনওটিই প্রভাবিত হয় না; কেবলমাত্র দুটি ভাইবোনের নোডের কী পুনরায় বিতরণ করতে হবে।
উদাহরণস্বরূপ, তিনটি নোডের রিংয়ে বলুন প্রথম নোডের কী রয়েছে 10-10, দ্বিতীয়টি 11-20 এবং তৃতীয় 21-30। যদি একটি চতুর্থ নোড আসে এবং নোড 3 এবং 0 এর মধ্যে নিজেকে সন্নিবেশ করে (মনে রাখবেন যে তারা একটি রিংতে রয়েছে), এটি 3 এর কীস্পেসের অর্ধেক বলার দায়িত্ব নিতে পারে, সুতরাং এখন এটি 26-30 এবং নোড 21 এর সাথে 3 টি চুক্তি করে -25।
এটির মতো আরও অনেক ওভারলে স্ট্রাকচার রয়েছে যা কোনও কী সংরক্ষণ করতে হবে তার ডান নোড খুঁজতে কন্টেন্ট-ভিত্তিক রাউটিং ব্যবহার করে। একটি রিংয়ের চাবিটি সনাক্ত করার জন্য একবারে রিংয়ের একটি নোডের সন্ধান করা প্রয়োজন (যদি না আপনি স্থানীয় লুক-টেবিলটি রাখেন, যদি হাজার হাজার নোডের একটি ডিএইচটি সমস্যাযুক্ত হয়), যা হে (এন) -হোপ রাউটিং। অন্যান্য কাঠামোগুলি - বর্ধিত রিংগুলি সহ - ও (লগ এন) -পথের রাউটিং এবং আরও কিছু রক্ষণাবেক্ষণের ব্যয়ে হে (1) -রপথে রাউটিংয়ের দাবি করে।
উইকিপিডিয়া পৃষ্ঠাটি পড়ুন এবং আপনি যদি সত্যিই কিছুটা গভীরতার সাথে জানতে চান তবে হার্ভার্ডে এই কোর্পেজটি দেখুন যা একটি বিস্তৃত পাঠ্য তালিকা রয়েছে।
ডিএইচটি ব্যবহারকারীর জন্য সাধারণ হ্যাশটেবল হিসাবে একই ধরণের ইন্টারফেস সরবরাহ করে (কী দ্বারা একটি মান সন্ধান করুন), তবে সংযুক্ত নোডের একটি স্বেচ্ছাসেবী হিসাবে ডেটা বিতরণ করা হয়। উইকিপিডিয়ায় একটি ভাল প্রাথমিক ভূমিকা রয়েছে যা আমি আরও লিখলে মূলত পুনঃব্যবস্থাপনা করতাম -
আমি হেনরিআর এর দরকারী উত্তরটি যুক্ত করতে চাই যেহেতু আমার সামঞ্জস্যপূর্ণ হ্যাশিংয়ের অন্তর্দৃষ্টি ছিল। একটি সাধারণ / নিখুঁত হ্যাশ লুকআপ দুটি ভেরিয়েবলের একটি ক্রিয়াকলাপ, যার মধ্যে একটি বালতি সংখ্যা uc ধারাবাহিক হ্যাশিংয়ের সৌন্দর্য হ'ল আমরা সমীকরণ থেকে বালতি "এন" এর সংখ্যাটি সরিয়ে ফেলি।
নিষ্কলুষ হ্যাশিং-এ, প্রথম পরিবর্তনশীল হ'ল টেবিলের মধ্যে সংরক্ষণ করা অবজেক্টের চাবি। আমরা কীটিকে "x" বলব। দ্বিতীয় পরিবর্তনশীল হ'ল বালতি সংখ্যা, "এন"। সুতরাং, কোন বালতি / মেশিনটি বস্তুটি সংরক্ষণ করা হয়েছে তা নির্ধারণ করতে আপনাকে গণনা করতে হবে: হ্যাশ (এক্স) মোড (এন)। অতএব, আপনি যখন বালতিগুলির সংখ্যা পরিবর্তন করেন, আপনি প্রায় প্রতিটি বস্তুর সঞ্চিত ঠিকানাটিও পরিবর্তন করেন।
এটি ধারাবাহিক হ্যাশিংয়ের সাথে তুলনা করুন। হ্যাশ ফাংশনের পরিসর হিসাবে "আর" সংজ্ঞায়িত করা যাক। আর কিছুটা ধ্রুবক। ধারাবাহিক হ্যাশিংয়ে, কোনও বস্তুর ঠিকানা হ্যাশ (এক্স) / আর এ অবস্থিত। যেহেতু আমাদের অনুসন্ধান আর বালতি সংখ্যার ফাংশন নয়, তাই আমরা বালতিগুলির সংখ্যা পরিবর্তন করলে কম রিম্যাপিংয়ের সাথে শেষ করি।
hash(x)/R
আপনাকে 34500 দেয় You আপনার এখনও 34500% 3 করা দরকার ।