ஷார்டிங் (Sharding) சுருக்கமாக
ஷார்டிங் (Sharding) என்பது ஒரு பெரிய தரவுத்தளத்தை (database) 'ஷார்ட்ஸ்' (shards) எனப்படும் சிறிய துண்டுகளாகப் பிரிக்கிறது. ஒரு மிகப்பெரிய தரவுத்தளத்திற்குப் பதிலாக, நீங்கள் தரவை பல சேவையகங்களில் (servers) விநியோகிக்கிறீர்கள்.
இந்த முறை உங்களுக்கு உதவுகிறது:
- அதிக தரவைக் கையாள
- அதிக கோரிக்கைகளை (requests) செயலாக்க
- ஒற்றை இயந்திரங்களின் சுமையைக் குறைக்க
- கிடைமட்டமாக விரிவாக்க (Scale horizontally)
தரவைச் சரியான ஷார்டிற்கு எவ்வாறு வழிநடத்துவது என்பதை நீங்கள் தீர்மானிக்க வேண்டும். இதோ அதன் முக்கிய உத்திகள்:
- வரம்பு அடிப்படையிலான ஷார்டிங் (Range Based Sharding) மதிப்புகளின் வரம்பின் அடிப்படையில் நீங்கள் தரவைப் பிரிக்கிறீர்கள். உதாரணம்:
- ஷார்ட் 1: பயனர்கள் 1 முதல் 3000 வரை
- ஷார்ட் 2: பயனர்கள் 3001 முதல் 6000 வரை
- ஷார்ட் 3: பயனர்கள் 6001 முதல் 10000 வரை
ஹேஷ் அடிப்படையிலான ஷார்டிங் (Hash Based Sharding) ஒரு ஷார்டைத் தேர்ந்தெடுக்க நீங்கள் ஒரு கணிதச் சார்பைப் (mathematical function) பயன்படுத்துகிறீர்கள். உதாரணம்: நீங்கள் பயனர் ஐடியில் (user ID) மாடுலோ ஆபரேட்டரைப் (modulo operator) பயன்படுத்துகிறீர்கள். அதன் முடிவு 0 எனில், தரவு ஷார்ட் 1-க்குச் செல்லும். முடிவு 1 எனில், அது ஷார்ட் 2-க்குச் செல்லும். இது தரவைச் சமமாகப் பரவச் செய்கிறது.
டைரக்டரி அடிப்படையிலான ஷார்டிங் (Directory Based Sharding) சரியான ஷார்டைக் கண்டறிய நீங்கள் ஒரு தேடல் அட்டவணையைப் (lookup table) பயன்படுத்துகிறீர்கள். உதாரணம்: ஒரு அறிவிப்பு அமைப்பு (notification system) "YouTube" போன்ற ஒரு செயலியின் பெயரை டைரக்டரியில் தேடுகிறது. அந்த டைரக்டரி அந்த அமைப்பிற்கு "ஷார்ட் 1"-ஐப் பயன்படுத்தச் சொல்கிறது. இது ஒரு கோப்பு முறைமை ஃபோல்டர் (file system folder) போலச் செயல்படுகிறது.
புவியியல் ரீதியான ஷார்டிங் (Geographical Sharding) நீங்கள் இருப்பிடத்தின் அடிப்படையில் தரவைச் சேமிக்கிறீர்கள். உதாரணம்:
- இந்தியப் பயனர்கள் இந்திய ஷார்டிற்குச் செல்கிறார்கள்.
- அமெரிக்கப் பயனர்கள் அமெரிக்க ஷார்டிற்குச் செல்கிறார்கள்.
- ஐரோப்பியப் பயனர்கள் EU ஷார்டிற்குச் செல்கிறார்கள்.
டைனமிக் ஷார்டிங் (Dynamic Sharding) நீங்கள் வரம்புகள் அல்லது ஹேஷ்களை நேரடியாகக் குறியீட்டில் (hardcode) எழுதுவதில்லை. உங்கள் பயன்பாடு இயங்கும் நேரத்தில் (runtime) ஒரு உள்ளமைவு அட்டவணையைச் (configuration table) சரிபார்க்கிறது. உங்கள் குறியீட்டை மாற்றாமலேயே புதிய ஷார்ட்களைச் சேர்க்க முடியும்.
ஹைப்ரிட் ஷார்டிங் (Hybrid Sharding) சிறந்த முடிவுகளைப் பெற நீங்கள் பல்வேறு முறைகளை இணைக்கிறீர்கள். ஒரு பொதுவான முறை டைரக்டரி அடிப்படையிலான + ஹேஷ் அடிப்படையிலான முறையாகும். முதலில், ஒரு குழுவைக் கண்டறிய நீங்கள் ஒரு டைரக்டரியைப் பயன்படுத்துகிறீர்கள். பின்னர், அந்த குழுவிற்குள் குறிப்பிட்ட ஷார்டைக் கண்டறிய ஒரு ஹேஷைப் பயன்படுத்துகிறீர்கள். இது உங்களுக்கு நெகிழ்வுத்தன்மை மற்றும் சமநிலை ஆகிய இரண்டையும் வழங்குகிறது.
ஆதாரம்: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b