मैं सिर्फ मोंगोडीबी प्रोजेक्ट शुरू कर रहा हूं और मोंगोडीबी/नोएसक्यूएल स्कीमा सीखने का मौका देता हूं। यह एक लाइव चैट ऐप होगा और स्टैक में शामिल हैं: रेल 3, रूबी 1.9.2, डेविस, मोंगोइड/मोंगोडीबी, कैरियरवेव, रेडिस, JQuery।चैट ऐप के लिए मोंगो डीबी स्कीमा पर सलाह की आवश्यकता है। एंबेडेड बनाम संबंधित दस्तावेज़
मैं लाइव चैट मतदान/संदेश कतार अलग से संभालेगा। सुनिश्चित नहीं है कि अभी तक, या तो Node.js, एपीई या कस्टम EventMachine ऐप। लेकिन मोंगो के संबंध में, मैं ऐप में अन्य सभी चीज़ों के लिए इसका उपयोग करने के बारे में सोच रहा हूं, विशेष रूप से चैट लॉग और ऐतिहासिक प्रतिलेख।
मेरा सवाल यह है कि स्कीमा को कैसे डिजाइन करना सबसे अच्छा है क्योंकि मेरा पिछला अनुभव MySQL और रिलेशनल डीबी स्कीमा के साथ रहा है। और एक उप-प्रश्न के रूप में, हमारे लिए एम्बेडेड दस्तावेज़ बनाम संबंधित दस्तावेज़ों के लिए सबसे अच्छा कब है।
एप्लिकेशन होगा:
- से अधिक खातों के कई कमरों में जो
- एकाधिक कमरे
- प्रति कमरा एक से अधिक उपयोगकर्ता
- कमरों में एक उपयोगकर्ता
- एकाधिक में होने की अनुमति दी है की सूची उपयोगकर्ता चैट प्रति कमरा
- प्रति कमरा और प्रति उपयोगकर्ता आधार पर खोजने योग्य चैट लॉग
- किसी दिए गए चैट
को देखते हुए मोंगो (कम से कम पिछली बार मैं जाँच की) के लिए वैकल्पिक फ़ाइल अनुलग्नक, 4MB के एक दस्तावेज़ सीमा होती है मैं कमरे के लिए एक संग्रह होने और एम्बेडेड दस्तावेजों के रूप में सभी कमरे चैट के भंडारण नहीं लगता कि बहुत अच्छा काम करेगा।
- प्रत्येक कमरे में वापस करने के लिए संबंधित है खातों के लिए
- एक संग्रह:
मैं क्या अब तक सोचा है से, मैं की तरह कुछ करने का सोच रहा हूँ एक खाता
- कमरे में सभी चैट संदेशों के लिए चैट संग्रह में संबंधित दस्तावेज
- एम्बेडेड दस्तावेज़ वर्तमान में सभी उपयोगकर्ताओं को सूचीबद्ध करता है वह कमरे
- एक संग्रह:
- एक उन
- एंबेडेड दस्तावेज़ सभी कमरों उपयोगकर्ता
- एंबेडेड सभी कमरों उपयोगकर्ता के लिए अनुमति दी है लिस्टिंग दस्तावेज़ में है लिस्टिंग
- के लिए संग्रह चैट
- प्रत्येक चैट कमरे संग्रह में एक कमरे से संबंधित है
- प्रत्येक चैट उपयोगकर्ता संग्रह
- वैकल्पिक अपलोड फ़ाइल अटैचमेंट के बारे में जानकारी के साथ एम्बेडेड दस्तावेज़ में उपयोगकर्ता से संबंधित है।
मेरे मुख्य चिंता जब तक यह समाप्त होता है एक संबंधपरक स्कीमा की तरह लग रही मैं कितनी दूर जाना है और मैं उद्देश्य विफल है? एम्बेडिंग की तुलना में निश्चित रूप से अधिक संबंधित है।
एक और चिंता यह है कि संबंधित दस्तावेजों का संदर्भ मैंने सुनाई गई एम्बेडेड दस्तावेजों तक पहुंचने से बहुत धीमा है।
- मुझे एक खाता
- मुझे एक कमरे में सभी चैट दें के लिए सभी कमरों दें (या तिथि सीमा के माध्यम से फ़िल्टर किए गए)
- मुझे सभी चैट दें:
मैं जैसे कई व्यापक क्वेरी बनाना चाहते किसी विशिष्ट उपयोगकर्ता से
- किसी दिए गए कमरे में या किसी दिए गए ऑर्ग
- आदि के लिए मुझे सभी अपलोड की गई फ़ाइलों दें
स्कीमा को स्केल करने के तरीके को कुशलतापूर्वक कैसे व्यवस्थित करने के बारे में कोई सुझाव? सबको धन्यवाद।
अंत में आपने किस दिशा में चयन किया था? आपने मोंगो में संबंधित दस्तावेजों के साथ डेटा अखंडता को कैसे संभाला? क्या आपने मोंगो के साथ किसी भी तिथि अखंडता के मुद्दों को समाप्त किया और यदि ऐसा है तो आप उनके आसपास कैसे पहुंचे? –