दस्तावेज़-उन्मुख डेटाबेस

एक दस्तावेज़-उन्मुख डेटाबेस, या दस्तावेज़ स्टोर, एक कंप्यूटर प्रोग्राम और डेटा स्टोरेज सिस्टम है जिसे दस्तावेज़-उन्मुख जानकारी को संग्रहीत करने, पुनर्प्राप्त करने और प्रबंधित करने के लिए डिज़ाइन किया गया है, जिसे अर्ध-संरचित मॉडल | अर्ध-संरचित डेटा के रूप में भी जाना जाता है। दस्तावेज़-उन्मुख डेटाबेस NoSQL डेटाबेस की मुख्य श्रेणियों में से एक हैं, और दस्तावेज़-उन्मुख डेटाबेस शब्द की लोकप्रियता बढ़ी है NoSQL शब्द के उपयोग के साथ ही। XML डेटाबेस दस्तावेज़-उन्मुख डेटाबेस का एक उपवर्ग है जो XML दस्तावेज़ों के साथ काम करने के लिए अनुकूलित है। ग्राफ डेटाबेस समान हैं, लेकिन एक और परत जोड़ते हैं, संबंध, जो उन्हें तेजी से ट्रैवर्सल के लिए दस्तावेज़ों को लिंक करने की अनुमति देता है।

दस्तावेज़-उन्मुख डेटाबेस स्वाभाविक रूप से की-वैल्यू डेटाबेस | की-वैल्यू स्टोर, एक अन्य NoSQL डेटाबेस अवधारणा का एक उपवर्ग है। के अंतर डेटा संसाधित करने के तरीके में निहित है; की-वैल्यू स्टोर में, डेटा को डेटाबेस के लिए स्वाभाविक रूप से अपारदर्शी माना जाता है, जबकि एक दस्तावेज़-उन्मुख प्रणाली मेटा डेटा निकालने के लिए दस्तावेज़ में आंतरिक संरचना पर निर्भर करती है जिसे डेटाबेस इंजन आगे अनुकूलन के लिए उपयोग करता है। हालांकि सिस्टम में उपकरणों के कारण अंतर अक्सर नगण्य होता है, वैचारिक रूप से दस्तावेज़-स्टोर को आधुनिक प्रोग्रामिंग तकनीकों के साथ समृद्ध अनुभव प्रदान करने के लिए डिज़ाइन किया गया है।

दस्तावेज़ डेटाबेस पारंपरिक संबंध का डेटाबेस  (RDB) के साथ दृढ़ता से विपरीत। संबंधपरक डेटाबेस आमतौर पर प्रोग्रामर द्वारा परिभाषित अलग-अलग तालिकाओं में डेटा संग्रहीत करते हैं, और एक वस्तु कई तालिकाओं में फैली हो सकती है। दस्तावेज़ डेटाबेस किसी दिए गए ऑब्जेक्ट के लिए सभी सूचनाओं को डेटाबेस में एक उदाहरण में संग्रहीत करता है, और प्रत्येक संग्रहीत वस्तु एक दूसरे से भिन्न हो सकती है। यह डेटाबेस में डेटा लोड करते समय ऑब्जेक्ट-रिलेशनल मैपिंग की आवश्यकता को समाप्त करता है।

दस्तावेज़
दस्तावेज़-उन्मुख डेटाबेस की केंद्रीय अवधारणा दस्तावेज़ की धारणा है। जबकि प्रत्येक दस्तावेज़-उन्मुख डेटाबेस कार्यान्वयन इस परिभाषा के विवरण पर भिन्न होता है, सामान्य तौर पर, वे सभी दस्तावेजों को कुछ मानक प्रारूप या एन्कोडिंग में डेटा (या सूचना) को एनकैप्सुलेट और एन्कोड करते हैं। उपयोग में आने वाले एन्कोडिंग में XML, YAML, JSON, साथ ही BSON जैसे बाइनरी फॉर्म शामिल हैं।

एक दस्तावेज़ स्टोर में दस्तावेज़ मोटे तौर पर किसी वस्तु की प्रोग्रामिंग अवधारणा के बराबर होते हैं। उन्हें एक मानक स्कीमा का पालन करने की आवश्यकता नहीं है, न ही उनके पास सभी समान खंड, स्लॉट, भाग या कुंजियाँ होंगी। आम तौर पर, वस्तुओं का उपयोग करने वाले प्रोग्राम में कई अलग-अलग प्रकार की वस्तुएं होती हैं, और उन वस्तुओं में अक्सर कई वैकल्पिक क्षेत्र होते हैं। प्रत्येक वस्तु, यहां तक ​​कि एक ही वर्ग की भी, बहुत अलग दिख सकती है। दस्तावेज़ भंडार समान हैं कि वे एक ही स्टोर में विभिन्न प्रकार के दस्तावेज़ों को अनुमति देते हैं, उनके भीतर फ़ील्ड वैकल्पिक होने की अनुमति देते हैं, और अक्सर उन्हें विभिन्न एन्कोडिंग सिस्टम का उपयोग करके एन्कोड करने की अनुमति देते हैं। उदाहरण के लिए, निम्नलिखित JSON में एन्कोडेड एक दस्तावेज़ है:

एक्सएमएल में एक दूसरा दस्तावेज़ एन्कोड किया जा सकता है: ये दो दस्तावेज़ कुछ संरचनात्मक तत्वों को एक दूसरे के साथ साझा करते हैं, लेकिन प्रत्येक में अद्वितीय तत्व भी होते हैं। दस्तावेज़ के अंदर संरचना और पाठ और अन्य डेटा को आमतौर पर दस्तावेज़ की सामग्री के रूप में संदर्भित किया जाता है और पुनर्प्राप्ति या संपादन विधियों के माध्यम से संदर्भित किया जा सकता है, (नीचे देखें)। एक रिलेशनल डेटाबेस के विपरीत जहां प्रत्येक रिकॉर्ड में समान फ़ील्ड होते हैं, अप्रयुक्त फ़ील्ड को खाली छोड़ देते हैं; उपरोक्त उदाहरण में किसी भी दस्तावेज़ (रिकॉर्ड) में कोई खाली 'फ़ील्ड' नहीं है। यह दृष्टिकोण बिना किसी आवश्यकता के कुछ रिकॉर्ड में नई जानकारी को जोड़ने की अनुमति देता है कि डेटाबेस में हर दूसरा रिकॉर्ड समान संरचना साझा करता है।

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

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


 * निर्माण (या सम्मिलन)
 * पुनर्प्राप्ति (या क्वेरी, खोज, पढ़ना या खोजना)
 * अपडेट करें (या संपादित करें)
 * हटाना (या हटाना)

कुंजी
दस्तावेज़ों को डेटाबेस में एक अद्वितीय कुंजी के माध्यम से संबोधित किया जाता है जो उस दस्तावेज़ का प्रतिनिधित्व करता है। यह कुंजी एक साधारण पहचानकर्ता (या आईडी), आमतौर पर एक स्ट्रिंग (कंप्यूटर विज्ञान), एक यूआरआई या एक पथ (कंप्यूटिंग) है। डेटाबेस से दस्तावेज़ को पुनः प्राप्त करने के लिए कुंजी का उपयोग किया जा सकता है। आमतौर पर डेटाबेस दस्तावेज़ पुनर्प्राप्ति को गति देने के लिए कुंजी पर एक डाटाबेस इंडेक्स  रखता है, और कुछ मामलों में डेटाबेस में दस्तावेज़ बनाने या सम्मिलित करने के लिए कुंजी की आवश्यकता होती है।

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

यह यहाँ है कि दस्तावेज़ स्टोर की-वैल्यू स्टोर से सबसे अधिक भिन्न होता है। सिद्धांत रूप में, की-वैल्यू स्टोर में मान स्टोर के लिए अपारदर्शी होते हैं, वे अनिवार्य रूप से ब्लैक बॉक्स होते हैं। वे एक दस्तावेज़ स्टोर के समान खोज प्रणाली की पेशकश कर सकते हैं, लेकिन सामग्री के संगठन के बारे में कम समझ हो सकती है। दस्तावेज़ स्टोर सामग्री को वर्गीकृत करने के लिए दस्तावेज़ में मेटाडेटा का उपयोग करते हैं, उदाहरण के लिए, उन्हें यह समझने की अनुमति देता है कि अंकों की एक श्रृंखला एक फ़ोन नंबर है, और दूसरा एक डाक कोड है। यह उन्हें उन प्रकार के डेटा पर खोज करने की अनुमति देता है, उदाहरण के लिए, 555 वाले सभी फ़ोन नंबर, जो ज़िप कोड 55555 को अनदेखा कर देंगे।

संपादन
दस्तावेज़ डेटाबेस आमतौर पर दस्तावेज़ की सामग्री (या मेटाडेटा) को अद्यतन या संपादित करने के लिए कुछ तंत्र प्रदान करते हैं, या तो पूरे दस्तावेज़ के प्रतिस्थापन की अनुमति देकर, या दस्तावेज़ के अलग-अलग संरचनात्मक टुकड़े।

संगठन
दस्तावेज़ डेटाबेस कार्यान्वयन दस्तावेज़ों को व्यवस्थित करने के विभिन्न तरीकों की पेशकश करता है, जिसमें की धारणाएँ भी शामिल हैं


 * संग्रह: दस्तावेजों के समूह, जहां कार्यान्वयन के आधार पर, एक संग्रह के अंदर रहने के लिए एक दस्तावेज़ को लागू किया जा सकता है, या कई संग्रहों में रहने की अनुमति दी जा सकती है
 * टैग और अदृश्य मेटाडेटा: दस्तावेज़ सामग्री के बाहर अतिरिक्त डेटा
 * निर्देशिका पदानुक्रम: पेड़ जैसी संरचना में व्यवस्थित दस्तावेजों के समूह, आमतौर पर पथ या यूआरआई पर आधारित होते हैं

कभी-कभी ये संगठनात्मक विचार इस बात में भिन्न होते हैं कि वे कितने तार्किक बनाम भौतिक हैं, (जैसे डिस्क पर या मेमोरी में), अभ्यावेदन।

की-वैल्यू स्टोर्स से संबंध
एक दस्तावेज़-उन्मुख डेटाबेस एक विशेष की-वैल्यू डेटाबेस|की-वैल्यू स्टोर है, जो स्वयं एक अन्य NoSQL डेटाबेस श्रेणी है। एक साधारण की-वैल्यू स्टोर में, दस्तावेज़ की सामग्री अपारदर्शी होती है। एक दस्तावेज़-उन्मुख डेटाबेस एपीआई या क्वेरी/अपडेट भाषा प्रदान करता है जो दस्तावेज़ में आंतरिक संरचना के आधार पर क्वेरी या अपडेट करने की क्षमता को उजागर करता है। यह अंतर उन उपयोगकर्ताओं के लिए मामूली हो सकता है जिन्हें समृद्ध क्वेरी, पुनर्प्राप्ति या संपादन API की आवश्यकता नहीं होती है जो आमतौर पर दस्तावेज़ डेटाबेस द्वारा प्रदान किए जाते हैं। आधुनिक की-वैल्यू स्टोर में अक्सर मेटाडेटा के साथ काम करने, दस्तावेज़ स्टोर के बीच की रेखाओं को धुंधला करने की सुविधाएँ शामिल होती हैं।

खोज इंजन से संबंध
Apache Solr और Elasticsearch जैसे कुछ खोज इंजन (उर्फ सूचना पुनर्प्राप्ति) सिस्टम दस्तावेज़-उन्मुख डेटाबेस की परिभाषा में फिट होने के लिए दस्तावेज़ों पर पर्याप्त मुख्य संचालन प्रदान करते हैं।

रिलेशनल डेटाबेस से संबंध
एक संबंधपरक डेटाबेस में, डेटा को पहले कई पूर्वनिर्धारित प्रकारों में वर्गीकृत किया जाता है, और प्रत्येक प्रकार की अलग-अलग प्रविष्टियाँ, या रिकॉर्ड रखने के लिए तालिकाएँ बनाई जाती हैं। तालिकाएँ प्रत्येक रिकॉर्ड के क्षेत्र में डेटा को परिभाषित करती हैं, जिसका अर्थ है कि तालिका में प्रत्येक रिकॉर्ड का समग्र रूप समान है। व्यवस्थापक तालिकाओं के बीच संबंधों को भी परिभाषित करता है, और कुछ निश्चित क्षेत्रों का चयन करता है जो उनके अनुसार खोज के लिए सबसे अधिक उपयोग किए जाएंगे और उन पर अनुक्रमणिका को परिभाषित करता है। संबंधात्मक डिजाइन में एक महत्वपूर्ण अवधारणा यह है कि कोई भी डेटा जिसे दोहराया जा सकता है, सामान्य रूप से अपनी तालिका में रखा जाता है, और यदि ये उदाहरण एक-दूसरे से संबंधित हैं, तो उन्हें एक साथ समूहित करने के लिए एक कॉलम चुना जाता है, विदेशी कुंजी। इस डिज़ाइन को डेटाबेस सामान्यीकरण के रूप में जाना जाता है। उदाहरण के लिए, एक पता पुस्तिका एप्लिकेशन को आम तौर पर संपर्क नाम, एक वैकल्पिक छवि, एक या अधिक फ़ोन नंबर, एक या अधिक डाक पते, और एक या अधिक ईमेल पते संग्रहीत करने की आवश्यकता होगी। एक विहित संबंधपरक डेटाबेस में, डेटा के प्रत्येक बिट के लिए पूर्वनिर्धारित क्षेत्रों के साथ इन पंक्तियों में से प्रत्येक के लिए तालिकाएँ बनाई जाएंगी: CONTACT तालिका में FIRST_NAME, LAST_NAME और IMAGE कॉलम शामिल हो सकते हैं, जबकि PHONE_NUMBER तालिका में COUNTRY_CODE, AREA_CODE, PHONE_NUMBER और TYPE शामिल हो सकते हैं ( घर, काम, आदि)। PHONE_NUMBER तालिका में एक विदेशी कुंजी स्तंभ, CONTACT_ID भी शामिल है, जिसमें संपर्क बनाए जाने के समय निर्दिष्ट विशिष्ट आईडी संख्या होती है। मूल संपर्क को फिर से बनाने के लिए, डेटाबेस इंजन तालिकाओं के समूह में संबंधित वस्तुओं को देखने के लिए विदेशी कुंजियों का उपयोग करता है और मूल डेटा का पुनर्निर्माण करता है।

इसके विपरीत, एक दस्तावेज़-उन्मुख डेटाबेस में कोई आंतरिक संरचना नहीं हो सकती है जो सीधे किसी तालिका की अवधारणा पर मैप करती है, और फ़ील्ड और रिश्ते आमतौर पर पूर्वनिर्धारित अवधारणाओं के रूप में मौजूद नहीं होते हैं। इसके बजाय, किसी ऑब्जेक्ट के सभी डेटा को एक दस्तावेज़ में रखा जाता है, और डेटाबेस में एक प्रविष्टि के रूप में संग्रहीत किया जाता है। पता पुस्तिका के उदाहरण में, दस्तावेज़ में संपर्क का नाम, छवि, और कोई भी संपर्क जानकारी, सभी एक ही रिकॉर्ड में शामिल होंगे। उस प्रविष्टि को उसकी कुंजी के माध्यम से एक्सेस किया जाता है, जो डेटाबेस को एप्लिकेशन को दस्तावेज़ को पुनः प्राप्त करने और वापस करने की अनुमति देता है। संबंधित डेटा को पुनः प्राप्त करने के लिए किसी अतिरिक्त कार्य की आवश्यकता नहीं है; यह सब एक वस्तु में लौटाया जाता है।

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

क्लासिक सामान्यीकृत रिलेशनल मॉडल में, डेटाबेस में वस्तुओं को डेटा की अलग-अलग पंक्तियों के रूप में दर्शाया जाता है, जो कि उन्हें प्राप्त होने के बाद दी गई संरचना से परे नहीं होती है। यह प्रोग्रामिंग ऑब्जेक्ट्स को उनके संबंधित डेटाबेस पंक्तियों में और से अनुवाद करने का प्रयास करते समय समस्याएँ पैदा करता है, एक समस्या जिसे वस्तु-संबंधपरक प्रतिबाधा बेमेल  के रूप में जाना जाता है। दस्तावेज़ अधिक बारीकी से स्टोर करता है, या कुछ मामलों में सीधे स्टोर में प्रोग्रामिंग ऑब्जेक्ट्स को मैप करता है। इनका विपणन अक्सर NoSQL शब्द का उपयोग करके किया जाता है।

एक्सएमएल डेटाबेस कार्यान्वयन
अधिकांश XML डेटाबेस दस्तावेज़-उन्मुख डेटाबेस हैं।

यह भी देखें

 * डेटाबेस सिद्धांत
 * डेटा पदानुक्रम
 * डेटा विश्लेषण
 * पूरा पाठ खोजें
 * इन-मेमोरी डेटाबेस
 * इंटरनेट संदेश एक्सेस प्रोटोकॉल (IMAP)
 * मशीन-पठनीय दस्तावेज़
 * बहु-मॉडल डेटाबेस
 * नोएसक्यूएल
 * ऑब्जेक्ट डेटाबेस
 * ऑनलाइन डेटाबेस
 * रीयल-टाइम डेटाबेस
 * संबंध का डेटाबेस
 * सामग्री प्रबंधन प्रणाली

अग्रिम पठन

 * Assaf Arkin. (2007, September 20). Read Consistency: Dumb Databases, Smart Services.

बाहरी संबंध

 * DB-Engines Ranking of Document Stores by popularity, updated monthly