NoSQL जैसी कोई चीज नहीं है!
NoSQL एक buzzword है।
दशकों तक, जब लोग डेटाबेस के बारे में बात कर रहे थे, उनका मतलब रिलेशनल डेटाबेस था। और जब लोग रिलेशनल डेटाबेस के बारे में बात कर रहे थे, तो उनका मतलब था कि आप एडगर एफ। कोडेड की स्ट्रक्चर्ड क्वेरी लैंग्वेज से कंट्रोल करते हैं। डेटा को किसी अन्य तरीके से संग्रहीत करना? पागलपन! और कुछ भी सिर्फ सपाट है।
लेकिन पिछले कुछ वर्षों में, लोगों ने इस हठधर्मिता पर सवाल उठाना शुरू कर दिया। लोगों को आश्चर्य हुआ कि क्या पंक्तियों और स्तंभों के साथ तालिकाओं वास्तव में डेटा का प्रतिनिधित्व करने का एकमात्र तरीका है। लोगों ने सोचना शुरू किया और कोडिंग की, और कई नई अवधारणाओं के साथ आया कि डेटा को कैसे व्यवस्थित किया जा सकता है। और उन्होंने डेटा के साथ काम करने के इन नए तरीकों के लिए डिज़ाइन किए गए नए डेटाबेस सिस्टम बनाने शुरू कर दिए।
इन सभी डेटाबेसों के दर्शन अलग-अलग थे। लेकिन इन सभी डेटाबेसों में एक बात समान थी, वह यह थी कि स्ट्रक्चर्ड क्वेरी लैंग्वेज अब उन्हें इस्तेमाल करने के लिए अच्छी फिट नहीं थी। इसलिए प्रत्येक डेटाबेस ने SQL को अपनी क्वेरी भाषाओं के साथ बदल दिया। और इसलिए NoSQL शब्द का जन्म सभी डेटाबेस प्रौद्योगिकियों के लिए एक लेबल के रूप में हुआ, जो क्लासिक रिलेशनल डेटाबेस मॉडल को परिभाषित करता है।
तो क्या NoSQL डेटाबेस में आम है?
दरअसल, ज्यादा नहीं।
आप अक्सर वाक्यांश सुनते हैं जैसे:
- NoSQL स्केलेबल है!
- NoSQL BigData के लिए है!
- NoSQL ACID का उल्लंघन करता है!
- NoSQL एक महिमा कुंजी / मूल्य की दुकान है!
क्या यह सच है? खैर, इनमें से कुछ कथन आमतौर पर NoSQL कहे जाने वाले कुछ डेटाबेस के लिए सही हो सकते हैं, लेकिन हर एक कम से कम एक दूसरे के लिए भी गलत है। दरअसल, NoSQL डेटाबेस में केवल एक चीज समान है, वह है वे डेटाबेस जो SQL का उपयोग नहीं करते हैं। बस। केवल एक चीज जो उन्हें परिभाषित करती है, वह है जो उन्हें एक-दूसरे से अलग करती है।
तो क्या NoSQL डेटाबेस को अलग करता है?
इसलिए हमने स्पष्ट किया कि उन सभी डेटाबेसों को जिन्हें आमतौर पर NoSQL के रूप में संदर्भित किया जाता है, उन्हें एक साथ मूल्यांकन करने के लिए बहुत अलग हैं। उनमें से प्रत्येक को एक विशेष समस्या को हल करने के लिए एक अच्छा फिट होने का फैसला करने के लिए अलग से मूल्यांकन करने की आवश्यकता है। लेकिन हम कहां से शुरू करते हैं? शुक्र है, NoSQL डेटाबेस को कुछ श्रेणियों में वर्गीकृत किया जा सकता है, जो विभिन्न उपयोग-मामलों के लिए उपयुक्त हैं:
दस्तावेज़ उन्मुख
उदाहरण: MongoDB, CouchDB
ताकत: हेटरोजेनस डेटा, ऑब्जेक्ट-ओरिएंटेड, फुर्तीली विकास
उनका लाभ यह है कि उन्हें एक सुसंगत डेटा संरचना की आवश्यकता नहीं होती है। वे उपयोगी होते हैं जब आपकी आवश्यकताएं और इस प्रकार आपका डेटाबेस लेआउट लगातार बदलता रहता है, या जब आप डेटासेट के साथ काम कर रहे होते हैं जो एक साथ होते हैं लेकिन फिर भी बहुत अलग दिखते हैं। जब आपके पास "कुंजी" और "मान" नामक दो स्तंभों के साथ बहुत सी तालिकाएँ होती हैं, तो ये देखने लायक हो सकते हैं।
ग्राफ़ डेटाबेस
उदाहरण: Neo4j, GiraffeDB।
ताकत: डेटा खनन
जबकि अधिकांश NoSQL डेटाबेस डेटा संबंधों को प्रबंधित करने की अवधारणा को छोड़ देते हैं, ये डेटाबेस उन तथाकथित रिलेशनल डेटाबेसों की तुलना में अधिक गले लगाते हैं।
उनका ध्यान अन्य डेटा के संबंध में डेटा को परिभाषित करने पर है। जब आपके पास प्राथमिक कुंजी के साथ बहुत सी टेबल होती हैं जो दो अन्य तालिकाओं की प्राथमिक कुंजी होती हैं (और शायद कुछ डेटा उनके बीच संबंध का वर्णन करते हैं), तो ये आपके लिए कुछ हो सकते हैं।
की-वैल्यू स्टोर
उदाहरण: रेडिस, कैसेंड्रा, मेम्चेचेबडी
ताकत: ज्ञात कुंजियों द्वारा मूल्यों की तेजी से खोज
वे बहुत सरल हैं, लेकिन यह उन्हें तेज और उपयोग करने में आसान बनाता है। जब आपको संग्रहीत प्रक्रियाओं, बाधाओं, ट्रिगर और उन सभी उन्नत डेटाबेस सुविधाओं की कोई आवश्यकता नहीं होती है और आप बस अपने डेटा का तेज़ भंडारण और पुनर्प्राप्ति चाहते हैं, तो वे आपके लिए हैं।
दुर्भाग्य से वे मानते हैं कि आप वही जानते हैं जो आप खोज रहे हैं। आपको User157641 की प्रोफ़ाइल की आवश्यकता है? कोई बात नहीं, केवल माइक्रोसेकंड ले जाएगा। लेकिन जब आप उन सभी उपयोगकर्ताओं के नाम चाहते हैं जो 16 से 24 वर्ष की आयु के हैं, तो "वफ़ल" उनके पसंदीदा भोजन के रूप में है और पिछले 24 घंटों में लॉग इन किया है? कठिन भाग्य। जब आपके पास किसी विशिष्ट परिणाम के लिए निश्चित और अद्वितीय कुंजी नहीं होती है, तो आप इसे अपने KV स्टोर से आसानी से प्राप्त नहीं कर सकते।
क्या SQL अप्रचलित है?
कुछ NoSQL समर्थकों का दावा है कि उनका पसंदीदा NoSQL डेटाबेस चीजों को करने का नया तरीका है, और SQL अतीत की बात है।
क्या वे सही हैं?
नहीं, बेशक वे नहीं हैं। जबकि ऐसी समस्याएं हैं जिनके लिए SQL उपयुक्त नहीं है, फिर भी इसे अपनी ताकत मिली। डेटा मॉडल के बहुत सारे टेबल के संग्रह के रूप में सबसे अच्छे रूप में दर्शाए जाते हैं जो एक दूसरे का संदर्भ देते हैं। विशेष रूप से क्योंकि अधिकांश डेटाबेस प्रोग्रामर को डेटा के बारे में एक संबंधपरक तरीके से सोचने के लिए दशकों से प्रशिक्षित किया गया था, और इस मानसिकता को एक नई तकनीक पर दबाने की कोशिश की जा रही थी जो इसके लिए शायद ही कभी समाप्त होती है।
NoSQL डेटाबेस SQL के लिए एक प्रतिस्थापन नहीं हैं - वे एक विकल्प हैं।
विभिन्न NoSQL डेटाबेस के आसपास अधिकांश सॉफ्टवेयर पारिस्थितिकी तंत्र अभी तक परिपक्व नहीं हैं। जब अग्रिम होते हैं, तब भी आपको पूरक उपकरण नहीं मिलते हैं जो लोकप्रिय SQL डेटाबेस के लिए उपलब्ध परिपक्व और शक्तिशाली होते हैं।
इसके अलावा, SQL के आसपास और भी बहुत कुछ पता है। कंप्यूटर वैज्ञानिकों की पीढ़ियों ने रिलेशनल डेटाबेस पर ध्यान केंद्रित करते हुए अपने करियर के दशकों को बिताया है, और यह दिखाता है: एसक्यूएल डेटाबेस और रिलेशनल डेटा मॉडलिंग के बारे में लिखा गया साहित्य, व्यावहारिक और सैद्धांतिक दोनों, पुस्तकों से भरे कई पुस्तकालयों को भर सकता है। अपने डेटा के लिए एक संबंधपरक डेटाबेस का निर्माण कैसे किया जाता है, यह एक ऐसा विषय है जिस पर अच्छी तरह से शोध किया गया है, यह एक कोने के मामले को खोजना मुश्किल है, जहां आमतौर पर पुस्तक द्वारा सर्वोत्तम अभ्यास स्वीकार नहीं किया जाता है।
दूसरी ओर, अधिकांश NoSQL डेटाबेस अभी भी अपनी प्रारंभिक अवस्था में हैं। हम अभी भी उनका उपयोग करने का सबसे अच्छा तरीका समझ रहे हैं।