2011-12-02 18 views
5

मैं अपनी पहली CouchDB परियोजना शुरू करने और एक ORM पृष्ठभूमि मेरा सवाल मेरे दस्तावेज़ों कि बनाए रखने के लिए मुश्किल हो सकता है बनाने के लिए कैसे कर रहा हूँ से आने के बारे में सोच रहा हूँ।NoSQL और सामान्यीकृत डेटा

उदाहरण के लिए, अगर मैं निम्नलिखित मॉडल है:

ए * ---> (1) बी

हर एक वस्तु के लिए, जिसका अर्थ है वहाँ एक बी वस्तु है और वहाँ एक के कई उदाहरण हैं जो एक बी वस्तु साझा कर सकते हैं। इस मामले में ए से बी

पर एक पॉइंटर्स/विदेशी कुंजी हैं, मैं एक दस्तावेज़ बना सकता हूं जिसमें सभी ए डेटा और बी डेटा शामिल हो। हालांकि, मेरे पास यह मुद्दा है कि बाद के चरण में (10000 दस्तावेजों के निर्माण के बाद), मुझे कुछ डेटा बदलने की आवश्यकता हो सकती है जिसका अर्थ है कि मुझे अपने सभी दस्तावेज़ अपडेट करना है।

एक ORM/सामान्यीकृत डेटाबेस दुनिया में मैं सरल अद्यतन बी और मेरे सारे संदर्भ डेटाबेस अप करने के लिए अब कर रहे हैं होगा।

मैं इसे कोचडीबी में कैसे संभाल सकता हूं या नोएसक्यूएल दृष्टिकोण इन प्रकार की स्थितियों के लिए उपयुक्त नहीं है?

जद

उत्तर

5

इस सवाल का सामान्य जवाब: इस प्रश्न का कोई सामान्य जवाब नहीं है।

बिंदु यह है कि नोएसक्यूएल में, डेटा संरचना डेटा द्वारा निर्धारित नहीं होती है, बल्कि डेटा संरचना को उन प्रश्नों के आधार पर समर्थन देना चाहिए। तो, 1: एन या एम: एन एसोसिएशन समस्या के प्रत्येक उदाहरण के लिए समान पैटर्न का उपयोग करने के बजाय, नोएसक्यूएल तरीका आपकी विशिष्ट आवश्यकताओं के आधार पर विभिन्न पैटर्न का उपयोग करना है। ये हो सकता है, उदाहरण के लिए:

  • लिखें/पढ़ें अनुपात
  • विशिष्ट डेटाबेस सुविधाओं है कि आसान या कठिन
  • प्रश्नों के प्रकार को एम्बेड कर आप कैसे डेटा पर
  • प्रदर्शन विचार का समर्थन करने की जरूरत है सकते हैं अनुक्रमित, sharded, संघीय या किसी अन्य तरीके से विभाजित या कैश किया गया

आम तौर पर, मेरी भावना यह है कि शुरुआती 'ओवर-एम्बेड' होते हैं, लेकिन मैं केवल मोंगोडीबी के लिए बात कर सकता हूं। एम्बेडिंग एक शक्तिशाली विशेषता है, लेकिन एम्बेडेड ऑब्जेक्ट्स 'प्रथम श्रेणी के नागरिक' नहीं हैं, इसलिए इसे प्रत्येक 1: एन संबंध के प्रतिस्थापन के रूप में उपयोग नहीं किया जाना चाहिए। केवल कुछ के लिए :)

+0

+1 उत्कृष्ट जानकारी यहां। – Petrogad

+3

सहमत हैं। मैं एक लगता है दो मुख्य संकेतक देखते हैं: क) कितनी बार आप एम्बेडेड वस्तु ख बदल सकता हूँ) आप एम्बेडेड वस्तु हर बार माता-पिता प्रदर्शित किया जाता है प्रदर्शित करने के लिए की जरूरत है? और यदि हां, तो आप किस डिवाइस पर कर रहे हैं (उदा। एक प्रश्न संभव है या नहीं)। क्योंकि अगर यह केवल एक बार हर 100000 दस्तावेज़ बदल जाता है, तो यह शायद आसान की दुकान यह अंतर्निहित है और एक बार यह हर बार वस्तु की जानकारी के लिए उपयोगकर्ता के लिए प्रदर्शित किया जाता है – rit

+0

धन्यवाद क्वेरी करने बनाम बदलने के लिए है। एम्बेडेड ऑब्जेक्ट केवल असाधारण परिस्थितियों में बदल जाएगा। तो क्या आप कह रहे हैं कि मुझे इसे एम्बेड करना चाहिए (यानी दस्तावेज़ में ए और बी शामिल है)? प्रश्नोत्तरी महत्वपूर्ण है क्योंकि इसका उपयोग प्रत्येक अनुरोध द्वारा किया जाएगा। कृपया आप थोड़ा सा स्पष्टीकरण दे सकते हैं। –