2010-03-19 12 views
23

मेरे पास मेरे ऐप के हिस्से के लिए MongoDB का उपयोग करने का एक अच्छा कारण है। लेकिन लोग आम तौर पर इसे "लेनदेन" अनुप्रयोगों के लिए एक अच्छा फिट नहीं मानते हैं, जहां बैंकों को लेनदेन सटीक/संगत होना चाहिए, आदिक्या यह समान रेल अनुप्रयोग में दोनों मोंगोडब और माइस्क्ल का उपयोग करने के लिए समझ में आता है?

क्या यह मॉडल को रेल में विभाजित करने के लिए समझ में आता है और उनमें से कुछ का उपयोग करना है MySQL और अन्य mongo? या क्या यह आम तौर पर इसके लायक होने की तुलना में अधिक समस्याएं पैदा करेगा?

मैं बैंकिंग ऐप या कुछ भी नहीं बना रहा हूं लेकिन सोच रहा था कि यह मेरे उपयोगकर्ता की तालिका या लेनदेन तालिका (रिकॉर्डिंग राजस्व) के लिए मायस्क्ल में उस हिस्से को करने के लिए समझ में आ सकता है।

उत्तर

23

हम यही है कि हम कोचडीबी और पोस्टग्रेएसक्यूएल के साथ करते हैं।

हमारे सभी उपयोगकर्ता और समूह के प्रकार पोस्टग्रेस्क्ल डेटाबेस में हैं।
कुछ और (हमारे मामले में, सांख्यिकीय डेटा वाले कुछ रिकॉर्ड) couchdb डेटाबेस में हैं।

हमारे मामले में, यह हमें प्रति क्लाइंट एक couchdb डेटाबेस रखने की अनुमति देता है (ऐप उपयोगकर्ता के होस्ट के आधार पर स्वयं को एक या दूसरे से जोड़ता है)।
और इसमें केवल एक पोस्टग्रेस्क्ल डेटाबेस है जिसमें सभी उपयोगकर्ता हैं।

तो हाँ मुझे लगता है कि एक ही एप्लिकेशन में SQL और NOSQL डेटाबेस होना अच्छा विचार है।

+2

असली दुनिया के उदाहरण के लिए कूल धन्यवाद! –

+1

क्या आप एक कॉच डीबी कनेक्टर का उपयोग करते हैं, या केवल आरईएसटी के माध्यम से सीधे कॉल करते हैं? मेरे पास एक परिदृश्य है जो दोनों का उपयोग करने के लिए भी समझ में आता है, और मुझे यकीन नहीं है कि बीच में एक सक्रिय रिकॉर्ड परत सार्थक है क्योंकि कॉल बहुत अधिक पुनर्प्राप्त और चलेंगे। – eddieroger

3

मैं एक अलग दृष्टिकोण से सावधान रहूंगा हालांकि मैं इसे बाहर नहीं रखूंगा।

यदि आपको MySQL + InnoDB की आवश्यकता है और ऐसा लगता है कि आप ऐसा करते हैं, तो मैं केवल मोंगो डीबी को अधिमानतः अधिक अलग हिस्सों के लिए पेश करता हूं जिनके पास मोंगोडीबी के लाभों से लाभ प्राप्त करने के लिए कुछ महत्वपूर्ण है, और कोर MySQL तालिकाओं के लिए न्यूनतम संबंध हैं ।

मैं वर्तमान में एक ही समस्या के साथ कुश्ती कर रहा हूं, एक रेल ऐप MySQL पर 20ish टेबल के साथ। MongoDB का उपयोग करते हुए कुछ डेटाबेस डिजाइन संकट (नेस्टेड सब-वस्तुओं और इंडेक्स करने योग्य सरणी कॉलम विशेष रूप से) का समाधान होगा, लेकिन यह की अतिरिक्त भूमि के ऊपर का औचित्य साबित करना मुश्किल है: की तेजी के साथ

  • अजीब कस्टम कोड

    • 2 अलग क्वेरी किए जाने के तरीकों MySQL/Mongo ऑब्जेक्ट्स जो एक-दूसरे से संबंधित हैं।
    • उत्पादन में समर्थन के लिए एक दूसरा डेटाबेस मंच।

    मैं अपनी लॉगिंग टेबल के लिए मोंगोडीबी को रोल करने की प्रक्रिया में हूं, और मैं इसे वहां से ले जा रहा हूं।

  • 2

    मैं कहूंगा कि आपने यहां अपने प्रश्न का उत्तर दिया है।

    मेरे पास मेरे ऐप के हिस्से के लिए mongodb का उपयोग करने का एक अच्छा कारण है।

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

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

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

    संबंधों के संबंध में चिंता क्रॉस-डीबी मेरी राय में मान्य है और यदि यह कुछ है तो आप बहुत कुछ खत्म कर देंगे, मैं निश्चित रूप से यह सुनिश्चित करने के लिए स्थिति की जांच करने की सलाह दूंगा कि यह कुछ ऐसा है जो आप जीने में खुश हैं साथ में। मुझे लगता है कि आप उस विशेष मामले में बाद में बहुत दर्द बचा सकते हैं।

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

    4

    स्थायित्व के बारे में भी सोचें: http://blog.mongodb.org/post/381927266/what-about-durability, उदाहरण के लिए जब आप बिजली (बिजली) खो देते हैं।

    +0

    यह कई प्रकार के ऐप्स के लिए सौदा ब्रेकर है। गैर-महत्वपूर्ण डेटा के बड़े पैमाने पर मोंगो एक अच्छा विकल्प है। –

    +0

    कूल, अच्छी बात - –

    5

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

    ध्यान रखें कि यदि आप मोंगोडीबी का उपयोग करते हैं, तो हम विफलता के लिए प्रतिकृति के साथ चलने की सलाह देते हैं।

    ध्यान रखने योग्य समग्र बात यह है कि यदि आप स्थिरता गारंटी के कारण एक संबंधपरक डेटाबेस का उपयोग कर रहे हैं, तो आपको अभी भी यह सुनिश्चित करना होगा कि आपका हार्डवेयर उन सुविधाओं का लाभ उठाने के लिए कॉन्फ़िगर किया गया हो। सचेतक टिप्पणी यहाँ देखें:

    http://dev.mysql.com/doc/refman/4.1/en/innodb-configuration.html

    आप इन सावधानियों लेने नहीं कर रहे हैं, तो MongoDB के स्थायित्व और एक संबंधपरक डेटाबेस के बीच एक बहुत बड़ा अंतर नहीं है।

    +0

    वाह - मुझे नहीं पता था कि MySQL पर मामला था। जानकारी के लिए धन्यवाद! –

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

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