2013-07-13 8 views
7

ठीक है, मैं कोशिश कर रहा हूं और इसे सीधे आगे के रूप में कर सकता हूं जैसा कि मैं कर सकता हूं।
कहते हैं कि हम एक अचल संपत्ति वेबसाइट है और हम घरों
की एक सूची प्रदर्शित कर रहे हैं सामान्य रूप से, मैं निम्न तालिकाओं का उपयोग करना चाहते हैं:
MySQL से आ रहा और तालिकाओं में सोच, के निम्न उदाहरण का उपयोग करते हैं
* घर - हाथ में अचल संपत्ति संपत्ति
* मालिक - घर के मालिक - घरों के साथ एक से कई रिश्तों
* एजेंसियां ​​- रियल एस्टेट ब्रोकर एजेंसी - घरों के साथ कई से अधिक रिश्तों
* छवियां - घरों के साथ कई से एक रिश्ते
* समीक्षा - घरों के साथ कई से एक रिश्ते
मोंगोडीबी शुरुआती - सामान्यीकृत करने या सामान्य करने के लिए नहीं?

मैं समझता हूं कि मोंगोडीबी आपको अद्वितीय वेब के साथ एक अलग डेटाबेस (सामान्यीकृत) की तरह विभिन्न संग्रहों में अपने वेब-एप को डिज़ाइन करने के लिए लचीलापन देता है, और त्वरित चयन का आनंद लेने के लिए, आप संग्रह, संबंधित वस्तुओं और डेटा के भीतर घोंसला कर सकते हैं (अन-सामान्यीकृत)।
हमारी रीयल-एस्टेट हाउस सूची में वापस, इसे सामान्य रूप से डीबी में काफी महंगा है, प्रत्येक घर के लिए आपको अपनी छवियों, समीक्षाओं, मालिक & एजेंसियों से पूछताछ करने की आवश्यकता है, प्रत्येक इकाई एक अलग तालिका में रहती है इसके खेतों, आप शायद जुड़ने का उपयोग करेंगे और एक से अधिक प्रश्नों में शामिल हो गए - महंगे!
मोंगोडीबी दर्ज करें - जहां आपको शामिल होने की आवश्यकता नहीं है, और आप घर के संग्रह पर घर के सभी सामानों को घर के सामान में स्टोर कर सकते हैं, चयन कभी तेज नहीं था, यह एक डीबी स्वर्ग है!
ओह - लेकिन जब आपको संबंधित समीक्षा/एजेंसियों/मालिक/छवियों को जोड़ने/अपडेट/हटाने की आवश्यकता होती है तो क्या होता है?
यह मेरे लिए एक रहस्य है, और यदि मुझे अनुमान लगाने की आवश्यकता है, तो प्रत्येक संबंधित संग्रह घर के टेबल के भीतर अपने डेटा के शीर्ष पर अपने स्वयं के संग्रह पर मौजूद है, और एक बार संबंधित डेटा के इन टुकड़ों में से एक को जोड़ा/अपडेट/हटा दिया जा रहा है आपको इसे अपने स्वयं के संग्रह के साथ-साथ घरों के संग्रह पर अपडेट करना होगा।
इस अद्यतन पर - क्या मुझे यह सुनिश्चित करने के लिए अन्य संग्रहों से पूछने की ज़रूरत है कि मैं सभी अद्यतन संबंधित डेटा के साथ घर रिकॉर्ड अपडेट कर रहा हूं?
मैं वास्तव में यहाँ अनुमान लगा रहा हूँ ... और सराहना आपकी प्रतिक्रिया
धन्यवाद
अधखुला

उत्तर

3

इस दृष्टिकोण का प्रयास करें:

जो इकाई व्यायाम करें (या संस्थाओं) नायक (रों)

हैं

'नायक' के साथ, मेरा मतलब है कि डेटाबेस (ओं) है कि डेटाबेस केंद्रित है। आइए अपना उदाहरण लें। रियल एस्टेट उदाहरण का नायक घर * है।

बाहर स्वामित्व

इस तरह के मालिक, एजेंसी, छवियों और समीक्षा के रूप में अन्य संस्थाओं, के माध्यम से जाओ और अपने आप से पूछना है कि क्या यह समझ में आता है घर के साथ साथ उनकी जानकारी रखने के लिए कार्य करें। क्या आपके पास अपने रिलेशनल डेटाबेस में किसी भी विदेशी कुंजी पर कैस्केडिंग डिलीट होगा? यदि ऐसा है, तो वह स्वामित्व का तात्पर्य है।

बाहर है कि क्या यह वास्तव में उस डेटा मायने रखती कार्य को डी-सामान्यीकृत

आप एजेंसी (और शायद मालिक) होगा कई घरों में फैले विवरण है। क्या वो वजह बन रही हे?

तुम्हारा घर संग्रह शायद इस तरह दिखेगा:

house: { 
owner, 
agency, 
images[], // recommend references to GridFS here 
reviews[] // you probably won't get too many of these for a single house 
} 

* वास्तव में, यह शायद घर के विज्ञापन दिया गया है (के बाद से घरों में आम तौर पर एक अचल संपत्ति वेबसाइट पर विज्ञापित कर रहे हैं और कहा कि संभव है कि आप हो वास्तव में में दिलचस्पी है) तो बस मान लें कि

2

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

लिंक: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/comment-page-1/

1

मैं सिर्फ MongoDB के नजरिए से एक सामान्य स्मरण करा चाहते हैं -

क्या सामान्यीकरण की लक्ष्य क्या हैं?

  • मुक्त कर देते संशोधन से डेटाबेस विसंगतियों - MongoDB के लिए, यह की तरह डेटा embedding ज्यादातर इस कारण होता लग रहा है। और वास्तव में, हमें MongoDB में दस्तावेज़ों में डेटा एम्बेड करने से बचने की कोशिश करनी चाहिए जो संभवतः इन विसंगतियों को बनाते हैं। कभी-कभी, हमें प्रदर्शन कारणों से दस्तावेज़ों में डेटा डुप्लिकेट करने की आवश्यकता हो सकती है। हालांकि यह डिफ़ॉल्ट दृष्टिकोण नहीं है। डिफ़ॉल्ट से बचने के लिए है। MongoDB काफी लचीला है, क्योंकि यह सभी दस्तावेजों
  • फिर से डिजाइन करने किसी विशेष पहुँच पैटर्न के प्रति पूर्वाग्रह से बचें बिना कुंजी के अलावा की अनुमति देता है - - जब विस्तार
  • फिर से तैयार करने को कम से कम करना चाहिए यह कुछ है, हम कर रहे हैं MongoDB में स्कीमा का वर्णन करते समय चिंता न करें। और MongoDB के पीछे के विचारों में से एक है उन अनुप्रयोगों को अपने डेटाबेस को ट्यून करना है जिन्हें हम लिखने की कोशिश कर रहे हैं और जिस समस्या को हम हल करने का प्रयास कर रहे हैं।
संबंधित मुद्दे