से संबंधित यह प्रश्न सभी नोएसक्यूएल और विशेष रूप से एमओएनओडीबी विशेषज्ञों के लिए है। मैंने एक परियोजना के लिए एक रिलेशनल डीबी डिजाइन करके शुरू किया लेकिन क्लाइंट चाहता है कि हम एक डीबी का उपयोग करें जो आसानी से स्केल कर सके। इसे प्राप्त करने के लिए हमने mongoDB का उपयोग करने का निर्णय लिया है। इन दिनों मुझे NoSQL के लिए मेरे संबंध मॉडल मैपिंग में परेशानी हो रही है।नोएसQL डाटाबेस
विकल्प:
मैं जब यह MongoDB के लिए परिवर्तित करने के लिए कुछ विकल्प हैं: मैं जो अन्य तालिकाओं का एक बहुत कुछ के साथ एक बहुत-से-अनेक संबंध नहीं एक उपयोगकर्ता तालिका के रूप में नीचे बताया गया है
users:{
_id:<user_id>,
battles:{[battle1, battle2, ...]},
items:{[item1, item2, ...]},
locations:{[location1, location2, ...]},
units:{[unit1, unit2, ...]},
}
battles:{
<battle_info>
}
locations:{
<location_info>
}
units:{
<units_info>
}
items:{
<items_info>
}
Option2 (उन में केवल विदेशी कुंजी के साथ):
1 (उन में पूरा पंक्तियों के साथ)users:{
_id:<user_id>,
battles:{[battle1_id, battle2_id, ...]},
items:{[item1_id, item2_id, ...]},
locations:{[location1_id, location2_id, ...]},
units:{[unit1_id, unit2_id, ...]},
}
battles:{
<battle_info>
}
locations:{
<location_info>
}
units:{
<units_info>
}
items:{
<items_info>
}
विकल्प 3 (अन्य तालिकाओं में उपयोगकर्ता आईडी): के रूप में हम अन्य तालिकाओं की पूरी पंक्तियों को जोड़ रहे हैं
users:{
_id:<user_id>,
}
battles:{
<battle_info>,
user:{[user1_id, user2_id, ...]}
}
locations:{
<location_info>,
user:{[user1_id, user2_id, ...]}
}
units:{
<units_info>,
user:{[user1_id, user2_id, ...]}
}
items:{
<items_info>,
user:{[user1_id, user2_id, ...]}
}
विकल्प 1 दोहराव का एक बहुत है। इसमें एक मुद्दा यह है कि यदि कोई निश्चित आइटम या युद्ध अपडेट किया जाता है, तो हमें उपयोगकर्ताओं की तालिका में इसकी सभी घटनाएं मिलनी होंगी और उन्हें अपडेट भी करना होगा। लेकिन यह हमें हमेशा एक पूर्ण उपयोगकर्ता ऑब्जेक्ट का लाभ प्रदान करता है जिसे लॉगिन के समय ग्राहक एप्लिकेशन को सौंप दिया जा सकता है।
विकल्प 2 अधिक रिलेशनल है जहां हमारे पास उपयोगकर्ता तालिका में अन्य तालिकाओं के mongoIds हैं। इस विकल्प का लाभ यह है कि युद्ध या वस्तु को अद्यतन करने की लागत बहुत अधिक नहीं होती है क्योंकि पंक्तियों का संदर्भ नहीं दिया जाता है। दूसरी तरफ, जब उपयोगकर्ता लॉग इन करता है तो हमें संपूर्ण संदर्भ ऑब्जेक्ट के जवाब देने के लिए सभी संदर्भित इकाइयों, युद्धों, वस्तुओं और स्थानों को ढूंढना होगा।
विकल्प 3 विकल्प 2 के विपरीत है जहां उपयोगकर्ता तालिका के mongoIds अन्य तालिकाओं में रखा जाता है। यह विकल्प मेरे लिए बहुत अपील नहीं करता है।
मैं वास्तव में किसी की मार्गदर्शिका या बेहतर मॉडल के साथ आने की सराहना करता हूं।
संपादित करें:
मूल रूप से यह एक MMORPG खेल है जहाँ कई ग्राहकों क्षुधा webservices के माध्यम से सर्वर से कनेक्ट होगा। डेटा स्टोर करने के लिए हमारे पास क्लाइंट पर स्थानीय डीबी है। मैं एक मॉडल चाहता हूं जिसके माध्यम से सर्वर एक पूर्ण उपयोगकर्ता ऑब्जेक्ट के साथ प्रतिक्रिया दे सकता है और उसके बाद क्लाइंट ऐप्स पर डेटा को अपडेट या सम्मिलित कर सकता है।
"बेहतर" एक उद्देश्य का विषय है। इस डेटा के लिए आपके एक्सेस पैटर्न क्या हैं? –
मूल रूप से यह एक mmorpg गेम है जहां एकाधिक क्लाइंट ऐप्स webservices के माध्यम से सर्वर से कनेक्ट होंगे। डेटा स्टोर करने के लिए हमारे पास क्लाइंट पर स्थानीय डीबी है। मैं एक मॉडल चाहता हूं जिसके माध्यम से सर्वर एक पूर्ण उपयोगकर्ता ऑब्जेक्ट के साथ प्रतिक्रिया दे सकता है और उसके बाद क्लाइंट ऐप्स पर बदला गया डेटा अपडेट या डालने – umair
रिलेशनल डेटाबेस स्केलिंग करने में काफी सक्षम हैं ... अंतर उस डेटा का प्रकार होना चाहिए जिसकी उन्हें उम्मीद है, एक दुर्भाग्यपूर्ण पूर्वकल्पना नहीं है कि आरडीबी केवल छोटे डेटा के लिए है, विस्तृत उत्तर के लिए बड़े –