𝗦𝗵𝗮𝗿𝗱𝗶𝗻𝗴 𝗜𝗻 𝗔 𝗡𝘂𝘁𝘀𝗵𝗲𝗹𝗹
शार्डिंग (Sharding) एका मोठ्या डेटाबेसचे 'शार्ड्स' (shards) नावाच्या लहान तुकड्यांमध्ये विभाजन करते. एका विशाल डेटाबेसऐवजी, तुम्ही डेटा अनेक सर्व्हरवर विभागता.
ही पद्धत तुम्हाला मदत करते:
- अधिक डेटा हाताळण्यासाठी
- अधिक विनंत्या (requests) प्रक्रिया करण्यासाठी
- एकाच मशीनवरील भार कमी करण्यासाठी
- हॉरिझॉन्टल स्केलिंग (Scale horizontally) करण्यासाठी
डेटा योग्य शार्डकडे कसा वळवायचा (route करायचा) हे तुम्हाला ठरवावे लागेल. येथे काही मुख्य धोरणे (strategies) दिली आहेत:
- रेंज आधारित शार्डिंग (Range Based Sharding) तुम्ही मूल्यांच्या श्रेणीवर (range) आधारित डेटाचे विभाजन करता. उदाहरण:
- शार्ड 1: वापरकर्ते 1 ते 3000
- शार्ड 2: वापरकर्ते 3001 ते 6000
- शार्ड 3: वापरकर्ते 6001 ते 10000
हॅश आधारित शार्डिंग (Hash Based Sharding) शार्ड निवडण्यासाठी तुम्ही गणितीय फंक्शनचा वापर करता. उदाहरण: तुम्ही युजर आयडीवर (user ID) मोड्युलो ऑपरेटर (modulo operator) वापरता. जर निकाल 0 असेल, तर डेटा शार्ड 1 मध्ये जातो. जर निकाल 1 असेल, तर तो शार्ड 2 मध्ये जातो. यामुळे डेटा समान प्रमाणात विभागला जातो.
डिरेक्टरी आधारित शार्डिंग (Directory Based Sharding) योग्य शार्ड शोधण्यासाठी तुम्ही लूकअप टेबलचा (lookup table) वापर करता. उदाहरण: एक नोटिफिकेशन सिस्टम डिरेक्टरीमध्ये "YouTube" सारख्या ॲपचे नाव शोधते. डिरेक्टरी सिस्टमला "Shard 1" वापरण्यास सांगते. हे फाईल सिस्टम फोल्डरप्रमाणे काम करते.
भौगोलिक शार्डिंग (Geographical Sharding) तुम्ही स्थानावर (location) आधारित डेटा साठवता. उदाहरण:
- भारतातील वापरकर्ते इंडिया शार्डमध्ये जातात.
- अमेरिकेतील वापरकर्ते USA शार्डमध्ये जातात.
- युरोपियन वापरकर्ते EU शार्डमध्ये जातात.
डायनॅमिक शार्डिंग (Dynamic Sharding) तुम्ही रेंज किंवा हॅश हार्डकोड करत नाही. तुमचे ॲप्लिकेशन रनटाइमला (runtime) कॉन्फिगरेशन टेबल तपासते. तुम्ही तुमचा कोड न बदलता नवीन शार्ड्स जोडू शकता.
हायब्रिड शार्डिंग (Hybrid Sharding) चांगले परिणाम मिळवण्यासाठी तुम्ही विविध पद्धतींचे मिश्रण करता. एक सामान्य पद्धत म्हणजे 'डिरेक्टरी आधारित + हॅश आधारित'. प्रथम, तुम्ही एखादा गट शोधण्यासाठी डिरेक्टरी वापरता. त्यानंतर, त्या गटातील विशिष्ट शार्ड शोधण्यासाठी तुम्ही हॅश वापरता. यामुळे तुम्हाला लवचिकता (flexibility) आणि संतुलन (balance) दोन्ही मिळते.
स्रोत: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b