अपाचे काउचडीबी

Apache CouchDB एक खुला स्रोत सॉफ्टवेयर|ओपन-सोर्स दस्तावेज़-उन्मुख डेटाबेस|दस्तावेज़-उन्मुख NoSQL डेटाबेस है, जिसे एर्लांग (प्रोग्रामिंग भाषा) में कार्यान्वित किया गया है।

CouchDB अपने डेटा को संग्रहीत, स्थानांतरित और संसाधित करने के लिए कई प्रारूपों और प्रोटोकॉल का उपयोग करता है। यह डेटा संग्रहीत करने के लिए JSON का उपयोग करता है, MapReduce का उपयोग करके अपनी क्वेरी भाषा के रूप में JavaScript और API के लिए HTTP का उपयोग करता है। CouchDB पहली बार 2005 में जारी किया गया था और बाद में 2008 में अपाचे सॉफ्टवेयर फाउंडेशन प्रोजेक्ट बन गया।

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

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

इतिहास
काउच अविश्वसनीय कमोडिटी हार्डवेयर के क्लस्टर का संक्षिप्त रूप है। CouchDB प्रोजेक्ट अप्रैल 2005 में IBM के पूर्व लोटस नोट्स डेवलपर डेमियन काट्ज़ द्वारा बनाया गया था। उन्होंने इस परियोजना को लगभग दो वर्षों तक स्व-वित्त पोषित किया और इसे जीएनयू जनरल पब्लिक लाइसेंस के तहत एक ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया।

फरवरी 2008 में, यह अपाचे इनक्यूबेटर प्रोजेक्ट बन गया और इसके बजाय अपाचे लाइसेंस के तहत पेश किया गया। कुछ महीनों के बाद, यह एक शीर्ष-स्तरीय परियोजना में शामिल हो गया। इसके परिणामस्वरूप जुलाई 2010 में पहला स्थिर संस्करण जारी किया गया। 2012 की शुरुआत में, काट्ज़ ने काउचबेस सर्वर पर ध्यान केंद्रित करने के लिए परियोजना छोड़ दी। काट्ज़ के जाने के बाद से, अपाचे काउचडीबी परियोजना जारी रही, अप्रैल 2012 में 1.2 और अप्रैल 2013 में 1.3 जारी किया गया। जुलाई 2013 में, काउचडीबी समुदाय ने बिगकाउच, धुंधलापन  के काउचडीबी के क्लस्टर संस्करण के लिए कोडबेस को अपाचे परियोजना में विलय कर दिया। बिगकाउच क्लस्टरिंग फ्रेमवर्क अपाचे काउचडीबी की वर्तमान रिलीज में शामिल है। नेटिव क्लस्टरिंग संस्करण 2.0.0 पर समर्थित है। और नया मैंगो क्वेरी सर्वर जावास्क्रिप्ट या मैपरेडस के बिना CouchDB क्वेरी करने का एक सरल JSON-आधारित तरीका प्रदान करता है।

मुख्य विशेषताएं

 * एसिड शब्दार्थ
 * CouchDB परमाणुता, स्थिरता, अलगाव, स्थायित्व शब्दार्थ प्रदान करता है। यह बहु-संस्करण समवर्ती नियंत्रण के एक फॉर्म को लागू करके ऐसा करता है, जिसका अर्थ है कि CouchDB बिना किसी विरोध के समवर्ती पाठकों और लेखकों की उच्च मात्रा को संभाल सकता है।


 * ऑफ़लाइन के लिए निर्मित
 * CouchDB उन उपकरणों (जैसे स्मार्टफोन) की नकल कर सकता है जो ऑफ़लाइन हो सकते हैं और डिवाइस के वापस ऑनलाइन होने पर आपके लिए डेटा सिंक को संभाल सकते हैं।


 * प्रतिकृति के साथ वितरित वास्तुकला
 * CouchDB को द्वि-दिशात्मक प्रतिकृति (या सिंक्रनाइज़ेशन) और ऑफ़लाइन ऑपरेशन को ध्यान में रखकर डिज़ाइन किया गया था। इसका मतलब है कि एकाधिक प्रतिकृतियां एक ही डेटा की अपनी प्रतियां रख सकती हैं, इसे संशोधित कर सकती हैं, और फिर बाद में उन परिवर्तनों को सिंक कर सकती हैं।


 * दस्तावेज़ भंडारण
 * CouchDB डेटा को दस्तावेज़ों के रूप में संग्रहीत करता है, JSON के रूप में व्यक्त एक या अधिक फ़ील्ड/मूल्य जोड़े के रूप में। फ़ील्ड मान स्ट्रिंग, संख्या या दिनांक जैसी सरल चीजें हो सकते हैं; लेकिन ऐरे डेटा संरचना और सहयोगी ऐरे का भी उपयोग किया जा सकता है। CouchDB डेटाबेस में प्रत्येक दस्तावेज़ की एक अद्वितीय आईडी होती है और कोई आवश्यक दस्तावेज़ स्कीमा नहीं होता है।


 * अंततः संगति
 * CouchDB उपलब्धता और विभाजन सहनशीलता दोनों प्रदान करने में सक्षम होने के लिए अंतिम स्थिरता की गारंटी देता है।


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


 * HTTP एपीआई
 * सभी आइटम में एक अद्वितीय यूआरआई होता है जो HTTP के माध्यम से उजागर होता है। यह सभी संसाधनों पर चार बुनियादी क्रिएट, रीड, अपडेट और डिलीट (क्रिएट, रीड, अपडेट, डिलीट) संचालन के लिए हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल#रिक्वेस्ट विधियों POST, GET, PUT और DELETE का उपयोग करता है।

CouchDB फ़ॉक्सटन नामक वेब के माध्यम से सुलभ एक अंतर्निहित प्रशासन इंटरफ़ेस भी प्रदान करता है।

मामलों और उत्पादन परिनियोजन का उपयोग करें
CouchDB की प्रतिकृति और सिंक्रनाइज़ेशन क्षमताएं इसे मोबाइल उपकरणों में उपयोग करने के लिए आदर्श बनाती हैं, जहां नेटवर्क कनेक्शन की गारंटी नहीं है, और एप्लिकेशन को ऑफ़लाइन काम करते रहना चाहिए।

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

उपयोगकर्ता
CouchDB के उपयोगकर्ताओं में शामिल हैं:
 * CERN लार्ज हैड्रान कोलाइडर  में डेटा प्रबंधन प्रणाली के लिए डेटाबेस के रूप में CouchDB का उपयोग करता है।
 * रेड क्रॉस आपदा क्षेत्रों में इलेक्ट्रॉनिक रूप से केसवर्क पूरा करने के लिए iDAT एप्लिकेशन का उपयोग करता है। यहां CouchDB का उपयोग मल्टी-नोड पीयर-टू-पीयर ऑफ़लाइन-प्रथम डेटाबेस के रूप में किया जाता है।
 * आईबीएम क्लाउड सेवाएं बुनियादी स्तर पर CouchDB पर आधारित हैं।
 * यूनाइटेड एयरलाइन्स 3,000 से अधिक विमानों में उड़ान के दौरान मनोरंजन प्रणालियों के लिए CouchDB का उपयोग करती है।
 * एमॅड्यूस आईटी समूह, उनके कुछ बैक-एंड सिस्टम के लिए।
 * स्विस क्रेडिट, कमोडिटी विभाग में उनके बाज़ार ढांचे के लिए आंतरिक उपयोग के लिए।
 * मीबो, उनके सोशल प्लेटफॉर्म (वेब ​​और एप्लिकेशन) के लिए। Google द्वारा Meebo का अधिग्रहण कर लिया गया और अधिकांश उत्पाद 12 जुलाई 2012 को बंद कर दिए गए।
 * npm (सॉफ्टवेयर) अपने पैकेज रजिस्ट्री के लिए प्रतिकृति डेटाबेस के रूप में CouchDB का उपयोग करता है।
 * सोफोस, उनके कुछ बैक-एंड सिस्टम के लिए।
 * बीबीसी, एक गतिशील सीएमएस-प्लेटफ़ॉर्म के लिए।
 * कैनोनिकल (कंपनी) ने 2009 में अपनी सिंक्रोनाइज़ेशन सेवा उबंटू वन के लिए इसका उपयोग शुरू किया, लेकिन नवंबर 2011 में इसका उपयोग बंद कर दिया।
 * नहर+|कैनाल+, कैनाल+ ओवरसीज में अंतरराष्ट्रीय ऑन-डिमांड प्लेटफॉर्म के लिए।
 * प्रोटोग्रिड, उनके तीव्र अनुप्रयोग विकास ढांचे के लिए स्टोरेज बैक-एंड के रूप में

डेटा हेरफेर: दस्तावेज़ और विचार
CouchDB JSON दस्तावेज़ों के संग्रह का प्रबंधन करता है। दस्तावेज़ों को दृश्यों के माध्यम से व्यवस्थित किया जाता है। दृश्यों को समग्र कार्यों के साथ परिभाषित किया जाता है और फ़िल्टर की गणना समानांतर में की जाती है, बिल्कुल MapReduce की तरह।

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

HTTP के माध्यम से डेटा तक पहुंच
एप्लिकेशन HTTP के माध्यम से CouchDB के साथ इंटरैक्ट करते हैं। निम्नलिखित कमांड-लाइन उपयोगिता cURL का उपयोग करके कुछ उदाहरण प्रदर्शित करता है। ये उदाहरण मानते हैं कि CouchDB पोर्ट 5984 पर स्थानीय होस्ट  (127.0.0.1) पर चल रहा है।

मुक्त स्रोत घटक
CouchDB में इसके डिफ़ॉल्ट पैकेज के हिस्से के रूप में कई अन्य ओपन सोर्स प्रोजेक्ट शामिल हैं।

यह भी देखें

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

बाहरी संबंध

 * CouchDB: The Definitive Guide
 * Complete HTTP API Reference
 * Simple PHP5 library to communicate with CouchDB
 * Asynchronous CouchDB client for Java
 * Asynchronous CouchDB client for Scala
 * Asynchronous CouchDB client for Scala