नोड .js डेटाबेस [बंद]


115

मैं एक नोड के साथ युग्मित करने के लिए एक डेटाबेस की तलाश कर रहा हूं। जेएस ऐप। मैं मान रहा हूं कि एक json / nosql db एक संबंधपरक DB के लिए बेहतर होगा [मैं किसी भी json / sql प्रतिबाधा बेमेल के बिना कर सकता हूं]। मैं विचार कर रहा हूँ:

  • CouchDB
  • MongoDB
  • redis

किसी के पास भी कोई विचार / युद्ध की कहानियाँ हैं। कोई स्पष्ट पसंदीदा?


2
मुझे लगता है कि अगर व्यापक आवश्यकताओं का उल्लेख किया जाए तो इस सवाल का जवाब देना उपयोगी होगा। प्रत्येक DB के अपने पेशेवरों, विपक्ष और विशेषता हैं। आइये जानते हैं ऐनक!
सम्यक भूता

जवाबों:


79

मैं नोड.जेएस के लिए मोंगोडब ड्राइवर का डेवलपर हूं मैं अपनी खुद की परियोजनाओं के लिए मोंगॉडब का उपयोग कर रहा हूं और मोंगोडब के प्रदर्शन से बहुत खुश हूं।

नोड.जेएस के लिए मोंगोडब ड्राइवर

(बेशर्म प्लग) चालक के बारे में कोई भी प्रश्न पूछने के लिए स्वतंत्र महसूस करें

मोंगोडब ड्राइवर के लिए Google समूह

या यहाँ Stackoverflow पर

नोड के साथ मज़े करो। मैं मंच से बिल्कुल प्यार करता हूं: डी


1
मोंगोज़ को भी देखें, जो काफी अच्छा ओआरएम है जो नोड / जेएस के लिए मोंगोडब ड्राइवर के शीर्ष पर बनाता है / उपयोग करता है
टैक्सियन

2
हम काफी समय से Node.js + MongoDB का उपयोग कर रहे हैं और यह बहुत अच्छा चल रहा है। और पूर्ण kudos @christkv को, चालक ठोस है और आपको विफल नहीं करेगा। हमने EC2 पर नोड .js / express.js + mongodb को आसानी से तैनात किया है। इसके अलावा, ध्यान दें कि हम Mongoose का उपयोग नहीं कर रहे हैं। चुनौतियों के बारे में बात करना (मान लेना कि आप पहले से ही नोड में अच्छे हैं), आपको किसी भी गंभीर अनुप्रयोग या सेवा के विकास के लिए कामों (क्वेरी और एकत्रीकरण) के मोंगो तरीके से अच्छा होना चाहिए। यह सीखना कि मानगो अन्य DBs से कैसे भिन्न है, वास्तव में आपको पहले होना चाहिए यदि आप अभी भी मूल्यांकन चरणों में हैं।
सम्यक भूता

मैं जो कुछ वास्तव में शांत सुविधाओं को समझता हूं, वह मंगोल में एकत्रीकरण को गति देने के लिए लाइन के नीचे आ रहा है। उनमें से एक देशी एकत्रीकरण कार्य है। slideshare.net/cwestin63/mongodb-aggregation-mongosf-may-2011 और भी जावास्क्रिप्ट इंजन के लिए Spidermonkey के बजाय v8 के लिए एक संभव स्विच जो प्रत्येक नक्शे-को कम आदेश यह में चलाने के लिए अनुमति देगा खुद धागा है (अलविदा अलविदा singlethreaded नक्शा को कम )
क्रिस्चव

25

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

अलग-अलग क्लाइंट लाइब्रेरी भी उपलब्ध हैं, कुछ कम स्तर के हैं, अन्य वास्तव में बहुत सार हैं।

लेकिन जैसा कि मैंने कहा, आपको अपने डेटाबेस के लिए आवश्यक सुविधाओं के बारे में भी सोचना चाहिए।


18

रेडिस एक लोकप्रिय विकल्प है। इसके बाद आप एक डेटाबेस ड्राइवर है जो ब्लॉक नहीं करता है।

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

यहां उपलब्ध डेटाबेस मॉड्यूल की एक सूची है: http://wiki.github.com/ry/node/modules#database


हाँ, Redis बहुत अच्छा है लेकिन ऐसा लगता है कि हम बाइनरी डेटा स्टोर कर सकते हैं लेकिन इसे पुनः प्राप्त नहीं कर सकते हैं! कम से कम मैं बाइनरी डेटा के लिए कोई रेडिस कमांड नहीं पा सकता।
AppleGrew

वास्तव में? मैं बाइनरी डेटा (नोड के बफर वर्ग का उपयोग करके) संग्रहीत करता था और यह ठीक काम करता था। Redis / Node का क्या संस्करण?
डेनियल

12
डिफ़ॉल्ट रूप से, नोड_्रेडिस सभी कमांड के लिए जावास्क्रिप्ट स्ट्रिंग्स को लौटाएगा। इसके बजाय बफ़र्स प्राप्त करने के लिए, createClient (पोर्ट, होस्ट, {return_buffers: true}) के साथ एक क्लाइंट बनाएं;
मैट रेन्ने

4
@MattRanney, तुम मुझे बचाने के लिए खुदाई के घंटे अधिक बचाओ! मैंने इसे नोड-रेडिस डॉक्स और शाब्दिक समय 5 घंटे में कहीं भी नहीं देखा। मेरी प्रशंसा इस क्षण में सीमा के बिना है।
घीस

अच्छी तरह से सभी सिद्धांत में अच्छे लगते हैं, लेकिन एक व्यावहारिक उदाहरण लेते हैं, आपके पास एक JSON API है जिसे आप हर 20 सेकंड में क्वेरी करते हैं जो एक सरणी देता है, आप इसे कैश करना चाहते हैं, क्या आप अभी भी Redis के साथ जाएंगे? भी इस सरणी के माध्यम से एक फजी खोज करते हैं
PirateApp

15

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

यहाँ प्रमुख मुद्दा है जो डेटाबेस डिजाइन आपके आवेदन के लिए समझ में आता है। क्या आपके पास डेटा है जो प्रकृति में काफी हद तक महत्वपूर्ण है? यदि हां, तो Redis का उपयोग करें। क्या आपके पास डेटा है जहां सभी दस्तावेजों में आवश्यक रूप से समान फ़ील्ड नहीं हैं? यदि हां, तो CouchDB जैसे NoSQL डेटाबेस का उपयोग करें।

एक अवरुद्ध डेटाबेस का उपयोग करने वाली अगली बदतर चीज़ आपके डेटा के लिए गलत डेटाबेस का उपयोग कर रही है। CouchDB Apache द्वारा प्रबंधित किया जाता है, इसलिए आप जानते हैं कि यह अच्छी गुणवत्ता है, लेकिन इसका उपयोग करने के लिए यह समझ में नहीं आता है कि आपका डेटा SQL तालिका या एक साधारण कुंजी-मूल्य स्टोर में अधिक समझ में आता है या नहीं।

अपने उपयोग के मामले के बारे में सोचो। क्या आप पूर्ण-पाठ खोज करना चाहते हैं, बस कुंजी द्वारा डेटा प्राप्त करना चाहते हैं, या समान विशेषताओं वाले दस्तावेज़ों की श्रेणी प्राप्त करना चाहते हैं?


8

नोड के लिए दृढ़ता , उच्च स्तरीय दृढ़ता / डेटाबेस प्रणाली की जाँच करना चाहते हैं।

से thechangelog.com :

दृढ़ता एक परियोजना है जो प्रक्रिया रन के बीच डेटा को बनाए रखने के लिए एक उच्च स्तरीय एपीआई की अनुमति देता है। लक्ष्य बैकएंड का समर्थन करना है जो संभव हो तो, शक्तिशाली, लचीले या उपरोक्त सभी का उपयोग करना आसान है।

समर्थित डेटाबेस में शामिल हैं:

  • PostgreSQL - एक उद्यम स्तर रिलेशनल डेटाबेस। ड्राइवर को शुद्ध जावास्क्रिप्ट में लागू किया जाता है और पोस्टग्रेक्यूएल वायर प्रोटोकॉल का उपयोग करके टीसीपी पर संचार करता है।
  • Sqlite3 - एक सरल, तेज, सर्वर-कम रिलेशनल डेटाबेस। यह ड्राइवर कमांड-लाइन sqlite3 प्रोग्राम के आसपास एक आवरण है। यह पथ में होने के लिए sqlite3 की आवश्यकता है। संचार बहुत तेज है, लेकिन प्रकार बहुत सटीक नहीं हैं। वहाँ केवल तार और नल लौटे हैं।
  • MongoDB - एक स्केलेबल, उच्च-प्रदर्शन, खुला स्रोत, स्कीमा-मुक्त, दस्तावेज़-उन्मुख डेटाबेस। यह ड्राइवर जावास्क्रिप्ट में वायर प्रोटोकॉल को लागू करता है और टीसीपी पर सर्वर के साथ संचार करता है।
  • JSON-DB - एक होमग्रॉन सिस्टम स्कीमा-फ्री, डॉक्यूमेंट-ओरिएंटेड डेटाबेस जो कि JSON ऑब्जेक्ट्स वाली सरल फ्लैट फ़ाइलों का उपयोग करता है। नोड और फाइल सिस्टम को छोड़कर इसकी कोई आवश्यकता नहीं है। एक बार इसे पूरी तरह से लागू करने के बाद प्रदर्शन निर्धारित किया जाना है।

13
मार्च 2010 से दृढ़ता अपडेट नहीं की गई है और यह 0.0.4 पर जारी है, इसलिए ऐसा लगता है कि इसे छोड़ दिया गया हो सकता है।
कमी


3

मुझे यकीन नहीं है कि सही समाधान केवल एक डेटाबेस को अपने वेब स्टैक पर मैप करने पर ध्यान केंद्रित करना है, बल्कि आवेदन-विशिष्ट आवश्यकताओं पर भी विचार करना है।

क्या आप पैटर्न के लिए ट्विटर फ़ीड्स या अन्य उच्च-मात्रा डेटा का विश्लेषण कर रहे हैं, लेकिन लेन-देन के समर्थन की आवश्यकता नहीं है? तब वास्तव में तेजी से कुछ उठाओ।

क्या आप बस कुछ तालिकाओं में कुछ बुनियादी जानकारी संग्रहीत करना चाहते हैं और वर्तमान में "उद्यम केंद्रित" ऐप नहीं है? फिर सीखने के लिए कुछ अच्छा चुनें।

हो सकता है कि आप डेटा को स्टोर करने जा रहे हैं, जो वास्तव में एक ग्राहक के लिए महत्वपूर्ण है, मजबूत है, लेन-देन करने की आवश्यकता है, और दूरस्थ होस्टिंग सुविधाओं के लिए लाइव प्रतिकृति है, आदि हो सकता है, फिर शायद पोस्टग्रैस्कल जैसी चीज को देखें। यह भी दर्पण नहीं होगा, लेकिन नोड.जेएस चालक बहुत अच्छी तरह से काम करता है और यदि आप एसक्यूएल से घातक रूप से डरते नहीं हैं, तो यह वह हो जाता है जो आप बहुत आसानी से चाहते हैं।

मेरी अपनी राय के अनुसार, मुझे लगता है कि एक नए स्टैक के साथ जाना जा रहा है जैसे कि नोड.जेएस (php / जावा में पारंपरिक फ्रेमवर्क) पर्याप्त "नया" जटिलता जोड़ रहा है कि एक बार में अतिरिक्त परतों को नहीं जोड़ना चाहिए। यह एक अच्छा लेख है जो चर्चा करता है कि:

http://nodeguide.com/convincing_the_boss.html


2

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


1

गंदा अभी तक एक और फ्लैट फ़ाइल की-वैल्यू स्टोर है। जैसा कि नाम से पता चलता है, यह सरल मामलों के लिए एक त्वरित और गंदा लेकिन परफॉर्मेंट समाधान है। मैं लेखक नहीं हूँ :)


1

कुछ और विचार करने के लिए:

ग्लोबल्स: http://globalsdb.org

GT.M ( शुरुआती बिंदु के लिए https://github.com/robtweed/node-mwire देखें )

M / DB (SimpleDB का एक खुला स्रोत क्लोन): https://github.com/robtweed/node-mdb और आप इसे एक्सेस करने के लिए Node.js SimpleDB क्लाइंट का उपयोग कर सकते हैं: https://github.com/rjrodger-simpledb


0

मैंने CouchDB को मास्टर करना बहुत आसान पाया । इंटरनेट पर बहुत सी ई-बुक्स उपलब्ध हैं जो आपको सिखाएंगी कि Node.js के साथ CouchDB का उपयोग कैसे करें

मुझे यह पुस्तक CouchDB सीखने के लिए बहुत उपयोगी लगी।

Node.js के साथ CouchDB का उपयोग करने के लिए, मैं NANO मॉड्यूल का उपयोग करता हूं ।

CouchDB को या तो Iriscouch या Cloudant पर होस्ट किया जा सकता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.