ഹാഷിംഗ് ആശയങ്ങൾ


അവതാരിക

ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് വിലാസം സൃഷ്ടിക്കുന്ന ഡാറ്റാ ബ്ലോക്കുകളിൽ ഡാറ്റ സംഭരിക്കുന്ന ഒന്നാണ് ഹാഷ് ഫയൽ ഓർഗനൈസേഷൻ രീതി. ഈ റെക്കോർഡുകൾ സൂക്ഷിച്ചിരിക്കുന്ന മെമ്മറി ലൊക്കേഷനെ ഡാറ്റ ബ്ലോക്ക് അല്ലെങ്കിൽ ഡാറ്റ ബക്കറ്റ് എന്ന് വിളിക്കുന്നു. ഒന്നോ അതിലധികമോ റെക്കോർഡുകൾ സംഭരിക്കാൻ ഈ ഡാറ്റ ബക്കറ്റിന് കഴിവുണ്ട്.

വിലാസം സൃഷ്ടിക്കുന്നതിന് ഹാഷ് ഫംഗ്ഷന് ഏതെങ്കിലും നിര മൂല്യം ഉപയോഗിക്കാം. ഡേറ്റാ ബ്ലോക്കിന്റെ വിലാസം ഹാഷ് സൂചിക ജനറേറ്റ് ചെയ്യുന്നതിന് ഹാഷ് ഫംഗ്ഷൻ പ്രാഥമിക കീ ഉപയോഗിക്കുന്നു. ഏത് സങ്കീർണ്ണ ഗണിതശാസ്ത്ര പ്രവർത്തനത്തിനും ലളിതമായ ഗണിതശാസ്ത്ര പ്രവർത്തനമാണ് ഹാഷ് ഫംഗ്ഷൻ. പ്രാഥമിക കീയെ ഡാറ്റാ ബ്ലോക്കിന്റെ വിലാസമായി പോലും നമുക്ക് പരിഗണിക്കാം. അതായത് ഓരോ വരിയും പ്രാഥമിക കീയുടേതിന് സമാനമായ വിലാസമുള്ള ഡാറ്റാ ബ്ലോക്കിൽ സൂക്ഷിക്കും. ഡാറ്റാബേസിൽ ഒരു ഹാഷ് ഫംഗ്ഷൻ എത്രത്തോളം ലളിതമാണെന്ന് ഇത് സൂചിപ്പിക്കുന്നു.

മുകളിലുള്ള ഡയഗ്രം പ്രാഥമിക കീ മൂല്യത്തിന് സമാനമായ ഡാറ്റ ബ്ലോക്ക് വിലാസത്തെ ചിത്രീകരിക്കുന്നു. ഈ ഹാഷ് ഫംഗ്ഷൻ മോഡ്, സിൻ, കോസ്, എക്‌സ്‌പോണൻഷ്യൽ മുതലായ ലളിതമായ ഗണിതശാസ്ത്ര ഫംഗ്ഷനും ആകാം. ഡാറ്റാ ബ്ലോക്കിന്റെ വിലാസം നിർണ്ണയിക്കാൻ നമുക്ക് മോഡ് (5) ആയി ഹാഷ് ഫംഗ്ഷൻ ഉണ്ടെന്ന് സങ്കൽപ്പിക്കുക. അപ്പോൾ മുകളിലുള്ള കേസിന് എന്ത് സംഭവിക്കും? ഇത് പ്രാഥമിക കീകളിൽ മോഡ് (5) പ്രയോഗിക്കുകയും യഥാക്രമം 3,3,1,4, 2 എന്നിവ സൃഷ്ടിക്കുകയും റെക്കോർഡുകൾ ആ ഡാറ്റ ബ്ലോക്ക് വിലാസങ്ങളിൽ സൂക്ഷിക്കുകയും ചെയ്യുന്നു.

മുകളിൽ രണ്ട് ഡയഗ്രാമുകളിൽ നിന്ന് ഹാഷ് ഫംഗ്ഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് ഇപ്പോൾ വ്യക്തമാണ്.

രണ്ട് തരം ഹാഷ് ഫയൽ ഓർഗനൈസേഷനുകൾ ഉണ്ട് - സ്റ്റാറ്റിക് ഒപ്പം ഡൈനാമിക് ഹാഷിംഗ്.

സ്റ്റാറ്റിക് ഹാഷിംഗ്

ഹാഷിംഗ് രീതിയിൽ, ഫലമായുണ്ടാകുന്ന ഡാറ്റ ബക്കറ്റ് വിലാസം എല്ലായ്പ്പോഴും സമാനമായിരിക്കും. അതായത്, മോഡ് (103) ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് EMP_ID = 5 എന്നതിനായി വിലാസം സൃഷ്ടിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അത് എല്ലായ്പ്പോഴും ഒരേ ബക്കറ്റ് വിലാസത്തിൽ കലാശിക്കും 3. ഇവിടെ ബക്കറ്റ് വിലാസത്തിൽ മാറ്റങ്ങളൊന്നും ഉണ്ടാകില്ല. അതിനാൽ ഈ സ്റ്റാറ്റിക് ഹാഷിംഗിനായി മെമ്മറിയിലെ ഡാറ്റ ബക്കറ്റുകളുടെ എണ്ണം ഉടനീളം നിലനിൽക്കുന്നു. ഞങ്ങളുടെ ഉദാഹരണത്തിൽ, ഡാറ്റ സംഭരിക്കാൻ ഉപയോഗിക്കുന്ന മെമ്മറിയിൽ അഞ്ച് ഡാറ്റ ബക്കറ്റുകൾ ഉണ്ടാകും.

ഒരു റെക്കോർഡ് തിരയുന്നു

ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച്, ഹാഷ് കീയ്ക്കായി ഡാറ്റ ബക്കറ്റ് വിലാസം സൃഷ്ടിക്കപ്പെടുന്നു. റെക്കോർഡ് ആ സ്ഥാനത്ത് നിന്ന് വീണ്ടെടുക്കുന്നു. അതായത്; ഐഡി 104 നുള്ള മുഴുവൻ റെക്കോർഡും വീണ്ടെടുക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ഐഡിയിൽ ഹാഷ് ഫംഗ്ഷൻ മോഡ് (5) ആണെങ്കിൽ, ജനറേറ്റുചെയ്ത വിലാസം 4 ആയിരിക്കും. അപ്പോൾ നമുക്ക് നേരിട്ട് വിലാസം 4 ലഭിക്കുകയും ഐഡി 104 ന്റെ മുഴുവൻ റെക്കോർഡും വീണ്ടെടുക്കുകയും ചെയ്യും. ഇവിടെ ഐഡി ഒരു ഹാഷ് കീയായി പ്രവർത്തിക്കുന്നു.

ഒരു റെക്കോർഡ് ചേർക്കുന്നു

ഒരു പുതിയ റെക്കോർഡ് പട്ടികയിലേക്ക് ചേർക്കേണ്ടിവരുമ്പോൾ, അതിന്റെ ഹാഷ് കീ അടിസ്ഥാനമാക്കി ഞങ്ങൾ പുതിയ റെക്കോർഡിനായി ഒരു വിലാസം സൃഷ്ടിക്കും. വിലാസം ജനറേറ്റുചെയ്തുകഴിഞ്ഞാൽ, റെക്കോർഡ് ആ സ്ഥാനത്ത് സൂക്ഷിക്കുന്നു.

ഒരു റെക്കോർഡ് ഇല്ലാതാക്കുക

ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഇല്ലാതാക്കേണ്ട റെക്കോർഡ് ഞങ്ങൾ ആദ്യം ലഭ്യമാക്കും. മെമ്മറിയിൽ ആ വിലാസത്തിനായുള്ള റെക്കോർഡുകൾ ഞങ്ങൾ നീക്കംചെയ്യും.

ഒരു റെക്കോർഡ് അപ്‌ഡേറ്റുചെയ്യുക

അപ്‌ഡേറ്റിനായി അടയാളപ്പെടുത്തിയ ഡാറ്റ റെക്കോർഡ് സ്റ്റാറ്റിക് ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ച് തിരയുകയും ആ വിലാസത്തിൽ റെക്കോർഡ് അപ്‌ഡേറ്റ് ചെയ്യുകയും ചെയ്യും.

 

ഞങ്ങൾ ഫയലിൽ ചില റെക്കോർഡുകൾ ചേർക്കണമെന്ന് കരുതുക. എന്നാൽ ഹാഷ് ഫംഗ്ഷൻ സൃഷ്ടിച്ച ഡാറ്റ ബക്കറ്റ് വിലാസം നിറഞ്ഞിരിക്കുന്നു അല്ലെങ്കിൽ ആ വിലാസത്തിൽ ഡാറ്റ ഇതിനകം നിലവിലുണ്ട്. ഞങ്ങൾ എങ്ങനെ ഡാറ്റ തിരുകും? സ്റ്റാറ്റിക് ഹാഷിംഗിലെ ഈ അവസ്ഥയെ വിളിക്കുന്നു ബക്കറ്റ് ഓവർഫ്ലോ. ഈ രീതിയിലെ നിർണായക സാഹചര്യങ്ങളിൽ / പോരായ്മകളിൽ ഒന്നാണിത്. ഈ സാഹചര്യത്തിൽ ഞങ്ങൾ എവിടെ ഡാറ്റ സംരക്ഷിക്കും? ഞങ്ങൾക്ക് ഡാറ്റ നഷ്‌ടപ്പെടുത്താൻ കഴിയില്ല. ഈ അവസ്ഥയെ മറികടക്കാൻ വിവിധ രീതികളുണ്ട്. സാധാരണയായി ഉപയോഗിക്കുന്ന രീതികൾ ചുവടെ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു:

അടച്ച ഹാഷിംഗ്

ഈ രീതിയിൽ ഞങ്ങൾ ഒരേ വിലാസമുള്ള ഒരു പുതിയ ഡാറ്റ ബക്കറ്റ് അവതരിപ്പിക്കുകയും പൂർണ്ണ ഡാറ്റ ബക്കറ്റിന് ശേഷം അത് ലിങ്കുചെയ്യുകയും ചെയ്യുന്നു. ബക്കറ്റ് ഓവർഫ്ലോയെ മറികടക്കുന്നതിനുള്ള ഈ രീതികളെ ക്ലോസ്ഡ് ഹാഷിംഗ് അല്ലെങ്കിൽ ഓവർഫ്ലോ ചങ്ങല.

പട്ടികകളിലേക്ക് ഒരു പുതിയ റെക്കോർഡ് R2 ചേർക്കേണ്ടതായി പരിഗണിക്കുക. സ്റ്റാറ്റിക് ഹാഷ് ഫംഗ്ഷൻ ഡാറ്റ ബക്കറ്റ് വിലാസം 'AACDBF' ആയി സൃഷ്ടിക്കുന്നു. എന്നാൽ പുതിയ ഡാറ്റ സംഭരിക്കുന്നതിന് ഈ ബക്കറ്റ് നിറഞ്ഞിരിക്കുന്നു. ഈ സാഹചര്യത്തിൽ ചെയ്യുന്നത് 'എ‌എസി‌ഡി‌ബി‌എഫ്' ഡാറ്റാ ബക്കറ്റിന്റെ അവസാനം ഒരു പുതിയ ഡാറ്റ ബക്കറ്റ് ചേർ‌ക്കുകയും അതുമായി ബന്ധിപ്പിക്കുകയും ചെയ്യുന്നു എന്നതാണ്. തുടർന്ന് പുതിയ റെക്കോർഡ് R2 പുതിയ ബക്കറ്റിലേക്ക് ചേർക്കുന്നു. അങ്ങനെ ഇത് സ്റ്റാറ്റിക് ഹാഷിംഗ് വിലാസം നിലനിർത്തുന്നു. നിറയുമ്പോൾ ഇതിന് എത്ര പുതിയ ഡാറ്റ ബക്കറ്റുകൾ ചേർക്കാൻ കഴിയും.

ഹാഷിംഗ് തുറക്കുക

ഈ രീതിയിൽ, പഴയതിനെ പുനരാലേഖനം ചെയ്യുന്നതിനുപകരം പുതിയ റെക്കോർഡ് നൽകാൻ പുതിയ ലഭ്യമായ ഡാറ്റാ ബ്ലോക്ക് ഉപയോഗിക്കുന്നു. ഈ രീതിയെ ഓപ്പൺ ഹാഷിംഗ് അല്ലെങ്കിൽ ലീനിയർ പ്രോബിംഗ്.

ചുവടെയുള്ള ഉദാഹരണത്തിൽ, ഉൾപ്പെടുത്തേണ്ട ഒരു പുതിയ റെക്കോർഡാണ് R2. എന്നാൽ ഹാഷ് ഫംഗ്ഷൻ വിലാസം 237 ആയി സൃഷ്ടിക്കുന്നു. പക്ഷേ ഇത് ഇതിനകം നിറഞ്ഞിരിക്കുന്നു. അതിനാൽ സിസ്റ്റം അടുത്തതായി ലഭ്യമായ ഡാറ്റാ ബക്കറ്റ് 238 ൽ തിരയുകയും അതിന് R2 നൽകുകയും ചെയ്യുന്നു.

ലീനിയർ പ്രോബിംഗിൽ, പഴയ ബക്കറ്റും പുതിയ ബക്കറ്റും തമ്മിലുള്ള വ്യത്യാസം സാധാരണയായി നിശ്ചയിച്ചിട്ടുണ്ട്, ഇത് മിക്ക കേസുകളിലും 1 ആയിരിക്കും.

ക്വാഡ്രാറ്റിക് അന്വേഷണം

ഇത് ലീനിയർ പ്രോബിംഗിന് സമാനമാണ്. എന്നാൽ ഇവിടെ, പഴയതും പുതിയതുമായ ബക്കറ്റ് തമ്മിലുള്ള വ്യത്യാസം രേഖീയമാണ്. പുതിയ ബക്കറ്റ് വിലാസം നിർണ്ണയിക്കാൻ ഞങ്ങൾ ക്വാഡ്രാറ്റിക് പ്രവർത്തനം ഉപയോഗിക്കുന്നു.

ഇരട്ട ഹാഷിംഗ്

ലീനിയർ പ്രോബിംഗിന്റെ മറ്റൊരു രീതി കൂടിയാണിത്. ലീനിയർ പ്രോബിംഗിലെന്നപോലെ ഇവിടെ വ്യത്യാസം നിശ്ചയിച്ചിട്ടുണ്ട്, എന്നാൽ മറ്റൊരു ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ചാണ് ഈ നിശ്ചിത വ്യത്യാസം കണക്കാക്കുന്നത്. അതിനാൽ പേര് ഇരട്ട ഹാഷിംഗ് എന്നാണ്.

ഡൈനാമിക് ഹാഷിംഗ്

സ്റ്റാറ്റിക് ഹാഷിംഗിന്റെ പ്രശ്നങ്ങൾ മറികടക്കാൻ ഈ ഹാഷിംഗ് രീതി ഉപയോഗിക്കുന്നു - ബക്കറ്റ് ഓവർഫ്ലോ. ഹാഷിംഗിന്റെ ഈ രീതിയിൽ, റെക്കോർഡുകൾ വർദ്ധിക്കുകയോ കുറയുകയോ ചെയ്യുമ്പോൾ ഡാറ്റ ബക്കറ്റുകൾ വളരുകയോ ചുരുങ്ങുകയോ ചെയ്യുന്നു. ഈ ഹാഷിംഗ് രീതിയെ എക്സ്റ്റെൻഡബിൾ ഹാഷിംഗ് രീതി എന്നും വിളിക്കുന്നു. ഈ രീതി മനസിലാക്കാൻ നമുക്ക് ഒരു ഉദാഹരണം നോക്കാം.

R1, R2, R4 എന്നീ മൂന്ന് റെക്കോർഡുകൾ പട്ടികയിൽ ഉണ്ടെന്ന് പരിഗണിക്കുക. ഈ റെക്കോർഡുകൾ യഥാക്രമം 100100, 010110, 110110 വിലാസങ്ങൾ സൃഷ്ടിക്കുന്നു. സംഭരിക്കുന്നതിനുള്ള ഈ രീതി ഈ വിലാസത്തിന്റെ ഒരു ഭാഗം മാത്രമേ പരിഗണിക്കുന്നുള്ളൂ - പ്രത്യേകിച്ചും ഡാറ്റ സംഭരിക്കുന്നതിനുള്ള ആദ്യ ഒരു ബിറ്റ് മാത്രം. അതിനാൽ അവയിൽ മൂന്നെണ്ണം 0, 1 വിലാസത്തിൽ ലോഡുചെയ്യാൻ ശ്രമിക്കുന്നു.

ഇവിടെ R3 ന് എന്ത് സംഭവിക്കും? R3- ന് ബക്കറ്റ് ഇടമില്ല. R3 ഉൾക്കൊള്ളാൻ ബക്കറ്റ് ചലനാത്മകമായി വളരണം. അതിനാൽ വിലാസത്തിന് 2 ബിറ്റിനേക്കാൾ 1 ബിറ്റുകൾ ഉണ്ടെന്ന് ഇത് മാറ്റുന്നു, തുടർന്ന് നിലവിലുള്ള ഡാറ്റ 2 ബിറ്റ് വിലാസമായി അപ്‌ഡേറ്റുചെയ്യുന്നു. പിന്നെ അത് R3 ഉൾക്കൊള്ളാൻ ശ്രമിക്കുന്നു.

പുതിയ വിലാസം പ്രതിഫലിപ്പിക്കുന്നതിനായി R1, R2 എന്നിവയുടെ വിലാസം മാറ്റിയതായും R3 കൂടി ചേർത്തിരിക്കുന്നതായും ഇപ്പോൾ കാണാം. ഡാറ്റയുടെ വലുപ്പം കൂടുന്നതിനനുസരിച്ച് നിലവിലുള്ള ബക്കറ്റുകളിൽ ഉൾപ്പെടുത്താൻ ഇത് ശ്രമിക്കുന്നു. ബക്കറ്റുകളൊന്നും ലഭ്യമല്ലെങ്കിൽ, വലിയ വിലാസം പരിഗണിക്കുന്നതിനായി ബിറ്റുകളുടെ എണ്ണം വർദ്ധിപ്പിക്കുന്നു, അതിനാൽ ബക്കറ്റുകൾ വർദ്ധിപ്പിക്കുന്നു. ഞങ്ങൾ‌ ഏതെങ്കിലും റെക്കോർ‌ഡ് ഇല്ലാതാക്കുകയാണെങ്കിൽ‌, ഡാറ്റകൾ‌ കുറഞ്ഞ ബക്കറ്റുകൾ‌ ഉപയോഗിച്ച് സംഭരിക്കാൻ‌ കഴിയുമെങ്കിൽ‌, അത് ബക്കറ്റ് വലുപ്പം ചുരുക്കുന്നു. ഞങ്ങൾ മുകളിൽ കണ്ടതിന്റെ വിപരീതമാണ് ഇത് ചെയ്യുന്നത്. ഒരു ഡൈനാമിക് ഹാഷിംഗ് പ്രവർത്തിക്കുന്നത് ഇങ്ങനെയാണ്. തുടക്കത്തിൽ ഹാഷ് ഫംഗ്ഷൻ സൃഷ്ടിച്ച ഭാഗിക സൂചിക / വിലാസം മാത്രമേ ഡാറ്റ സംഭരിക്കാൻ പരിഗണിക്കൂ. ഡാറ്റയുടെ എണ്ണം കൂടുകയും കൂടുതൽ ബക്കറ്റ് ആവശ്യമായി വരികയും ചെയ്യുന്നതിനാൽ, ഡാറ്റ സംഭരിക്കുന്നതിന് സൂചികയുടെ വലിയ ഭാഗം പരിഗണിക്കുന്നു.

ഡൈനാമിക് ഹാഷിംഗിന്റെ പ്രയോജനങ്ങൾ

  • സിസ്റ്റത്തിൽ ഡാറ്റ വളരുന്നതിനാൽ പ്രകടനം കുറയുന്നില്ല. ഡാറ്റയെ ഉൾക്കൊള്ളുന്നതിനായി ഇത് മെമ്മറി വലുപ്പം വർദ്ധിപ്പിക്കുന്നു.
  • ഇത് വളരുകയും ഡാറ്റയുമായി ചുരുങ്ങുകയും ചെയ്യുന്നതിനാൽ, മെമ്മറി നന്നായി ഉപയോഗപ്പെടുത്തുന്നു. ഉപയോഗിക്കാത്ത മെമ്മറി കിടക്കുന്നതൊന്നും ഉണ്ടാകില്ല.
  • ഡാറ്റ വളരുകയും ഇടയ്ക്കിടെ ചുരുങ്ങുകയും ചെയ്യുന്ന ഡൈനാമിക് ഡാറ്റാബേസുകൾക്ക് നല്ലതാണ്.

 

ഡൈനാമിക് ഹാഷിംഗിന്റെ പോരായ്മകൾ

  • ഡാറ്റ വലുപ്പം കൂടുന്നതിനനുസരിച്ച് ബക്കറ്റ് വലുപ്പവും വർദ്ധിക്കുന്നു. ഈ വിലാസങ്ങൾ ബക്കറ്റ് വിലാസ പട്ടികകളിൽ പരിപാലിക്കും. കാരണം, ബക്കറ്റുകൾ വളരുകയും ചുരുങ്ങുകയും ചെയ്യുമ്പോൾ ഡാറ്റയുടെ വിലാസം മാറിക്കൊണ്ടിരിക്കും. ഡാറ്റയിൽ വലിയ വർദ്ധനവുണ്ടാകുമ്പോൾ, ഈ ബക്കറ്റ് വിലാസ പട്ടിക നിലനിർത്തുന്നത് ശ്രമകരമാണ്.
  • ഈ കേസിലും ബക്കറ്റ് ഓവർഫ്ലോ സാഹചര്യം ഉണ്ടാകും. സ്റ്റാറ്റിക് ഹാഷിംഗിനേക്കാൾ ഈ അവസ്ഥയിലെത്താൻ കുറച്ച് സമയമെടുക്കും.

ഓർഡർ ചെയ്ത ഇൻഡെക്സിംഗും ഹാഷിംഗും താരതമ്യം

ഇന്ഡക്സിംഗ് ക്രമീകരിച്ചു

ഹാഷിംഗ്

കീ മൂല്യത്തിനായി മെമ്മറിയിലെ വിലാസങ്ങൾ അടുക്കിയിരിക്കുന്നു. ഈ കീ മൂല്യം പ്രാഥമിക കീ അല്ലെങ്കിൽ പട്ടികയിലെ മറ്റേതെങ്കിലും നിര ആകാം.കീ മൂല്യത്തിലെ ഹാഷ് ഫംഗ്ഷൻ ഉപയോഗിച്ചാണ് വിലാസങ്ങൾ സൃഷ്ടിക്കുന്നത്. ഈ കീ മൂല്യം പ്രാഥമിക കീ അല്ലെങ്കിൽ പട്ടികയിലെ മറ്റേതെങ്കിലും നിര ആകാം.
ഫയലിൽ ഡാറ്റ വർദ്ധിക്കുന്നതിനനുസരിച്ച് ഈ രീതിയുടെ പ്രകടനം കുറയുന്നു. ഇത് ഒരു അടുക്കിയ രൂപത്തിൽ ഡാറ്റ സംഭരിക്കുന്നതിനാൽ, ഉൾപ്പെടുത്തൽ / ഇല്ലാതാക്കൽ / അപ്‌ഡേറ്റ് പ്രവർത്തനം ഉള്ളപ്പോൾ, റെക്കോർഡ് അടുക്കുന്നതിന് ഒരു അധിക ശ്രമം ആവശ്യമാണ്. ഇത് അതിന്റെ പ്രകടനം കുറയ്ക്കുന്നു.ഡാറ്റ പതിവായി ചേർക്കുകയും ഇല്ലാതാക്കുകയും ചെയ്യുമ്പോൾ ഡൈനാമിക് ഹാഷിംഗിന്റെ പ്രകടനം മികച്ചതായിരിക്കും. ഡാറ്റാബേസ് വളരെ വലുതാണെങ്കിൽ, അറ്റകുറ്റപ്പണി ചെലവേറിയതായിരിക്കും.

റെക്കോർഡ് വലുപ്പ ഐഡി മുമ്പ് അറിയപ്പെട്ടിരുന്ന ചെറിയ ഡാറ്റാബേസുകൾക്ക് സ്റ്റാറ്റിക് ഹാഷിംഗ് നല്ലതായിരിക്കും. ഡാറ്റയിൽ വളർച്ചയുണ്ടെങ്കിൽ, ഇത് ബക്കറ്റ് ഓവർഫ്ലോ പോലുള്ള ഗുരുതരമായ പ്രശ്‌നങ്ങൾക്ക് കാരണമാകുന്നു.

ഇല്ലാതാക്കൽ / അപ്‌ഡേറ്റ് പ്രവർത്തനം കാരണം ഉപയോഗിക്കാത്ത ഡാറ്റ ബ്ലോക്കുകൾ ഉണ്ടാകും. വീണ്ടും ഉപയോഗിക്കുന്നതിന് ഈ ഡാറ്റ ബ്ലോക്കുകൾ റിലീസ് ചെയ്യില്ല. അതിനാൽ മെമ്മറിയുടെ ആനുകാലിക പരിപാലനം ആവശ്യമാണ്. അല്ലാത്തപക്ഷം, മെമ്മറി പാഴാകുകയും പ്രകടനവും നശിക്കുകയും ചെയ്യും. മെമ്മറി നിലനിർത്തുന്നതിന് കോസ്റ്റ് ഓവർഹെഡ് ആയിരിക്കും.സ്റ്റാറ്റിക്, ഡൈനാമിക് ഹാഷിംഗിൽ, മെമ്മറി നന്നായി കൈകാര്യം ചെയ്യുന്നു. സ്റ്റാറ്റിക് ഹാഷിംഗിൽ ബക്കറ്റ് ഓവർഫ്ലോയും മികച്ച രീതിയിൽ കൈകാര്യം ചെയ്യുന്നു. ഡൈനാമിക് ഹാഷിംഗിൽ ചുരുങ്ങാനും വളരാനുമാണ് ഡാറ്റാ ബ്ലോക്കുകൾ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്.

ഒരു വലിയ ഡാറ്റാബേസ് വളർച്ച ഉണ്ടാകുമ്പോൾ ഡൈനാമിക് ഹാഷിംഗിൽ ബക്കറ്റ് വിലാസ പട്ടിക പരിപാലിക്കുന്നതിനുള്ള ഒരു ഓവർഹെഡ് ഉണ്ടാകും.

ഡാറ്റയുടെ ശ്രേണി വീണ്ടെടുക്കുന്നതിന് മുൻഗണന- അതായത് പ്രത്യേക ശ്രേണിക്കായി വീണ്ടെടുക്കൽ ഡാറ്റ ഉള്ളപ്പോൾ, ഈ രീതി ഏറ്റവും അനുയോജ്യമാണ്.തിരയൽ കീ അടിസ്ഥാനമാക്കി ഒരു പ്രത്യേക റെക്കോർഡ് വീണ്ടെടുക്കാൻ ഈ രീതി അനുയോജ്യമാണ്. തിരയൽ കീയിൽ ഹാഷ് ഫംഗ്ഷൻ ഇല്ലെങ്കിൽ ഇത് മികച്ച രീതിയിൽ പ്രവർത്തിക്കില്ല.