షార్డింగ్ క్లుప్తంగా
షార్డింగ్ అనేది ఒక పెద్ద డేటాబేస్ను షార్డ్స్ (shards) అని పిలిచే చిన్న చిన్న ముక్కలుగా విభజిస్తుంది. ఒకే భారీ డేటాబేస్కు బదులుగా, మీరు డేటాను బహుళ సర్వర్లలో పంపిణీ చేస్తారు.
ఈ పద్ధతి మీకు సహాయపడుతుంది:
- ఎక్కువ డేటాను నిర్వహించడానికి
- ఎక్కువ రిక్వెస్ట్లను ప్రాసెస్ చేయడానికి
- సింగిల్ మెషీన్లపై లోడ్ను తగ్గించడానికి
- హోరిజంటల్గా స్కేల్ చేయడానికి
డేటాను సరైన షార్డ్కు ఎలా పంపాలి (route) అనే దానిని మీరు నిర్ణయించుకోవాలి. ఇక్కడ ప్రధాన వ్యూహాలు ఉన్నాయి:
- రేంజ్ ఆధారిత షార్డింగ్ (Range Based Sharding) మీరు విలువల శ్రేణి (range of values) ఆధారంగా డేటాను విభజిస్తారు. ఉదాహరణ:
- షార్డ్ 1: వినియోగదారులు 1 నుండి 3000 వరకు
- షార్డ్ 2: వినియోగదారులు 3001 నుండి 6000 వరకు
- షార్డ్ 3: వినియోగదారులు 6001 నుండి 10000 వరకు
హాష్ ఆధారిత షార్డింగ్ (Hash Based Sharding) షార్డ్ను ఎంచుకోవడానికి మీరు ఒక గణిత ఫంక్షన్ను ఉపయోగిస్తారు. ఉదాహరణ: మీరు యూజర్ ఐడి (user ID) పై మోడ్యులో ఆపరేటర్ను ఉపయోగిస్తారు. ఫలితం 0 అయితే, డేటా షార్డ్ 1కి వెళుతుంది. ఫలితం 1 అయితే, అది షార్డ్ 2కి వెళుతుంది. ఇది డేటాను సమానంగా పంపిణీ చేస్తుంది.
డైరెక్టరీ ఆధారిత షార్డింగ్ (Directory Based Sharding) సరైన షార్డ్ను కనుగొనడానికి మీరు లుకప్ టేబుల్ను ఉపయోగిస్తారు. ఉదాహరణ: ఒక నోటిఫికేషన్ సిస్టమ్ డైరెక్టరీలో "YouTube" వంటి యాప్ పేరును వెతుకుతుంది. డైరెక్టరీ సిస్టమ్కు "Shard 1"ని ఉపయోగించమని చెబుతుంది. ఇది ఫైల్ సిస్టమ్ ఫోల్డర్ లాగా పనిచేస్తుంది.
భౌగోళిక షార్డింగ్ (Geographical Sharding) మీరు స్థానం (location) ఆధారంగా డేటాను నిల్వ చేస్తారు. ఉదాహరణ:
- ఇండియా వినియోగదారులు ఇండియా షార్డ్కు వెళతారు.
- USA వినియోగదారులు USA షార్డ్కు వెళతారు.
- యూరోపియన్ వినియోగదారులు EU షార్డ్కు వెళతారు.
డైనమిక్ షార్డింగ్ (Dynamic Sharding) మీరు రేంజ్లు లేదా హాష్లను హార్డ్కోడ్ చేయరు. మీ అప్లికేషన్ రన్టైమ్లో కాన్ఫిగరేషన్ టేబుల్ను తనిఖీ చేస్తుంది. మీ కోడ్ను మార్చకుండానే మీరు కొత్త షార్డ్లను జోడించవచ్చు.
హైబ్రిడ్ షార్డింగ్ (Hybrid Sharding) మెరుగైన ఫలితాల కోసం మీరు వివిధ పద్ధతులను కలుపుతారు. ఒక సాధారణ పద్ధతి డైరెక్టరీ ఆధారిత + హాష్ ఆధారిత (Directory Based + Hash Based). మొదట, ఒక సమూహాన్ని (group) కనుగొనడానికి మీరు డైరెక్టరీని ఉపయోగిస్తారు. ఆ తర్వాత, ఆ సమూహంలోని నిర్దిష్ట షార్డ్ను కనుగొనడానికి హాష్ను ఉపయోగిస్తారు. ఇది మీకు ఫ్లెక్సిబిలిటీ మరియు బ్యాలెన్స్ను రెండింటినీ అందిస్తుంది.
మూలం: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b