अपाचे काउचडीबी
Original author(s) | Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benoît Chesneau, Filipe Manana, Robert Newson |
---|---|
Developer(s) | Apache Software Foundation |
Initial release | 2005 |
Stable release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
Written in | Erlang, JavaScript, C, C++ |
Operating system | Cross-platform |
Type | Document-oriented database |
License | Apache License 2.0 |
अपाचे काउचडीबी एक ओपन-सोर्स डॉक्यूमेंट-उन्मुख नोएसक्यूएल डेटाबेस है, जिसे एर्लैंग में कार्यान्वित किया गया है।
काउचडीबी अपने डेटा को स्टोर करने, ट्रांसफर करने और प्रोसेस करने के लिए कई फॉर्मेट और प्रोटोकॉल का उपयोग करता है। यह डेटा संग्रहीत करने के लिए जेसन का उपयोग करता है, मैपरेड्युस का उपयोग करके अपनी क्वेरी भाषा के रूप में जावास्क्रिप्ट का उपयोग करता है, और एपीआई के लिए एचटीटीपी का उपयोग करता है।[1]
काउचडीबी पहली बार 2005 में जारी किया गया था और बाद में 2008 में अपाचे सॉफ्टवेयर फाउंडेशन प्रोजेक्ट बन गया था।
रिलेशनल डेटाबेस के विपरीत, काउचडीबी डेटाबेस तालिकाओं में डेटा और संबंधों को संग्रहीत नहीं करता है। इसके स्थान पर, प्रत्येक डेटाबेस स्वतंत्र डाक्यूमेंट्स का एक संग्रह है। प्रत्येक डाक्यूमेंट अपना स्वयं का डेटा और स्व-निहित स्कीमा बनाए रखता है। एक एप्लिकेशन कई डेटाबेस तक पहुंच सकता है, जैसे एक उपयोगकर्ता के मोबाइल फोन पर संग्रहीत और दूसरा सर्वर पर। डाक्यूमेंट मेटाडेटा में संशोधन की जानकारी होती है, जिससे डेटाबेस के डिस्कनेक्ट होने के दौरान होने वाले किसी भी अंतर को मर्ज करना संभव हो जाता है।
काउचडीबी मल्टी वर्जन कॉन्करेंसी कंट्रोल (एमवीसीसी) का एक रूप प्रयुक्त करता है, इसलिए यह लिखने के दौरान डेटाबेस फ़ाइल को लॉक नहीं करता है। विवादों को हल करने के लिए एप्लिकेशन पर छोड़ दिया जाता है। किसी विवाद को सुलझाने में आम तौर पर पहले डेटा को किसी एक डाक्यूमेंट में मर्ज करना और फिर पुराने डाक्यूमेंट को हटाना शामिल होता है।[2]
अन्य सुविधाओं में अंतिम स्थिरता के साथ डाक्यूमेंट-स्तरीय एसीआईडी शब्दार्थ, (वार्धिक) मैपरेड्युस, और (वार्धिक) प्रतिकृति शामिल हैं। काउचडीबी की विशिष्ट विशेषताओं में से एक मल्टी-मास्टर प्रतिकृति है, जो इसे उच्च-प्रदर्शन प्रणाली बनाने के लिए मशीनों में स्केल करने की अनुमति देती है। फ़ॉक्सटन (पूर्व में फ़्यूटन) नामक एक अंतर्निर्मित वेब एप्लिकेशन प्रबंधन में सहायता करता है।
इतिहास
काउच अविश्वसनीय कमोडिटी हार्डवेयर के क्लस्टर का संक्षिप्त रूप है।[3] काउचडीबी प्रोजेक्ट अप्रैल 2005 में IBM के पूर्व लोटस नोट्स डेवलपर डेमियन काट्ज़ द्वारा बनाया गया था। उन्होंने इस परियोजना को लगभग दो वर्षों तक स्व-वित्त पोषित किया और इसे जीएनयू जनरल पब्लिक लाइसेंस के तहत एक ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया।
फरवरी 2008 में, यह अपाचे इनक्यूबेटर प्रोजेक्ट बन गया और इसके बजाय अपाचे लाइसेंस के तहत पेश किया गया।[4] कुछ महीनों के बाद, यह एक शीर्ष-स्तरीय परियोजना में शामिल हो गया।[5] इसके परिणामस्वरूप जुलाई 2010 में पहला स्थिर संस्करण जारी किया गया।[6] 2012 की शुरुआत में, काट्ज़ ने काउचबेस सर्वर पर ध्यान केंद्रित करने के लिए परियोजना छोड़ दी।[7] काट्ज़ के जाने के बाद से, अपाचे काउचडीबी परियोजना जारी रही, अप्रैल 2012 में 1.2 और अप्रैल 2013 में 1.3 जारी किया गया। जुलाई 2013 में, काउचडीबी समुदाय ने बिगकाउच, धुंधलापन के काउचडीबी के क्लस्टर संस्करण के लिए कोडबेस को अपाचे परियोजना में विलय कर दिया।[8] बिगकाउच क्लस्टरिंग फ्रेमवर्क अपाचे काउचडीबी की वर्तमान रिलीज में शामिल है।[9] नेटिव क्लस्टरिंग संस्करण 2.0.0 पर समर्थित है। और नया मैंगो क्वेरी सर्वर जावास्क्रिप्ट या मैपरेडस के बिना काउचडीबी क्वेरी करने का एक सरल JSON-आधारित तरीका प्रदान करता है।
मुख्य विशेषताएं
- एसिड शब्दार्थ
- काउचडीबी परमाणुता, स्थिरता, अलगाव, स्थायित्व शब्दार्थ प्रदान करता है।[10] यह बहु-संस्करण समवर्ती नियंत्रण के एक फॉर्म को लागू करके ऐसा करता है, जिसका अर्थ है कि काउचडीबी बिना किसी विरोध के समवर्ती पाठकों और लेखकों की उच्च मात्रा को संभाल सकता है।
- ऑफ़लाइन के लिए निर्मित
- काउचडीबी उन उपकरणों (जैसे स्मार्टफोन) की नकल कर सकता है जो ऑफ़लाइन हो सकते हैं और डिवाइस के वापस ऑनलाइन होने पर आपके लिए डेटा सिंक को संभाल सकते हैं।
- प्रतिकृति के साथ वितरित वास्तुकला
- काउचडीबी को द्वि-दिशात्मक प्रतिकृति (या सिंक्रनाइज़ेशन) और ऑफ़लाइन ऑपरेशन को ध्यान में रखकर डिज़ाइन किया गया था। इसका मतलब है कि एकाधिक प्रतिकृतियां एक ही डेटा की अपनी प्रतियां रख सकती हैं, इसे संशोधित कर सकती हैं, और फिर बाद में उन परिवर्तनों को सिंक कर सकती हैं।
- डॉक्यूमेंट भंडारण
- काउचडीबी डेटा को डॉक्यूमेंटों के रूप में संग्रहीत करता है, JSON के रूप में व्यक्त एक या अधिक फ़ील्ड/मूल्य जोड़े के रूप में। फ़ील्ड मान स्ट्रिंग, संख्या या दिनांक जैसी सरल चीजें हो सकते हैं; लेकिन ऐरे डेटा संरचना और सहयोगी ऐरे का भी उपयोग किया जा सकता है। काउचडीबी डेटाबेस में प्रत्येक डॉक्यूमेंट की एक अद्वितीय आईडी होती है और कोई आवश्यक डॉक्यूमेंट स्कीमा नहीं होता है।
- अंततः संगति
- काउचडीबी उपलब्धता और विभाजन सहनशीलता दोनों प्रदान करने में सक्षम होने के लिए अंतिम स्थिरता की गारंटी देता है।
- मानचित्र/दृश्य और अनुक्रमणिका कम करें
- संग्रहीत डेटा को दृश्यों का उपयोग करके संरचित किया जाता है। काउचडीबी में, प्रत्येक दृश्य का निर्माण एक जावास्क्रिप्ट फ़ंक्शन द्वारा किया जाता है जो मानचित्र के आधे भाग (उच्च-क्रम फ़ंक्शन)/रिड्यूस ऑपरेशन के रूप में कार्य करता है। फ़ंक्शन एक डॉक्यूमेंट लेता है और उसे वापस लौटाए जाने वाले एकल मान में बदल देता है। काउचडीबी दृश्यों को अनुक्रमित कर सकता है और उन अनुक्रमणिकाओं को डॉक्यूमेंटों के जोड़े जाने, हटाए जाने या अद्यतन किए जाने पर अद्यतन रख सकता है।
- HTTP एपीआई
- सभी आइटम में एक अद्वितीय यूआरआई होता है जो HTTP के माध्यम से उजागर होता है। यह सभी संसाधनों पर चार बुनियादी क्रिएट, रीड, अपडेट और डिलीट (क्रिएट, रीड, अपडेट, डिलीट) संचालन के लिए हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल#रिक्वेस्ट विधियों POST, GET, PUT और DELETE का उपयोग करता है।
काउचडीबी फ़ॉक्सटन नामक वेब के माध्यम से सुलभ एक अंतर्निहित प्रशासन इंटरफ़ेस भी प्रदान करता है।[11]
मामलों और उत्पादन परिनियोजन का उपयोग करें
काउचडीबी की प्रतिकृति और सिंक्रनाइज़ेशन क्षमताएं इसे मोबाइल उपकरणों में उपयोग करने के लिए आदर्श बनाती हैं, जहां नेटवर्क कनेक्शन की गारंटी नहीं है, और एप्लिकेशन को ऑफ़लाइन काम करते रहना चाहिए।
काउचडीबी उन अनुप्रयोगों के लिए उपयुक्त है जिनमें डेटा जमा होता है, कभी-कभी बदलता रहता है, जिस पर पूर्व-परिभाषित क्वेरी चलायी जानी हैं और जहां संस्करण बनाना महत्वपूर्ण है (उदाहरण के लिए सीआरएम, सीएमएस सिस्टम)। मास्टर-मास्टर प्रतिकृति एक विशेष रूप से दिलचस्प सुविधा है, जो आसान मल्टी-साइट तैनाती की अनुमति देती है।[12]
उपयोगकर्ता
काउचडीबी के उपयोगकर्ताओं में शामिल हैं:
- CERN लार्ज हैड्रान कोलाइडर में डेटा प्रबंधन प्रणाली के लिए डेटाबेस के रूप में काउचडीबी का उपयोग करता है।[13]
- रेड क्रॉस आपदा क्षेत्रों में इलेक्ट्रॉनिक रूप से केसवर्क पूरा करने के लिए iDAT एप्लिकेशन का उपयोग करता है। यहां काउचडीबी का उपयोग मल्टी-नोड पीयर-टू-पीयर ऑफ़लाइन-प्रथम डेटाबेस के रूप में किया जाता है।[14]
- आईबीएम क्लाउड सेवाएं बुनियादी स्तर पर काउचडीबी पर आधारित हैं।[15]
- यूनाइटेड एयरलाइन्स 3,000 से अधिक विमानों में उड़ान के दौरान मनोरंजन प्रणालियों के लिए काउचडीबी का उपयोग करती है।[16][17]
- एमॅड्यूस आईटी समूह, उनके कुछ बैक-एंड सिस्टम के लिए।[citation needed]
- स्विस क्रेडिट , कमोडिटी विभाग में उनके बाज़ार ढांचे के लिए आंतरिक उपयोग के लिए।[18][better source needed]
- मीबो, उनके सोशल प्लेटफॉर्म (वेब और एप्लिकेशन) के लिए।[citation needed] Google द्वारा Meebo का अधिग्रहण कर लिया गया और अधिकांश उत्पाद 12 जुलाई 2012 को बंद कर दिए गए।[19]
- npm (सॉफ्टवेयर) अपने पैकेज रजिस्ट्री के लिए प्रतिकृति डेटाबेस के रूप में काउचडीबी का उपयोग करता है।[20]
- सोफोस, उनके कुछ बैक-एंड सिस्टम के लिए।[citation needed]
- बीबीसी, एक गतिशील सीएमएस-प्लेटफ़ॉर्म के लिए।[21]
- कैनोनिकल (कंपनी) ने 2009 में अपनी सिंक्रोनाइज़ेशन सेवा उबंटू वन के लिए इसका उपयोग शुरू किया,[22] लेकिन नवंबर 2011 में इसका उपयोग बंद कर दिया।[23]
- नहर+|कैनाल+, कैनाल+ ओवरसीज में अंतरराष्ट्रीय ऑन-डिमांड प्लेटफॉर्म के लिए।
- प्रोटोग्रिड, उनके तीव्र अनुप्रयोग विकास ढांचे के लिए स्टोरेज बैक-एंड के रूप में [24]
डेटा हेरफेर: डॉक्यूमेंट और विचार
काउचडीबी JSON डॉक्यूमेंटों के संग्रह का प्रबंधन करता है। डॉक्यूमेंटों को दृश्यों के माध्यम से व्यवस्थित किया जाता है। दृश्यों को समग्र कार्यों के साथ परिभाषित किया जाता है और फ़िल्टर की गणना समानांतर में की जाती है, बिल्कुल MapReduce की तरह।
दृश्य आम तौर पर डेटाबेस में संग्रहीत होते हैं और उनकी अनुक्रमणिकाएँ लगातार अद्यतन की जाती हैं। काउचडीबी बाहरी सॉकेट सर्वर और JSON-आधारित प्रोटोकॉल का उपयोग करके एक व्यू सिस्टम का समर्थन करता है।[25] परिणामस्वरूप, व्यू सर्वर विभिन्न भाषाओं में विकसित किए गए हैं (जावास्क्रिप्ट डिफ़ॉल्ट है, लेकिन PHP, रूबी, पायथन और एरलांग भी हैं)।
HTTP के माध्यम से डेटा तक पहुंच
एप्लिकेशन HTTP के माध्यम से काउचडीबी के साथ इंटरैक्ट करते हैं। निम्नलिखित कमांड-लाइन उपयोगिता cURL का उपयोग करके कुछ उदाहरण प्रदर्शित करता है। ये उदाहरण मानते हैं कि काउचडीबी पोर्ट 5984 पर स्थानीय होस्ट (127.0.0.1) पर चल रहा है।
Action | Request | Response |
---|---|---|
Accessing server information | curl http://127.0.0.1:5984/
|
{
"couchdb": "Welcome",
"version":"1.1.0"
}
|
Creating a database named wiki | curl -X PUT http://127.0.0.1:5984/wiki
|
{"ok": true}
|
Attempting to create a second database named wiki | curl -X PUT http://127.0.0.1:5984/wiki
|
{
"error":"file_exists",
"reason":"The database could not be created, the file already exists."
}
|
Retrieve information about the wiki database | curl http://127.0.0.1:5984/wiki
|
{
"db_name": "wiki",
"doc_count": 0,
"doc_del_count": 0,
"update_seq": 0,
"purge_seq": 0,
"compact_running": false,
"disk_size": 79,
"instance_start_time": "1272453873691070",
"disk_format_version": 5
}
|
Delete the database wiki | curl -X DELETE http://127.0.0.1:5984/wiki
|
{"ok": true}
|
Create a document, asking काउचडीबी to supply a document id | curl -X POST -H "Content-Type: application/json" --data \
'{ "text" : "Wikipedia on CouchDB", "rating": 5 }' \
http://127.0.0.1:5984/wiki
|
{
"ok": true,
"id": "123BAC",
"rev": "946B7D1C"
}
|
get a list of databases | curl http://127.0.0.1:5984/_all_dbs
|
["_replicator","_users","wiki"]
|
मुक्त स्रोत घटक
काउचडीबी में इसके डिफ़ॉल्ट पैकेज के हिस्से के रूप में कई अन्य ओपन सोर्स प्रोजेक्ट शामिल हैं।
Component | Description | License |
---|---|---|
Erlang | Erlang is a general-purpose concurrent programming language and runtime system. The sequential subset of Erlang is a functional language with strict evaluation, single assignment, and dynamic typing | Apache 2.0 (Release 18.0 and later) Erlang Public License (Earlier releases) |
ICU | International Components for Unicode (ICU) is an open-source project of mature C/C++ and Java libraries for Unicode support, software internationalization and software globalization | Unicode License |
jQuery | jQuery is a lightweight cross-browser JavaScript library that emphasizes interaction between JavaScript and HTML | MIT License |
OpenSSL | OpenSSL is an open-source implementation of the SSL and TLS protocols. The core library (written in the C programming language) implements the basic cryptographic functions and provides various utility functions | Apache 1.0 and the four-clause BSD License |
SpiderMonkey | SpiderMonkey is a performant JavaScript engine maintained by the Mozilla Foundation. It contains an interpreter, a JIT compiler and a garbage collector | MPL 2.0 |
यह भी देखें
- डॉक्यूमेंट-उन्मुख डेटाबेस
- एक्सएमएल डेटाबेस
संदर्भ
- ↑ Apache Software Foundation. "अपाचे काउचडीबी". Retrieved 15 April 2012.
- ↑ Smith, Jason. "What is the CouchDB replication protocol? Is it like Git?". StackOverflow. Stack Exchange. Retrieved 14 April 2012.
- ↑ "काउचडीबी की खोज". Developer Works. IBM. March 31, 2009. Retrieved September 30, 2016.
- ↑ Apache mailing list announcement on mail-archives.apache.org
- ↑ Re: Proposed Resolution: Establish CouchDB TLP on mail-archives.apache.org
- ↑ "CouchDB NoSQL Database Ready for Production Use", article from PC World of July 2010
- ↑ Katz, Damien. "CouchDB का भविष्य". Retrieved 15 April 2012.
- ↑ Slater, Noah. "बिगकाउच में आपका स्वागत है". Retrieved 25 July 2013.
- ↑ "'2.0'". 20 September 2016. Retrieved 13 January 2017.
- ↑ CouchDB, Technical Overview Archived October 20, 2011, at the Wayback Machine
- ↑ "काउचडीबी-फॉक्सटन". GitHub. apache. Retrieved 2 May 2023.
- ↑ Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison from Kristóf Kovács
- ↑ "लार्ज हैड्रॉन कोलाइडर वैज्ञानिक CouchDB का उपयोग क्यों कर रहे हैं?". ReadWrite (in English). 2010-08-26. Retrieved 2022-03-29.
- ↑ iDAT, Red Cross Code, 2021-07-31, retrieved 2022-03-29
- ↑ "डेटाबेस-डीप-डाइव्स-काउचडीबी". www.ibm.com (in English). Retrieved 2022-03-29.
- ↑ "डेटाबेस-डीप-डाइव्स-काउचडीबी". www.ibm.com (in English). Retrieved 2022-03-29.
- ↑ "United Airlines Streamlines Operations With Couchbase | Case Study". www.couchbase.com. Retrieved 2022-03-29.
- ↑ "CouchDB in the wild" Archived 2017-07-20 at the Wayback Machine article of the product's Web, a list of software projects and websites using CouchDB
- ↑ Cutler, Kim-Mai (9 June 2012). "Meebo Gets The Classic Google Acq-hire Treatment: Most Products To Shut Down Soon". TechCrunch. AOL Inc. Retrieved 7 January 2016.
- ↑ "एनपीएम-रजिस्ट्री-काउचएप". GitHub. npm. 17 June 2015. Retrieved 7 January 2016.
- ↑ CouchDB at the BBC as a fault tolerant, scalable, multi-data center key-value store
- ↑ Email from Elliot Murphy (Canonical) Archived 2011-05-05 at the Wayback Machine to the CouchDB-Devel list
- ↑ Canonical Drops CouchDB From Ubuntu One (Slashdot)
- ↑ "Protogrid - Über uns".
- ↑ View Server Documentation Archived 2008-10-20 at the Wayback Machine on wiki.apache.org
ग्रन्थसूची
- Anderson, J. Chris; Slater, Noah; Lehnardt, Jan (November 15, 2009), CouchDB: The Definitive Guide (1st ed.), O'Reilly Media, p. 300, ISBN 978-0-596-15816-3
- Lennon, Joe (December 15, 2009), Beginning CouchDB (1st ed.), Apress, p. 300, ISBN 978-1-4302-7237-3, archived from the original on December 5, 2010, retrieved November 1, 2009
- Holt, Bradley (March 7, 2011), Writing and Querying MapReduce Views in CouchDB (1st ed.), O'Reilly Media, p. 76, ISBN 978-1-4493-0312-9
- Holt, Bradley (April 11, 2011), Scaling CouchDB (1st ed.), O'Reilly Media, p. 72, ISBN 978-1-4493-0343-3
- Brown, MC (October 31, 2011), Getting Started with CouchDB (1st ed.), O'Reilly Media, p. 50, ISBN 978-1-4493-0755-4
- Thompson, Mick (August 2, 2011), Getting Started with GEO, CouchDB, and Node.js (1st ed.), O'Reilly Media, p. 64, ISBN 978-1-4493-0752-3
बाहरी संबंध
- Official website
- काउचडीबी: The Definitive Guide
- Complete HTTP API Reference
- Simple PHP5 library to communicate with काउचडीबी
- Asynchronous काउचडीबी client for Java
- Asynchronous काउचडीबी client for Scala
- Lehnardt, Jan (2008). "Couch DB at 10,000 feet". Erlang eXchange 2008. Archived from the original on 9 November 2012. Retrieved 15 April 2012.
- Lenhardt, Jan (2009). "CouchDB for Erlang Developers". Erlang Factory London 2009. Archived from the original on 19 June 2011. Retrieved 15 April 2012.
- Katz, Damien (January 2009). "CouchDB and Me". RubyFringe. InfoQ. Archived from the original on 27 April 2011. Retrieved 15 April 2012.