ഷാർഡിംഗ് ചുരുക്കത്തിൽ

ഒരു വലിയ ഡാറ്റാബേസിനെ ഷാർഡുകൾ (shards) എന്ന് വിളിക്കപ്പെടുന്ന ചെറിയ ഭാഗങ്ങളായി വിഭജിക്കുന്ന രീതിയാണ് ഷാർഡിംഗ്. ഒരു വലിയ ഡാറ്റാബേസിന് പകരം, നിങ്ങൾ ഡാറ്റയെ ഒന്നിലധികം സെർവറുകളിലായി വിതരണം ചെയ്യുന്നു.

ഈ രീതി നിങ്ങളെ സഹായിക്കുന്നു:

  • കൂടുതൽ ഡാറ്റ കൈകാര്യം ചെയ്യാൻ
  • കൂടുതൽ റിക്വസ്റ്റുകൾ പ്രോസസ്സ് ചെയ്യാൻ
  • ഒറ്റപ്പെട്ട മെഷീനുകളിലെ ലോഡ് കുറയ്ക്കാൻ
  • ഹൊറിസോണ്ടൽ സ്കെയിലിംഗ് (Scale horizontally) സാധ്യമാക്കാൻ

ഡാറ്റ ശരിയായ ഷാർഡിലേക്ക് എങ്ങനെ എത്തിക്കണം എന്ന് നിങ്ങൾ തീരുമാനിക്കണം. പ്രധാനപ്പെട്ട തന്ത്രങ്ങൾ താഴെ പറയുന്നവയാണ്:

  1. Range Based Sharding മൂല്യങ്ങളുടെ ഒരു പരിധി (range) അടിസ്ഥാനമാക്കി നിങ്ങൾ ഡാറ്റയെ വിഭജിക്കുന്നു. ഉദാഹരണം:
  • ഷാർഡ് 1: ഉപയോക്താക്കൾ 1 മുതൽ 3000 വരെ
  • ഷാർഡ് 2: ഉപയോക്താക്കൾ 3001 മുതൽ 6000 വരെ
  • ഷാർഡ് 3: ഉപയോക്താക്കൾ 6001 മുതൽ 10000 വരെ
  1. Hash Based Sharding ഒരു ഷാർഡ് തിരഞ്ഞെടുക്കാൻ നിങ്ങൾ ഒരു ഗണിതശാസ്ത്ര ഫംഗ്ഷൻ (mathematical function) ഉപയോഗിക്കുന്നു. ഉദാഹരണം: നിങ്ങൾ ഒരു യൂസർ ഐഡിയിൽ മോഡുലോ ഓപ്പറേറ്റർ (modulo operator) ഉപയോഗിക്കുന്നു. ഫലം 0 ആണെങ്കിൽ, ഡാറ്റ ഷാർഡ് 1-ലേക്ക് പോകുന്നു. ഫലം 1 ആണെങ്കിൽ, അത് ഷാർഡ് 2-ലേക്ക് പോകുന്നു. ഇത് ഡാറ്റയെ തുല്യമായി വിതരണം ചെയ്യുന്നു.

  2. Directory Based Sharding ശരിയായ ഷാർഡ് കണ്ടെത്താൻ നിങ്ങൾ ഒരു ലുക്കപ്പ് ടേബിൾ (lookup table) ഉപയോഗിക്കുന്നു. ഉദാഹരണം: ഒരു നോട്ടിഫിക്കേഷൻ സിസ്റ്റം ഒരു ഡയറക്ടറിയിൽ "YouTube" പോലുള്ള ഒരു ആപ്പ് പേര് തിരയുന്നു. ഡയറക്ടറി സിസ്റ്റത്തോട് "Shard 1" ഉപയോഗിക്കാൻ പറയുന്നു. ഇത് ഒരു ഫയൽ സിസ്റ്റം ഫോൾഡർ പോലെ പ്രവർത്തിക്കുന്നു.

  3. Geographical Sharding സ്ഥലത്തിന്റെ അടിസ്ഥാനത്തിൽ നിങ്ങൾ ഡാറ്റ സംഭരിക്കുന്നു. ഉദാഹരണം:

  • ഇന്ത്യയിലെ ഉപയോക്താക്കൾ ഇന്ത്യ ഷാർഡിലേക്ക് പോകുന്നു.
  • യുഎസ്എ ഉപയോക്താക്കൾ യുഎസ്എ ഷാർഡിലേക്ക് പോകുന്നു.
  • യൂറോപ്യൻ ഉപയോക്താക്കൾ ഇയു (EU) ഷാർഡിലേക്ക് പോകുന്നു.
  1. Dynamic Sharding നിങ്ങൾ പരിധികളോ (ranges) ഹാഷുകളോ (hashes) ഹാർഡ്കോഡ് ചെയ്യുന്നില്ല. നിങ്ങളുടെ ആപ്ലിക്കേഷൻ റൺടൈമിൽ (runtime) ഒരു കോൺഫിഗറേഷൻ ടേബിൾ പരിശോധിക്കുന്നു. കോഡ് മാറ്റാതെ തന്നെ നിങ്ങൾക്ക് പുതിയ ഷാർഡുകൾ ചേർക്കാൻ കഴിയും.

  2. Hybrid Sharding മികച്ച ഫലങ്ങൾ ലഭിക്കുന്നതിനായി നിങ്ങൾ വിവിധ രീതികൾ സംയോജിപ്പിക്കുന്നു. ഡയറക്ടറി അടിസ്ഥാനമാക്കിയുള്ളതും (Directory Based) ഹാഷ് അടിസ്ഥാനമാക്കിയുള്ളതും (Hash Based) ചേർന്നതാണ് ഒരു സാധാരണ രീതി. ആദ്യം, ഒരു ഗ്രൂപ്പ് കണ്ടെത്താൻ നിങ്ങൾ ഒരു ഡയറക്ടറി ഉപയോഗിക്കുന്നു. തുടർന്ന്, ആ ഗ്രൂപ്പിനുള്ളിലെ പ്രത്യേക ഷാർഡ് കണ്ടെത്താൻ ഒരു ഹാഷ് ഉപയോഗിക്കുന്നു. ഇത് നിങ്ങൾക്ക് വഴക്കവും (flexibility) സന്തുലിതാവസ്ഥയും (balance) നൽകുന്നു.

ഉറവിടം: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b