चर्चा के प्रयोजनों के लिए आइए एक FourSquare परिदृश्य पर विचार करें।
परिदृश्य
संस्थाओं:
- उपयोगकर्ता
- स्थान
रिश्तों:
- चेकइन: उपयोगकर्ता <-> स्थान, कई से कई
- मित्र: उपयोगकर्ता <-> उपयोगकर्ता, कई से कई
डेटाबेस डिजाइन
इनमें सबसे अधिक त्रुटियां होंगी, कृपया उन्हें इंगित करें।
आरडीबीएमएस
टेबल्स:
- उपयोगकर्ता
- स्थान
- चेकइन (जंक्शन)
- मित्र (जंक्शन)
पेशेवरों:
- CAP: संगति, उपलब्धता
विपक्ष:
- CAP: विभाजन सहिष्णुता, उर्फ़ शारडिंग
- योजनाओं = अनम्य संरचना
- गरीब प्रतिकृति?
ग्राफ़
वस्तुओं:
- उपयोगकर्ता
- स्थान
किनारों:
- मित्र: उपयोगकर्ता <-> उपयोगकर्ता
- चेकिन्स: उपयोगकर्ता -> स्थान
- टाइमस्टैम्प होता है
पेशेवरों:
- CAP: संगति, उपलब्धता?
- सहजता, आसानी से परिवर्तनशील वस्तुओं और किनारों
- उदाहरण के लिए ग्राफ ट्रैवर्सल प्रश्न:
- क्लस्टरिंग
- दोस्तों के समूह खोजना
- ऐसे ही लोगों द्वारा पसंद किए गए रेस्तरां खोजना
- कोई अन्य सामान्य / उपयोगी प्रश्न?
- क्लस्टरिंग
विपक्ष:
- CAP: विभाजन सहिष्णुता?
दस्तावेज़ / वस्तु
3 अलग डेटाबेस?
- उपयोगकर्ता
- मित्रों की सूची
- चेकइन
- टाइमस्टैम्प
- उपयोगकर्ता
- स्थान
- स्थान
पेशेवरों:
- CAP: उपलब्धता, विभाजन सहिष्णुता
- सहजता, आसानी से परिवर्तनशील वस्तुओं
विपक्ष:
- CAP: संगति
प्रशन
रिकॉर्ड के लिए, वे MongoDB का उपयोग करके समाप्त हो गए। उपरोक्त सभी प्रश्न चिह्नों के अतिरिक्त:
- मुझे यकीन नहीं है कि दस्तावेज़ डेटाबेस को कैसे लागू किया जाए।
- दस्तावेज़ डेटाबेस विभाजन सहिष्णुता कैसे प्राप्त करते हैं?
- एक उपयोगकर्ता के चेकइन प्राप्त करने के लिए, मुझे लगता है कि ऑपरेशन सभी चेकइनों को पार्स कर देगा और उपयोगकर्ता नाम (मानचित्र + फ़िल्टर) के लिए मेटाडेटा फ़िल्टर करेगा। प्रत्येक उपयोगकर्ता के लिए 1,000,000+ दस्तावेजों को पार्स करने का प्रदर्शन बहुत खराब होगा। मुझे लगता है कि यह सही व्यवहार नहीं है?
- क्या अन्य समर्थक / विपक्ष हैं?