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

MongoDB संबंध:एम्बेड या संदर्भ?

यह विज्ञान से अधिक एक कला है। स्कीमा पर Mongo Documentation एक अच्छा संदर्भ है, लेकिन यहां कुछ बातों पर ध्यान देना चाहिए:

  • जितना हो सके उतना डालें

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

  • अलग-अलग डेटा जिसे कई स्थानों से अपने संग्रह में संदर्भित किया जा सकता है।

    यह इतना "भंडारण स्थान" मुद्दा नहीं है क्योंकि यह एक "डेटा स्थिरता" मुद्दा है। यदि कई रिकॉर्ड एक ही डेटा को संदर्भित करते हैं तो यह एक रिकॉर्ड को अपडेट करने और अन्य स्थानों पर इसके संदर्भ रखने के लिए अधिक कुशल और कम त्रुटि प्रवण होता है।

  • दस्तावेज़ आकार विचार

    MongoDB एकल दस्तावेज़ पर 4MB (1.8 के साथ 16MB) आकार की सीमा लगाता है। जीबी डेटा की दुनिया में यह छोटा लगता है, लेकिन यह 30 हजार ट्वीट्स या 250 ठेठ स्टैक ओवरफ्लो उत्तर या 20 झिलमिलाहट तस्वीरें भी हैं। दूसरी ओर, यह एक सामान्य वेब पेज पर एक बार में प्रस्तुत करने की तुलना में कहीं अधिक जानकारी है। पहले विचार करें कि आपके प्रश्नों को क्या आसान बना देगा। कई मामलों में दस्तावेज़ के आकार के बारे में चिंता समयपूर्व अनुकूलन होगी।

  • जटिल डेटा संरचनाएं:

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

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

  • डेटा संगतता

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

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $toDate

  2. मोंगोडब नेवला में E11000 डुप्लिकेट कुंजी त्रुटि सूचकांक

  3. MongoDb में, आप किसी सरणी तत्व को उसकी अनुक्रमणिका द्वारा कैसे हटाते हैं?

  4. मोंगोडीबी $पुल

  5. मोंगोडीबी अपडेटऑन ()