मैं एक संदेश ऐप को संभालने के लिए एक अच्छी दस्तावेज़ संरचना के बारे में सोचने के बारे में सोच रहा हूं।संदेश ऐप के लिए MongoDB संरचना
मैं मूल रूप से वस्तुओं के तीन (या चार) प्रकार की जरूरत है:
- उपयोगकर्ता (उपयोगकर्ता नाम, ईमेल, पासवर्ड, आदि)
- संपर्क सूची (विभिन्न संपर्क या संपर्कों समूहों से युक्त)
- बातचीत
- संदेश (शामिल संदेश के मुख्य भाग, कुछ टाइमस्टैम्प और निर्माता।) (एक बातचीत कुछ व्यक्तियों के बीच संदेशों का एक संग्रह है)
मेरा विचार उपयोगकर्ता दस्तावेज़ में संपर्कों को एम्बेड करने के लिए और एक बातचीत दस्तावेज़ में संदेशों एम्बेड करने के लिए किया गया था:
1. उपयोगकर्ता
{
username: 'dev.puS',
usernameCanonical: 'dev.pus', // used for unique constraints
email: '[email protected],
emailCanonical: '[email protected],
salt: 'some hash',
password: 'hash with salt',
logs: { last_login: 12.06.2008, last_password_reset: 04.03.2007 },
state: { online: true, available: false },
contacts: [ user_id1, user_id2, user_id3 ]
}
2. वार्तालाप
{
members: [ user_id1, user_id2 ],
messages: [
{ author: user_2, body: 'Hi what's up' },
{ author: user_1, body: 'Nothing out here :(' },
{ author: user_2, body: 'Whanna ask some question on stackoverflow' },
{ author: user_1, body: 'Okay, lets go' }
]
}
इस स्कीमा के बारे में आप क्या सोचते हैं?
मुझे लगता है कि उन्हें अलग रखने के लिए बेहतर होगा (इसलिए प्रत्येक दस्तावेज़ के लिए स्वयं) क्योंकि प्रत्येक दस्तावेज़ में अलग-अलग अद्यतन आवृत्ति होती है। लेकिन मैं वास्तव में इस बारे में कोई अनुभव तो यह कुछ सलाह सुनने के लिए :)
सादर
एक MongoDB स्कीमा लग रहा है कभी नहीं है "अच्छा" या "बुरा" अपने आप में। आपको उन प्रश्नों और अपडेटों को विस्तारित करने की आवश्यकता है जिन्हें आप बनाना चाहते हैं। केवल तभी मूल्यांकन किया जा सकता है जब कोई दिया गया स्कीमा इन ऑपरेशन पैटर्न को उपयुक्त बनाता है। –
आपको डेटा आकारों के वितरण का अनुमान लगाने की भी आवश्यकता है, उदाहरण के लिए: अधिकतम, अधिकतम पर, बातचीत में कितने संदेश होंगे? यदि आप एम्बेड करना चाहते हैं तो यह महत्वपूर्ण हो सकता है। –
ठीक है, मैं इसे ध्यान में रखूंगा। क्या कैश के लिए यह एक आम तरीका है उदाहरण के लिए रेडिस वाले संदेश और सत्र समाप्त होने पर उन्हें सभी को मोंगो में सहेजने से बचाने के लिए? मैं एक "असंगठित" ऑब्जेक्ट –