MySQL, DrGal में PostGRE SQL या MSSQL पर NoSQL (पूर्व MongoDB) चलाने के क्या फायदे हैं? क्या केवल स्टोरेज का उपयोग करने से प्राप्त लाभ या कुछ Drupal कॉन्फ़िगरेशन को बदलने की आवश्यकता है?
MySQL, DrGal में PostGRE SQL या MSSQL पर NoSQL (पूर्व MongoDB) चलाने के क्या फायदे हैं? क्या केवल स्टोरेज का उपयोग करने से प्राप्त लाभ या कुछ Drupal कॉन्फ़िगरेशन को बदलने की आवश्यकता है?
जवाबों:
MongoDB का उपयोग आपके या सभी संस्थाओं को तेज़, दस्तावेज़-उन्मुख भंडारण में संग्रहीत करने के लिए किया जा सकता है। इस प्रकार का भंडारण तराजू बेहतर होता है तो मानक एसक्यूएल आधारित भंडारण हमारे पास ड्रुपल कोर में होता है (जो "फ़ील्ड प्रति एक तालिका" स्कीमा पर आधारित होता है)।
Drupal 7 की वर्तमान स्थिति में, आपके पास होगा:
यह MongoDB पर संस्थाओं पर तेजी से क्वेरी करने की अनुमति देता है, और जटिल अनुक्रमित को जोड़ने की क्षमता है जो कोई Opensource SQL डेटाबेस समर्थन (तालिकाओं में अनुक्रमित सहित)। एक ही समय में, आप इंटरऑपरेबिलिटी नहीं खोते हैं क्योंकि इकाई की आधार तालिका अभी भी एसक्यूएल में संग्रहीत है और इस तरह से उन मॉड्यूलों से जुड़ सकती है जो अभी भी एसक्यूएल-ओनली (जैसे फ्लैग) हैं।
इस प्रकार की तेज़ क्वेरी एंटिटीफ़िल्डिअक मैकेनिज़्म के लिए उपलब्ध है, जो एंटिटीज़, उनकी संपत्तियों और उनके क्षेत्रों पर एक अमूर्त तरीके से प्रश्नों के निर्माण का एक तरीका है। कोर में डिफ़ॉल्ट कार्यान्वयन एसक्यूएल के लिए उन प्रश्नों का अनुवाद करता है, लेकिन MongoDB मॉड्यूल में एक पूर्ण-विशेषताओं वाला कार्यान्वयन है जो उन प्रश्नों को सीधे MongoDB से संतुष्ट कर सकता है।
दृश्य के लिए EntityFieldQuery बैकएंड के लिए धन्यवाद , आप आसानी से इस शक्ति का लाभ उठा सकते हैं, उन उपकरणों का उपयोग करके जिन्हें आप उपयोग कर रहे हैं। केवल नकारात्मक पक्ष यह है कि रिश्तों का समर्थन नहीं किया जाता है (लेकिन व्यवहार में आपको शायद ही कभी भी उनकी आवश्यकता होती है - और यह इकाई ऑब्जेक्ट में अतिरिक्त डेटा को धक्का देकर और इकाई के अतिरिक्त गुणों के रूप में उन्हें उजागर करने से काम किया जा सकता है)।
संक्षेप में, जैसे ही क्वेरी प्रदर्शन आपके प्रोजेक्ट पर एक समस्या है, जो जैसे ही आपके पास महत्वपूर्ण डेटासेट होता है (मान लें कि किसी दिए गए इकाई प्रकार पर हजारों संस्थाओं के कुछ दसवें भाग से शुरू होता है), MongoDB एक शुद्ध लाभ है बहुत कम कमियों के लिए। अत्यधिक सिफारिशित।
MongoDB और समान को अपेक्षाकृत लचीले तरीके से संरचित (श्रेणीबद्ध) डेटा संग्रहीत करने के लिए डिज़ाइन किया गया है।
उदाहरण के लिए Drupal 7
, उपयोग करते समय field_sql_storage
, प्रत्येक फ़ील्ड को बहुत ही टेबल मिलती हैं। जब आप किसी सामग्री प्रकार में 10 फ़ील्ड संलग्न करते हैं, तो आप अपने डेटाबेस में 10 तालिकाओं के साथ समाप्त होते हैं। जब आप उस नोड को लोड करते हैं, field_sql_storage
तो प्रति फ़ील्ड और प्रति नोड (या उपयोग करते समय कई नोड्स node_load_multiple
) पर एक क्वेरी निष्पादित करेगा ।
जब आप mongodb_field_storage का उपयोग करते हैं , तो आप नोड के सभी क्षेत्रों को एक ही दस्तावेज़ में संग्रहीत कर सकते हैं और एक क्वेरी के साथ प्राप्त कर सकते हैं।
आप MongoDB में वॉचडॉग, सत्र, कैश, ब्लॉक जैसी अन्य चीजें भी स्टोर कर सकते हैं ।
आपको अभी भी MySQL की आवश्यकता है, MongoDB इसे (केवल विशिष्ट भागों के लिए) प्रतिस्थापित नहीं करता है।
एक और लाभ यह है कि यह MongoDB के साथ पैमाने पर करना आसान है , आप कई सर्वरों को उनके बीच डेटा साझा करने के लिए क्लस्टर में जोड़ सकते हैं।
पेशेवरों विपक्ष के साथ आते हैं।
ड्रुपल को पूरी तरह से MongoDb पर स्विच नहीं किया जा सकता है, इसलिए आपको दो डेटाबेस का समर्थन करना होगा और सुनिश्चित करना होगा कि वे एक साथ अच्छी तरह से काम करते हैं।
कई मॉड्यूल मोंगोडेब के साथ काम करने में सक्षम नहीं होंगे, इसलिए आप इंटरऑपरेबिलिटी को ढीला कर देंगे।
जब तक आपको एक दबाने की आवश्यकता नहीं होती है (जैसे आपके सिस्टम का हिस्सा अनुरोध की संख्या / डेटा की मात्रा के साथ मुकाबला नहीं कर रहा है) मैं स्विच नहीं करूंगा। और जब आप सीमा के पास जाना शुरू करते हैं तो समस्या पर हार्डवेयर फेंकने या स्विच करने से पहले ट्यूनिंग को देखें।
मुझे लगा कि मैंने पहले ही इसका जवाब दे दिया था, एसओ पर लगभग डुप्लिकेट है