ডিস্ট্রিবিউটেড হ্যাশ টেবিলের (ডিএইচটি) সাধারণ সাধারণ ব্যাখ্যা


177

ডিএইচটি কীভাবে কাজ করে সে সম্পর্কে কেউ কি ব্যাখ্যা দিতে পারে?

খুব বেশি ভারী কিছুই নয়, কেবলমাত্র বেসিক।

উত্তর:


237

ঠিক আছে, তারা মূলত একটি খুব সহজ ধারণা। একটি ডিএইচটি আপনাকে অভিধানের মতো ইন্টারফেস দেয় তবে নোডগুলি নেটওয়ার্ক জুড়ে বিতরণ করা হয়। ডিএইচটিগুলির সাথে কৌশলটি হ'ল যে নোড যা একটি নির্দিষ্ট কী সঞ্চয় করে তা সেই চাবিটি হ্যাশ করে পাওয়া যায়, ফলস্বরূপ আপনার হ্যাশ-টেবিল বালতি এখন কোনও নেটওয়ার্কে স্বাধীন নোড।

এটি প্রচুর ত্রুটি-সহনশীলতা এবং নির্ভরযোগ্যতা দেয় এবং সম্ভবত কিছু কার্যকারিতা বেনিফিট দেয় তবে এটি প্রচুর মাথা ব্যথাও ছুঁড়ে দেয়। উদাহরণস্বরূপ, কোনও নোড ব্যর্থতা বা অন্যথায় নেটওয়ার্ক ছেড়ে গেলে কী ঘটে? এবং যখন কোনও নোড যোগ দেয় তখন কী কী পুনরায় বিতরণ করবেন যাতে লোডটি মোটামুটি ভারসাম্যপূর্ণ হয়। এটি ভাবতে আসুন, আপনি কীভাবে সমানভাবে কীগুলি বিতরণ করবেন? এবং যখন কোনও নোড যোগ দেয়, আপনি কীভাবে সমস্ত কিছু পুনরায় করা এড়াবেন? (মনে রাখবেন আপনি যদি বালতির সংখ্যা বাড়িয়ে থাকেন তবে আপনাকে একটি সাধারণ হ্যাশ টেবিলের মধ্যে এটি করতে হবে)।

এর একটি উদাহরণ ডিএইচটি যা এই সমস্যার কিছুটা সমাধান করে তা হ'ল এন নোডের একটি লজিক্যাল রিং, যার প্রত্যেকটি কী স্পেসের 1 / n এর জন্য দায় গ্রহণ করে। আপনি একবার নেটওয়ার্কে কোনও নোড যুক্ত করলে এটি দুটি অন্য নোডের মধ্যে বসার জন্য রিংয়ের একটি জায়গা খুঁজে পায় এবং এর ভাইবোন নোডের কিছু কীগুলির জন্য দায় গ্রহণ করে। এই পদ্ধতির সৌন্দর্যটি হ'ল রিংয়ের অন্যান্য নোডগুলির কোনওটিই প্রভাবিত হয় না; কেবলমাত্র দুটি ভাইবোনের নোডের কী পুনরায় বিতরণ করতে হবে।

উদাহরণস্বরূপ, তিনটি নোডের রিংয়ে বলুন প্রথম নোডের কী রয়েছে 10-10, দ্বিতীয়টি 11-20 এবং তৃতীয় 21-30। যদি একটি চতুর্থ নোড আসে এবং নোড 3 এবং 0 এর মধ্যে নিজেকে সন্নিবেশ করে (মনে রাখবেন যে তারা একটি রিংতে রয়েছে), এটি 3 এর কীস্পেসের অর্ধেক বলার দায়িত্ব নিতে পারে, সুতরাং এখন এটি 26-30 এবং নোড 21 এর সাথে 3 টি চুক্তি করে -25।

এটির মতো আরও অনেক ওভারলে স্ট্রাকচার রয়েছে যা কোনও কী সংরক্ষণ করতে হবে তার ডান নোড খুঁজতে কন্টেন্ট-ভিত্তিক রাউটিং ব্যবহার করে। একটি রিংয়ের চাবিটি সনাক্ত করার জন্য একবারে রিংয়ের একটি নোডের সন্ধান করা প্রয়োজন (যদি না আপনি স্থানীয় লুক-টেবিলটি রাখেন, যদি হাজার হাজার নোডের একটি ডিএইচটি সমস্যাযুক্ত হয়), যা হে (এন) -হোপ রাউটিং। অন্যান্য কাঠামোগুলি - বর্ধিত রিংগুলি সহ - ও (লগ এন) -পথের রাউটিং এবং আরও কিছু রক্ষণাবেক্ষণের ব্যয়ে হে (1) -রপথে রাউটিংয়ের দাবি করে।

উইকিপিডিয়া পৃষ্ঠাটি পড়ুন এবং আপনি যদি সত্যিই কিছুটা গভীরতার সাথে জানতে চান তবে হার্ভার্ডে এই কোর্পেজটি দেখুন যা একটি বিস্তৃত পাঠ্য তালিকা রয়েছে।


23
+1 ভাল উত্তর। তৃতীয় অনুচ্ছেদে আপনি কী বোঝাতে চেয়েছেন ("একটি উদাহরণ ডিএইচটি যা এই সমস্যার কিছুটা মোকাবেলা করে তা এন নোডের লজিক্যাল রিং") কনসিস্ট্যান্ট হ্যাশিং। এটি সত্যিই একটি আকর্ষণীয় বিষয়, অ্যাপাচি ক্যাসান্দ্রায় ব্যবহৃত হয়েছে, যা ফেসবুকের দ্বারা নির্মিত একটি বিতরণকৃত ডাটাবেস। কাগজের সাথে লিঙ্ক (এটি পড়ার মতো): cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf
সান্টিয়াগোবাসুলতো

5
একটি রিং-ভিত্তিক লুকোচুরি
হ'ল

কী আপনি কী নোডে কী-মান সংরক্ষণ করা যায় তা বিশদভাবে বলতে পারেন? এটি হ্যাশ টেবিলের কোনও রূপ বা কোনও ডিবি হবে?
ওয়ান্ড মেকার

@ হেনরিআর, "নোড রিং" কেবল একটি গাছের কাঠামো নয়?
পেসারিয়ার

ইলিনয়ের ইউনি ইউনিয়ন প্রতি সেমিস্টারে তাদের বিতরণ করা সিস্টেম শ্রেণীর অংশ হিসাবে কর্ড প্রোটোকল পড়ায় যদি কেউ আরও পড়ার উপাদান চায় - কোর্স.ইন.গ্রিলিলোইস.ইডু
সিদ্ধার্থ

11

ডিএইচটি ব্যবহারকারীর জন্য সাধারণ হ্যাশটেবল হিসাবে একই ধরণের ইন্টারফেস সরবরাহ করে (কী দ্বারা একটি মান সন্ধান করুন), তবে সংযুক্ত নোডের একটি স্বেচ্ছাসেবী হিসাবে ডেটা বিতরণ করা হয়। উইকিপিডিয়ায় একটি ভাল প্রাথমিক ভূমিকা রয়েছে যা আমি আরও লিখলে মূলত পুনঃব্যবস্থাপনা করতাম -

http://en.wikipedia.org/wiki/Distributed_hash_table


7

আমি হেনরিআর এর দরকারী উত্তরটি যুক্ত করতে চাই যেহেতু আমার সামঞ্জস্যপূর্ণ হ্যাশিংয়ের অন্তর্দৃষ্টি ছিল। একটি সাধারণ / নিখুঁত হ্যাশ লুকআপ দুটি ভেরিয়েবলের একটি ক্রিয়াকলাপ, যার মধ্যে একটি বালতি সংখ্যা uc ধারাবাহিক হ্যাশিংয়ের সৌন্দর্য হ'ল আমরা সমীকরণ থেকে বালতি "এন" এর সংখ্যাটি সরিয়ে ফেলি।

নিষ্কলুষ হ্যাশিং-এ, প্রথম পরিবর্তনশীল হ'ল টেবিলের মধ্যে সংরক্ষণ করা অবজেক্টের চাবি। আমরা কীটিকে "x" বলব। দ্বিতীয় পরিবর্তনশীল হ'ল বালতি সংখ্যা, "এন"। সুতরাং, কোন বালতি / মেশিনটি বস্তুটি সংরক্ষণ করা হয়েছে তা নির্ধারণ করতে আপনাকে গণনা করতে হবে: হ্যাশ (এক্স) মোড (এন)। অতএব, আপনি যখন বালতিগুলির সংখ্যা পরিবর্তন করেন, আপনি প্রায় প্রতিটি বস্তুর সঞ্চিত ঠিকানাটিও পরিবর্তন করেন।

এটি ধারাবাহিক হ্যাশিংয়ের সাথে তুলনা করুন। হ্যাশ ফাংশনের পরিসর হিসাবে "আর" সংজ্ঞায়িত করা যাক। আর কিছুটা ধ্রুবক। ধারাবাহিক হ্যাশিংয়ে, কোনও বস্তুর ঠিকানা হ্যাশ (এক্স) / আর এ অবস্থিত। যেহেতু আমাদের অনুসন্ধান আর বালতি সংখ্যার ফাংশন নয়, তাই আমরা বালতিগুলির সংখ্যা পরিবর্তন করলে কম রিম্যাপিংয়ের সাথে শেষ করি।

http://michaelnielsen.org/blog/consistent-hashing/


1
তবুও আপনার এখনও মোড লাগবে না তাই না? বলুন আপনি 3 সার্ভার পেয়েছেন। hash(x)/Rআপনাকে 34500 দেয় You আপনার এখনও 34500% 3 করা দরকার
পেসারিয়ার

আপনার ব্লগপোস্টটি অস্পষ্ট বিটিডব্লিউ, আপনার একটি কার্যকারী উদাহরণের ধাপে ধাপে স্ন্যাপশটের তালিকা তৈরি করা উচিত যেখানে নোড যুক্ত এবং সারি যুক্ত সারির পাশাপাশি সরিয়ে ফেলা হবে।
পেসারিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.