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


516

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

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

तो सवाल यह है: MongoDB का उपयोग कब करें और RDBMS का उपयोग कब करें। आप क्या पसंद करेंगे, mongoDB या MySQL, अगर आपके पास विकल्प था और आप इसे क्यों लेंगे?


12
निश्चित रूप से यह स्पष्ट नहीं होने पर इसे राय-आधारित क्यों कहा जाता है। यहाँ एक स्पष्ट सही या गलत उत्तर है।
स्पेंसर

जवाबों:


659

में NoSQL: यह इतना आसान था तो केवल , MongoDB के बारे में लेखक लेखन:

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

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

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

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

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

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


4
धन्यवाद, यह वास्तव में एक बहुत ही दिलचस्प लेख है।
औरोरा 15


48
@iddqd ROFL! यार, यह प्रफुल्लित करने वाला था। "यदि आप बेंचमार्क प्राप्त करने के लिए विश्वसनीयता को पूरी तरह से अनदेखा करने के लिए पर्याप्त बेवकूफ हैं, तो मैं आपको अपना डेटा पाइप करने का सुझाव देता हूं /dev/null, यह बहुत तेज़ होगा" : डी
पास्कल थिवेंट

3
प्रचारित उत्तर के लिए धन्यवाद।
बहरीन

2
उम्मीद है कि बीजे क्लार्क एक ही परियोजना में उन सभी प्रौद्योगिकियों का उपयोग नहीं करेंगे । यह एक सीखने की अवस्था का एक सा होगा।
एडम मोनसेन

186

एक सामाजिक ऐप के लिए MongoDb का उपयोग करने के दो साल बाद, मैंने देखा है कि SQL RDBMS के बिना रहने का वास्तव में क्या मतलब है।

  1. आप अलग-अलग टेबल / कलेक्शन के डेटा से जुड़ने जैसे काम करने के लिए जॉब राइटिंग करते हैं, कुछ ऐसा जो RDBMS आपके लिए अपने आप करेगा।
  2. NoSQL के साथ आपकी क्वेरी क्षमताएं बेहद अपंग हैं। MongoDb SQL की सबसे करीबी चीज हो सकती है लेकिन यह अभी भी बहुत पीछे है। मुझ पर विश्वास करो। SQL क्वेरी सुपर सहज, लचीली और शक्तिशाली हैं। MongoDb प्रश्न नहीं हैं।
  3. MongoDb क्वेरी केवल एक संग्रह से डेटा पुनर्प्राप्त कर सकती है और केवल एक इंडेक्स का लाभ उठा सकती है। और MongoDb शायद सबसे लचीली NoSQL डेटाबेस में से एक है। कई परिदृश्यों में, इसका अर्थ संबंधित रिकॉर्ड खोजने के लिए सर्वर पर अधिक गोल-यात्राएं हैं। और फिर आप डेटा को सामान्य करना शुरू करते हैं - जिसका अर्थ है पृष्ठभूमि की नौकरियां।
  4. तथ्य यह है कि यह एक संबंधपरक डेटाबेस नहीं है, इसका मतलब है कि आपके पास यह सुनिश्चित करने के लिए विदेशी कुंजी की कमी है कि आपके डेटा के अनुरूप होने के लिए (कुछ लोगों द्वारा बुरा प्रदर्शन करने के लिए सोचा) नहीं होगा। मैं आपको विश्वास दिलाता हूं कि यह अंततः आपके डेटाबेस में डेटा विसंगतियां पैदा करने वाला है। तैयार रहो। सबसे अधिक संभावना है कि आप अपने डेटाबेस को सुसंगत बनाए रखने के लिए प्रक्रियाएं या जांच लिखना शुरू करेंगे, जो शायद आरडीबीएमएस को आपके लिए ऐसा करने से बेहतर प्रदर्शन नहीं करेगा।
  5. हाइबरनेट जैसे परिपक्व ढांचे के बारे में भूल जाओ।

मेरा मानना ​​है कि सभी परियोजनाओं का 98% शायद एसक्यूएल RDBMS के साथ NoSQL की तुलना में बेहतर है।


10
दिलचस्प विचार ...
luigi7up

3
दूसरी ओर, क्वेरी क्षमताएं और आपके द्वारा वर्णित जोड़ एक समस्या नहीं होनी चाहिए: यदि आप MongoDB का उपयोग करते हैं तो आपको अभी भी अपने संग्रह को डिजाइन करने के लिए कुछ काम करना होगा और आप किस डेटा को अंदर रखेंगे ताकि आपको जटिल की आवश्यकता न पड़े जोइन और इतने पर। वैसे भी DBs एक अड़चन नहीं है और कुछ उपयोग के मामलों के लिए Memcache जैसे वर्कअराउंड हैं। यदि खरोंच से शुरू हो रहा है, तो आप पा सकते हैं कि डिजाइनिंग और MongoDB का उपयोग करना सरल और तेज है (ऑब्जेक्ट कोड के साथ काम करने वाले डेवलपर के रूप में, मुझे ORM की आवश्यकता नहीं है)। यकीन है कि आपको कुछ स्क्रिप्ट्स लिखनी होंगी, लेकिन वास्तव में यह इतना कठिन नहीं है और आप कोड का पुनः उपयोग करते हैं
Aki

1
ज्यादातर लोग नो एसक्यूएल डेटाबेस का उपयोग उनके लिए बनाए गए बहुत विशिष्ट उपयोग-केस के लिए नहीं करेंगे । NoSQL बनाम एसक्यूएल बहस से पता चलता है कि कई लोगों NoSQL प्रयोग में अनुभवी के रूप में यदि वे वापस समय में 20-30 वर्षों जा रहे थे, के लिए पूर्व कॉड, पूर्व रिलेशनल, पूर्व एसक्यूएल बार । या, जैसा कि माइकल स्टोनब्रेकर कहते हैं: "व्हाट गोज़ अराउंड कम्स अराउंड"
लुकास ईडर

1
क्या आइटम # 3, "और केवल एक इंडेक्स का लाभ उठाएं" आज भी वैध है? मैं अभी MongoDB में शामिल हो रहा हूं और ऐसा लगता है कि मैंने अभी तक जो कुछ पढ़ा / देखा है, वह कई इंडेक्स का समर्थन कर सकता है?
जेक

1
@ जेक: नहीं, # 3 अब सच नहीं है। MongoDB 2.6 ने इंडेक्स चौराहे की शुरुआत की ।
रॉब गैरिसन

26

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

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

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

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

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


10
"मैं मंचों के प्रकार के सामान बनाने के लिए mysql को चुनूंगा।" वास्तव में? मुझे लगता है कि मंचों की तरह चीजें एक संबंधपरक की तुलना में दस्तावेज़-उन्मुख डेटाबेस का उपयोग करके लिखना बहुत आसान होगा (यदि आप इसे खरोंच से लिख रहे थे)। यदि आपको विशेष रूप से RDBMS की विशेषताओं की आवश्यकता नहीं है, तो मैं कहूंगा कि उपयोग में आसानी और स्केलिंग के लिए MongoDB या इसी तरह के डेटाबेस के साथ जाना चाहिए।
साशा चेदिगोव

2
CouchDB में ACID का समर्थन है। couchdb.apache.org/docs/overview.html
सोनिया

2018: MongoDB में ACID का समर्थन है
Nepoxx

10

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

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


7

मैं कहूंगा कि अगर आपको जटिल लेनदेन की आवश्यकता है तो RDBMS का उपयोग करें। अन्यथा मैं MongoDB के साथ जाऊंगा - साथ काम करने के लिए अधिक लचीला और आप जानते हैं कि जब आप की आवश्यकता होती है तो यह पैमाने पर हो सकता है। (हालांकि मैं पक्षपाती हूं - मैं MongoDB परियोजना पर काम करता हूं)


7
MongoDB में जटिल लेनदेन काम नहीं करते हैं, लेकिन वे अन्य NoSQL डेटाबेस में काम करते हैं, जैसे कि MarkLogic (मैं भी पूर्वाग्रहित हूं क्योंकि मैं MarkLogic के लिए डेवलपर समुदाय चलाता हूं)।
एरिक बलोच

मार्कलॉजिक के संकेत के लिए धन्यवाद - मुझे इसकी जानकारी नहीं थी।
अरोरा

मैं mdirolf से उस बारे में सुनना चाहूंगा। MongoDB ने लेनदेन को लागू करने के लिए क्यों नहीं चुना?
अकी

7

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

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

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

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

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


5
आपके उत्तर के लिए धन्यवाद। एक मंच को एकीकृत करना एक गड़बड़ है - हमने पहले ही यह कर लिया है और इस तरह से फिर से नहीं जाने का फैसला किया है: हमें हजारों विशेषताओं की आवश्यकता नहीं है, लेकिन हमारे सॉफ़्टवेयर में पूर्ण एकीकरण है।
अरोरा

4

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

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


4

2 मुख्य कारण कि आप मानगो को तरजीह देना चाहते हैं

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

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


3

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


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

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

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

हमें अभी तक MongoDB डेमॉन को सीमित करने का एक अच्छा तरीका नहीं मिला है - यह लगभग सभी उपलब्ध RAM को मेमोरी में अपने इंडेक्स और डेटा स्टोरेज के लिए गब्बल करता है, हालाँकि अन्य प्रॉक्स की आवश्यकता होने पर यह मेमोरी को शीघ्रता से प्राप्त करता है। फिर भी, यह अच्छा होगा कि एक 'use_max_memory' या कुछ अन्य आसानी से निश्चित सीमाएं तय करें कि MongoDB भाग न जाए और सर्वर को स्वैप थ्रैशिंग में भेज दें (हमने इसे कई बार देखा है, यहां तक ​​कि सबसे हाल के संस्करण में भी)। कम से कम MySQL सभी प्रकार की निश्चित सीमा और ऑपरेशन संकेत को स्वीकार करता है।
FYA

सीधे तौर पर संबंधित नहीं, लेकिन इस तरह का: हम मेमकाटेड का उपयोग कर रहे थे, लेकिन फिर भी अनसुलझे मेकचे / मेम्केडेड पीएचपी ड्राइवर फिस्को के कारण इसे छोड़ दिया। हमने MongoDB का उपयोग एक त्वरित, अस्थायी कुंजी के रूप में किया: वैल स्टोर (जिसके लिए यह बहुत अच्छा काम किया!) जब तक कि कितनी तेजी से और आसान apc_store () की खोज नहीं हुई है। यदि हमें पता चलता है कि APC अस्थायी क्रूड (बनाम संग्रहीत पूर्वनिर्धारित PHP) के साथ भर रहा है जिसका उपयोग हम मेमचैड में करने के लिए करते थे, तो हम MongoDB को कुंजी: वैल स्टोरेज के लिए वापस कर देंगे।
फिया

1

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

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

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


MySQL + memcached आपको अंततः सुसंगतता देगा। जिसे मैं एक RDMB संदर्भ में ACID नहीं मानता।
आर। वैन ट्विस्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.