𝗦𝗵𝗮𝗿𝗱𝗶𝗻𝗴 ಸಂಕ್ಷಿಪ್ತವಾಗಿ
ಶಾರ್ಡಿಂಗ್ (Sharding) ಎಂಬುದು ದೊಡ್ಡ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಶಾರ್ಡ್ಗಳು (shards) ಎಂದು ಕರೆಯಲ್ಪಡುವ ಸಣ್ಣ ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸುತ್ತದೆ. ಒಂದು ಬೃಹತ್ ಡೇಟಾಬೇಸ್ಗೆ ಬದಲಾಗಿ, ನೀವು ಡೇಟಾವನ್ನು ಹಲವಾರು ಸರ್ವರ್ಗಳಾದ್ಯಂತ ವಿತರಿಸುತ್ತೀರಿ.
ಈ ವಿಧಾನವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ:
- ಹೆಚ್ಚಿನ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸಲು
- ಹೆಚ್ಚಿನ ವಿನಂತಿಗಳನ್ನು (requests) ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು
- ಏಕೈಕ ಯಂತ್ರಗಳ ಮೇಲಿನ ಹೊರೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು
- ಸಮತಲವಾಗಿ ಸ್ಕೇಲ್ ಮಾಡಲು (Scale horizontally)
ಡೇಟಾವನ್ನು ಸರಿಯಾದ ಶಾರ್ಡ್ಗೆ ಹೇಗೆ ವರ್ಗಾಯಿಸಬೇಕು (route) ಎಂಬುದನ್ನು ನೀವು ನಿರ್ಧರಿಸಬೇಕು. ಇಲ್ಲಿ ಮುಖ್ಯ ತಂತ್ರಗಳಿವೆ:
- ರೇಂಜ್ ಆಧಾರಿತ ಶಾರ್ಡಿಂಗ್ (Range Based Sharding) ನೀವು ಮೌಲ್ಯಗಳ ವ್ಯಾಪ್ತಿಯ (range) ಆಧಾರದ ಮೇಲೆ ಡೇಟಾವನ್ನು ವಿಭಜಿಸುತ್ತೀರಿ. ಉದಾಹರಣೆ:
- ಶಾರ್ಡ್ 1: ಬಳಕೆದಾರರು 1 ರಿಂದ 3000
- ಶಾರ್ಡ್ 2: ಬಳಕೆದಾರರು 3001 ರಿಂದ 6000
- ಶಾರ್ಡ್ 3: ಬಳಕೆದಾರರು 6001 ರಿಂದ 10000
ಹ್ಯಾಶ್ ಆಧಾರಿತ ಶಾರ್ಡಿಂಗ್ (Hash Based Sharding) ಶಾರ್ಡ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನೀವು ಗಣಿತೀಯ ಕಾರ್ಯವನ್ನು (mathematical function) ಬಳಸುತ್ತೀರಿ. ಉದಾಹರಣೆ: ನೀವು ಬಳಕೆದಾರರ ಐಡಿ (user ID) ಮೇಲೆ ಮಾಡ್ಯುಲೋ ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಫಲಿತಾಂಶವು 0 ಆಗಿದ್ದರೆ, ಡೇಟಾ ಶಾರ್ಡ್ 1 ಕ್ಕೆ ಹೋಗುತ್ತದೆ. ಫಲಿತಾಂಶವು 1 ಆಗಿದ್ದರೆ, ಅದು ಶಾರ್ಡ್ 2 ಕ್ಕೆ ಹೋಗುತ್ತದೆ. ಇದು ಡೇಟಾವನ್ನು ಸಮಾನವಾಗಿ ಹಂಚುತ್ತದೆ.
ಡೈರೆಕ್ಟರಿ ಆಧಾರಿತ ಶಾರ್ಡಿಂಗ್ (Directory Based Sharding) ಸರಿಯಾದ ಶಾರ್ಡ್ ಅನ್ನು ಹುಡುಕಲು ನೀವು ಲುಕ್ಅಪ್ ಟೇಬಲ್ (lookup table) ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಉದಾಹರಣೆ: ಒಂದು ನೋಟಿಫಿಕೇಶನ್ ಸಿಸ್ಟಮ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ "YouTube" ನಂತಹ ಆ್ಯಪ್ ಹೆಸರನ್ನು ಹುಡುಕುತ್ತದೆ. ಆ ಡೈರೆಕ್ಟರಿಯು ಸಿಸ್ಟಮ್ಗೆ "Shard 1" ಅನ್ನು ಬಳಸಲು ತಿಳಿಸುತ್ತದೆ. ಇದು ಫೈಲ್ ಸಿಸ್ಟಮ್ ಫೋಲ್ಡರ್ನಂತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಭೌಗೋಳಿಕ ಶಾರ್ಡಿಂಗ್ (Geographical Sharding) ನೀವು ಸ್ಥಳದ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೀರಿ. ಉದಾಹರಣೆ:
- ಭಾರತದ ಬಳಕೆದಾರರು ಭಾರತದ ಶಾರ್ಡ್ಗೆ ಹೋಗುತ್ತಾರೆ.
- ಅಮೆರಿಕದ (USA) ಬಳಕೆದಾರರು ಅಮೆರಿಕದ ಶಾರ್ಡ್ಗೆ ಹೋಗುತ್ತಾರೆ.
- ಯುರೋಪಿಯನ್ ಬಳಕೆದಾರರು EU ಶಾರ್ಡ್ಗೆ ಹೋಗುತ್ತಾರೆ.
ಡೈನಾಮಿಕ್ ಶಾರ್ಡಿಂಗ್ (Dynamic Sharding) ನೀವು ವ್ಯಾಪ್ತಿಗಳು (ranges) ಅಥವಾ ಹ್ಯಾಶ್ಗಳನ್ನು ಹಾರ್ಡ್ಕೋಡ್ ಮಾಡುವುದಿಲ್ಲ. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ರನ್ಟೈಮ್ನಲ್ಲಿ ಕಾನ್ಫಿಗರೇಶನ್ ಟೇಬಲ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸದೆ ನೀವು ಹೊಸ ಶಾರ್ಡ್ಗಳನ್ನು ಸೇರಿಸಬಹುದು.
ಹೈಬ್ರಿಡ್ ಶಾರ್ಡಿಂಗ್ (Hybrid Sharding) ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಲು ನೀವು ವಿಧಾನಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತೀರಿ. ಒಂದು ಸಾಮಾನ್ಯ ಮಾದರಿಯೆಂದರೆ Directory Based + Hash Based. ಮೊದಲಿಗೆ, ನೀವು ಗುಂಪನ್ನು ಹುಡುಕಲು ಡೈರೆಕ್ಟರಿಯನ್ನು ಬಳಸುತ್ತೀರಿ. ನಂತರ, ಆ ಗುಂಪಿನೊಳಗಿನ ನಿರ್ದಿಷ್ಟ ಶಾರ್ಡ್ ಅನ್ನು ಹುಡುಕಲು ನೀವು ಹ್ಯಾಶ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಇದು ನಿಮಗೆ ನಮ್ಯತೆ (flexibility) ಮತ್ತು ಸಮತೋಲನ ಎರಡನ್ನೂ ನೀಡುತ್ತದೆ.
ಮೂಲ: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b