100,000 मित्रों के साथ नीचे प्रतिस्पर्धी स्कीमा को देखते हुए मुझे अपनी ज़रूरतों के लिए सबसे अधिक कुशलता प्राप्त करने में दिलचस्पी है।MongoDB एम्बेडेड बनाम सरणी उप दस्तावेज़ प्रदर्शन
Doc1 (user_id पर सूचकांक)
{
"_id" : "…",
"user_id" : "1",
friends : {
"2" : {
"id" : "2",
"mutuals" : 3
}
"3" : {
"id" : "3",
"mutuals": "1"
}
"4" : {
"id" : "4",
"mutuals": "5"
}
}
}
Doc2 (यौगिक बहु user_id & friends.id पर कुंजी सूचकांक)
{
"_id" : "…",
"user_id" : "1",
friends : [
{
"id" : "2",
"mutuals" : 3
},
{
"id" : "3",
"mutuals": "1"
},
{
"id" : "4",
"mutuals": "5"
}
]}
मैं पर किसी भी जानकारी मिल नहीं कर पा रहे उप क्षेत्र पुनर्प्राप्ति की दक्षता। मुझे पता है कि मोंगो बीएसओएन के रूप में आंतरिक रूप से डेटा लागू करता है, इसलिए मैं सोच रहा हूं कि इसका मतलब प्रक्षेपण लुकअप एक बाइनरी ओ (लॉग एन) है?
विशेष रूप से, उपयोगकर्ता_आईडी को यह पता लगाने के लिए दिया गया है कि दोस्त_आईडी वाला कोई मित्र मौजूद है, प्रत्येक स्कीमा पर दो अलग-अलग प्रश्न कैसे तुलना करेंगे? (उपर्युक्त इंडेक्स मानते हैं) ध्यान दें कि इससे वास्तव में कोई फर्क नहीं पड़ता कि क्या लौटाया गया है, केवल अगर मित्र मौजूद है तो शून्य नहीं लौटाया जाता है।
Doc1col.find({user_id : "…"}, {"friends.friend_id"})
Doc2col.find({user_id : "…", "friends.id" : "friend_id"}, {"_id":1})
ब्याज की बात यह है कि $ सेट संशोधक कैसे काम करता है। स्कीमा 1 के लिए, Doc1col.update({user_id : "…"}, {"$set" : {"friends.friend_id.mutuals" : 5})
क्वेरी दी गई है, दोस्तों पर लुकअप कैसे करता है .friend_id काम करता है? क्या यह एक ओ (लॉग एन) ऑपरेशन है (जहां एन दोस्तों की संख्या है)?
स्कीमा 2 के लिए, क्वेरी Doc2col.update({user_id : "…", "friends.id" : "friend_id"}, {"$set": {"friends.$.mutuals" : 5})
उपर्युक्त की तुलना कैसे करेगी?
सरणी शैली (Doc2) के साथ जाएं क्योंकि गतिशील कुंजी लगभग सही दृष्टिकोण नहीं हैं। साथ ही, स्मार्ट कोट्स का उपयोग न करें (यह कानूनी वाक्यविन्यास नहीं है और इसे पढ़ना मुश्किल है)। – JohnnyHK
मुझे लगता है कि डॉक 2 अतिरिक्त स्टोरेज के कुछ बाइट्स की तरह उपयोग करेगा, लेकिन @ जॉनीनीएचके का कहना है कि डॉक 1 वास्तव में एक अच्छा दृष्टिकोण नहीं है, मुझे डॉक 1 का उपयोग करने वाले लोगों की संख्या पर भरोसा करें, फिर उन्हें एहसास है कि उन्हें कुछ भी करने के लिए डॉक 2 पर जाना है उनकी स्कीमा के साथ ... – Sammaye
सलाह के लिए धन्यवाद। @ सैमये डॉक 2 कुछ बाइट्स अतिरिक्त स्टोरेज का उपयोग क्यों करेगा? क्या आप इंडेक्स का जिक्र कर रहे हैं? बीटीडब्ल्यू स्मार्ट उद्धरण प्रतिलिपि पेस्ट –