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

विदेशी कुंजी बाधाओं के लिए mongoDB विकल्प

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

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

जब आप अभी भी किसी अन्य संग्रह से वस्तुओं को संदर्भित करना चाहते हैं, तो आप या तो एक DBRef का उपयोग कर सकते हैं, या आप किसी अन्य विशिष्ट पहचानकर्ता का भी उपयोग कर सकते हैं (विशिष्टता कुछ चीजों में से एक है जिसे MongoDB द्वारा लागू किया जा सकता है। ऐसा करने के लिए, क्रिएटइंडेक्स कमांड के साथ एक अद्वितीय इंडेक्स बनाएं ) लेकिन MongoDB इस मामले में निरंतरता लागू नहीं करता है। आप DBRefs बना सकते हैं जो गैर-मौजूदा ObjectIds को इंगित करता है और जब DBRef इंगित करने वाला दस्तावेज़ हटा दिया जाता है, तो कुछ भी नहीं होगा। एप्लिकेशन यह सुनिश्चित करने के लिए ज़िम्मेदार है कि जब यह किसी दस्तावेज़ को हटाता है, तो सभी दस्तावेज़ जो इसे संदर्भित करते हैं, अपडेट किए जाते हैं।

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

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेल में YAML कॉन्फ़िग फ़ाइल लोड करते समय त्रुटि

  2. MongoDB को पासिंग प्रकार की जानकारी ताकि यह इंटरफ़ेस प्रकारों को ठीक से deserialize कर सके?

  3. दिनांक फ़ील्ड के समय के आधार पर MongoDB संग्रह से दस्तावेज़ निकालें

  4. Mongoose का उपयोग करके MongoDB दस्तावेज़ से एक कुंजी हटाएं

  5. MongoDB में स्ट्रिंग्स के रूप में Enums संग्रहीत करना