MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB बनाम MySQL NoSQL - मोंगो बेहतर क्यों है

रिलेशनल से लेकर नॉन-रिलेशनल DBMS तक चुनने के लिए बहुत सारे डेटाबेस मैनेजमेंट सिस्टम (DBMS) हैं। पिछले वर्षों में, रिलेशनल डीबीएमएस जहां अधिक प्रभावी है लेकिन हाल ही में डेटा संरचना के रुझान के साथ गैर-रिलेशनल डीबीएमएस अधिक लोकप्रिय हो रहे हैं। रिलेशनल डीबीएमएस के विकल्प काफी स्पष्ट हैं:MySQL, PostgreSQL और MS SQL। दूसरी ओर, MongoDB एक गैर-संबंधपरक DBM मूल रूप से डेटा के एक बड़े सेट को संभालने की क्षमता के कारण बढ़ गया है। प्रत्येक चयन के अपने फायदे और नुकसान होते हैं लेकिन आपकी पसंद मुख्य रूप से आपके आवेदन की जरूरतों से निर्धारित होगी क्योंकि दोनों अलग-अलग जगहों पर काम करते हैं। हालाँकि, इस लेख में, हम MySQL पर MongoDB का उपयोग करने के पेशेवरों पर चर्चा करने जा रहे हैं।

MySQL पर MongoDB का उपयोग करने के लाभ

  1. गति और प्रदर्शन
  2. उच्च उपलब्धता और क्लाउड कंप्यूटिंग
  3. स्कीमा लचीलापन
  4. बड़ा होने की जरूरत है
  5. एंबेड करने की सुविधा
  6. सुरक्षा मॉडल
  7. स्थान-आधारित डेटा
  8. समृद्ध क्वेरी भाषा समर्थन

गति और प्रदर्शन

यह MySQL पर MongoDB का उपयोग करने के प्रमुख लाभों में से एक है, खासकर जब असंरचित डेटा का एक बड़ा सेट शामिल होता है। MongoDB डिफ़ॉल्ट रूप से लेनदेन सुरक्षा पर उच्च प्रविष्टि दर को प्रोत्साहित करता है। यह सुविधा MySQL में उपलब्ध नहीं है, उदाहरण के लिए यदि आप एक बार में अपने DBM में बहुत सारा डेटा सहेजना चाहते हैं, तो MySQL के मामले में आपको इसे एक-एक करके करना होगा। लेकिन MongoDB के मामले में, insertMany() फ़ंक्शन की उपलब्धता के साथ, आप सुरक्षित रूप से एकाधिक प्रविष्टियां कर सकते हैं। दोनों के कुछ पूछताछ व्यवहारों को देखते हुए, हम नीचे दिए गए उदाहरण में 1 मिलियन दस्तावेज़ों के लिए विभिन्न संचालन अनुरोधों को सारांशित कर सकते हैं।

अद्यतन करने के मामले में जो एक लेखन ऑपरेशन है, MongoDB सभी छात्र ईमेल को अपडेट करने के लिए 0.002 सेकंड लेता है जबकि MySQL उसी कार्य को निष्पादित करने के लिए 0.2491 सेकंड लेता है।

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

उच्च उपलब्धता और क्लाउड कंप्यूटिंग

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

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

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

स्कीमा लचीलापन

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

दूसरी ओर, MySQL टेबल ओरिएंटेड है जिससे प्रत्येक पंक्ति में अन्य पंक्तियों के समान कॉलम होने चाहिए। एक नया कॉलम जोड़ने के लिए एक ALTER ऑपरेशन चलाने की आवश्यकता होगी जो प्रदर्शन के मामले में काफी महंगा है क्योंकि इसे पूरे डेटाबेस को लॉक करना होगा। यह विशेष रूप से तब होता है जब तालिका 10GB से अधिक हो जाती है, MongoDB में यह समस्या नहीं होती है।

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

बड़ा होने की आवश्यकता

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

पढ़ना और लिखना प्राथमिक पर किया जाता है और फिर सेकेंडरी में दोहराया जाता है। इस योग्यता के साथ, डेटा असंगति या उदाहरण की विफलता के मामले में, एक नए सदस्य को प्राथमिक के रूप में कार्य करने के लिए वोट दिया जा सकता है।

एम्बेडिंग फ़ीचर

MySQL के विपरीत जहां आप किसी फ़ील्ड में डेटा एम्बेड नहीं कर सकते, MongoDB संबंधित डेटा के लिए बेहतर एम्बेडिंग तकनीक प्रदान करता है। MySQL में तालिकाओं के लिए आप जितना जॉइन कर सकते हैं, हो सकता है कि आपके पास बहुत सारी टेबलें हों, जिनमें से कुछ अनावश्यक हों, खासकर यदि उनमें इतने सारे फ़ील्ड शामिल न हों। MongoDB के मामले में आप संबंधित डेटा या किसी अन्य संग्रह से संदर्भ के लिए किसी फ़ील्ड में डेटा एम्बेड करने का निर्णय ले सकते हैं यदि आप भविष्य में JSON दस्तावेज़ आकार से परे दस्तावेज़ बढ़ने की उम्मीद करते हैं।

उदाहरण के लिए यदि हमारे पास उन उपयोगकर्ताओं के लिए डेटा है, जिन्हें हम उनके पते और कुछ अन्य जानकारी प्राप्त करना चाहते हैं, तो MongoDB के मामले में हमारे पास आसानी से एक सरल संरचना हो सकती है जैसे

{
    id:1,
    name:'George Bush',
    gender: 'Male',
    age:45,
    address:{
        City: 'New York',
        Street: 'Florida',
        Zip_code: 1342243
    }
}

लेकिन MySQL के मामले में हमें इस मामले में एक आईडी रेफरेंसिंग के साथ 2 टेबल बनाने होंगे। यानी

उपयोगकर्ता विवरण तालिका

<थ>नाम <थ>लिंग
आईडी उम्र
1 जॉर्ज बुश पुरुष 45

उपयोगकर्ता पता तालिका

आईडी शहर सड़क ज़िप_कोड
1 जॉर्ज बुश पुरुष 134224

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

सुरक्षा मॉडल

MySQL में डेटाबेस एडमिनिस्ट्रेशन (DBA) काफी जरूरी है लेकिन MongoDB के मामले में जरूरी नहीं है। इसका मतलब है कि जब कोई एप्लिकेशन बदलता है तो आपको MySQL के मामले में स्कीमा को संशोधित करने के लिए डीबीए की आवश्यकता होती है। दूसरी ओर, कोई भी MongoDB में DBA के बिना स्कीमा संशोधन कर सकता है क्योंकि यह वर्ग दृढ़ता के लिए बहुत अच्छा है और एक वर्ग को समान रूप से JSON और संग्रहीत किया जा सकता है। हालांकि, यह सबसे अच्छा अभ्यास है यदि आप डेटा के बड़े होने की उम्मीद नहीं करते हैं अन्यथा आपको नुकसान से बचने के लिए कुछ सर्वोत्तम प्रथाओं का पालन करने की आवश्यकता होगी।

स्थान आधारित डेटा

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

रिच क्वेरी भाषा समर्थन

एक MongoDB उत्साही के रूप में एक व्यक्तिगत रुचि पर, मुझे MongoDB की क्वेरी सुविधा पर लचीलेपन के साथ मेरा आकर्षण मिला। बाद के संस्करणों में एकत्रीकरण ढांचे और MapReduce सुविधा के संबंध में, कोई भी परिणाम डेटा को अपने विनिर्देशों के अनुरूप अनुकूलित कर सकता है। जितना अधिक MySQL समूहीकरण, छँटाई और कई अन्य कार्यों की पेशकश करता है, MongoDB विशेष रूप से एम्बेडेड डेटा संरचनाओं के साथ काफी व्यापक है। इसके अलावा, जैसा कि पहले उल्लेख किया गया है, प्रश्नों को एकत्रीकरण ढांचे में कम विलंबता के साथ लौटाया जाता है, जब MySQL के मामले में जॉइन किया जाना था। उदाहरण के लिए, MongoDB एम्बेडेड स्कीमा के लिए $set और $unset संचालन का उपयोग करके एक स्कीमा को संशोधित करने का एक आसान तरीका प्रदान करता है। लेकिन, MySQL के मामले में, केवल उस तालिका के लिए ALTER कमांड करना पड़ता है जिसके भीतर फ़ील्ड मौजूद है और यह प्रदर्शन के मामले में काफी महंगा है।

निष्कर्ष

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नोडजेएस का उपयोग करके ग्रिडएफएस में सहेजी गई फ़ाइल को कैसे डाउनलोड करें

  2. MySQL, MongoDB और PostgreSQL के लिए बैकअप एन्क्रिप्शन की विशेषता - ClusterControl 1.5.1

  3. MongoDB:लोकेल ::पहलू ::_S_create_c_locale नाम मान्य नहीं है

  4. मोंगोडब शुरू नहीं हो सकता

  5. मोंगोडब को अपग्रेड करें