आप हैशटेबल में केवल प्राथमिक कुंजी द्वारा तत्वों तक पहुंच सकते हैं। यह ट्री एल्गोरिथम ( ) के O(1)
बजाय कीlog(n)
तुलना में तेज़ है , लेकिन आप श्रेणियों ( बीच में x
और सब कुछy
) का चयन नहीं कर सकते हैं । ट्री एल्गोरिदम इसका समर्थन करते हैं Log(n)
जबकि हैश इंडेक्स का परिणाम पूर्ण तालिका स्कैन में हो सकता है O(n)
। साथ ही हैश इंडेक्स का निरंतर ओवरहेड आमतौर पर बड़ा होता है ( जो थीटा नोटेशन का कोई कारक नहीं है, लेकिन यह अभी भी मौजूद है )। इसके अलावा पेड़ के एल्गोरिदम आमतौर पर बनाए रखने, डेटा, स्केल आदि के साथ बढ़ने में आसान होते हैं।
हैश इंडेक्स पूर्व-निर्धारित हैश आकारों के साथ काम करते हैं, इसलिए आप कुछ "बकेट्स" के साथ समाप्त होते हैं जहां ऑब्जेक्ट्स को संग्रहीत किया जाता है। इन ऑब्जेक्ट्स को इस विभाजन के अंदर सही सही खोजने के लिए फिर से लूप किया जाता है।
इसलिए यदि आपके पास छोटे आकार हैं, तो आपके पास छोटे तत्वों के लिए बहुत अधिक ओवरहेड है, बड़े आकार के परिणामस्वरूप आगे की स्कैनिंग होती है।
हैश टेबल एल्गोरिदम आमतौर पर बड़े पैमाने पर होते हैं, लेकिन स्केलिंग अक्षम हो सकती है।
वास्तव में स्केलेबल हैशिंग एल्गोरिदम हैं। मुझे मत पूछो कि यह कैसे काम करता है - इसका एक रहस्य मेरे लिए भी है। AFAIK वे स्केलेबल प्रतिकृति से विकसित हुए, जहां री-हैशिंग आसान नहीं है।
इसका नाम RUSH - R eplication U nder S calable H ashing है, और उन एल्गोरिदम को इस प्रकार RUSH एल्गोरिदम कहा जाता है।
हालाँकि, एक ऐसा बिंदु हो सकता है जहाँ आपका सूचकांक आपके हैश आकारों की तुलना में एक सहनीय आकार से अधिक हो और आपके पूरे सूचकांक को फिर से निर्मित करने की आवश्यकता हो। आमतौर पर यह कोई समस्या नहीं है, लेकिन विशाल-विशाल-विशाल डेटाबेस के लिए, इसमें कई दिन लग सकते हैं।
ट्री एल्गोरिदम के लिए व्यापार छोटा है और वे लगभग हर उपयोग के मामले में उपयुक्त हैं और इस प्रकार डिफ़ॉल्ट हैं।
हालाँकि यदि आपके पास बहुत सटीक उपयोग का मामला है और आप जानते हैं कि वास्तव में क्या और केवल क्या होना चाहिए, तो आप हैशिंग इंडेक्स का लाभ उठा सकते हैं।