एक ठोस सुझाव देने के लिए तना पर्याप्त विशिष्ट नहीं है, लेकिन जो किया जा सकता है उसकी पूरी सूची इस प्रकार है:
- डेटाबेस क्लस्टर :उन स्थितियों के लिए उपयुक्त जहां आप अपनी एप्लिकेशन परत को बदलना नहीं चाहते हैं और डेटाबेस केवल आप स्पर्श करते हैं। डेटाबेस क्लस्टर से आप कितना प्राप्त कर सकते हैं इसकी एक सीमा है। यदि आपके अनुरोध की मात्रा बढ़ती रहती है, तो यह समाधान अंततः विफल हो जाएगा। लेकिन अच्छी खबर यह है कि आपके पास एक सामान्य सिंगल-इंस्टेंस MySQL में पहले से मौजूद सभी कार्यक्षमताएं हैं।
- साझा करना :चूंकि आपका प्रश्न MySQL के साथ टैग किया गया है, और यह अपने आप में शार्किंग का समर्थन नहीं करता है, यदि आप इस समाधान का उपयोग करना चाहते हैं तो आपको इसे अपनी एप्लिकेशन परत में लागू करने की आवश्यकता है। इस समाधान में आप अपने डेटा को कई डेटाबेस (अधिमानतः अलग-अलग हार्डवेयर पर कई MySQL उदाहरणों में) पर तार्किक रूप से बिखेरेंगे। यह आपकी जिम्मेदारी होगी कि आप अपने निर्दिष्ट डेटा को रखने वाले उपयुक्त डेटाबेस को खोजें। यह अब तक के सबसे प्रभावी समाधानों में से एक है लेकिन यह हमेशा संभव नहीं होता है। इसका सबसे बड़ा दोष यह है कि दो या दो से अधिक डेटाबेस के बीच बिखरे हुए डेटा को लेन-देन में शामिल नहीं किया जा सकता है।
- प्रतिकृति :आपके परिदृश्य के आधार पर आप डेटाबेस प्रतिकृति को शामिल करने में सक्षम हो सकते हैं और उन पर अपने डेटा की प्रतियां रख सकते हैं। इस तरह आप मास्टर डेटाबेस के बजाय उनसे जुड़ सकते हैं और उस पर लोड कम कर सकते हैं। डिफ़ॉल्ट प्रतिकृति परिभाषा मास्टर/दास परिदृश्य है जिसमें मास्टर से दास तक डेटा प्रवाह एक तरह से होता है। तो आप दास पर जो परिवर्तन कर सकते हैं, जबकि वे लार पर लागू होंगे, वे स्वामी को प्रभावित नहीं करेंगे। लेकिन एक मास्टर/मास्टर प्रतिकृति कॉन्फ़िगरेशन भी है जिसमें डेटा प्रवाह दोनों तरीकों से होता है। फिर भी आप दोनों मास्टर्स के बीच समवर्ती डेटा परिवर्तनों के लिए परमाणु अखंडता नहीं मान सकते। अंत में यह समाधान सबसे प्रभावी है यदि आप इसे मास्टर/स्लेव मोड में उपयोग करने की योजना बना रहे हैं और केवल-पढ़ने के लिए दासों का उपयोग कर रहे हैं।
- कैशिंग :शायद इस घोल को यहाँ शामिल नहीं किया जाना चाहिए लेकिन चूँकि आपका तना इसे अस्वीकार नहीं करता है, यह यहाँ है। डेटाबेस लोड को कम करने के तरीकों में से एक यह है कि एक बार निकाले गए डेटा को कैश किया जाए। यह समाधान विशेष रूप से फायदेमंद हो सकता है यदि डेटा निकालना महंगा है। वहाँ कई कैश सर्वर हैं, जैसे memcached या redis . इस तरह आप कई डेटाबेस कनेक्शनों को छोड़ सकते हैं लेकिन केवल डेटा निकालने के लिए।
- अन्य स्टोरेज इंजन :यदि आपका वर्तमान इंजन आपको वह प्रदान नहीं करता है जिसकी आपको आवश्यकता है, तो आप हमेशा अधिक प्रदर्शन करने वाले इंजनों पर स्विच कर सकते हैं। बेशक यह तभी संभव है जब आपकी ज़रूरतें आपको इसकी अनुमति दें। आजकल नोएसक्यूएल इंजन हैं, जो आरडीबीएमएस की तुलना में बहुत अधिक प्रदर्शनकारी हैं, जो मूल रूप से शार्डिंग का समर्थन करते हैं और आप उन्हें न्यूनतम प्रयास के साथ रैखिक रूप से स्केल कर सकते हैं। शक्तिशाली पूर्ण-पाठ खोज क्षमताओं के साथ ल्यूसीन आधारित समाधान भी हैं जो आपको समान स्वचालित शार्डिंग प्रदान करते हैं। वास्तव में आपको पारंपरिक आरडीबीएमएस का उपयोग करने का एकमात्र कारण लेनदेन का परमाणु व्यवहार है। लेकिन अगर लेन-देन जरूरी नहीं है, तो RDBMS की तुलना में बहुत बेहतर समाधान हैं।