2010-07-20 29 views
44

पर जाने के लिए और उसके कारणों का कारण मुझे पता है कि यह एक बड़ा सवाल है और यह कोई हां या कोई जवाब नहीं है, लेकिन हम वेब ऐप्स विकसित करते हैं और हमारे दृढ़ता समाधान के लिए मोंगो डीबी का उपयोग कर रहे हैं। ऑब्जेक्ट स्टोरेज के लिए नोआरएम के साथ मोंगोडीबी का मिश्रण।एसक्यूएल सर्वर से मोंगोडीबी

मैं क्या पूछना चाहता हूं कि एसक्यूएल से मोन्गो में स्विच करने के साथ आपको क्या नुकसान हुआ है? मोंगो कब सही समाधान नहीं है और एसक्यूएल से विकास को स्थानांतरित करने के लिए पर्याप्त मोंगोडब के फायदे हैं?

उत्तर

35

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

क्या आपको एसीआईडी ​​लेनदेन अखंडता की आवश्यकता है? क्या डोमेन डेटा पर कई बाधाओं को लागू करता है?क्या आपको दस्तावेज़ डेटाबेस के स्केलेबिलिटी कारक की आवश्यकता है या क्या यह सिर्फ "शांत" चीज़ है?

आपकी स्थिरता और डेटा अखंडता आवश्यकताओं क्या हैं? विशेष रूप से कुछ नोएसक्यूएल समाधान और मोंगोडीबी प्रदर्शन प्राप्त करने के लिए लेखन स्थिरता पर काफी ढीले होते हैं। NoSQL कोई समान परिदृश्य और अन्य उत्पाद नहीं है, उदा। इस विभाग में कॉच डीबी की अन्य विशेषताएं हैं। कुछ भी ट्यून करने योग्य हैं।

ये सभी प्रश्न हैं जो भंडारण की पसंद में जाना चाहिए।

कुछ अनुभव

  • संग्रहीत डेटा पर व्यापक रिपोर्टिंग करने से कठिन जब MongoDB या किसी दस्तावेज़ डेटाबेस का उपयोग कर और कुछ उपयोग के मामलों उस उद्देश्य के लिए आरडीबीएमएस और दस्तावेज़-db के संयोजन किया गया है हो सकता है।
  • (बहुत) अलग प्रश्न मॉडल। MongoDB भी अन्य दस्तावेज़-डीबीएस से अलग है।
  • विकास
  • अज्ञात क्षेत्र
  • ड्राइवरों में परिपक्वता की डिग्री बदलती के दौरान डेटा स्वरूप/स्कीमा को बदलने के लिए लचीला और चौखटे
  • फास्ट
  • सरल (कई मायनों में) उत्पाद और प्रबंधन उपकरण (कई आरडीबीएमएस की तुलना उत्पाद)
  • कोई और प्रतिबाधा मेल नहीं खाता। भंडारण डेटा फिट बैठता है, न कि दूसरी तरफ।
  • कम घर्षण और डेटा तक अधिक प्रत्यक्ष पहुंच।
  • डोमेन अधिक दृढ़ता से बंधे हैं (नोआरएम के ओआरएम "स्तर" के आधार पर, यह बैकएंड को कितना दूर करता है। मैंने नोआरएम का उपयोग नहीं किया है, इसलिए मैं इसका उत्तर नहीं दे सकता।)
+0

आप कर सकते हैं मोंगोडीबी के साथ संग्रहीत प्रोसेस और लोग इस सुविधा का उपयोग करते हैं: http://www.mattinsler.com/why-and-how-i-replaced-amazon-sqs-with-mongodb/ – TTT

+1

@TTT। आप सही हे। अब संपादित किया गया। –

5

मैं कुछ दिनों से इसके साथ घूम रहा हूं।

के लिए:: यह मैं इसके बारे में क्या कह सकता हूँ है

  • कोई और अधिक SQL कथन
  • आपका डेटाबेस अपनी कक्षाओं दूसरी तरह के जैसा दिखता नहीं चारों ओर
  • आपका "स्कीमा" अधिक लचीला है
  • तराजू अच्छी तरह से
  • बहुत आसान के साथ
  • < राय आरंभ करने के लिए> यह शांत </opi nion>

के खिलाफ:

  • मैं वर्तमान में एक कस्टम सदस्यता प्रदाता और मेरे मोंगो अनुप्रयोग के लिए लेकिन किसी भी तरह अपनी सदस्यता उपयोगकर्ता वर्ग शून्य फ़ील्ड होते हैं जब मैं से यह प्राप्त करने का प्रयास भूमिका प्रदाता को लागू करने की कोशिश कर रहा हूँ मोंगो।
  • कहीं मैंने सी # ड्राइवर के बारे में पढ़ा है कि यह अपेक्षाकृत युवा है लेकिन स्थिर है इसलिए कुछ बदलावों की उम्मीद है। (इस यद्यपि मुझे वापस पकड़ नहीं होगा)

एक बात मैं देखा है कि ट्यूटोरियल से लापता है: अपने ऑब्जेक्ट के अंदर अपनी सूची Initialise अन्यथा यह .save को (yourobj) कोशिश करते समय त्रुटि फेंक देते हैं। करने के लिए सबसे सुरक्षित बात यह है कि आपकी कक्षा में एक कन्स्ट्रक्टर लिखता है जो सुनिश्चित करता है कि आपके ऑब्जेक्ट के अंदर कोई नल ऑब्जेक्ट नहीं है। अगर आप कुछ भूल जाते हैं तो इस तरह आपको कोई त्रुटि नहीं मिलेगी।

+0

+1। मैं थोड़ी देर के लिए अपने पीओसीओ में सूचियों के साथ संघर्ष कर रहा हूं, मुझे यह बताने के लिए धन्यवाद कि इसे कैसे काम करना है। यहां जवाब खोजने की उम्मीद नहीं थी :) – Mickel

+3

मैंने मोंगोडीबी के लिए एएसपी.NET प्रदाताओं का एक गुच्छा लिखा है जिसे आप उपयोग करने में सक्षम हो सकते हैं: https://github.com/freshlogic/MongoDB.Web –

2

आपको Getting started with NoSQL में नोएसQL डेटाबेस (मोंगोडीबी शामिल) का उपयोग करने के कुछ पेशेवर और विपक्ष मिल सकते हैं। एक त्वरित सारांश होगा: एक अलग डेटा मॉडल (सोचें कि ऑब्जेक्ट मॉडल से "इस नए मॉडल" के लिए मैपिंग की आवश्यकता है, क्या यह अच्छी तरह से काम करेगा), एक अलग प्रश्न मॉडल (मोंगोडीबी प्रश्न दूसरों के साथ तुलना में काफी सक्षम हैं) , कोई लेनदेन नहीं है (हालांकि आपके पास कुछ परमाणु संचालन हैं)।

वैसे भी, मेरे परिप्रेक्ष्य से सबसे महत्वपूर्ण परिवर्तन डेटा मॉडल और जिस तरीके से आप इस नए दृष्टिकोण के साथ अपना ऐप डिज़ाइन कर रहे हैं।

7

विपक्ष

  1. (पर/अलग दृष्टि) स्थायित्व की कमी (पढ़ http://www.mikealrogers.com/2010/07/mongodb-performance-durability)
  2. कोई लेन-देन
  3. कोई कमी
  4. MapReduce साथ एकत्रीकरण धीमी है और आप समूह के लिए कोड लिखने की आवश्यकता है जैसे
  5. रिपोर्टिंग कठिन है, डी veloper संबंधों को परिभाषित करता है, लेकिन व्यापार विश्लेषक अपने स्वयं के प्रश्नों निर्माण नहीं कर सकते, वे नहीं (उदाहरण के लिए एसक्यूएल सर्वर शब्दावली में 'छोड़कर') एक 'शून्य' कर सकते हैं

पेशेवरों

  1. आप कर सकते हैं आसानी से नए 'कॉलम' और 'टेबल'
  2. गति जोड़ने
  3. sharding (अभी भी बीटा)
  4. दस्तावेज़ संबंधपरक टेबल का एक सेट तो मानचित्रण आसान हो जाता है की तुलना में एक वस्तु को और अधिक बारीकी से मेल खाता है
  5. यह मन का विस्तार
5

Graph comparing speed to update records

आपका लाभ भिन्न हो सकते हैं, लेकिन यह एक त्वरित ग्राफ मैं एक साथ रखा एकाधिक "तालिका पंक्तियों" अद्यतन करने का (MongoDB में गैर श्रेणीबद्ध फ्लैट दस्तावेज़) गति की तुलना करने के लिए है एक इंडेक्स के साथ और बिना हमें यह बताने के लिए कि यह हमारे आवेदन के लिए कैसे स्केल करेगा।

+0

यह ग्राफ कहाँ से आया था? – BanksySan

+0

मेरी विकास मशीन पर मेरा व्यक्तिगत प्रयोग ... कुछ समय पहले, दिया गया था। – GroovyCakes

संबंधित मुद्दे