दस्तावेज़-उन्मुख डेटाबेस: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
दस्तावेज़-उन्मुख डेटाबेस, | दस्तावेज़-उन्मुख डेटाबेस, दस्तावेज़ भंडार , [[कंप्यूटर प्रोग्राम]] और डेटा भंडारण प्रणाली है। जिसे दस्तावेज़-उन्मुख जानकारी को संग्रहीत करने, पुनर्प्राप्त करने और प्रबंधित करने के लिए रचना किया गया है, जिसे [[अर्ध-संरचित मॉडल]] के रूप में भी जाना जाता है।<ref name = "Drake, DigitalOcean, 2019" >{{ Cite web | url = https://www.digitalocean.com/community/tutorials/a-comparison-of-nosql-database-management-systems-and-models | title = NoSQL डेटाबेस मैनेजमेंट सिस्टम और मॉडल की तुलना| access-date = 23 August 2019 | first = Mark | last = Drake | date = 9 August 2019 | website = [[DigitalOcean]] | quote = Document-oriented databases, or document stores, are NoSQL databases that store data in the form of documents. Document stores are a type of key-value store: each document has a unique identifier — its key — and the document itself serves as the value. | archive-url = https://web.archive.org/web/20190813163612/https://www.digitalocean.com/community/tutorials/a-comparison-of-nosql-database-management-systems-and-models | archive-date = 2019-08-13 | df = dmy-all }}</ref>दस्तावेज़-उन्मुख डेटाबेस [[NoSQL|नोएसक्यूएल]] डेटाबेस की मुख्य श्रेणियों में से हैं और दस्तावेज़-उन्मुख डेटाबेस शब्द की लोकप्रियता बढ़ी है<ref>{{cite web|url=http://db-engines.com/en/ranking_categories|title=DB-Engines Ranking per database model category}}</ref> नोएसक्यूएल शब्द के उपयोग के साथ ही [[XML|एक्सएमएल]] डेटाबेस दस्तावेज़-उन्मुख डेटाबेस का उपवर्ग है जो एक्सएमएल दस्तावेज़ों के साथ काम करने के लिए अनुकूलित है। [[ग्राफ डेटाबेस]] समान हैं, किन्तु और परत जोड़ते हैं, संबंध जो उन्हें तेजी से पार करने के लिए दस्तावेज़ों को लिंक करने की अनुमति देता है। | ||
दस्तावेज़-उन्मुख डेटाबेस [[NoSQL]] डेटाबेस की मुख्य श्रेणियों में से हैं | |||
दस्तावेज़-उन्मुख डेटाबेस स्वाभाविक रूप से [[की-वैल्यू डेटाबेस]] | की-वैल्यू स्टोर, अन्य | दस्तावेज़-उन्मुख डेटाबेस स्वाभाविक रूप से [[की-वैल्यू डेटाबेस]] | की-वैल्यू स्टोर, अन्य नोएसक्यूएल डेटाबेस अवधारणा का उपवर्ग है। के अंतर डेटा संसाधित करने के तरीके में निहित है; की-वैल्यू भंडार में, डेटा को डेटाबेस के लिए स्वाभाविक रूप से अपारदर्शी माना जाता है, जबकि दस्तावेज़-उन्मुख प्रणाली [[मेटा डेटा]] निकालने के लिए दस्तावेज़ में आंतरिक संरचना पर निर्भर करती है जिसे डेटाबेस इंजन आगे अनुकूलन के लिए उपयोग करता है। हालांकि प्रणाली में उपकरणों के कारण अंतर अक्सर नगण्य होता है,{{efn|To the point that document-oriented and key-value systems can often be interchanged in operation.}} वैचारिक रूप से दस्तावेज़-भंडार को आधुनिक प्रोग्रामिंग तकनीकों के साथ समृद्ध अनुभव प्रदान करने के लिए रचना किया गया है। | ||
दस्तावेज़ डेटाबेस{{efn|And key-value stores in general.}} पारंपरिक [[ संबंध का डेटाबेस |संबंध का डेटाबेस]] (RDB) के साथ दृढ़ता से विपरीत। संबंधपरक डेटाबेस आमतौर पर प्रोग्रामर द्वारा परिभाषित अलग-अलग तालिकाओं में डेटा संग्रहीत करते हैं, और वस्तु कई तालिकाओं में फैली हो सकती है। दस्तावेज़ डेटाबेस किसी दिए गए ऑब्जेक्ट के लिए सभी सूचनाओं को डेटाबेस में उदाहरण में संग्रहीत करता है, और प्रत्येक संग्रहीत वस्तु दूसरे से भिन्न हो सकती है। यह डेटाबेस में डेटा लोड करते समय [[ऑब्जेक्ट-रिलेशनल मैपिंग]] की आवश्यकता को समाप्त करता है। | दस्तावेज़ डेटाबेस{{efn|And key-value stores in general.}} पारंपरिक [[ संबंध का डेटाबेस |संबंध का डेटाबेस]] (RDB) के साथ दृढ़ता से विपरीत। संबंधपरक डेटाबेस आमतौर पर प्रोग्रामर द्वारा परिभाषित अलग-अलग तालिकाओं में डेटा संग्रहीत करते हैं, और वस्तु कई तालिकाओं में फैली हो सकती है। दस्तावेज़ डेटाबेस किसी दिए गए ऑब्जेक्ट के लिए सभी सूचनाओं को डेटाबेस में उदाहरण में संग्रहीत करता है, और प्रत्येक संग्रहीत वस्तु दूसरे से भिन्न हो सकती है। यह डेटाबेस में डेटा लोड करते समय [[ऑब्जेक्ट-रिलेशनल मैपिंग]] की आवश्यकता को समाप्त करता है। | ||
== दस्तावेज़ == | == दस्तावेज़ == | ||
दस्तावेज़-उन्मुख डेटाबेस की केंद्रीय अवधारणा दस्तावेज़ की धारणा है। जबकि प्रत्येक दस्तावेज़-उन्मुख डेटाबेस कार्यान्वयन इस परिभाषा के विवरण पर भिन्न होता है, सामान्य तौर पर, वे सभी दस्तावेजों को कुछ मानक प्रारूप या एन्कोडिंग में डेटा (या सूचना) को एनकैप्सुलेट और एन्कोड करते हैं। उपयोग में आने वाले एन्कोडिंग में | दस्तावेज़-उन्मुख डेटाबेस की केंद्रीय अवधारणा दस्तावेज़ की धारणा है। जबकि प्रत्येक दस्तावेज़-उन्मुख डेटाबेस कार्यान्वयन इस परिभाषा के विवरण पर भिन्न होता है, सामान्य तौर पर, वे सभी दस्तावेजों को कुछ मानक प्रारूप या एन्कोडिंग में डेटा (या सूचना) को एनकैप्सुलेट और एन्कोड करते हैं। उपयोग में आने वाले एन्कोडिंग में एक्सएमएल, [[YAML]], [[JSON]], साथ ही [[BSON]] जैसे बाइनरी फॉर्म शामिल हैं। | ||
दस्तावेज़ | दस्तावेज़ भंडार में दस्तावेज़ मोटे तौर पर किसी वस्तु की प्रोग्रामिंग अवधारणा के बराबर होते हैं। उन्हें मानक स्कीमा का पालन करने की आवश्यकता नहीं है, न ही उनके पास सभी समान खंड, स्लॉट, भाग या कुंजियाँ होंगी। आम तौर पर, वस्तुओं का उपयोग करने वाले प्रोग्राम में कई अलग-अलग प्रकार की वस्तुएं होती हैं, और उन वस्तुओं में अक्सर कई वैकल्पिक क्षेत्र होते हैं। प्रत्येक वस्तु, यहां तक कि ही वर्ग की भी, बहुत अलग दिख सकती है। दस्तावेज़ भंडार समान हैं कि वे ही भंडार में विभिन्न प्रकार के दस्तावेज़ों को अनुमति देते हैं, उनके भीतर फ़ील्ड वैकल्पिक होने की अनुमति देते हैं, और अक्सर उन्हें विभिन्न एन्कोडिंग प्रणाली का उपयोग करके एन्कोड करने की अनुमति देते हैं। उदाहरण के लिए, निम्नलिखित JSON में एन्कोडेड दस्तावेज़ है: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 35: | Line 34: | ||
</contact> | </contact> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ये दो दस्तावेज़ कुछ संरचनात्मक तत्वों को दूसरे के साथ साझा करते हैं, | ये दो दस्तावेज़ कुछ संरचनात्मक तत्वों को दूसरे के साथ साझा करते हैं, किन्तु प्रत्येक में अद्वितीय तत्व भी होते हैं। दस्तावेज़ के अंदर संरचना और पाठ और अन्य डेटा को आमतौर पर दस्तावेज़ की सामग्री के रूप में संदर्भित किया जाता है और पुनर्प्राप्ति या संपादन विधियों के माध्यम से संदर्भित किया जा सकता है, (नीचे देखें)। रिलेशनल डेटाबेस के विपरीत जहां प्रत्येक रिकॉर्ड में समान फ़ील्ड होते हैं, अप्रयुक्त फ़ील्ड को खाली छोड़ देते हैं; उपरोक्त उदाहरण में किसी भी दस्तावेज़ (रिकॉर्ड) में कोई खाली 'फ़ील्ड' नहीं है। यह दृष्टिकोण बिना किसी आवश्यकता के कुछ रिकॉर्ड में नई जानकारी को जोड़ने की अनुमति देता है कि डेटाबेस में हर दूसरा रिकॉर्ड समान संरचना साझा करता है। | ||
दस्तावेज़ डेटाबेस आमतौर पर अतिरिक्त मेटाडेटा को दस्तावेज़ सामग्री के साथ संबद्ध और संग्रहीत करने के लिए प्रदान करते हैं। वह मेटाडेटा सुविधाओं से संबंधित हो सकता है जो | दस्तावेज़ डेटाबेस आमतौर पर अतिरिक्त मेटाडेटा को दस्तावेज़ सामग्री के साथ संबद्ध और संग्रहीत करने के लिए प्रदान करते हैं। वह मेटाडेटा सुविधाओं से संबंधित हो सकता है जो डेटाभंडार दस्तावेज़ों को व्यवस्थित करने, सुरक्षा प्रदान करने, या अन्य कार्यान्वयन विशिष्ट सुविधाओं के लिए प्रदान करता है। | ||
=== [[सीआरयूडी]] संचालन === | === [[सीआरयूडी]] संचालन === | ||
Line 53: | Line 52: | ||
दस्तावेज़-उन्मुख डेटाबेस की अन्य परिभाषित विशेषता यह है कि दस्तावेज़ को पुनः प्राप्त करने के लिए उपयोग की जा सकने वाली सरल कुंजी-से-दस्तावेज़ लुकअप से परे, डेटाबेस एपीआई या क्वेरी भाषा प्रदान करता है जो उपयोगकर्ता को सामग्री के आधार पर दस्तावेज़ों को पुनः प्राप्त करने की अनुमति देता है (या मेटाडेटा)। उदाहरण के लिए, आप ऐसी क्वेरी चाहते हैं जो निश्चित फ़ील्ड के साथ निश्चित मान पर सेट किए गए सभी दस्तावेज़ों को पुनः प्राप्त करे। क्वेरी एपीआई या क्वेरी भाषा सुविधाओं का सेट उपलब्ध है, साथ ही क्वेरीज़ का अपेक्षित प्रदर्शन, कार्यान्वयन से दूसरे कार्यान्वयन में महत्वपूर्ण रूप से भिन्न होता है। इसी तरह, उपलब्ध इंडेक्सिंग विकल्पों और कॉन्फ़िगरेशन के विशिष्ट सेट कार्यान्वयन से बहुत भिन्न होते हैं। | दस्तावेज़-उन्मुख डेटाबेस की अन्य परिभाषित विशेषता यह है कि दस्तावेज़ को पुनः प्राप्त करने के लिए उपयोग की जा सकने वाली सरल कुंजी-से-दस्तावेज़ लुकअप से परे, डेटाबेस एपीआई या क्वेरी भाषा प्रदान करता है जो उपयोगकर्ता को सामग्री के आधार पर दस्तावेज़ों को पुनः प्राप्त करने की अनुमति देता है (या मेटाडेटा)। उदाहरण के लिए, आप ऐसी क्वेरी चाहते हैं जो निश्चित फ़ील्ड के साथ निश्चित मान पर सेट किए गए सभी दस्तावेज़ों को पुनः प्राप्त करे। क्वेरी एपीआई या क्वेरी भाषा सुविधाओं का सेट उपलब्ध है, साथ ही क्वेरीज़ का अपेक्षित प्रदर्शन, कार्यान्वयन से दूसरे कार्यान्वयन में महत्वपूर्ण रूप से भिन्न होता है। इसी तरह, उपलब्ध इंडेक्सिंग विकल्पों और कॉन्फ़िगरेशन के विशिष्ट सेट कार्यान्वयन से बहुत भिन्न होते हैं। | ||
यह यहाँ है कि दस्तावेज़ | यह यहाँ है कि दस्तावेज़ भंडार की-वैल्यू भंडार से सबसे अधिक भिन्न होता है। सिद्धांत रूप में, की-वैल्यू भंडार में मान भंडार के लिए अपारदर्शी होते हैं, वे अनिवार्य रूप से ब्लैक बॉक्स होते हैं। वे दस्तावेज़ भंडार के समान खोज प्रणाली की पेशकश कर सकते हैं, किन्तु सामग्री के संगठन के बारे में कम समझ हो सकती है। दस्तावेज़ भंडार सामग्री को वर्गीकृत करने के लिए दस्तावेज़ में मेटाडेटा का उपयोग करते हैं, उदाहरण के लिए, उन्हें यह समझने की अनुमति देता है कि अंकों की श्रृंखला फ़ोन नंबर है, और दूसरा डाक कोड है। यह उन्हें उन प्रकार के डेटा पर खोज करने की अनुमति देता है, उदाहरण के लिए, 555 वाले सभी फ़ोन नंबर, जो ज़िप कोड 55555 को अनदेखा कर देंगे। | ||
=== संपादन === | === संपादन === | ||
Line 71: | Line 70: | ||
=== की-वैल्यू स्टोर्स से संबंध === | === की-वैल्यू स्टोर्स से संबंध === | ||
दस्तावेज़-उन्मुख डेटाबेस विशेष की-वैल्यू डेटाबेस|की-वैल्यू | दस्तावेज़-उन्मुख डेटाबेस विशेष की-वैल्यू डेटाबेस|की-वैल्यू भंडार है, जो स्वयं अन्य नोएसक्यूएल डेटाबेस श्रेणी है। साधारण की-वैल्यू भंडार में, दस्तावेज़ की सामग्री अपारदर्शी होती है। दस्तावेज़-उन्मुख डेटाबेस एपीआई या क्वेरी/अपडेट भाषा प्रदान करता है जो दस्तावेज़ में आंतरिक संरचना के आधार पर क्वेरी या अपडेट करने की क्षमता को उजागर करता है। यह अंतर उन उपयोगकर्ताओं के लिए मामूली हो सकता है जिन्हें समृद्ध क्वेरी, पुनर्प्राप्ति या संपादन API की आवश्यकता नहीं होती है जो आमतौर पर दस्तावेज़ डेटाबेस द्वारा प्रदान किए जाते हैं। आधुनिक की-वैल्यू भंडार में अक्सर मेटाडेटा के साथ काम करने, दस्तावेज़ भंडार के बीच की रेखाओं को धुंधला करने की सुविधाएँ शामिल होती हैं। | ||
=== खोज इंजन से संबंध === | === खोज इंजन से संबंध === | ||
[[Apache Solr]] और [[Elasticsearch]] जैसे कुछ खोज इंजन (उर्फ सूचना पुनर्प्राप्ति) | [[Apache Solr]] और [[Elasticsearch]] जैसे कुछ खोज इंजन (उर्फ सूचना पुनर्प्राप्ति) प्रणाली दस्तावेज़-उन्मुख डेटाबेस की परिभाषा में फिट होने के लिए दस्तावेज़ों पर पर्याप्त मुख्य संचालन प्रदान करते हैं। | ||
=== रिलेशनल डेटाबेस से संबंध === | === रिलेशनल डेटाबेस से संबंध === | ||
Line 80: | Line 79: | ||
{{cleanup|section|reason="Requires cleanup"|date=July 2016}} | {{cleanup|section|reason="Requires cleanup"|date=July 2016}} | ||
संबंधपरक डेटाबेस में, डेटा को पहले कई पूर्वनिर्धारित प्रकारों में वर्गीकृत किया जाता है, और प्रत्येक प्रकार की अलग-अलग प्रविष्टियाँ, या रिकॉर्ड रखने के लिए तालिकाएँ बनाई जाती हैं। तालिकाएँ प्रत्येक रिकॉर्ड के क्षेत्र में डेटा को परिभाषित करती हैं, जिसका अर्थ है कि तालिका में प्रत्येक रिकॉर्ड का समग्र रूप समान है। व्यवस्थापक तालिकाओं के बीच संबंधों को भी परिभाषित करता है, और कुछ निश्चित क्षेत्रों का चयन करता है जो उनके अनुसार खोज के लिए सबसे अधिक उपयोग किए जाएंगे और उन पर अनुक्रमणिका को परिभाषित करता है। संबंधात्मक डिजाइन में महत्वपूर्ण अवधारणा यह है कि कोई भी डेटा जिसे दोहराया जा सकता है, सामान्य रूप से अपनी तालिका में रखा जाता है, और यदि ये उदाहरण -दूसरे से संबंधित हैं, तो उन्हें साथ समूहित करने के लिए कॉलम चुना जाता है, विदेशी कुंजी। इस | संबंधपरक डेटाबेस में, डेटा को पहले कई पूर्वनिर्धारित प्रकारों में वर्गीकृत किया जाता है, और प्रत्येक प्रकार की अलग-अलग प्रविष्टियाँ, या रिकॉर्ड रखने के लिए तालिकाएँ बनाई जाती हैं। तालिकाएँ प्रत्येक रिकॉर्ड के क्षेत्र में डेटा को परिभाषित करती हैं, जिसका अर्थ है कि तालिका में प्रत्येक रिकॉर्ड का समग्र रूप समान है। व्यवस्थापक तालिकाओं के बीच संबंधों को भी परिभाषित करता है, और कुछ निश्चित क्षेत्रों का चयन करता है जो उनके अनुसार खोज के लिए सबसे अधिक उपयोग किए जाएंगे और उन पर अनुक्रमणिका को परिभाषित करता है। संबंधात्मक डिजाइन में महत्वपूर्ण अवधारणा यह है कि कोई भी डेटा जिसे दोहराया जा सकता है, सामान्य रूप से अपनी तालिका में रखा जाता है, और यदि ये उदाहरण -दूसरे से संबंधित हैं, तो उन्हें साथ समूहित करने के लिए कॉलम चुना जाता है, विदेशी कुंजी। इस रचना को [[डेटाबेस सामान्यीकरण]] के रूप में जाना जाता है।<ref>{{cite web |url=https://support.microsoft.com/en-ca/kb/283878 |title=डेटाबेस सामान्यीकरण मूल बातें का विवरण|website=Microsoft}}</ref> | ||
उदाहरण के लिए, पता पुस्तिका एप्लिकेशन को आम तौर पर संपर्क नाम, वैकल्पिक छवि, या अधिक फ़ोन नंबर, या अधिक डाक पते, और या अधिक ईमेल पते संग्रहीत करने की आवश्यकता होगी। विहित संबंधपरक डेटाबेस में, डेटा के प्रत्येक बिट के लिए पूर्वनिर्धारित क्षेत्रों के साथ इन पंक्तियों में से प्रत्येक के लिए तालिकाएँ बनाई जाएंगी: CONTACT तालिका में FIRST_NAME, LAST_NAME और IMAGE कॉलम शामिल हो सकते हैं, जबकि PHONE_NUMBER तालिका में COUNTRY_CODE, AREA_CODE, PHONE_NUMBER और TYPE शामिल हो सकते हैं ( घर, काम, आदि)। PHONE_NUMBER तालिका में विदेशी कुंजी स्तंभ, CONTACT_ID भी शामिल है, जिसमें संपर्क बनाए जाने के समय निर्दिष्ट विशिष्ट आईडी संख्या होती है। मूल संपर्क को फिर से बनाने के लिए, डेटाबेस इंजन तालिकाओं के समूह में संबंधित वस्तुओं को देखने के लिए विदेशी कुंजियों का उपयोग करता है और मूल डेटा का पुनर्निर्माण करता है। | उदाहरण के लिए, पता पुस्तिका एप्लिकेशन को आम तौर पर संपर्क नाम, वैकल्पिक छवि, या अधिक फ़ोन नंबर, या अधिक डाक पते, और या अधिक ईमेल पते संग्रहीत करने की आवश्यकता होगी। विहित संबंधपरक डेटाबेस में, डेटा के प्रत्येक बिट के लिए पूर्वनिर्धारित क्षेत्रों के साथ इन पंक्तियों में से प्रत्येक के लिए तालिकाएँ बनाई जाएंगी: CONTACT तालिका में FIRST_NAME, LAST_NAME और IMAGE कॉलम शामिल हो सकते हैं, जबकि PHONE_NUMBER तालिका में COUNTRY_CODE, AREA_CODE, PHONE_NUMBER और TYPE शामिल हो सकते हैं ( घर, काम, आदि)। PHONE_NUMBER तालिका में विदेशी कुंजी स्तंभ, CONTACT_ID भी शामिल है, जिसमें संपर्क बनाए जाने के समय निर्दिष्ट विशिष्ट आईडी संख्या होती है। मूल संपर्क को फिर से बनाने के लिए, डेटाबेस इंजन तालिकाओं के समूह में संबंधित वस्तुओं को देखने के लिए विदेशी कुंजियों का उपयोग करता है और मूल डेटा का पुनर्निर्माण करता है। | ||
इसके विपरीत, दस्तावेज़-उन्मुख डेटाबेस में कोई आंतरिक संरचना नहीं हो सकती है जो सीधे किसी तालिका की अवधारणा पर मैप करती है, और फ़ील्ड और रिश्ते आमतौर पर पूर्वनिर्धारित अवधारणाओं के रूप में मौजूद नहीं होते हैं। इसके बजाय, किसी ऑब्जेक्ट के सभी डेटा को दस्तावेज़ में रखा जाता है, और डेटाबेस में प्रविष्टि के रूप में संग्रहीत किया जाता है। पता पुस्तिका के उदाहरण में, दस्तावेज़ में संपर्क का नाम, छवि, और कोई भी संपर्क जानकारी, सभी ही रिकॉर्ड में शामिल होंगे। उस प्रविष्टि को उसकी कुंजी के माध्यम से ्सेस किया जाता है, जो डेटाबेस को एप्लिकेशन को दस्तावेज़ को पुनः प्राप्त करने और वापस करने की अनुमति देता है। संबंधित डेटा को पुनः प्राप्त करने के लिए किसी अतिरिक्त कार्य की आवश्यकता नहीं है; यह सब वस्तु में लौटाया जाता है। | इसके विपरीत, दस्तावेज़-उन्मुख डेटाबेस में कोई आंतरिक संरचना नहीं हो सकती है जो सीधे किसी तालिका की अवधारणा पर मैप करती है, और फ़ील्ड और रिश्ते आमतौर पर पूर्वनिर्धारित अवधारणाओं के रूप में मौजूद नहीं होते हैं। इसके बजाय, किसी ऑब्जेक्ट के सभी डेटा को दस्तावेज़ में रखा जाता है, और डेटाबेस में प्रविष्टि के रूप में संग्रहीत किया जाता है। पता पुस्तिका के उदाहरण में, दस्तावेज़ में संपर्क का नाम, छवि, और कोई भी संपर्क जानकारी, सभी ही रिकॉर्ड में शामिल होंगे। उस प्रविष्टि को उसकी कुंजी के माध्यम से ्सेस किया जाता है, जो डेटाबेस को एप्लिकेशन को दस्तावेज़ को पुनः प्राप्त करने और वापस करने की अनुमति देता है। संबंधित डेटा को पुनः प्राप्त करने के लिए किसी अतिरिक्त कार्य की आवश्यकता नहीं है; यह सब वस्तु में लौटाया जाता है। | ||
दस्तावेज़-उन्मुख और संबंधपरक मॉडल के बीच महत्वपूर्ण अंतर यह है कि दस्तावेज़ के मामले में डेटा स्वरूप पूर्वनिर्धारित नहीं होते हैं। ज्यादातर मामलों में, किसी भी प्रकार के दस्तावेज़ को किसी भी डेटाबेस में संग्रहीत किया जा सकता है, और वे दस्तावेज़ किसी भी समय प्रकार और रूप में बदल सकते हैं। यदि कोई किसी संपर्क में COUNTRY_FLAG जोड़ना चाहता है, तो इस फ़ील्ड को नए दस्तावेज़ों में डाला जा सकता है, क्योंकि इसका डेटाबेस या पहले से संग्रहीत मौजूदा दस्तावेज़ों पर कोई प्रभाव नहीं पड़ेगा। डेटाबेस से जानकारी की पुनर्प्राप्ति में सहायता के लिए, दस्तावेज़-उन्मुख | दस्तावेज़-उन्मुख और संबंधपरक मॉडल के बीच महत्वपूर्ण अंतर यह है कि दस्तावेज़ के मामले में डेटा स्वरूप पूर्वनिर्धारित नहीं होते हैं। ज्यादातर मामलों में, किसी भी प्रकार के दस्तावेज़ को किसी भी डेटाबेस में संग्रहीत किया जा सकता है, और वे दस्तावेज़ किसी भी समय प्रकार और रूप में बदल सकते हैं। यदि कोई किसी संपर्क में COUNTRY_FLAG जोड़ना चाहता है, तो इस फ़ील्ड को नए दस्तावेज़ों में डाला जा सकता है, क्योंकि इसका डेटाबेस या पहले से संग्रहीत मौजूदा दस्तावेज़ों पर कोई प्रभाव नहीं पड़ेगा। डेटाबेस से जानकारी की पुनर्प्राप्ति में सहायता के लिए, दस्तावेज़-उन्मुख प्रणाली आम तौर पर व्यवस्थापक को कुछ प्रकार की जानकारी देखने के लिए डेटाबेस को संकेत प्रदान करने की अनुमति देते हैं। ये रिलेशनल केस में इंडेक्स के समान काम करते हैं। अधिकांश दस्तावेज़ की सामग्री के बाहर अतिरिक्त मेटाडेटा जोड़ने की क्षमता भी प्रदान करते हैं, उदाहरण के लिए, पता पुस्तिका के हिस्से के रूप में प्रविष्टियों को टैग करना, जो प्रोग्रामर को सभी प्रकार की पता पुस्तिका प्रविष्टियों की तरह संबंधित प्रकार की जानकारी प्राप्त करने की अनुमति देता है। यह तालिका के समान कार्यक्षमता प्रदान करता है, किन्तु अवधारणा (डेटा की श्रेणियां) को इसके भौतिक कार्यान्वयन (तालिकाओं) से अलग करता है। | ||
क्लासिक सामान्यीकृत रिलेशनल मॉडल में, डेटाबेस में वस्तुओं को डेटा की अलग-अलग पंक्तियों के रूप में दर्शाया जाता है, जो कि उन्हें प्राप्त होने के बाद दी गई संरचना से परे नहीं होती है। यह प्रोग्रामिंग ऑब्जेक्ट्स को उनके संबंधित डेटाबेस पंक्तियों में और से अनुवाद करने का प्रयास करते समय समस्याएँ पैदा करता है, समस्या जिसे [[ वस्तु-संबंधपरक प्रतिबाधा बेमेल |वस्तु-संबंधपरक प्रतिबाधा बेमेल]] के रूप में जाना जाता है।<ref>{{cite web |url=http://www.agiledata.org/essays/impedanceMismatch.html |title=वस्तु-संबंधपरक प्रतिबाधा बेमेल|first=Scott |last=Wambler |website=Agile Data}}</ref> दस्तावेज़ अधिक बारीकी से | क्लासिक सामान्यीकृत रिलेशनल मॉडल में, डेटाबेस में वस्तुओं को डेटा की अलग-अलग पंक्तियों के रूप में दर्शाया जाता है, जो कि उन्हें प्राप्त होने के बाद दी गई संरचना से परे नहीं होती है। यह प्रोग्रामिंग ऑब्जेक्ट्स को उनके संबंधित डेटाबेस पंक्तियों में और से अनुवाद करने का प्रयास करते समय समस्याएँ पैदा करता है, समस्या जिसे [[ वस्तु-संबंधपरक प्रतिबाधा बेमेल |वस्तु-संबंधपरक प्रतिबाधा बेमेल]] के रूप में जाना जाता है।<ref>{{cite web |url=http://www.agiledata.org/essays/impedanceMismatch.html |title=वस्तु-संबंधपरक प्रतिबाधा बेमेल|first=Scott |last=Wambler |website=Agile Data}}</ref> दस्तावेज़ अधिक बारीकी से भंडार करता है, या कुछ मामलों में सीधे भंडार में प्रोग्रामिंग ऑब्जेक्ट्स को मैप करता है। इनका विपणन अक्सर नोएसक्यूएल शब्द का उपयोग करके किया जाता है। | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
Line 106: | Line 105: | ||
| {{Open source|[[GNU Affero General Public License|AGPL]]}} and [[proprietary software|Proprietary]] | | {{Open source|[[GNU Affero General Public License|AGPL]]}} and [[proprietary software|Proprietary]] | ||
| [[C (programming language)|C]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Scala (programming language)|Scala]], [[Python (programming language)|Python]], [[Node.js]], [[PHP]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]], [[Spring Framework]] | | [[C (programming language)|C]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Scala (programming language)|Scala]], [[Python (programming language)|Python]], [[Node.js]], [[PHP]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]], [[Spring Framework]] | ||
|Aerospike is a flash-optimized and in-memory distributed key value | |Aerospike is a flash-optimized and in-memory distributed key value नोएसक्यूएल database which also supports a document store model.<ref>{{cite web |title=Documentation {{!}} Aerospike - Key-Value Store |url=https://docs.aerospike.com/docs/guide/kvs.html |website=docs.aerospike.com |access-date=3 May 2021}}</ref> | ||
| {{yes}}<ref>{{cite web |title=Documentation {{!}} Aerospike |url=https://docs.aerospike.com/docs/client/rest/index.html |website=docs.aerospike.com |access-date=3 May 2021}}</ref> | | {{yes}}<ref>{{cite web |title=Documentation {{!}} Aerospike |url=https://docs.aerospike.com/docs/client/rest/index.html |website=docs.aerospike.com |access-date=3 May 2021}}</ref> | ||
|- | |- | ||
Line 134: | Line 133: | ||
| {{Open source|[[BSD License]]}} | | {{Open source|[[BSD License]]}} | ||
| [[Java (programming language)|Java]], [[XQuery]] | | [[Java (programming language)|Java]], [[XQuery]] | ||
| Support for | | Support for एक्सएमएल, JSON and binary formats; client-/server based architecture; concurrent structural and full-text searches and updates. | ||
| {{yes}} | | {{yes}} | ||
|- | |- | ||
Line 155: | Line 154: | ||
| {{proprietary}} with free download | | {{proprietary}} with free download | ||
| [[JavaScript]], [[SQL]], [[PHP]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Node.js]], [[C (programming language)|C]], [[C++]], | | [[JavaScript]], [[SQL]], [[PHP]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Node.js]], [[C (programming language)|C]], [[C++]], | ||
| Distributed document-oriented | | Distributed document-oriented एक्सएमएल / JSON database platform with [[ACID]]-compliant [[transaction processing|transactions]]; [[high-availability]] [[data replication]] and [[sharding]]; built-in [[full-text search]] engine with [[relevance]] [[ranking]]; JS/SQL [[query language]]; [[Geographic information system|GIS]]; Available as pay-per-use [[cloud database|database as a service]] or as an on-premise free software download. | ||
| {{yes}} | | {{yes}} | ||
|- | |- | ||
Line 162: | Line 161: | ||
| {{Open source|[[Apache License]]}} | | {{Open source|[[Apache License]]}} | ||
| [[C (programming language)|C]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Node.js]], [[PHP]], [[SQL]], [[Go (programming language)|Go]], [[Spring Framework]], [[LINQ]] | | [[C (programming language)|C]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Node.js]], [[PHP]], [[SQL]], [[Go (programming language)|Go]], [[Spring Framework]], [[LINQ]] | ||
|Distributed | |Distributed नोएसक्यूएल Document Database, JSON model and SQL based Query Language. | ||
| {{yes}}<ref>[http://www.couchbase.com/docs/ Documentation] {{webarchive|url=https://web.archive.org/web/20120820182153/http://www.couchbase.com/docs/ |date=2012-08-20 }}. Couchbase. Retrieved on 2013-09-18.</ref> | | {{yes}}<ref>[http://www.couchbase.com/docs/ Documentation] {{webarchive|url=https://web.archive.org/web/20120820182153/http://www.couchbase.com/docs/ |date=2012-08-20 }}. Couchbase. Retrieved on 2013-09-18.</ref> | ||
|- | |- | ||
Line 197: | Line 196: | ||
|Proprietary | |Proprietary | ||
|[[Java (programming language)|Java]], [[JavaScript]], [[Node.js]], [[Go (programming language)|Go]], [[C Sharp (programming language)|C#]] [[.NET Framework|.NET]], [[Perl]], [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Rust (programming language)|Rust]], [[Haskell (programming language)|Haskell]], [[Erlang (programming language)|Erlang]], [[Django (web framework)|Django]], and [[Grails (framework)|Grails]] | |[[Java (programming language)|Java]], [[JavaScript]], [[Node.js]], [[Go (programming language)|Go]], [[C Sharp (programming language)|C#]] [[.NET Framework|.NET]], [[Perl]], [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Rust (programming language)|Rust]], [[Haskell (programming language)|Haskell]], [[Erlang (programming language)|Erlang]], [[Django (web framework)|Django]], and [[Grails (framework)|Grails]] | ||
|fully managed proprietary [[NoSQL]] [[database]] service that supports [[Attribute–value pair|key–value]] and document data structures | |fully managed proprietary [[NoSQL|नोएसक्यूएल]] [[database]] service that supports [[Attribute–value pair|key–value]] and document data structures | ||
|Yes | |Yes | ||
|- | |- | ||
Line 211: | Line 210: | ||
| {{Open source|[[LGPL]]}} | | {{Open source|[[LGPL]]}} | ||
| [[XQuery]], [[Java (programming language)|Java]] | | [[XQuery]], [[Java (programming language)|Java]] | ||
| | | एक्सएमएल over REST/HTTP, WebDAV, Lucene Fulltext search, binary data support, validation, versioning, clustering, triggers, URL rewriting, collections, ACLS, XQuery Update | ||
| {{yes}}<ref>[http://exist-db.org eXist-db Open Source Native XML Database]. Exist-db.org. Retrieved on 2013-09-18.</ref> | | {{yes}}<ref>[http://exist-db.org eXist-db Open Source Native XML Database]. Exist-db.org. Retrieved on 2013-09-18.</ref> | ||
|- | |- | ||
Line 239: | Line 238: | ||
| Free Developer license or Commercial<ref>{{cite web|url=http://developer.marklogic.com/licensing|title=MarkLogic Licensing|access-date=2011-12-28|archive-url=https://web.archive.org/web/20120112032849/http://developer.marklogic.com/licensing|archive-date=2012-01-12|url-status=dead}}</ref> | | Free Developer license or Commercial<ref>{{cite web|url=http://developer.marklogic.com/licensing|title=MarkLogic Licensing|access-date=2011-12-28|archive-url=https://web.archive.org/web/20120112032849/http://developer.marklogic.com/licensing|archive-date=2012-01-12|url-status=dead}}</ref> | ||
|[[Java (programming language)|Java]], [[JavaScript]], [[Node.js]], [[XQuery]], [[SPARQL]], [[XSLT]], [[C++]] | |[[Java (programming language)|Java]], [[JavaScript]], [[Node.js]], [[XQuery]], [[SPARQL]], [[XSLT]], [[C++]] | ||
| Distributed document-oriented database for JSON, | | Distributed document-oriented database for JSON, एक्सएमएल, and [[Resource Description Framework|RDF triples]]. Built-in [[full-text search]], [[ACID]] transactions, [[high availability]] and [[disaster recovery]], certified security. | ||
| {{yes}} | | {{yes}} | ||
|- | |- | ||
Line 277: | Line 276: | ||
| {{yes}} | | {{yes}} | ||
|- | |- | ||
|[[Oracle NoSQL Database]] | |[[Oracle NoSQL Database|Oracle नोएसक्यूएल Database]] | ||
|Oracle Corp | |Oracle Corp | ||
|[[Apache License|Apache]] and proprietary | |[[Apache License|Apache]] and proprietary | ||
Line 288: | Line 287: | ||
| {{proprietary}} | | {{proprietary}} | ||
| [[REST]], [[Java (programming language)|Java]], [[XQuery]], [[XSLT]], [[C (programming language)|C]], [[C++]], [[Python (programming language)|Python]] | | [[REST]], [[Java (programming language)|Java]], [[XQuery]], [[XSLT]], [[C (programming language)|C]], [[C++]], [[Python (programming language)|Python]] | ||
| Distributed document-oriented [[XML database]] with integrated [[full-text search]]; support for [[JSON]], text, and binaries. | | Distributed document-oriented [[XML database|एक्सएमएल database]] with integrated [[full-text search]]; support for [[JSON]], text, and binaries. | ||
|{{yes}} | |{{yes}} | ||
|- | |- | ||
Line 316: | Line 315: | ||
|{{Open source|[[Apache License]]}} | |{{Open source|[[Apache License]]}} | ||
|[[C++]], [[XQuery]] | |[[C++]], [[XQuery]] | ||
|[[XML database]] | |[[XML database|एक्सएमएल database]] | ||
|{{no}} | |{{no}} | ||
|- | |- | ||
Line 330: | Line 329: | ||
|{{Open source|[[Apache License]]<ref>{{cite web |title=solr/LICENSE.txt at main · apache/solr · GitHub.|url=https://github.com/apache/solr/blob/main/LICENSE.txt |website=github.com |access-date=24 December 2022}}</ref>}} | |{{Open source|[[Apache License]]<ref>{{cite web |title=solr/LICENSE.txt at main · apache/solr · GitHub.|url=https://github.com/apache/solr/blob/main/LICENSE.txt |website=github.com |access-date=24 December 2022}}</ref>}} | ||
|[[Java (programming language)|Java]] | |[[Java (programming language)|Java]] | ||
|[[JSON]], [[Comma-separated values|CSV]], [[XML]], and a few other formats.<ref>{{cite web |title=Response Writers :: Apache Solr Reference Guide.|url=https://solr.apache.org/guide/solr/latest/query-guide/response-writers.html |website=solr.apache.org |access-date=24 December 2022}}</ref> Search engine. | |[[JSON]], [[Comma-separated values|CSV]], [[XML|एक्सएमएल]], and a few other formats.<ref>{{cite web |title=Response Writers :: Apache Solr Reference Guide.|url=https://solr.apache.org/guide/solr/latest/query-guide/response-writers.html |website=solr.apache.org |access-date=24 December 2022}}</ref> Search engine. | ||
|{{yes}}<ref>{{cite web |title=Managed Resources :: Apache Solr Reference Guide.|url=https://solr.apache.org/guide/solr/latest/configuration-guide/managed-resources.html |website=solr.apache.org |access-date=24 December 2022}}</ref> | |{{yes}}<ref>{{cite web |title=Managed Resources :: Apache Solr Reference Guide.|url=https://solr.apache.org/guide/solr/latest/configuration-guide/managed-resources.html |website=solr.apache.org |access-date=24 December 2022}}</ref> | ||
|- | |- | ||
Line 351: | Line 350: | ||
=== ्सएमएल डेटाबेस कार्यान्वयन === | === ्सएमएल डेटाबेस कार्यान्वयन === | ||
{{Further|XML database}} | {{Further|XML database}} | ||
अधिकांश | अधिकांश एक्सएमएल डेटाबेस दस्तावेज़-उन्मुख डेटाबेस हैं। | ||
== यह भी देखें == | == यह भी देखें == |
Revision as of 12:01, 1 March 2023
दस्तावेज़-उन्मुख डेटाबेस, दस्तावेज़ भंडार , कंप्यूटर प्रोग्राम और डेटा भंडारण प्रणाली है। जिसे दस्तावेज़-उन्मुख जानकारी को संग्रहीत करने, पुनर्प्राप्त करने और प्रबंधित करने के लिए रचना किया गया है, जिसे अर्ध-संरचित मॉडल के रूप में भी जाना जाता है।[1]दस्तावेज़-उन्मुख डेटाबेस नोएसक्यूएल डेटाबेस की मुख्य श्रेणियों में से हैं और दस्तावेज़-उन्मुख डेटाबेस शब्द की लोकप्रियता बढ़ी है[2] नोएसक्यूएल शब्द के उपयोग के साथ ही एक्सएमएल डेटाबेस दस्तावेज़-उन्मुख डेटाबेस का उपवर्ग है जो एक्सएमएल दस्तावेज़ों के साथ काम करने के लिए अनुकूलित है। ग्राफ डेटाबेस समान हैं, किन्तु और परत जोड़ते हैं, संबंध जो उन्हें तेजी से पार करने के लिए दस्तावेज़ों को लिंक करने की अनुमति देता है।
दस्तावेज़-उन्मुख डेटाबेस स्वाभाविक रूप से की-वैल्यू डेटाबेस | की-वैल्यू स्टोर, अन्य नोएसक्यूएल डेटाबेस अवधारणा का उपवर्ग है। के अंतर डेटा संसाधित करने के तरीके में निहित है; की-वैल्यू भंडार में, डेटा को डेटाबेस के लिए स्वाभाविक रूप से अपारदर्शी माना जाता है, जबकि दस्तावेज़-उन्मुख प्रणाली मेटा डेटा निकालने के लिए दस्तावेज़ में आंतरिक संरचना पर निर्भर करती है जिसे डेटाबेस इंजन आगे अनुकूलन के लिए उपयोग करता है। हालांकि प्रणाली में उपकरणों के कारण अंतर अक्सर नगण्य होता है,[lower-alpha 1] वैचारिक रूप से दस्तावेज़-भंडार को आधुनिक प्रोग्रामिंग तकनीकों के साथ समृद्ध अनुभव प्रदान करने के लिए रचना किया गया है।
दस्तावेज़ डेटाबेस[lower-alpha 2] पारंपरिक संबंध का डेटाबेस (RDB) के साथ दृढ़ता से विपरीत। संबंधपरक डेटाबेस आमतौर पर प्रोग्रामर द्वारा परिभाषित अलग-अलग तालिकाओं में डेटा संग्रहीत करते हैं, और वस्तु कई तालिकाओं में फैली हो सकती है। दस्तावेज़ डेटाबेस किसी दिए गए ऑब्जेक्ट के लिए सभी सूचनाओं को डेटाबेस में उदाहरण में संग्रहीत करता है, और प्रत्येक संग्रहीत वस्तु दूसरे से भिन्न हो सकती है। यह डेटाबेस में डेटा लोड करते समय ऑब्जेक्ट-रिलेशनल मैपिंग की आवश्यकता को समाप्त करता है।
दस्तावेज़
दस्तावेज़-उन्मुख डेटाबेस की केंद्रीय अवधारणा दस्तावेज़ की धारणा है। जबकि प्रत्येक दस्तावेज़-उन्मुख डेटाबेस कार्यान्वयन इस परिभाषा के विवरण पर भिन्न होता है, सामान्य तौर पर, वे सभी दस्तावेजों को कुछ मानक प्रारूप या एन्कोडिंग में डेटा (या सूचना) को एनकैप्सुलेट और एन्कोड करते हैं। उपयोग में आने वाले एन्कोडिंग में एक्सएमएल, YAML, JSON, साथ ही BSON जैसे बाइनरी फॉर्म शामिल हैं।
दस्तावेज़ भंडार में दस्तावेज़ मोटे तौर पर किसी वस्तु की प्रोग्रामिंग अवधारणा के बराबर होते हैं। उन्हें मानक स्कीमा का पालन करने की आवश्यकता नहीं है, न ही उनके पास सभी समान खंड, स्लॉट, भाग या कुंजियाँ होंगी। आम तौर पर, वस्तुओं का उपयोग करने वाले प्रोग्राम में कई अलग-अलग प्रकार की वस्तुएं होती हैं, और उन वस्तुओं में अक्सर कई वैकल्पिक क्षेत्र होते हैं। प्रत्येक वस्तु, यहां तक कि ही वर्ग की भी, बहुत अलग दिख सकती है। दस्तावेज़ भंडार समान हैं कि वे ही भंडार में विभिन्न प्रकार के दस्तावेज़ों को अनुमति देते हैं, उनके भीतर फ़ील्ड वैकल्पिक होने की अनुमति देते हैं, और अक्सर उन्हें विभिन्न एन्कोडिंग प्रणाली का उपयोग करके एन्कोड करने की अनुमति देते हैं। उदाहरण के लिए, निम्नलिखित JSON में एन्कोडेड दस्तावेज़ है:
{
"FirstName": "Bob",
"Address": "5 Oak St.",
"Hobby": "sailing"
}
्सएमएल में दूसरा दस्तावेज़ एन्कोड किया जा सकता है:
<contact>
<firstname>Bob</firstname>
<lastname>Smith</lastname>
<phone type="Cell">(123) 555-0178</phone>
<phone type="Work">(890) 555-0133</phone>
<address>
<type>Home</type>
<street1>123 Back St.</street1>
<city>Boys</city>
<state>AR</state>
<zip>32225</zip>
<country>US</country>
</address>
</contact>
ये दो दस्तावेज़ कुछ संरचनात्मक तत्वों को दूसरे के साथ साझा करते हैं, किन्तु प्रत्येक में अद्वितीय तत्व भी होते हैं। दस्तावेज़ के अंदर संरचना और पाठ और अन्य डेटा को आमतौर पर दस्तावेज़ की सामग्री के रूप में संदर्भित किया जाता है और पुनर्प्राप्ति या संपादन विधियों के माध्यम से संदर्भित किया जा सकता है, (नीचे देखें)। रिलेशनल डेटाबेस के विपरीत जहां प्रत्येक रिकॉर्ड में समान फ़ील्ड होते हैं, अप्रयुक्त फ़ील्ड को खाली छोड़ देते हैं; उपरोक्त उदाहरण में किसी भी दस्तावेज़ (रिकॉर्ड) में कोई खाली 'फ़ील्ड' नहीं है। यह दृष्टिकोण बिना किसी आवश्यकता के कुछ रिकॉर्ड में नई जानकारी को जोड़ने की अनुमति देता है कि डेटाबेस में हर दूसरा रिकॉर्ड समान संरचना साझा करता है।
दस्तावेज़ डेटाबेस आमतौर पर अतिरिक्त मेटाडेटा को दस्तावेज़ सामग्री के साथ संबद्ध और संग्रहीत करने के लिए प्रदान करते हैं। वह मेटाडेटा सुविधाओं से संबंधित हो सकता है जो डेटाभंडार दस्तावेज़ों को व्यवस्थित करने, सुरक्षा प्रदान करने, या अन्य कार्यान्वयन विशिष्ट सुविधाओं के लिए प्रदान करता है।
सीआरयूडी संचालन
दस्तावेज़-उन्मुख डेटाबेस दस्तावेज़ों के लिए समर्थन करने वाले मुख्य संचालन अन्य डेटाबेस के समान हैं, और जबकि शब्दावली पूरी तरह से मानकीकृत नहीं है, अधिकांश चिकित्सक उन्हें CRUD के रूप में पहचानेंगे:
- निर्माण (या सम्मिलन)
- पुनर्प्राप्ति (या क्वेरी, खोज, पढ़ना या खोजना)
- अपडेट करें (या संपादित करें)
- हटाना (या हटाना)
कुंजी
दस्तावेज़ों को डेटाबेस में अद्वितीय कुंजी के माध्यम से संबोधित किया जाता है जो उस दस्तावेज़ का प्रतिनिधित्व करता है। यह कुंजी साधारण पहचानकर्ता (या आईडी), आमतौर पर स्ट्रिंग (कंप्यूटर विज्ञान), यूआरआई या पथ (कंप्यूटिंग) है। डेटाबेस से दस्तावेज़ को पुनः प्राप्त करने के लिए कुंजी का उपयोग किया जा सकता है। आमतौर पर डेटाबेस दस्तावेज़ पुनर्प्राप्ति को गति देने के लिए कुंजी पर डाटाबेस इंडेक्स रखता है, और कुछ मामलों में डेटाबेस में दस्तावेज़ बनाने या सम्मिलित करने के लिए कुंजी की आवश्यकता होती है।
पुनर्प्राप्ति
दस्तावेज़-उन्मुख डेटाबेस की अन्य परिभाषित विशेषता यह है कि दस्तावेज़ को पुनः प्राप्त करने के लिए उपयोग की जा सकने वाली सरल कुंजी-से-दस्तावेज़ लुकअप से परे, डेटाबेस एपीआई या क्वेरी भाषा प्रदान करता है जो उपयोगकर्ता को सामग्री के आधार पर दस्तावेज़ों को पुनः प्राप्त करने की अनुमति देता है (या मेटाडेटा)। उदाहरण के लिए, आप ऐसी क्वेरी चाहते हैं जो निश्चित फ़ील्ड के साथ निश्चित मान पर सेट किए गए सभी दस्तावेज़ों को पुनः प्राप्त करे। क्वेरी एपीआई या क्वेरी भाषा सुविधाओं का सेट उपलब्ध है, साथ ही क्वेरीज़ का अपेक्षित प्रदर्शन, कार्यान्वयन से दूसरे कार्यान्वयन में महत्वपूर्ण रूप से भिन्न होता है। इसी तरह, उपलब्ध इंडेक्सिंग विकल्पों और कॉन्फ़िगरेशन के विशिष्ट सेट कार्यान्वयन से बहुत भिन्न होते हैं।
यह यहाँ है कि दस्तावेज़ भंडार की-वैल्यू भंडार से सबसे अधिक भिन्न होता है। सिद्धांत रूप में, की-वैल्यू भंडार में मान भंडार के लिए अपारदर्शी होते हैं, वे अनिवार्य रूप से ब्लैक बॉक्स होते हैं। वे दस्तावेज़ भंडार के समान खोज प्रणाली की पेशकश कर सकते हैं, किन्तु सामग्री के संगठन के बारे में कम समझ हो सकती है। दस्तावेज़ भंडार सामग्री को वर्गीकृत करने के लिए दस्तावेज़ में मेटाडेटा का उपयोग करते हैं, उदाहरण के लिए, उन्हें यह समझने की अनुमति देता है कि अंकों की श्रृंखला फ़ोन नंबर है, और दूसरा डाक कोड है। यह उन्हें उन प्रकार के डेटा पर खोज करने की अनुमति देता है, उदाहरण के लिए, 555 वाले सभी फ़ोन नंबर, जो ज़िप कोड 55555 को अनदेखा कर देंगे।
संपादन
दस्तावेज़ डेटाबेस आमतौर पर दस्तावेज़ की सामग्री (या मेटाडेटा) को अद्यतन या संपादित करने के लिए कुछ तंत्र प्रदान करते हैं, या तो पूरे दस्तावेज़ के प्रतिस्थापन की अनुमति देकर, या दस्तावेज़ के अलग-अलग संरचनात्मक टुकड़े।
संगठन
दस्तावेज़ डेटाबेस कार्यान्वयन दस्तावेज़ों को व्यवस्थित करने के विभिन्न तरीकों की पेशकश करता है, जिसमें की धारणाएँ भी शामिल हैं
- संग्रह: दस्तावेजों के समूह, जहां कार्यान्वयन के आधार पर, संग्रह के अंदर रहने के लिए दस्तावेज़ को लागू किया जा सकता है, या कई संग्रहों में रहने की अनुमति दी जा सकती है
- टैग और अदृश्य मेटाडेटा: दस्तावेज़ सामग्री के बाहर अतिरिक्त डेटा
- निर्देशिका पदानुक्रम: पेड़ जैसी संरचना में व्यवस्थित दस्तावेजों के समूह, आमतौर पर पथ या यूआरआई पर आधारित होते हैं
कभी-कभी ये संगठनात्मक विचार इस बात में भिन्न होते हैं कि वे कितने तार्किक बनाम भौतिक हैं, (जैसे डिस्क पर या मेमोरी में), अभ्यावेदन।
अन्य डेटाबेस से संबंध
की-वैल्यू स्टोर्स से संबंध
दस्तावेज़-उन्मुख डेटाबेस विशेष की-वैल्यू डेटाबेस|की-वैल्यू भंडार है, जो स्वयं अन्य नोएसक्यूएल डेटाबेस श्रेणी है। साधारण की-वैल्यू भंडार में, दस्तावेज़ की सामग्री अपारदर्शी होती है। दस्तावेज़-उन्मुख डेटाबेस एपीआई या क्वेरी/अपडेट भाषा प्रदान करता है जो दस्तावेज़ में आंतरिक संरचना के आधार पर क्वेरी या अपडेट करने की क्षमता को उजागर करता है। यह अंतर उन उपयोगकर्ताओं के लिए मामूली हो सकता है जिन्हें समृद्ध क्वेरी, पुनर्प्राप्ति या संपादन API की आवश्यकता नहीं होती है जो आमतौर पर दस्तावेज़ डेटाबेस द्वारा प्रदान किए जाते हैं। आधुनिक की-वैल्यू भंडार में अक्सर मेटाडेटा के साथ काम करने, दस्तावेज़ भंडार के बीच की रेखाओं को धुंधला करने की सुविधाएँ शामिल होती हैं।
खोज इंजन से संबंध
Apache Solr और Elasticsearch जैसे कुछ खोज इंजन (उर्फ सूचना पुनर्प्राप्ति) प्रणाली दस्तावेज़-उन्मुख डेटाबेस की परिभाषा में फिट होने के लिए दस्तावेज़ों पर पर्याप्त मुख्य संचालन प्रदान करते हैं।
रिलेशनल डेटाबेस से संबंध
This section may require cleanup to meet Wikipedia's quality standards. The specific problem is: "Requires cleanup". (July 2016) (Learn how and when to remove this template message) |
संबंधपरक डेटाबेस में, डेटा को पहले कई पूर्वनिर्धारित प्रकारों में वर्गीकृत किया जाता है, और प्रत्येक प्रकार की अलग-अलग प्रविष्टियाँ, या रिकॉर्ड रखने के लिए तालिकाएँ बनाई जाती हैं। तालिकाएँ प्रत्येक रिकॉर्ड के क्षेत्र में डेटा को परिभाषित करती हैं, जिसका अर्थ है कि तालिका में प्रत्येक रिकॉर्ड का समग्र रूप समान है। व्यवस्थापक तालिकाओं के बीच संबंधों को भी परिभाषित करता है, और कुछ निश्चित क्षेत्रों का चयन करता है जो उनके अनुसार खोज के लिए सबसे अधिक उपयोग किए जाएंगे और उन पर अनुक्रमणिका को परिभाषित करता है। संबंधात्मक डिजाइन में महत्वपूर्ण अवधारणा यह है कि कोई भी डेटा जिसे दोहराया जा सकता है, सामान्य रूप से अपनी तालिका में रखा जाता है, और यदि ये उदाहरण -दूसरे से संबंधित हैं, तो उन्हें साथ समूहित करने के लिए कॉलम चुना जाता है, विदेशी कुंजी। इस रचना को डेटाबेस सामान्यीकरण के रूप में जाना जाता है।[3] उदाहरण के लिए, पता पुस्तिका एप्लिकेशन को आम तौर पर संपर्क नाम, वैकल्पिक छवि, या अधिक फ़ोन नंबर, या अधिक डाक पते, और या अधिक ईमेल पते संग्रहीत करने की आवश्यकता होगी। विहित संबंधपरक डेटाबेस में, डेटा के प्रत्येक बिट के लिए पूर्वनिर्धारित क्षेत्रों के साथ इन पंक्तियों में से प्रत्येक के लिए तालिकाएँ बनाई जाएंगी: CONTACT तालिका में FIRST_NAME, LAST_NAME और IMAGE कॉलम शामिल हो सकते हैं, जबकि PHONE_NUMBER तालिका में COUNTRY_CODE, AREA_CODE, PHONE_NUMBER और TYPE शामिल हो सकते हैं ( घर, काम, आदि)। PHONE_NUMBER तालिका में विदेशी कुंजी स्तंभ, CONTACT_ID भी शामिल है, जिसमें संपर्क बनाए जाने के समय निर्दिष्ट विशिष्ट आईडी संख्या होती है। मूल संपर्क को फिर से बनाने के लिए, डेटाबेस इंजन तालिकाओं के समूह में संबंधित वस्तुओं को देखने के लिए विदेशी कुंजियों का उपयोग करता है और मूल डेटा का पुनर्निर्माण करता है।
इसके विपरीत, दस्तावेज़-उन्मुख डेटाबेस में कोई आंतरिक संरचना नहीं हो सकती है जो सीधे किसी तालिका की अवधारणा पर मैप करती है, और फ़ील्ड और रिश्ते आमतौर पर पूर्वनिर्धारित अवधारणाओं के रूप में मौजूद नहीं होते हैं। इसके बजाय, किसी ऑब्जेक्ट के सभी डेटा को दस्तावेज़ में रखा जाता है, और डेटाबेस में प्रविष्टि के रूप में संग्रहीत किया जाता है। पता पुस्तिका के उदाहरण में, दस्तावेज़ में संपर्क का नाम, छवि, और कोई भी संपर्क जानकारी, सभी ही रिकॉर्ड में शामिल होंगे। उस प्रविष्टि को उसकी कुंजी के माध्यम से ्सेस किया जाता है, जो डेटाबेस को एप्लिकेशन को दस्तावेज़ को पुनः प्राप्त करने और वापस करने की अनुमति देता है। संबंधित डेटा को पुनः प्राप्त करने के लिए किसी अतिरिक्त कार्य की आवश्यकता नहीं है; यह सब वस्तु में लौटाया जाता है।
दस्तावेज़-उन्मुख और संबंधपरक मॉडल के बीच महत्वपूर्ण अंतर यह है कि दस्तावेज़ के मामले में डेटा स्वरूप पूर्वनिर्धारित नहीं होते हैं। ज्यादातर मामलों में, किसी भी प्रकार के दस्तावेज़ को किसी भी डेटाबेस में संग्रहीत किया जा सकता है, और वे दस्तावेज़ किसी भी समय प्रकार और रूप में बदल सकते हैं। यदि कोई किसी संपर्क में COUNTRY_FLAG जोड़ना चाहता है, तो इस फ़ील्ड को नए दस्तावेज़ों में डाला जा सकता है, क्योंकि इसका डेटाबेस या पहले से संग्रहीत मौजूदा दस्तावेज़ों पर कोई प्रभाव नहीं पड़ेगा। डेटाबेस से जानकारी की पुनर्प्राप्ति में सहायता के लिए, दस्तावेज़-उन्मुख प्रणाली आम तौर पर व्यवस्थापक को कुछ प्रकार की जानकारी देखने के लिए डेटाबेस को संकेत प्रदान करने की अनुमति देते हैं। ये रिलेशनल केस में इंडेक्स के समान काम करते हैं। अधिकांश दस्तावेज़ की सामग्री के बाहर अतिरिक्त मेटाडेटा जोड़ने की क्षमता भी प्रदान करते हैं, उदाहरण के लिए, पता पुस्तिका के हिस्से के रूप में प्रविष्टियों को टैग करना, जो प्रोग्रामर को सभी प्रकार की पता पुस्तिका प्रविष्टियों की तरह संबंधित प्रकार की जानकारी प्राप्त करने की अनुमति देता है। यह तालिका के समान कार्यक्षमता प्रदान करता है, किन्तु अवधारणा (डेटा की श्रेणियां) को इसके भौतिक कार्यान्वयन (तालिकाओं) से अलग करता है।
क्लासिक सामान्यीकृत रिलेशनल मॉडल में, डेटाबेस में वस्तुओं को डेटा की अलग-अलग पंक्तियों के रूप में दर्शाया जाता है, जो कि उन्हें प्राप्त होने के बाद दी गई संरचना से परे नहीं होती है। यह प्रोग्रामिंग ऑब्जेक्ट्स को उनके संबंधित डेटाबेस पंक्तियों में और से अनुवाद करने का प्रयास करते समय समस्याएँ पैदा करता है, समस्या जिसे वस्तु-संबंधपरक प्रतिबाधा बेमेल के रूप में जाना जाता है।[4] दस्तावेज़ अधिक बारीकी से भंडार करता है, या कुछ मामलों में सीधे भंडार में प्रोग्रामिंग ऑब्जेक्ट्स को मैप करता है। इनका विपणन अक्सर नोएसक्यूएल शब्द का उपयोग करके किया जाता है।
कार्यान्वयन
Name | Publisher | License | Languages supported | Notes | RESTful API |
---|---|---|---|---|---|
Aerospike | Aerospike | AGPL and Proprietary | C, C#, Java, Scala, Python, Node.js, PHP, Go, Rust, Spring Framework | Aerospike is a flash-optimized and in-memory distributed key value नोएसक्यूएल database which also supports a document store model.[5] | Yes[6] |
AllegroGraph | Franz, Inc. | Proprietary | Java, Python, Common Lisp, Ruby, Scala, C#, Perl | The database platform supports document store and graph data models in a single database. Supports JSON, JSON-LD, RDF, full-text search, ACID, two-phase commit, Multi-Master Replication, Prolog and SPARQL. | Yes[7] |
ArangoDB | ArangoDB | Apache License | C, C#, Java, Python, Node.js, PHP, Scala, Go, Ruby, Elixir | The database system supports document store as well as key/value and graph data models with one database core and a unified query language AQL (ArangoDB Query Language). | Yes[8] |
ArcadeDB | Arcade Data Ltd | Apache License | Java | Multi-model database supporting document, graph, and key/value models, queried by a SQL dialect. | Yes[9] |
BaseX | BaseX Team | BSD License | Java, XQuery | Support for एक्सएमएल, JSON and binary formats; client-/server based architecture; concurrent structural and full-text searches and updates. | Yes |
Caché | InterSystems Corporation | Proprietary | Java, C#, Node.js | Commonly used in Health, Business and Government applications. | Yes |
Cloudant | Cloudant, Inc. | Proprietary | Erlang, Java, Scala, and C | Distributed database service based on BigCouch, the company's open source fork of the Apache-backed CouchDB project. Uses JSON model. | Yes |
Clusterpoint Database | Clusterpoint Ltd. | Proprietary with free download | JavaScript, SQL, PHP, C#, Java, Python, Node.js, C, C++, | Distributed document-oriented एक्सएमएल / JSON database platform with ACID-compliant transactions; high-availability data replication and sharding; built-in full-text search engine with relevance ranking; JS/SQL query language; GIS; Available as pay-per-use database as a service or as an on-premise free software download. | Yes |
Couchbase Server | Couchbase, Inc. | Apache License | C, C#, Java, Python, Node.js, PHP, SQL, Go, Spring Framework, LINQ | Distributed नोएसक्यूएल Document Database, JSON model and SQL based Query Language. | Yes[10] |
CouchDB | Apache Software Foundation | Apache License | Any language that can make HTTP requests | JSON over REST/HTTP with Multi-Version Concurrency Control and limited ACID properties. Uses map and reduce for views and queries.[11] | Yes[12] |
CrateIO | CRATE Technology GmbH | Apache License | Java | Use familiar SQL syntax for real time distributed queries across a cluster. Based on Lucene / Elasticsearch ecosystem with built-in support for binary objects (BLOBs). | Yes[13] |
Cosmos DB | Microsoft | Proprietary | C#, Java, Python, Node.js, JavaScript, SQL | Platform-as-a-Service offering, part of the Microsoft Azure platform. Builds upon and extends the earlier Azure DocumentDB. | Yes |
DocumentDB | Amazon Web Services | Proprietary online service | various, REST | fully managed MongoDB v3.6-compatible database service | Yes |
DynamoDB | Amazon Web Services | Proprietary | Java, JavaScript, Node.js, Go, C# .NET, Perl, PHP, Python, Ruby, Rust, Haskell, Erlang, Django, and Grails | fully managed proprietary नोएसक्यूएल database service that supports key–value and document data structures | Yes |
Elasticsearch | Shay Banon | Dual-licensed under Server Side Public License and Elastic license. | Java | JSON, Search engine. | Yes |
eXist | eXist | LGPL | XQuery, Java | एक्सएमएल over REST/HTTP, WebDAV, Lucene Fulltext search, binary data support, validation, versioning, clustering, triggers, URL rewriting, collections, ACLS, XQuery Update | Yes[14] |
Informix | IBM | Proprietary, with no-cost editions[15] | Various (Compatible with MongoDB API) | RDBMS with JSON, replication, sharding and ACID compliance. | Yes |
Jackrabbit | Apache Foundation | Apache License | Java | Java Content Repository implementation | ? |
HCL Notes (HCL Domino) | HCL | Proprietary | LotusScript, Java, Notes Formula Language | MultiValue | Yes |
MarkLogic | MarkLogic Corporation | Free Developer license or Commercial[16] | Java, JavaScript, Node.js, XQuery, SPARQL, XSLT, C++ | Distributed document-oriented database for JSON, एक्सएमएल, and RDF triples. Built-in full-text search, ACID transactions, high availability and disaster recovery, certified security. | Yes |
MongoDB | MongoDB, Inc | Server Side Public License for the DBMS, Apache 2 License for the client drivers[17] | C, C++, C#, Java, Perl, PHP, Python, Go, Node.js, Ruby, Rust,[18] Scala[19] | Document database with replication and sharding, BSON store (binary format JSON). | Yes[20][21] |
MUMPS Database | ? | Proprietary and Affero GPL[22] | MUMPS | Commonly used in health applications. | ? |
ObjectDatabase++ | Ekky Software | Proprietary | C++, C#, TScript | Binary Native C++ class structures | ? |
OpenLink Virtuoso | OpenLink Software | GPLv2[1] and proprietary | C++, C#, Java, SPARQL | Middleware and database engine hybrid | Yes |
OrientDB | Orient Technologies | Apache License | Java | JSON over HTTP, SQL support, ACID transactions | Yes |
Oracle नोएसक्यूएल Database | Oracle Corp | Apache and proprietary | C, C#, Java, Python, node.js, Go | Shared nothing, horizontally scalable database with support for schema-less JSON, fixed schema tables, and key/value pairs. Also supports ACID transactions. | Yes |
Qizx | Qualcomm | Proprietary | REST, Java, XQuery, XSLT, C, C++, Python | Distributed document-oriented एक्सएमएल database with integrated full-text search; support for JSON, text, and binaries. | Yes |
RedisJSON | Redis | Redis Source Available License (RSAL) | Python | JSON with integrated full-text search.[23] | Yes |
RethinkDB | ? | Apache License[24] | C++, Python, JavaScript, Ruby, Java | Distributed document-oriented JSON database with replication and sharding. | No |
SAP HANA | SAP | Proprietary | SQL-like language | ACID transaction supported, JSON only | Yes |
Sedna | sedna.org | Apache License | C++, XQuery | एक्सएमएल database | No |
SimpleDB | Amazon Web Services | Proprietary online service | Erlang | ? | |
Apache Solr | Apache Software Foundation | Apache License[25] | Java | JSON, CSV, एक्सएमएल, and a few other formats.[26] Search engine. | Yes[27] |
TerminusDB | TerminusDB | Apache License | Python, Node.js, JavaScript | The database system supports document store as well as graph data models with one database core and a unified, datalog based query language WOQL (Web Object Query Language).[28] | Yes |
TokuMX | Tokutek | GNU Affero General Public License | C++, C#, Go | MongoDB with Fractal Tree indexing | ? |
्सएमएल डेटाबेस कार्यान्वयन
अधिकांश एक्सएमएल डेटाबेस दस्तावेज़-उन्मुख डेटाबेस हैं।
यह भी देखें
- डेटाबेस सिद्धांत
- डेटा पदानुक्रम
- डेटा विश्लेषण
- पूरा पाठ खोजें
- इन-मेमोरी डेटाबेस
- इंटरनेट संदेश ्सेस प्रोटोकॉल (IMAP)
- मशीन-पठनीय दस्तावेज़
- बहु-मॉडल डेटाबेस
- नोएसक्यूएल
- ऑब्जेक्ट डेटाबेस
- ऑनलाइन डेटाबेस
- रीयल-टाइम डेटाबेस
- संबंध का डेटाबेस
- सामग्री प्रबंधन प्रणाली
टिप्पणियाँ
संदर्भ
- ↑ Drake, Mark (9 August 2019). "NoSQL डेटाबेस मैनेजमेंट सिस्टम और मॉडल की तुलना". DigitalOcean. Archived from the original on 13 August 2019. Retrieved 23 August 2019.
Document-oriented databases, or document stores, are NoSQL databases that store data in the form of documents. Document stores are a type of key-value store: each document has a unique identifier — its key — and the document itself serves as the value.
- ↑ "DB-Engines Ranking per database model category".
- ↑ "डेटाबेस सामान्यीकरण मूल बातें का विवरण". Microsoft.
- ↑ Wambler, Scott. "वस्तु-संबंधपरक प्रतिबाधा बेमेल". Agile Data.
- ↑ "Documentation | Aerospike - Key-Value Store". docs.aerospike.com. Retrieved 3 May 2021.
- ↑ "Documentation | Aerospike". docs.aerospike.com. Retrieved 3 May 2021.
- ↑ "HTTP Protocol for AllegroGraph".
- ↑ "Multi-model highly available NoSQL database". ArangoDB.
- ↑ "HTTP API". ArcadeDB.
- ↑ Documentation Archived 2012-08-20 at the Wayback Machine. Couchbase. Retrieved on 2013-09-18.
- ↑ "Apache CouchDB". Apache Couchdb. Archived from the original on October 20, 2011.
- ↑ "HTTP_Document_API - Couchdb Wiki". Archived from the original on 2013-03-01. Retrieved 2011-10-14.
- ↑ "Crate SQL HTTP Endpoint (Archived copy)". Archived from the original on 2015-06-22. Retrieved 2015-06-22.
- ↑ eXist-db Open Source Native XML Database. Exist-db.org. Retrieved on 2013-09-18.
- ↑ "Compare the Informix Version 12 editions". 22 July 2016.
- ↑ "MarkLogic Licensing". Archived from the original on 2012-01-12. Retrieved 2011-12-28.
- ↑ "MongoDB Licensing".
- ↑ "The New MongoDB Rust Driver". MongoDB (in English). Retrieved 2018-02-01.
- ↑ "Community Supported Drivers Reference".
- ↑ "HTTP Interface — MongoDB Ecosystem". MongoDB Docs.
- ↑ "GitHub - mongodb/docs-ecosystem: MongoDB Ecosystem Documentation". June 27, 2019 – via GitHub.
- ↑ "GT.M High end TP database engine".
- ↑ "RedisJSON - a JSON data type for Redis".
- ↑ "Transferring copyright to The Linux Foundation, relicensing RethinkDB under ASLv2". github.com. Retrieved 27 January 2020.
- ↑ "solr/LICENSE.txt at main · apache/solr · GitHub". github.com. Retrieved 24 December 2022.
- ↑ "Response Writers :: Apache Solr Reference Guide". solr.apache.org. Retrieved 24 December 2022.
- ↑ "Managed Resources :: Apache Solr Reference Guide". solr.apache.org. Retrieved 24 December 2022.
- ↑ "TerminusX - Why TerminusX". terminusdb.com. Retrieved 2021-12-16.
अग्रिम पठन
- Assaf Arkin. (2007, September 20). Read Consistency: Dumb Databases, Smart Services.
बाहरी संबंध
- DB-Engines Ranking of Document Stores by popularity, updated monthly