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

MongoDB में डेटा का असामान्यकरण

हमेशा नहीं, मौत के बिंदु पर सामान्यीकरण प्रदर्शन हिट करता है लेकिन यह सच है कि मैं व्यक्तिगत रूप से मोंगोडीबी पर उसी सामान्यीकरण को लागू नहीं करता जैसा कि मैं एसक्यूएल करता हूं।

यदि आप सामान्यीकृत रूपों के बारे में जानते हैं ( http://en.wikipedia.org/wiki/Database_normalization ) मुझे लगता है कि MongoDB 1NF पर जा रहा है और फिर वापस नीचे फिर से असामान्य हो गया है।

अरे हाँ हम करते हैं। अगर डेटा गलत तरीके से दोहराया गया है तो अपडेट करना एक दर्द है।

मैं आपको एक उदाहरण देता हूं:category और product दो अलग-अलग संस्थाएं होंगी, इससे कोई इंकार नहीं है। ये दो निकाय सामान्यीकृत हैं (product . का दोहराए जाने वाला डेटा category . से स्पीयर किया गया है ) इसके बारे में सोचने का एक और तरीका है:क्या सभी उत्पाद केवल एक ही श्रेणी में मौजूद रहेंगे?

तो शीर्ष स्तर की संस्थाओं पर, जैसा कि आप देख सकते हैं, वही नियम अपेक्षाकृत लागू होते हैं 1NF आसानी से MongoDB पर लागू होते हैं।

दोहराव के मोर्चे पर, आप निश्चित रूप से प्रत्येक उत्पाद को प्रत्येक श्रेणी के भीतर अलग से संग्रहीत नहीं करना चाहेंगे (मैंने ऊपर दिए गए प्रश्न का उत्तर नहीं दिया) इसलिए आप स्वाभाविक रूप से श्रेणियों और उत्पादों को अलग करना चाहेंगे।

मध्य सामान्यीकृत तालिका के साथ आपके यहां सामान्य रूप से कई से अधिक संबंध होंगे। यह वह जगह है जहां डी-सामान्यीकरण आ सकता है। आप कह सकते हैं कि एक श्रेणी में उन उत्पादों की एक सूची होगी जो उस श्रेणी के लिए अद्वितीय हैं जैसे कि आप सूची के रूप में श्रेणी पंक्ति में कई-से-अनेक संबंधपरक तालिका को सामान्य कर सकते हैं। (या दूसरी तरफ उत्पाद पंक्ति में)। यह दोहराव उत्पन्न नहीं करेगा क्योंकि वह सूची उस श्रेणी के लिए अद्वितीय है (संभावना से अधिक)। इसका निश्चित रूप से मतलब है कि श्रेणी या उत्पादों में एक सूची होगी _id ऑब्जेक्ट के बजाय संबंधित पंक्ति के s।

ऐसे समय होते हैं जहां दोहराव अनिवार्य होता है, मुख्य रूप से अनुकूलन के लिए या जॉइन न होने के कारण काम करने के लिए; यह नियम SQL पर भी लागू होता है यदि आपने कभी भी काफी बड़ी साइट बनाई है।

दोहराव के विशिष्ट उपयोग परिदृश्य एक फेसबुक पोस्ट शेयर और टिप्पणियों जैसे आँकड़ों का एकत्रीकरण क्षेत्र है और शायद उस पोस्ट की 5 नवीनतम टिप्पणियों को भी पोस्ट पंक्ति पर डुप्लिकेट किया जाएगा।

तो यह स्कीमा डिज़ाइन को अनदेखा करने का मामला नहीं है बल्कि इसे MongoDBs विशेषताओं के लिए ट्यून करने का मामला है। आम तौर पर यदि आप ऐसा करते हैं तो आप पाएंगे कि आप स्वाभाविक रूप से एक अच्छा स्कीमा तैयार करते हैं।

एक अतिरिक्त संदर्भ के रूप में आप यहां देख सकते हैं:http://docs.mongodb.org/ मैनुअल/कोर/डेटा-मॉडलिंग




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला के साथ वर्तमान के अगले और पिछले आइटम को कैसे प्राप्त करें?

  2. MongoDB शार्डिंग, नए नोड्स जोड़ते समय यह कैसे पुनर्संतुलन करता है?

  3. निम्नलिखित और फ़ीड के मोंगो डीबी डिजाइन, मुझे कहां एम्बेड करना चाहिए?

  4. MongoDB में एक बहु-भाषा टेक्स्ट इंडेक्स बनाएं

  5. जावा मोंगो डीबी नियमित अभिव्यक्ति गैर-अक्षर चरित्र