ऐसा लगता है कि आपने अपने आवेदन के लिए अनिवार्य रूप से वैध, अल्पकालिक डेटा-स्टोर तकनीकी निर्णय लिया है - आपने एक कस्टम डेटा स्टोर प्रबंधन उपकरण लिखने के लिए चुना।
आप किसी भी दिशा में जाने के विकल्पों के साथ, एक निरंतरता पर बैठे हैं।
लंबी अवधि में, आप संभावना (लगभग, लेकिन 100% निश्चित रूप से नहीं) अपने आप को मुसीबत में पाते हैं, और मौजूदा डेटा स्टोर समाधान का उपयोग करने के लिए बदलने के लिए बेहतर हो सकता है। विशिष्ट, बहुत ही सामान्य, पूर्वानुमेय, प्रदर्शन समस्याएं हैं जिनसे आपको निपटने के लिए मजबूर किया जाएगा, और आप अपने स्वयं के रोल करने के बजाय मौजूदा उपकरणों का उपयोग करने से बेहतर हैं।
ऐसा लगता है कि आपने एक छोटा (छोटा) कस्टम-उद्देश्य डेटाबेस लिखा है, जो आपके एप्लिकेशन द्वारा निर्मित और सीधे उपयोग किया गया है। मुझे लगता है कि आप वास्तविक डिस्क लेखन और पढ़ने का प्रबंधन करने के लिए एक ओएस और फाइल सिस्टम पर भरोसा कर रहे हैं, और संयोजन को डेटा-स्टोर के रूप में मान रहे हैं।
जब जो करना था कर लिया
आप डेटा संग्रहण के लिए एक स्वीट-स्पॉट पर बैठे हैं। एक ओएस और फाइल सिस्टम डेटा स्टोर अविश्वसनीय रूप से सुविधाजनक, सुलभ और क्रॉस-प्लेटफॉर्म पोर्टेबल है। यह संयोजन इतने लंबे समय से चला आ रहा है, कि आपका समर्थन किया जाना निश्चित है, और लगभग किसी भी मानक परिनियोजन कॉन्फ़िगरेशन पर आपका एप्लिकेशन चलना है।
कोड लिखने के लिए भी यह एक आसान संयोजन है - एपीआई काफी सीधा-आगे और बुनियादी है, और इसे काम करने के लिए कोड की अपेक्षाकृत कुछ पंक्तियां लगती हैं।
आमतौर पर, यह आदर्श है कि आपने क्या किया है:
- नए विचारों का प्रोटोटाइप
- बिल्डिंग अनुप्रयोगों को जो बड़े पैमाने पर, प्रदर्शन के हिसाब से होने की संभावना नहीं है
- असामान्य परिस्थितियों से विवश, जैसे डेटाबेस स्थापित करने के लिए संसाधनों की कमी
वैकल्पिक
आप विकल्पों की एक निरंतरता पर हैं, और दो 'दिशाएं' हैं आप यहां से जा सकते हैं, जो मैं 'डाउन' और 'अप' के रूप में सोचता हूं:
नीचे
यह लागू करने के लिए कम से कम विकल्प है, लेकिन यह पूर्णता के लिए यहां है:
आप चाहें, तो नीचे जा सकते हैं , अर्थात्, ओएस और फाइल सिस्टम को पूरी तरह से बायपास करें और वास्तव में डिस्क से सीधे लिखें और पढ़ें। यह विकल्प आमतौर पर केवल उन मामलों में प्रासंगिक है जहां चरम दक्षता की आवश्यकता होती है - उदाहरण के लिए, एक न्यूनतम / छोटे एमपी 3 प्लेयर डिवाइस के लिए, उदाहरण के लिए, पूरी तरह कार्यात्मक ओएस के लिए पर्याप्त रैम के बिना , या वेनबैक मशीन की तरह कुछ है , जिसे अविश्वसनीय रूप से कुशल द्रव्यमान की आवश्यकता होती है डेटा राइटिंग ऑपरेशन (ज्यादातर डेटा स्टोर धीमी गति से ट्रेड करता है, तेजी से रीड के लिए लिखता है, क्योंकि यह लगभग सभी अनुप्रयोगों के लिए अधिक सामान्य उपयोग का मामला है)।
यूपी
यहां कई उप-श्रेणियां हैं - ये बिल्कुल अनन्य नहीं हैं, हालांकि। कुछ उपकरण दोनों को फैलाते हैं, प्रत्येक में कुछ कार्यक्षमता प्रदान करते हैं, कुछ पूरी तरह से एक मोड में काम करने से दूसरे में काम करने के लिए स्विच कर सकते हैं, और कुछ को एक दूसरे के शीर्ष पर स्तरित किया जा सकता है, जो आपके आवेदन के विभिन्न हिस्सों को अलग कार्यक्षमता प्रदान करता है।
अधिक शक्तिशाली डेटा स्टोर
डेटा हेरफेर की जटिलता के प्रबंधन के लिए अपने स्वयं के अनुप्रयोग पर भरोसा करते हुए, आप अपने आप को डेटा के उच्च और उच्च संस्करणों को संग्रहीत करने की आवश्यकता पा सकते हैं। की-वैल्यू स्टोर की एक पूरी श्रृंखला आपके लिए उपलब्ध है, जिसमें संबंधित कार्यों के लिए अलग-अलग समर्थन है। NoSQL उपकरण इस श्रेणी में आते हैं, साथ ही साथ अन्य।
जब आपके आवेदन का वर्णन किया जाता है, तो इसे स्केल करने का स्पष्ट रास्ता है:
- यह असामान्य रूप से भारी पढ़ने वाला है
- आप कम (अल्पकालिक) स्थिरता गारंटी के लिए उच्च प्रदर्शन (कई प्रस्ताव "अंतिम स्थिरता") के साथ व्यापार करने के साथ ठीक हैं।
- "सीधे" अधिकांश डेटा हेरफेर और निरंतरता की कमी का प्रबंधन करता है (व्यवहार में, आप शायद पहली बार में एक तीसरे पक्ष के उपकरण का उपयोग करेंगे, हालांकि अंततः आप इसे अपने आवेदन में या एक कस्टम लिखित मध्यवर्ती परत में लाएंगे) ।
- आप "अपेक्षाकृत सरल" डेटा हेरफेर आवश्यकताओं के साथ बड़े पैमाने पर डेटा की मात्रा को देख रहे हैं जिसे आप संग्रहीत कर रहे हैं और / या इसके माध्यम से खोज करने की आपकी क्षमता है।
यहाँ कुछ विगले कमरा है - आप धीमी रीडिंग के लिए बेहतर रीड कंसिस्टेंसी को बाध्य कर सकते हैं। विभिन्न उपकरण और विकल्प डेटा हेरफेर एपिस, इंडेक्सिंग और अन्य विकल्प प्रदान करते हैं, जो आपके विशिष्ट एप्लिकेशन को आसानी से लिखने के लिए कम या ज्यादा अनुकूल हो सकते हैं। इसलिए यदि उपरोक्त बिंदु आपके आवेदन का लगभग पूरी तरह से वर्णन करते हैं, तो आप अधिक शक्तिशाली डेटा स्टोर समाधान के साथ काम करने के लिए "करीब पर्याप्त" हो सकते हैं।
प्रसिद्ध उदाहरण: CouchDB , MongoDB , Redis , Microsoft के Azure , Google App Data Store और Amazon के ECE जैसे क्लाउड स्टोरेज समाधान ।
अधिक जटिल डेटा हेरफेर इंजन
डेटा स्टोरेज एप्लिकेशन के "एसक्यूएल" परिवार, साथ ही साथ दूसरों की एक श्रृंखला, शुद्ध भंडारण इंजन की तुलना में डेटा हेरफेर उपकरण के रूप में बेहतर वर्णित है। वे अतिरिक्त कार्यक्षमता की एक विस्तृत श्रृंखला प्रदान करते हैं, डेटा के भंडारण से परे, और अक्सर चीजों के कुंजी-मूल्य स्टोर साइड में जो उपलब्ध है उससे परे। आप इस रास्ते को लेना चाहते हैं जब:
- आपको पूरी तरह से निरंतरता को पढ़ना होगा, भले ही इसका मतलब है कि आप एक प्रदर्शन हिट लेंगे।
- आप कुशलतापूर्वक अत्यधिक जटिल डेटा हेरफेर करने के लिए देख रहे हैं - बहुत जटिल JOIN और अद्यतन कार्यों, डेटा क्यूब्स और स्लाइसिंग, आदि के बारे में सोचें ...
- प्रदर्शन के लिए कठोरता से व्यापार करने के साथ आप ठीक हैं (सोचने के लिए मजबूर करें, निश्चित डेटा भंडारण प्रारूप, जैसे कि टेबल, जो आसानी से और / या कुशलता से बदल नहीं सकते हैं)।
- आपके पास साधनों और इंटरफेस के कई गुना अधिक जटिल सेट से निपटने के लिए संसाधन हैं।
यह डेटाबेस या डेटा स्टोर के बारे में सोचने का अधिक "पारंपरिक" तरीका है, और बहुत लंबे समय तक रहा है - इसलिए यहां बहुत कुछ उपलब्ध है और इससे निपटने के लिए अक्सर बहुत जटिलता है। यह संभव है, हालांकि यह कुछ विशेषज्ञता और ज्ञान लेता है, और सरल समाधानों का निर्माण करता है / बहुत अधिक जटिलता से बचता है - आप सबसे अधिक संभावना तीसरे पक्ष के उपकरणों और पुस्तकालयों का उपयोग करके समाप्त करेंगे, हालांकि यह आपके लिए अधिकांश का प्रबंधन करेगा।
प्रसिद्ध उदाहरण MySQL , SQL सर्वर , Oracle का डेटाबेस और DB2 हैं ।
कार्य को आउटसोर्स करता है
कई, आधुनिक, तृतीय-पक्ष उपकरण और लाइब्रेरी हैं, जो आपके डेटा संग्रहण टूल और आपके एप्लिकेशन के बीच आपस में उलझते हैं, जिससे आपको जटिलता का प्रबंधन करने में मदद मिलती है।
वे शुरू में डेटा स्टोर के प्रबंधन और हेरफेर में जाने वाले अधिकांश या सभी कार्यों को दूर करने का प्रयास करते हैं, और, आदर्श रूप से, आपको केवल आवश्यकता होने पर जटिलता में एक चिकनी संक्रमण बनाने की अनुमति देता है। यह उद्यमशीलता और अनुसंधान का एक सक्रिय क्षेत्र है, जिसमें कुछ हालिया परिणाम हैं जो तुरंत सुलभ और उपयोगी हैं।
प्रसिद्ध उदाहरण एमवीसी उपकरण ( Django , Yii ), रूबी ऑन रेल्स , और डाटोमिक हैं । यहां उचित होना कठिन है क्योंकि वहाँ दर्जनों उपकरण और पुस्तकालय हैं जो विभिन्न डेटा स्टोरों के एपीआई के आसपास रैपर के रूप में कार्य करते हैं।
पुनश्च: यदि आप पाठ के लिए वीडियो पसंद करते हैं, तो आप रिच हिक्की के डेटाबेस से संबंधित वीडियो देखना चाहते हैं; वह ज्यादातर सोच को स्पष्ट करने का एक अच्छा काम करता है जो डेटा स्टोर चुनने, डिजाइन करने और उपयोग करने में जाता है।