1.1 व्याख्यान के निर्माण का सिद्धांत

आपने और मैंने डेटाबेस के साथ अपना परिचय नीचे से शुरू किया । यह लोगों को पढ़ाने के मेरे व्यक्तिगत दृष्टिकोण की एक विशेषता है। नए विषयों के बारे में बात करते समय, मैं हमेशा सबसे पहले आपको बताता हूँ कि व्यवहार में कुछ उपकरणों का उपयोग कैसे करें। और पहले से ही जब मुझे पता है कि एक व्यक्ति जानता है कि उनका उपयोग कैसे करना है, तो मैं बताना शुरू करता हूं कि सब कुछ कैसे काम करता है।

इस दृष्टिकोण के कई कारण हैं, लेकिन मुख्य कारण यह है कि सीखने की प्रक्रिया में सबसे मूल्यवान और सबसे गायब संसाधन छात्र प्रेरणा है

यह दृष्टिकोण हमारे द्वारा उपयोग किए जाने वाले दृष्टिकोण से थोड़ा अलग है, जिसका उपयोग स्कूलों और विश्वविद्यालयों में किया जाता है। लेकिन सब कुछ स्पष्ट है: जब आप स्कूल या विश्वविद्यालय में पढ़ते हैं, तो आपकी सही प्राथमिकताएँ होती हैं: इस समय अध्ययन जीवन में सबसे महत्वपूर्ण चीज है।

यदि आप वयस्कता में स्व-शिक्षा में लगे हुए हैं, तो आपको अक्सर अपनी पढ़ाई को काम, घर के कामों, बच्चों या बुजुर्ग माता-पिता की देखभाल के साथ जोड़ना होगा। और यहां अक्सर पढ़ाई पहली प्राथमिकता नहीं होगी।

यह प्राथमिकताओं के बारे में है। स्टार्टअप्स की दुनिया में एक ऐसा कॉन्सेप्ट भी है- फेल फास्ट, जितनी जल्दी हो सके फेल । यह अजीब लगता है, लेकिन वास्तव में यह बहुत मायने रखता है: एक स्टार्टअप का कार्य यह जांचना है कि उसकी परिकल्पना सही है या नहीं। और अगर यह सच नहीं है, तो आपको अपने जीवन के वर्षों को इस पर खर्च करने की आवश्यकता नहीं है, बेहतर होगा कि जितनी जल्दी हो सके समझ लें कि किसी निश्चित सेवा या उत्पाद की कोई मांग नहीं है।

जावा और एसक्यूएल पढ़ाते समय, मैं एक ही दृष्टिकोण का उपयोग करता हूं: मैं आपको जितनी जल्दी हो सके समझने का मौका देता हूं कि आप प्रोग्रामिंग से भाग रहे हैं या नहीं । यदि आप प्रोग्रामिंग पसंद करते हैं, और आप स्वयं यह पता लगाने में सक्षम थे कि लूप और सरणियों के साथ कैसे काम किया जाए, तो मेंटर्स और एक अच्छी तरह से डिज़ाइन किए गए प्रोग्राम की मदद से, आपके पास अपनी पढ़ाई पूरी करने और नौकरी खोजने का हर मौका है।

लेकिन एक और तथ्य कम महत्वपूर्ण नहीं है: कुछ दिनों की छुट्टी में आप समझ सकते हैं कि प्रोग्रामिंग आपके लिए नहीं है। हो सकता है कि आपको इसमें कोई दिलचस्पी न हो, और यह ठीक है । इसलिए, आपको अपने जीवन के महीनों को इस पर खर्च करने की आवश्यकता नहीं है।

विश्वविद्यालय में प्राप्त विशेषता में केवल 40% स्नातक काम करते हैं। इसके बारे में सोचें, लोगों ने 5-6 साल अध्ययन किया, और उनमें से 60% ने अपनी विशेषता में काम नहीं करने का फैसला किया। हां, प्राप्त ज्ञान में से कुछ का अभी भी उपयोग किया जाता है, लेकिन इसका लगभग आधा हिस्सा नहीं है।

यह फेल फास्ट कॉन्सेप्ट का मूल्य है - जितनी जल्दी हो सके यह समझने के लिए कि एक निश्चित पेशा, एक निश्चित व्यक्ति या एक निश्चित शौक आपके लिए उपयुक्त नहीं है। और उन पर अपना समय और ऊर्जा बर्बाद न करें। लंबे समय में, यह एक बहुत अच्छी रणनीति है।

1.2 एसक्यूएल और सब, सब, सब

हमने दार्शनिक परिचय के साथ काम किया है, आइए SQL सीखने के लिए वापस आते हैं।

SQL भाषा और DBMS थोड़ी अलग चीजें हैं। SQL भाषा अपने आप में एक प्रकार का मानक है जो बताता है कि डेटाबेस में SQL प्रश्नों में क्या लिखा जा सकता है। DBMS पहले से ही इस मानक का कार्यान्वयन कर रहे हैं। कुछ DBMS मानक के कुछ कार्यों को लागू करते हैं, दूसरे - अन्य, और इसी तरह।

DBMS जितना महंगा होता है, मानक की उतनी ही अधिक विशेषताएं इसे लागू करता है। साथ ही, कई DBMS अक्सर SQL मानकों के बाहर अपनी अनूठी विशेषताओं को लागू करते हैं। कभी-कभी यह पोर्टेबिलिटी की समस्या का कारण बनता है: एक DBMS के लिए लिखी गई SQL क्वेरी दूसरे के लिए अच्छी तरह से काम नहीं कर सकती है।

जावा की भी ऐसी ही स्थिति है। यदि जावा प्रोग्राम विंडोज के तहत लिखा गया है, तो यह सामान्य रूप से लिनक्स पर काम नहीं करेगा। इस समस्या को हल करने के लिए, जावा विशेष वर्गों का परिचय देता है जिनके अलग-अलग ऑपरेटिंग सिस्टम के लिए अलग-अलग कार्यान्वयन होते हैं। उदाहरण: पाथ क्लास जिसमें WindowsPath, LinuxPath, आदि का कार्यान्वयन है।

समस्या का दूसरा भाग वर्जनिंग की मदद से हल किया गया है। विभिन्न भाषाओं या DBMS से सभी सफल नवप्रवर्तन नए JDK या SQL मानक में जोड़े जाते हैं। आप पहले से ही जानते हैं कि JDK के विभिन्न संस्करण हैं, और संस्करण जितना नया होगा, उसमें उतनी ही अधिक सुविधाएँ होंगी। एसक्यूएल के साथ भी ऐसा ही है।

SQL भाषा में, इसके मानक के कई संस्करण हैं, जिन्हें वर्ष के अनुसार नाम दिया गया है:

  • एसक्यूएल: 1999
  • एसक्यूएल: 2003
  • एसक्यूएल: 2006
  • एसक्यूएल: 2011
  • एसक्यूएल: 2016
  • एसक्यूएल: 2019

अच्छी खबर : हम इन मानकों का अध्ययन नहीं करेंगे। सबसे पहले, यह सब अध्ययन करने और मास्टर करने में सालों लगेंगे। और दूसरी बात, ये मानक Android के संस्करणों की तरह हैं: रिलीज़ होने के केवल 5-10 साल बाद, मानक बड़े पैमाने पर व्यापक हो जाता है।

बड़ी मात्रा में डेटा वाले डेटाबेस में, लोगों को विश्वसनीयता और स्थिरता की आवश्यकता होती है। "यह काम करता है, इसे मत छुओ" डेटाबेस के साथ काम करने वाले सभी लोगों का आदर्श वाक्य है। और डेटाबेस के एक नए संस्करण में संक्रमण हर 5 साल में किया जाता है, जब इस तरह के समाधान के सभी फायदे पहले से ही स्पष्ट होते हैं।

1.3 कोष्ठक से परे

जैसा कि मैंने ऊपर कहा, डेटाबेस प्रोफेशनल बनने में सालों लग जाते हैं। एक पेशेवर बहुत कुछ जानता है जिसका हम अध्ययन नहीं करेंगे। लेकिन मैं इस बारे में थोड़ी बात करूंगा कि डेटाबेस में और क्या है।

लगभग सभी आधुनिक डेटाबेस समर्थन करते हैं:

1 प्रक्रियात्मक भाषा (पीएल)

RDBMS SQL सर्वर पर चलने वाली प्रक्रियाओं और कार्यों को लिखने की क्षमता का समर्थन करता है और प्रश्नों के दौरान डेटा के साथ बहुत कुछ कर सकता है। उदाहरण के लिए, एक बार मैंने Oracle सर्वर को PL SQL क्वेरी लिखी थी, जो उत्पन्न क्वेरी के जवाब में ... डेटा के साथ एक HTML पेज। हाँ आप कर सकते हैं।

2 घटनाएँ (ट्रिगर्स)

सभी आधुनिक DBMS घटनाओं के तंत्र का समर्थन करते हैं, जिन्हें SQL भाषा में ट्रिगर कहा जाता है। किसी क्रिया की प्रतिक्रिया के रूप में एक ट्रिगर होता है। उदाहरण के लिए, आप डेटाबेस में लिखने के सभी प्रयासों को रोक सकते हैं और उनके परिवर्तन का सही समय नई पंक्तियों में जोड़ सकते हैं।

3 लॉगिंग

आधुनिक डेटाबेस सुपर फास्ट होने की कोशिश करते हैं, इसलिए अक्सर सभी परिवर्तन (नई पंक्तियाँ, हटाई गई पंक्तियाँ, परिवर्तित पंक्तियाँ) पहले एक विशेष फ़ाइल में लिखे जाते हैं जिसे लॉग कहा जाता है। और कुछ समय बाद ही, SQL सर्वर इन रिकॉर्ड्स को मुख्य डेटाबेस के साथ मर्ज कर देगा।

कुछ मायनों में, यह जावा में गारबेज कलेक्टर के व्यवहार के समान है: यह केवल वस्तुओं को पहले हटाए गए के रूप में चिह्नित करता है, और निष्क्रिय समय के दौरान मेमोरी क्लीनअप और ऑप्टिमाइज़ेशन करता है।

4 प्लगइन्स

डीबीएमएस के साथ-साथ कई कार्यक्रमों के लिए, आप अपने स्वयं के प्लगइन्स लिख सकते हैं। ऐसे प्लगइन्स आपको अद्वितीय डेटा प्रकार जोड़ने, उनके साथ काम करने के लिए कार्य करने या DBMS के मानक व्यवहार को बदलने की अनुमति देते हैं। यह विशेष रूप से तब उपयोगी होता है जब आप एक ओपन सोर्स डेटाबेस के साथ काम करते हैं और कुछ बग होते हैं।

5 वितरित कार्य (क्लस्टर)

आधुनिक SQL सर्वर के लिए एक विशिष्ट परिदृश्य कई सर्वरों का समूह है। सबसे सरल विकल्प तब होता है जब डेटा एक सर्वर पर लिखा जाता है और सर्वर के समूह से पढ़ा जाता है। इस मामले में, आप SQL सर्वर के बीच डेटाबेस सिंक्रनाइज़ेशन के लिए विभिन्न परिदृश्यों को कॉन्फ़िगर कर सकते हैं।

6 शेरिंग

जब बहुत अधिक डेटा होता है, तो वे अलग-अलग डेटाबेस में विभाजित होने लगते हैं। इस तथ्य तक कि एक तालिका को विभिन्न डेटाबेस में भागों में संग्रहित किया जा सकता है।

शेयरिंग लंबवत और क्षैतिज हो सकती है। वर्टिकल शार्डिंग का मतलब है कि टेबल को वर्टिकल लाइन से काटा जाता है, जबकि हॉरिजॉन्टल शार्पिंग को हॉरिजॉन्टल में काटा जाता है।

उदाहरण के लिए, हमने तालिका के सभी डेटा को वर्षों से विभाजित करने का निर्णय लिया: 2019 के लिए - एक तालिका, 2020 के डेटा के लिए - दूसरा, और इसी तरह। यह हॉरिजॉन्टल शार्डिंग होगा।

7 नॉन-शॉ को भगाएं

डेटाबेस के विकास के एक निश्चित चरण में, अधिक से अधिक व्यावसायिक तर्क उनमें जोड़े जाने लगे। यह सब प्रक्रियाओं, कार्यों, सर्वरों द्वारा वेब पेज बनाने के साथ शुरू हुआ, और डीबीएमएस के लिए लगभग सभी लोकप्रिय भाषाओं के समर्थन के साथ समाप्त हुआ: पायथन, जावास्क्रिप्ट और यहां तक ​​​​कि जावा और सी ++।

जब तक आप विवरण में नहीं आना शुरू करते हैं तब तक अच्छा लगता है: क्या आप वास्तव में जावा में अपना वेब एप्लिकेशन बिजनेस लॉजिक लिखना चाहते हैं, जिसे SQL सर्वर के अंदर निष्पादित किया जाएगा, जहां कोई JDK, जावा लाइब्रेरी, फ्रेमवर्क, छोटी मेमोरी और बहुत कुछ नहीं है अन्य प्रतिबंध?