NoSQL पिछले कुछ महीनों में सबसे चर्चित विषयों में से एक रहा है। यह ट्यूटोरियल आपको कॉच डीबी, एक नोएसक्यूएल कार्यान्वयन से परिचित कराएगा और आपको सिखाएगा कि प्लेटफॉर्म के साथ कैसे शुरुआत करें।
NoSQL क्या है?
<ब्लॉकक्वॉट>NoSQL स्कीमा मुक्त है -- आपको संरचना को पहले से तय करने की आवश्यकता नहीं है।
नोएसक्यूएल [न केवल एसक्यूएल ] दस्तावेज़ भंडार की ओर एक आंदोलन है जो संबंधपरक मॉडल का उपयोग नहीं करते हैं। मौलिक प्रतिमान बदलाव है जिस तरह से वे डेटा संग्रहीत करते हैं। उदाहरण के लिए, जब आपको इनवॉइस के बारे में डेटा स्टोर करने की आवश्यकता होती है, तो RDBMS में आपको इस जानकारी को तालिकाओं में डिस्टिल करना होगा और फिर इस डेटा को वास्तविक जीवन की वस्तुओं में बदलने के लिए सर्वर-साइड भाषा का उपयोग करना होगा। दूसरी ओर, NoSQL में, आप केवल इनवॉइस स्टोर करते हैं। नोएसक्यूएल स्कीमा मुक्त है, जिसका अर्थ है कि आपको अपनी टेबल और संरचना को सामने डिजाइन करने की आवश्यकता नहीं है - आप बस नए मूल्यों को संग्रहित करना शुरू कर सकते हैं।
इनवॉइस उदाहरण को जारी रखते हुए, कुछ इनवॉइस में VAT नंबर शामिल हो सकता है, कुछ में नहीं हो सकता है। RDBMS में, आपको अपनी तालिका को पहले वैट संख्या स्वीकार करने के लिए कहना होगा और फिर यह संभवतः शून्य हो सकता है। नोएसक्यूएल में, हालांकि, आप केवल वैट नंबर के साथ या उसके बिना चालान स्टोर कर सकते हैं - कोई स्कीमा नहीं है। ध्यान रखें कि NoSQL सिल्वर बुलेट नहीं है। यदि आपका डेटा वास्तव में संबंधपरक है, तो अपने RDBMS से चिपके रहना सही विकल्प होगा।
NoSQL डेटाबेस को क्वेरी करना
<ब्लॉकक्वॉट क्लास ="पुलक्वॉट">SQL क्वेरी पर MapReducing के लाभ हैं क्योंकि नक्शा/कम करने का कार्य कई नोड्स के बीच वितरित किया जा सकता है, जो RDBMS में संभव नहीं है।
NoSQL डेटाबेस डेटाबेस को क्वेरी और इंडेक्स करने के लिए मैप / रिड्यूस का उपयोग करते हैं। RDBMS में, आप पहले डेटा का एक पूल बनाने के लिए कई तालिकाओं को एक साथ जोड़कर एक क्वेरी चलाते हैं और फिर क्वेरी एक परिणामसेट, समग्र डेटा का एक सबसेट बनाकर चलती है। नोएसक्यूएल में, आप 'व्यू' (परिणाम के समान) बनाने के लिए मानचित्र/घटा का उपयोग करते हैं, यह दृश्य समग्र डेटा का सबसेट है।
मानचित्र अनिवार्य रूप से डेटा निकाल रहा है और डेटा एकत्रीकरण को कम कर रहा है। जितना अधिक आप RDBMS से परिचित होंगे, उतना ही कठिन ग्रासिंग मैप/कम करना होगा। SQL प्रश्नों पर MapReducing लाभ क्योंकि नक्शा / कार्य को कई नोड्स के बीच वितरित किया जा सकता है, RDBMS में कुछ संभव नहीं है। डेटाबेस में एक नया रिकॉर्ड जोड़ने से हमेशा नक्शा नहीं बनता है/कार्य को पूरी तरह से फिर से चलाया जा रहा है।
काउचडीबी का परिचय
कॉच डीबी के बारे में कुछ तथ्य जो आपको पता होने चाहिए:
- CouchDB एक JSON दस्तावेज़-उन्मुख डेटाबेस है जो Erlang में लिखा गया है।
- यह एक अत्यधिक समवर्ती डेटाबेस है जिसे आसानी से दोहराने योग्य, क्षैतिज रूप से, कई उपकरणों में और दोष सहिष्णु होने के लिए डिज़ाइन किया गया है।
- यह डेटाबेस की NoSQL पीढ़ी का हिस्सा है।
- यह एक ओपन सोर्स अपाचे फाउंडेशन प्रोजेक्ट है।
- यह एप्लिकेशन को JSON दस्तावेज़ों को अपने RESTful इंटरफ़ेस के माध्यम से संग्रहीत करने की अनुमति देता है।
- यह मानचित्र का उपयोग करता है/डेटाबेस को अनुक्रमणित करने और क्वेरी करने के लिए कम करता है।
काउच डीबी के प्रमुख लाभ
- JSON दस्तावेज़ - कॉच डीबी में संग्रहीत सब कुछ एक JSON दस्तावेज़ में उबाल जाता है।
- रीस्टफुल इंटरफेस - निर्माण से लेकर प्रतिकृति तक डेटा प्रविष्टि तक, कॉच डीबी में प्रत्येक प्रबंधन और डेटा कार्य HTTP के माध्यम से किया जा सकता है।
- एन-मास्टर प्रतिकृति - आप कुछ बहुत ही रोचक प्रतिकृति टोपोलॉजी बनाने के लिए असीमित मात्रा में 'मास्टर्स' का उपयोग कर सकते हैं।
- ऑफ़लाइन के लिए निर्मित - कॉच डीबी उन उपकरणों (जैसे एंड्रॉइड फोन) को दोहरा सकता है जो ऑफ़लाइन हो सकते हैं और डिवाइस के वापस ऑनलाइन होने पर आपके लिए डेटा सिंक को संभाल सकते हैं।
- प्रतिकृति फ़िल्टर - आप उस डेटा को सटीक रूप से फ़िल्टर कर सकते हैं जिसे आप अलग-अलग नोड्स में दोहराना चाहते हैं।
सब कुछ एक साथ रखना
<ब्लॉकक्वॉट>CouchDB एक डेटाबेस है जिसे आज के इंटरनेट पर चलाने के लिए डिज़ाइन किया गया है।
कॉच डीबी आपको क्लाइंट साइड एप्लिकेशन लिखने की अनुमति देता है जो सर्वर साइड मिडिल लेयर की आवश्यकता के बिना सीधे सोफे से बात करता है, विकास के समय को काफी कम करता है। कॉच डीबी के साथ, आप आसानी से अधिक प्रतिकृति नोड्स जोड़कर आसानी से मांग को संभाल सकते हैं। CouchDB आपको डेटाबेस को अपने क्लाइंट को दोहराने की अनुमति देता है और फ़िल्टर के साथ आप उस विशिष्ट उपयोगकर्ता के डेटा को भी दोहरा सकते हैं।
डेटाबेस को स्थानीय रूप से संग्रहीत करने का मतलब है कि आपका क्लाइंट साइड एप्लिकेशन लगभग बिना किसी विलंबता के चल सकता है। CouchDB आपके लिए क्लाउड की प्रतिकृति को संभालेगा। आपके उपयोगकर्ता अपने इनवॉइस को अपने मोबाइल फ़ोन पर एक्सेस कर सकते हैं और बिना ध्यान देने योग्य विलंबता के परिवर्तन कर सकते हैं, सभी ऑफ़लाइन रहते हुए। जब कोई कनेक्शन मौजूद होता है और प्रयोग करने योग्य होता है, तो CouchDB स्वचालित रूप से उन परिवर्तनों को आपके क्लाउड CouchDB पर दोहराएगा।
CouchDB एक डेटाबेस है जिसे आज के डेस्कटॉप जैसे एप्लिकेशन और कनेक्टेड डिवाइस के लिए आज के इंटरनेट पर चलाने के लिए डिज़ाइन किया गया है जिसके माध्यम से हम इंटरनेट का उपयोग करते हैं।
चरण 1 - CouchDB स्थापित करना
कॉच डीबी को अपने सिस्टम पर चलाने और चलाने का सबसे आसान तरीका काउचऑन पर जाना है और मेरे मामले में अपने ओएस - ओएसएक्स के लिए एक कॉच डीबी वितरण डाउनलोड करना है। ज़िप डाउनलोड करें, इसे निकालें और CouchDBX को मेरे एप्लिकेशन फ़ोल्डर में छोड़ दें (CouchOne पर अन्य OS के लिए निर्देश)।
अंत में, कॉचडीबीएक्स खोलें।
चरण 2 - फ़्यूटन में आपका स्वागत है
कॉच डीबी शुरू होने के बाद, आपको कॉच डीबीएक्स एप्लिकेशन में फ़्यूटन कंट्रोल पैनल देखना चाहिए। यदि आप नहीं कर सकते हैं, तो आप अपने ब्राउज़र के माध्यम से फ़्यूटन तक पहुँच सकते हैं। लॉग को देखते हुए, कॉच डीबीएक्स हमें बताता है कि कॉच डीबी को http://127.0.0.1:5984/
पर शुरू किया गया था। (आपके सिस्टम पर भिन्न हो सकता है)। एक ब्राउज़र खोलें और http://127.0.0.1:5984/_utils/
. पर जाएं और आपको फ़्यूटन देखना चाहिए।
इस पूरे ट्यूटोरियल के दौरान मैं फ़ायरफ़ॉक्स में फ़्यूटन का उपयोग करूँगा। मेरे पास फ़ायरबग भी होगा और कंसोल दृश्य सभी HTTP अनुरोधों को देखने के लिए खुला होगा जो फ़्यूटन पर्दे के पीछे भेज रहा है। यह उपयोगी है क्योंकि आपका एप्लिकेशन वह सब कुछ कर सकता है जो फ़्यूटन कर रहा है। आइए आगे बढ़ते हैं और mycouchshop
. नामक एक डेटाबेस बनाते हैं ।
CouchDB jQuery प्लगइन
फ़्यूटन वास्तव में कॉच डीबी के साथ बातचीत करने के लिए एक jQuery प्लगइन का उपयोग कर रहा है। आप उस प्लगइन को http://127.0.0.1:5984/_utils/script/jquery.couch.js
पर देख सकते हैं। (ध्यान रखें कि आपका पोर्ट अलग हो सकता है)। यह आपको कॉच डीबी के साथ बातचीत करने का एक बेहतरीन उदाहरण देता है।
चरण 3 - CouchDB में उपयोगकर्ता
CouchDB, डिफ़ॉल्ट रूप से, पूरी तरह से खुला है, प्रत्येक उपयोगकर्ता को इंस्टेंस और उसके सभी डेटाबेस के लिए व्यवस्थापक अधिकार देता है। यह विकास के लिए बहुत अच्छा है लेकिन उत्पादन के लिए स्पष्ट रूप से बुरा है। चलिए आगे बढ़ते हैं और एक एडमिन को सेटअप करते हैं। नीचे दाईं ओर, आप देखेंगे "एडमिन पार्टी में आपका स्वागत है! हर कोई व्यवस्थापक है! इसे ठीक करें"।
आगे बढ़ें और इसे ठीक करें . क्लिक करें और अपने आप को एक उपयोगकर्ता नाम और पासवर्ड दें। यह एक व्यवस्थापक खाता बनाता है और अनाम उपयोगकर्ताओं को सभी डेटाबेस पर संचालन पढ़ने और लिखने की सुविधा देता है, लेकिन कोई कॉन्फ़िगरेशन विशेषाधिकार नहीं।
उपयोगकर्ताओं पर अधिक
<ब्लॉकक्वॉट क्लास ="पुलक्वॉट">CouchDB में एकल सुपर उपयोगकर्ता बनाना और उस उपयोगकर्ता को सभी पढ़ना/लिखना करना नासमझी होगी।
कॉच डीबी में उपयोगकर्ता शुरू में समझने में थोड़ा भ्रमित हो सकते हैं, खासकर यदि आप अपने पूरे एप्लिकेशन के लिए एक उपयोगकर्ता बनाने के लिए उपयोग किए जाते हैं और फिर उपयोगकर्ताओं को उपयोगकर्ता तालिका में प्रबंधित करते हैं (MySQL उपयोगकर्ता तालिका नहीं)। कॉच डीबी में, एकल सुपर उपयोगकर्ता बनाना और उस उपयोगकर्ता को सभी पढ़ना/लिखना करना नासमझी होगी, क्योंकि यदि आपका ऐप क्लाइंट-साइड है तो इस सुपर उपयोगकर्ता की साख आपके जावास्क्रिप्ट स्रोत कोड में स्पष्ट रूप से दिखाई देगी।
CouchDB में उपयोगकर्ता निर्माण और प्रमाणीकरण बेक किया हुआ है। आप $.couch.signup()
का उपयोग करके jQuery प्लगइन के साथ उपयोगकर्ता बना सकते हैं। . ये अनिवार्य रूप से आपके सिस्टम के उपयोगकर्ता बन जाते हैं। उपयोगकर्ता अन्य सभी चीज़ों की तरह केवल JSON दस्तावेज़ हैं, इसलिए आप उदाहरण के लिए ईमेल जैसी कोई भी अतिरिक्त विशेषताएँ संग्रहीत कर सकते हैं। फिर आप कॉच डीबी के भीतर समूहों का उपयोग यह नियंत्रित करने के लिए कर सकते हैं कि प्रत्येक उपयोगकर्ता के पास कौन से दस्तावेज़ लिखने की पहुंच है। उदाहरण के लिए, आप उस उपयोगकर्ता के लिए एक डेटाबेस बना सकते हैं जिसे वे लिख सकते हैं और फिर उन्हें आवश्यकतानुसार अन्य डेटाबेस तक पढ़ने के लिए एक समूह में जोड़ सकते हैं।
चरण 4 - उत्पाद दस्तावेज़ बनाना
आइए अब निम्नलिखित चरणों के माध्यम से फ़्यूटन का उपयोग करके अपना पहला दस्तावेज़ बनाएं:
mycouchshop
खोलें डेटाबेस।- "नया दस्तावेज़" पर क्लिक करें।
- JSON दस्तावेज़ में डेटा जोड़ना शुरू करने के लिए "फ़ील्ड जोड़ें" पर क्लिक करें। ध्यान दें कि आपके लिए एक आईडी पहले से कैसे भरी जाती है, मैं इसे न बदलने की अत्यधिक सलाह दूंगा। "Nettuts CouchDB Tutorial One" के मान के साथ कुंजी "नाम" जोड़ें।
- सुनिश्चित करें कि आपने प्रत्येक विशेषता को सहेजने के लिए उसके आगे टिक पर क्लिक किया है।
- "दस्तावेज़ सहेजें" पर क्लिक करें।
एक स्तर ऊपर जाएं, डेटाबेस पर वापस जाएं और आपको पिछली आईडी के साथ सूचीबद्ध एक दस्तावेज़ को कुंजी के रूप में और {rev:
से शुरू होने वाले मान के रूप में देखना चाहिए। . यह JSON दस्तावेज़ है जिसे आपने अभी बनाया है।
चरण 5 - किसी दस्तावेज़ को अपडेट करना
कॉच डीबी एक परिशिष्ट केवल डेटाबेस है - डेटाबेस में नए अपडेट जोड़े जाते हैं और पुराने संस्करण को ओवरराइट नहीं करते हैं। पहले से मौजूद आईडी वाले JSON दस्तावेज़ में प्रत्येक नया अपडेट एक नया संशोधन जोड़ देगा। स्वचालित रूप से डाली गई संशोधन कुंजी यही दर्शाती है। इसे क्रिया में देखने के लिए नीचे दिए गए चरणों का पालन करें:
mycouchshop
की सामग्री देखना डेटाबेस, केवल दृश्यमान रिकॉर्ड पर क्लिक करें।- कुंजी "प्रकार" और मान "उत्पाद" के साथ एक और विशेषता जोड़ें।
- "दस्तावेज़ सहेजें" दबाएं।
सेव करने के बाद, 2 नंबर से शुरू होने वाली एक नई रिवीजन कुंजी दिखाई देनी चाहिए। mycouchshop
के स्तर पर वापस जाना डेटाबेस दृश्य, आप अभी भी केवल एक दस्तावेज़ देखेंगे, यह हमारे उत्पाद दस्तावेज़ का नवीनतम संशोधन है।
संशोधन
जबकि कॉच डीबी आंतरिक रूप से संशोधन का उपयोग करता है, उस पर बहुत अधिक झुकाव न करने का प्रयास करें। फ़्यूटन के माध्यम से संशोधनों को आसानी से साफ किया जा सकता है और इसे संशोधन नियंत्रण प्रणाली के रूप में उपयोग करने के लिए डिज़ाइन नहीं किया गया है। CouchDB अपनी प्रतिकृति कार्यक्षमता के भाग के रूप में संशोधनों का उपयोग करता है।
चरण 6 - कर्ल का उपयोग करके दस्तावेज़ बनाना
मैंने पहले ही उल्लेख किया है कि कॉच डीबी एक रीस्टफुल इंटरफ़ेस का उपयोग करता है और ईगल आंखों वाले पाठक ने फ़ायरबग में कंसोल के माध्यम से फ़्यूटन को इसका उपयोग करके देखा होगा। यदि आपने ऐसा नहीं किया है, तो टर्मिनल के माध्यम से कर्ल का उपयोग करके एक दस्तावेज़ सम्मिलित करके इसे साबित करें।
पहले , आइए नीचे दी गई सामग्री के साथ एक JSON दस्तावेज़ बनाएं और इसे person.json
फ़ाइल को कॉल करके डेस्कटॉप पर सहेजें ।
{ "फोरनेम":"गेविन", "उपनाम":"कूपर", "टाइप":"व्यक्ति" }
अगला , टर्मिनल खोलें और cd ~/Desktop/
. निष्पादित करें आपको सही निर्देशिका में डालते हुए और फिर curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @person.json -H "Content-Type:application/json"
के साथ इन्सर्ट करें। कोड> . CouchDB को नीचे दिए गए जैसा JSON दस्तावेज़ वापस करना चाहिए था।
{"ok":true,"id":"c6e2f3d7f8d0c91ce7938e9c0800131c","rev":"1-abadd48a09c270047658dbc38dc8a892"}
यह सम्मिलित दस्तावेज़ की आईडी और संशोधन संख्या है। CouchDB RESTful कन्वेंशन का अनुसरण करता है और इस प्रकार:
- पोस्ट - एक नया रिकॉर्ड बनाता है
- प्राप्त करें - रिकॉर्ड पढ़ता है
- डालें - एक रिकॉर्ड अपडेट करता है
- हटाएं - एक रिकॉर्ड हटाता है
चरण 7 - सभी दस्तावेज़ देखना
हम अपने mycouchshop
. में सभी दस्तावेज़ों को देखकर अपने इंसर्ट को और अधिक सत्यापित कर सकते हैं कर्ल-एक्स GET http://127.0.0.1:5984/mycouchshop/_all_docs
को क्रियान्वित करके डेटाबेस ।
चरण 8 - एक साधारण मानचित्र फ़ंक्शन बनाना
व्यावहारिक दृष्टि से सभी दस्तावेजों को देखना काफी बेकार है। सभी उत्पाद दस्तावेजों को देखने के लिए और अधिक आदर्श क्या होगा। इसे प्राप्त करने के लिए नीचे दिए गए चरणों का पालन करें:
- फ़्यूटन में, दृश्य ड्रॉप डाउन पर क्लिक करें और "अस्थायी दृश्य" चुनें।
- यह फ़्यूटन के भीतर नक्शा कम करने वाला संपादक है। नीचे दिए गए कोड को मैप फंक्शन में कॉपी करें। } }
- चलाएं क्लिक करें और आपको वह एकल उत्पाद देखना चाहिए जो हमने पहले जोड़ा था।
- आगे बढ़ें और इस दृश्य को सहेज कर स्थायी बनाएं।
इस सरल मानचित्र फ़ंक्शन को बनाने के बाद, अब हम इस दृश्य का अनुरोध कर सकते हैं और निम्न आदेश curl -X GET http://127.0.0.1:5984/mycouchshop/_design/products/_view/products<का उपयोग करके HTTP पर इसकी सामग्री देख सकते हैं। /कोड> .
ध्यान देने वाली एक छोटी सी बात यह है कि हम डिफ़ॉल्ट रूप से दस्तावेज़ की आईडी और संशोधन कैसे प्राप्त करते हैं।
चरण 9 - कम करना
एक उपयोगी कमी करने के लिए, आइए अपने डेटाबेस में एक और उत्पाद जोड़ें और अपने पहले उत्पाद में 1.75 के मान के साथ एक मूल्य विशेषता जोड़ें।
{ "name":"My Product", "price":2.99, "type":"product" }
हमारे नए दृश्य के लिए, हम एक कम करने के साथ-साथ एक नक्शा भी शामिल करेंगे। सबसे पहले, हमें नीचे के रूप में परिभाषित मानचित्र की आवश्यकता है।
फंक्शन (डॉक्टर) { अगर (doc.type ==="product" &&doc.price) { एमिट (doc.id, doc.price); } }
उपरोक्त मानचित्र फ़ंक्शन केवल यह देखने के लिए जांच करता है कि इनपुट किया गया दस्तावेज़ एक उत्पाद है और इसकी कीमत है। यदि इन शर्तों को पूरा किया गया है, तो उत्पाद की कीमत उत्सर्जित होती है। कम करने का कार्य नीचे है।
फ़ंक्शन (कुंजी, मूल्य) {वापसी राशि (कीमत);}
उपरोक्त फ़ंक्शन कीमतों को लेता है और कॉच डीबी के अंतर्निहित कम कार्यों में से एक का उपयोग करके राशि लौटाता है। सुनिश्चित करें कि आप परिणाम तालिका के शीर्ष दाईं ओर कम करें विकल्प की जांच करें क्योंकि अन्यथा आप कम करने के परिणाम देखने में असमर्थ हो सकते हैं। कम करने के विकल्प को देखने के लिए आपको पृष्ठ पर हार्ड-रीफ्रेश करने की आवश्यकता हो सकती है