MongoDB - डेटा मॉडलिंग

MongoDB में डेटा के समान संग्रह में एक लचीली स्कीमा.डॉटेक्शंस है। उन्हें फ़ील्ड या संरचना के समान सेट की आवश्यकता नहीं होती है संग्रह के दस्तावेज़ों में सामान्य फ़ील्ड विभिन्न प्रकार के डेटा रख सकते हैं।

डेटा मॉडल डिजाइन

MongoDB दो प्रकार के डेटा मॉडल प्रदान करता है: - एंबेडेड डेटा मॉडल और सामान्यीकृत डेटा मॉडल। आवश्यकता के आधार पर, आप अपने दस्तावेज़ तैयार करते समय किसी भी मॉडल का उपयोग कर सकते हैं।

एंबेडेड डेटा मॉडल

इस मॉडल में, आप एक ही दस्तावेज़ में संबंधित डेटा रख सकते हैं (एम्बेड कर सकते हैं), इसे डी-सामान्यीकृत डेटा मॉडल के रूप में भी जाना जाता है।

उदाहरण के लिए, मान लें कि हम तीन अलग-अलग दस्तावेज़ों में कर्मचारियों का विवरण प्राप्त कर रहे हैं, Personal_details, संपर्क और पता, आप सभी तीन दस्तावेज़ों को एक ही में एम्बेड कर सकते हैं जैसा कि नीचे दिखाया गया है -

{
	_id: ,
	Emp_ID: "10025AE336"
	Personal_details:{
		First_Name: "Radhika",
		Last_Name: "Sharma",
		Date_Of_Birth: "1995-09-26"
	},
	Contact: {
		e-mail: "[email protected]",
		phone: "9848022338"
	},
	Address: {
		city: "Hyderabad",
		Area: "Madapur",
		State: "Telangana"
	}
}

सामान्यीकृत डेटा मॉडल

इस मॉडल में, आप संदर्भों का उपयोग करके मूल दस्तावेज़ में उप दस्तावेज़ों को संदर्भित कर सकते हैं। उदाहरण के लिए, आप उपरोक्त दस्तावेज़ को सामान्यीकृत मॉडल में फिर से लिख सकते हैं:

Employee:

{
	_id: <ObjectId101>,
	Emp_ID: "10025AE336"
}

Personal_details:

{
	_id: <ObjectId102>,
	empDocID: " ObjectId101",
	First_Name: "Radhika",
	Last_Name: "Sharma",
	Date_Of_Birth: "1995-09-26"
}

Contact:

{
	_id: <ObjectId103>,
	empDocID: " ObjectId101",
	e-mail: "[email protected]",
	phone: "9848022338"
}

Address:

{
	_id: <ObjectId104>,
	empDocID: " ObjectId101",
	city: "Hyderabad",
	Area: "Madapur",
	State: "Telangana"
}

MongoDB में स्कीमा डिजाइन करते समय विचार

  • उपयोगकर्ता की आवश्यकताओं के अनुसार अपने स्कीमा को डिज़ाइन करें।

  • यदि आप उन्हें एक साथ उपयोग करेंगे, तो वस्तुओं को एक दस्तावेज़ में मिलाएं। अन्यथा उन्हें अलग कर दें (लेकिन सुनिश्चित करें कि इसमें जुओं की आवश्यकता नहीं होनी चाहिए)।

  • डेटा की नकल करें (लेकिन सीमित) क्योंकि समय की तुलना करने के लिए डिस्क स्थान सस्ता है।

  • लिखते समय जुड़ते हैं, पढ़ने पर नहीं।

  • सबसे लगातार उपयोग के मामलों के लिए अपने स्कीमा का अनुकूलन करें।

  • स्कीमा में जटिल एकत्रीकरण करें।

उदाहरण

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

  • हर पोस्ट में अद्वितीय शीर्षक, विवरण और यूआरएल है।

  • हर पोस्ट में एक या अधिक टैग हो सकते हैं।

  • हर पोस्ट में उसके प्रकाशक का नाम और कुल लाइक्स हैं।

  • प्रत्येक पोस्ट में उपयोगकर्ताओं द्वारा उनके नाम, संदेश, डेटा-समय और पसंद के साथ टिप्पणियां दी गई हैं।

  • प्रत्येक पोस्ट पर, शून्य या अधिक टिप्पणियां हो सकती हैं।

RDBMS स्कीमा में, उपरोक्त आवश्यकताओं के लिए डिज़ाइन में न्यूनतम तीन टेबल होंगे।

जबकि MongoDB स्कीमा में, डिज़ाइन में एक संग्रह पोस्ट और निम्न संरचना होगी -

{
   _id: POST_ID
   title: TITLE_OF_POST, 
   description: POST_DESCRIPTION,
   by: POST_BY,
   url: URL_OF_POST,
   tags: [TAG1, TAG2, TAG3],
   likes: TOTAL_LIKES, 
   comments: [	
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES 
      },
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}

इसलिए डेटा दिखाते समय, RDBMS में आपको तीन तालिकाओं में शामिल होने की आवश्यकता होती है और MongoDB में, डेटा केवल एक संग्रह से दिखाया जाएगा।