mysql - MongoDB या अन्य दस्तावेज़ उन्मुख डेटाबेस सिस्टम का उपयोग कब करें?




(8)

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

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

तो सवाल यह है कि: मोंगोडीबी का उपयोग कब करें और आरडीबीएमएस का उपयोग कब करें। यदि आप पसंद करते हैं और आप इसे क्यों लेते हैं, तो आप क्या करेंगे, mongoDB या MySQL,


इस असंगठित डेटा को स्टोर करने के लिए

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

और इन डेटाबेस का कार्यान्वयन नियमित आरडीबीएमएस से सरल है। चूंकि ये सरल कुंजी-मूल्यवान या दस्तावेज़ शैली बाइनरी ऑब्जेक्ट्स सीधे डिस्क में क्रमबद्ध होते हैं। ये डेटा स्टोर एसीआईडी ​​गुणों और किसी भी स्कीमा को लागू नहीं करते हैं। यह कोई लेनदेन क्षमताओं प्रदान नहीं करता है। तो यह बड़ा हो सकता है और हम तेजी से पहुंच प्राप्त कर सकते हैं (पढ़ने और लिखने दोनों)।

लेकिन इसके विपरीत, आरडीबीएम डेटा पर एसीआईडी ​​और स्कीमा लागू करता है। यदि आप संरचित डेटा के साथ काम करना चाहते हैं तो आप आरडीबीएम के साथ आगे बढ़ सकते हैं।

मैं इस तरह की चीजों के लिए मंच बनाने के लिए MySQL का चयन करूंगा। क्योंकि यह बड़े पैमाने पर नहीं जा रहा है। और यह एक बहुत ही सरल (सामान्य) अनुप्रयोग है जिसमें डेटा के बीच संरचित संबंध हैं।


आप जानते हैं, इन सभी चीजों में शामिल होने और 'जटिल लेन-देन' के बारे में - लेकिन यह मॉन्टी खुद था, जिसने कई साल पहले COMMIT / रोलबैक के लिए "ज़रूरत" को समझाया और कहा कि 'तर्क वर्गों में जो कुछ किया गया है, (और डेटाबेस नहीं) वैसे भी '- तो यह फिर से एक ही बात है। वेब ऐप्स के 99% के लिए क्या आवश्यक है एक गूंगा लेकिन अविश्वसनीय रूप से साफ और तेज़ डेटा स्टोरेज / पुनर्प्राप्ति इंजन है।


जैसा कि पहले कहा गया था, आप कई विकल्पों के बीच चयन कर सकते हैं, उन सभी विकल्पों पर नज़र डालें: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

मेरा सुझाव है कि आपका सबसे अच्छा संयोजन ढूंढना है: MySQL + Memcache वास्तव में बहुत अच्छा है यदि आपको एसीआईडी ​​की आवश्यकता है और आप कुछ टेबल में शामिल होना चाहते हैं MongoDB + Redis दस्तावेज़ स्टोर के लिए बिल्कुल सही है Neo4J ग्राफ डेटाबेस के लिए बिल्कुल सही है

मैं क्या करता हूं: मैं MySQl + Memcache से शुरू करता हूं क्योंकि मैं इसका उपयोग करता हूं, फिर मैं अन्य डेटाबेस ढांचे का उपयोग शुरू करता हूं। एक प्रोजेक्ट में, आप उदाहरण के लिए MySQL और MongoDB को जोड़ सकते हैं!


देवॉक्सक्स 2011 में भाग लेने और 10 जीन से प्रेजेंटेशन में भाग लेने के बाद, मैंने मोंगोडीबी की तुलना आरडीबीएमएस डेटाबेस से तुलना में एक छोटा ब्लॉग लिखा है। मोंगो डीबी लोकप्रिय नोस्क्ल डीबीएस में से एक है। कृपया नीचे देखे:

http://blog.iprofs.nl/2011/11/25/is-mongodb-a-good-alternative-to-rdbms-databases-like-oracle-and-mysql/


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

यह एक ऐसा क्षेत्र है जहां मुझे लगता है कि मोंगोडीबी फिट बैठता है, लेकिन सामान्य रूप से MySQL / PostgreSQL की अधिक अनुशंसा की जाती है। वेब पर बहुत सारे दस्तावेज और डेवलपर संसाधन हैं, साथ ही उनकी कार्यक्षमता और मजबूती भी हैं।


मोंगो को पसंद करना क्यों चाहेंगे 2 मुख्य कारण हैं

  • स्कीमा डिज़ाइन में लचीलापन (जेएसओएन प्रकार दस्तावेज़ स्टोर)।
  • स्केलेबिलिटी - बस नोड्स जोड़ें और यह क्षैतिज रूप से काफी अच्छी तरह से स्केल कर सकते हैं।

यह बड़े डेटा अनुप्रयोगों के लिए उपयुक्त है। आरडीबीएमएस बड़े डेटा के लिए अच्छा नहीं है।


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

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

व्यक्तिगत रूप से, मुझे लगता है कि "nosql" विखंडन से सूख जाएगा और मर जाएगा, क्योंकि कोई निर्धारित मानक नहीं है (लगभग परिभाषा के अनुसार)। तो मैं किसी भी लंबी अवधि की परियोजनाओं के लिए व्यक्तिगत रूप से इस पर शर्त नहीं लगाऊंगा।

केवल एक चीज जो मेरी पुस्तक में "nosql" को सहेज सकती है, यह है कि अगर यह रूबी या इसी तरह की भाषाओं में सहजता से एकीकृत हो सकती है, और भाषा को "लगातार" बना देती है, लगभग कोडिंग और डिज़ाइन में बिना किसी ओवरहेड के। ऐसा हो सकता है, लेकिन मैं तब तक इंतजार करूंगा, अभी नहीं, और इसे निश्चित रूप से परिपक्व होने की आवश्यकता है।

बीटीडब्ल्यू, आप स्क्रैच से फोरम क्यों बना रहे हैं? खुले स्रोत मंचों के बहुत सारे हैं जिन्हें अधिकांश आवश्यकताओं को पूरा करने के लिए tweaked किया जा सकता है, जब तक कि आप वास्तव में मंचों की अगली पीढ़ी (जो मुझे संदेह है) बना रहे हैं।


नोएसक्यूएल में: अगर केवल यह आसान था , लेखक मोंगोडीबी के बारे में लिखते हैं:

MongoDB एक कुंजी / मूल्य स्टोर नहीं है, यह काफी कुछ है। यह निश्चित रूप से आरडीबीएमएस नहीं है। मैंने उत्पादन में मोंगोडीबी का उपयोग नहीं किया है, लेकिन मैंने इसे एक टेस्ट ऐप का निर्माण किया है और यह किट का एक बहुत अच्छा टुकड़ा है। ऐसा लगता है कि यह बहुत ही सक्षम है और या तो जल्द ही होगा, या गलती सहनशीलता और ऑटो-शेर्डिंग (उर्फ यह स्केल करेगा)। मुझे लगता है कि अब तक मैंने देखा है कि आरडीबीएमएस प्रतिस्थापन के लिए मोंगो सबसे नज़दीकी चीज हो सकती है। यह सभी डेटा सेट और एक्सेस पैटर्न के लिए काम नहीं करेगा, लेकिन यह आपके सामान्य सीआरयूडी सामान के लिए बनाया गया है। अनिवार्य रूप से एक विशाल हैश क्या है, और उन चाबियों में से किसी एक को चुनने में सक्षम होने के कारण, अधिकांश लोग इसके लिए एक संबंधपरक डेटाबेस का उपयोग करते हैं। यदि आपका डीबी 3 एनएफ है और आप कोई भी जुड़ाव नहीं करते हैं (आप केवल टेबल का एक समूह चुन रहे हैं और सभी ऑब्जेक्ट्स को एकसाथ रखते हैं, AKA अधिकांश लोग वेब ऐप में क्या करते हैं), मोंगोडीबी शायद आपके लिए गधे लगाएगा।

फिर, निष्कर्ष में:

इंगित करने के लिए असली बात यह है कि यदि आपको कुछ शानदार बनाने से वापस रखा जा रहा है क्योंकि आप डेटाबेस नहीं चुन सकते हैं, तो आप इसे गलत कर रहे हैं। यदि आप mysql को जानते हैं, तो बस इसका इस्तेमाल करें। जब आपको वास्तव में आवश्यकता होती है तो अनुकूलित करें। इसे एके / वी स्टोर की तरह प्रयोग करें, इसे एक rdbms की तरह उपयोग करें, लेकिन भगवान के लिए, अपने हत्यारा ऐप का निर्माण करें! इनमें से कोई भी अधिकांश ऐप्स से कोई फर्क नहीं पड़ता। फेसबुक अभी भी MySQL का उपयोग करता है, बहुत कुछ। विकिपीडिया MySQL का उपयोग करता है, बहुत कुछ। FriendFeed MySQL का उपयोग करता है, बहुत कुछ। NoSQL एक अच्छा टूल है, लेकिन यह निश्चित रूप से आपका प्रतिस्पर्धी किनारा नहीं बन रहा है, यह आपके ऐप को गर्म करने वाला नहीं है, और सबसे अधिक, आपके उपयोगकर्ताओं को इनमें से किसी के बारे में परवाह नहीं है।

मैं अपना अगला ऐप बनाने के लिए क्या जा रहा हूं? शायद पोस्टग्रेज़। क्या मैं नोएसक्यूएल का उपयोग करूंगा? शायद। मैं हडोप और हाइव का भी उपयोग कर सकता हूं। मैं सब कुछ फ्लैट फाइलों में रख सकता है। शायद मैं मैग्लेव पर हैकिंग शुरू करूंगा। मैं नौकरी के लिए सबसे अच्छा क्या उपयोग करूंगा। अगर मुझे रिपोर्टिंग की ज़रूरत है, तो मैं किसी भी नोएसक्यूएल का उपयोग नहीं करूँगा। अगर मुझे कैशिंग की ज़रूरत है, तो मैं शायद टोक्यो ट्रायंट का उपयोग करूंगा। अगर मुझे एसिडिटी की ज़रूरत है, तो मैं नोएसक्यूएल का उपयोग नहीं करूंगा। अगर मुझे काउंटरों की एक टन चाहिए, तो मैं रेडिस का उपयोग करूंगा। अगर मुझे लेनदेन की ज़रूरत है, तो मैं पोस्टग्रेस का उपयोग करूंगा। अगर मेरे पास एक ही प्रकार के दस्तावेज हैं, तो मैं शायद मोंगो का उपयोग करूंगा। अगर मुझे एक दिन में 1 अरब वस्तुओं को लिखने की ज़रूरत है, तो शायद मैं वोल्डमॉर्ट का उपयोग करूंगा। अगर मुझे पूर्ण पाठ खोज की ज़रूरत है, तो शायद मैं सोलर का उपयोग करूंगा। अगर मुझे अस्थिर डेटा की पूर्ण पाठ खोज की आवश्यकता है, तो शायद मैं स्फिंक्स का उपयोग करूंगा।

मुझे यह लेख पसंद है, मुझे यह बहुत जानकारीपूर्ण लगता है, यह नोएसक्यूएल परिदृश्य और प्रचार का एक अच्छा अवलोकन देता है। लेकिन, और यह सबसे महत्वपूर्ण हिस्सा है, यह वास्तव में आरडीबीएमएस और नोएसक्यूएल के बीच चयन करने के लिए सही सवाल पूछने में मदद करता है। पढ़ने आईएमएचओ के लायक है।

लेख के लिए वैकल्पिक लिंक





mongodb