2012-12-15 11 views
5

मैं वर्तमान में नोड.जेएस सीख रहा हूं और डेटाबेस को कार्यान्वित करने की आवश्यकता है। सभी नोड पुस्तकों को लगता है कि मोंगोडीबी सबसे अच्छा समाधान है, लेकिन मुझे मोंगो और सोफे जैसे नोस्क्ल डेटाबेस के आसपास अपना सिर नहीं मिल रहा है, मैं एक एमएस एसक्यूएल सर्वर लड़का हूं!आप ग्राहक> आदेश> ordertem> उत्पाद को NoSQL डेटाबेस में कैसे मॉडल करेंगे?

तो, मैं समझता हूँ कि आप के रूप में रिकॉर्ड (JSON) संरचित डेटा रख सकते लेकिन मुझे यकीन है कि कैसे आप निम्नलिखित (सरलीकृत) तालिकाओं के साथ एक ठेठ ई-कॉमर्स एप्लिकेशन मॉडल चाहते हैं नहीं कर रहा हूँ ...

customers (id, name, address) 
orders (id, customerID, orderDate) 
orderItems (id, orderID, productID) 
products (id, title, description, image) 

तो, सामान्य रूप से मैं इस तरह एक प्रश्न लिखना चाहते हैं (लेकिन बेहतर स्पष्ट रूप से अनुकूलित) ....

SELECT Customers.name, Products.title 
FROM (orders INNER JOIN customers ON orders.customerID = customers.id) 
INNER JOIN orderItems ON orderItems.orderID = orders.id 
INNER JOIN products ON orderItems.productID = products.id 

मैं यह कैसे एक NoSQL डेटाबेस में काम करेगा का एक उदाहरण देख सकते हैं तो मैं शुरू हो सकता है " उसे ले लो"।

वैकल्पिक रूप से, क्या मैं एमएसएसएलएल सर्वर या माइस्क्ल के साथ चिपकने से बेहतर हूं, दोनों जो भी नोड के साथ संगत हैं?

उत्तर

8

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

कुछ बुनियादी दिशानिर्देश हैं जिन्हें आप समस्याओं में भागने से बचने के लिए विचार कर सकते हैं। उनमें से एक दस्तावेजों को डिजाइन करने से बचने के लिए है जो निरंतर बढ़ते रहते हैं। इसका मतलब है कि आपको ग्राहक दस्तावेजों में ऑर्डर एम्बेड नहीं करना चाहिए। एक और नियम यह है कि जो चीजें स्वयं "ब्याज" नहीं हैं (या स्वयं पर मौजूद नहीं हैं) शायद एम्बेडेड होने से बेहतर हैं। इससे पता चलता है कि ऑर्डर इटम्स अपने स्वयं के संग्रह के लायक नहीं हैं और उन्हें केवल ऑर्डर के गुणों के रूप में माना जाना चाहिए (जो वास्तव में वे हैं)।

यह सटीक अभ्यास मोंगोडीबी डेवलपर प्रशिक्षण में शामिल है, जो स्कीमा डिज़ाइन का एक सुंदर विशिष्ट उदाहरण है।

निष्कर्ष है कि आप तीन संग्रह होना चाहिए:

उत्पाद
ग्राहकों
आदेश

आदेश का संदर्भ लेंगे ग्राहकों (वैकल्पिक ग्राहक संग्रह से कुछ जानकारी denormalizing) और वे उत्पादों का संदर्भ लेंगे (में आदेश की सरणी में वे शामिल होंगे)।

इन संग्रहों में और संग्रह, और सटीक फ़ील्ड आपके विशिष्ट उपयोग मामले पर निर्भर करते हैं, लेकिन मुझे इन तीनों की तुलना में कम संग्रह होने के लिए एक व्यवहार्य परिदृश्य नहीं दिख रहा है।

0

मोंगो संग्रह का उपयोग करता है, जिसे आप "टेबल" से कुछ हद तक सहसंबंधित कर सकते हैं, ताकि आपके यहां 4 संग्रह हो सकें। लेकिन ध्यान दें कि कोई भी कारण नहीं है कि आप "ऑर्डर" और "ऑर्डर आइटम" को "ऑर्डर" में गठबंधन नहीं कर पाएंगे, क्योंकि आपको प्रत्येक प्रविष्टि पर विचार करना होगा कि आप आरडीबीएमएस के साथ प्राप्त कर सकते हैं।

सोफे अलग है, जहां आप दस्तावेज़ों को बस स्टोर करते हैं। इस मामले में आप प्रत्येक दस्तावेज़ को उस दस्तावेज़ के "प्रकार" के साथ ध्वजांकित कर सकते हैं। फिर आप दृश्य फ़ंक्शंस बना सकते हैं जो आपको मानचित्र/कम के माध्यम से आवश्यक डेटा वापस कर सकते हैं।

इनमें से किसी के साथ, एक प्रश्न में सब कुछ करने पर भी लटका नहीं है, क्योंकि यह हमेशा संभव नहीं होता है।

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

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे