आपको दस्तावेज़ बनाम संबंधपरक बनाम ग्राफ़ डेटाबेस का उपयोग कब करना चाहिए? [बन्द है]


29

चर्चा के प्रयोजनों के लिए आइए एक FourSquare परिदृश्य पर विचार करें।

परिदृश्य

संस्थाओं:

  • उपयोगकर्ता
  • स्थान

रिश्तों:

  • चेकइन: उपयोगकर्ता <-> स्थान, कई से कई
  • मित्र: उपयोगकर्ता <-> उपयोगकर्ता, कई से कई

डेटाबेस डिजाइन

इनमें सबसे अधिक त्रुटियां होंगी, कृपया उन्हें इंगित करें।

आरडीबीएमएस

टेबल्स:

  • उपयोगकर्ता
  • स्थान
  • चेकइन (जंक्शन)
  • मित्र (जंक्शन)

पेशेवरों:

  • CAP: संगति, उपलब्धता

विपक्ष:

  • CAP: विभाजन सहिष्णुता, उर्फ़ शारडिंग
  • योजनाओं = अनम्य संरचना
  • गरीब प्रतिकृति?

ग्राफ़

वस्तुओं:

  • उपयोगकर्ता
  • स्थान

किनारों:

  • मित्र: उपयोगकर्ता <-> उपयोगकर्ता
  • चेकिन्स: उपयोगकर्ता -> स्थान
    • टाइमस्टैम्प होता है

पेशेवरों:

  • CAP: संगति, उपलब्धता?
  • सहजता, आसानी से परिवर्तनशील वस्तुओं और किनारों
  • उदाहरण के लिए ग्राफ ट्रैवर्सल प्रश्न:
    • क्लस्टरिंग
      • दोस्तों के समूह खोजना
      • ऐसे ही लोगों द्वारा पसंद किए गए रेस्तरां खोजना
    • कोई अन्य सामान्य / उपयोगी प्रश्न?

विपक्ष:

  • CAP: विभाजन सहिष्णुता?

दस्तावेज़ / वस्तु

3 अलग डेटाबेस?

  • उपयोगकर्ता
    • मित्रों की सूची
  • चेकइन
    • टाइमस्टैम्प
    • उपयोगकर्ता
    • स्थान
  • स्थान

पेशेवरों:

  • CAP: उपलब्धता, विभाजन सहिष्णुता
  • सहजता, आसानी से परिवर्तनशील वस्तुओं

विपक्ष:

  • CAP: संगति

प्रशन

रिकॉर्ड के लिए, वे MongoDB का उपयोग करके समाप्त हो गए। उपरोक्त सभी प्रश्न चिह्नों के अतिरिक्त:

  1. मुझे यकीन नहीं है कि दस्तावेज़ डेटाबेस को कैसे लागू किया जाए।
  2. दस्तावेज़ डेटाबेस विभाजन सहिष्णुता कैसे प्राप्त करते हैं?
  3. एक उपयोगकर्ता के चेकइन प्राप्त करने के लिए, मुझे लगता है कि ऑपरेशन सभी चेकइनों को पार्स कर देगा और उपयोगकर्ता नाम (मानचित्र + फ़िल्टर) के लिए मेटाडेटा फ़िल्टर करेगा। प्रत्येक उपयोगकर्ता के लिए 1,000,000+ दस्तावेजों को पार्स करने का प्रदर्शन बहुत खराब होगा। मुझे लगता है कि यह सही व्यवहार नहीं है?
  4. क्या अन्य समर्थक / विपक्ष हैं?

(1) आपको व्यापार की अवधि में 2 तालिकाओं के बीच के पुनर्मिलन को समझने की आवश्यकता है। ऐसा इसलिए है क्योंकि समानांतर रिश्ते हो सकते हैं। उदाहरण के लिए, उपयोगकर्ता <-> उपयोगकर्ता 1 मिमी का संबंध नहीं बताते हैं। इसका मतलब 1 से अधिक हो सकता है। उदाहरण के लिए: एक उपयोगकर्ता किसी अन्य उपयोगकर्ता को पसंद करता है और एक उपयोगकर्ता दूसरे उपयोगकर्ताओं से घृणा करता है। ये 2 रिश्ते हैं। (२) यह मदद करेगा यदि आप संक्षेप में बता सकते हैं कि आप 'वास्तव में' क्या चाहते हैं।
NoChance

@EmmadKareem: (1) मैं परिदृश्य को जटिल नहीं देख रहा हूँ। एकमात्र उपयोगकर्ता <-> उपयोगकर्ता संबंध जिसमें मेरी रुचि है, एक पारस्परिक मित्रता है, जो कई कनेक्शनों के लिए एक है। (२) मैं उत्तर दिए गए पोस्ट के नीचे सूचीबद्ध ४ प्रश्न चाहूँगा।
wting

जवाबों:


13

आपका प्रश्न सेमेस्टर-लॉन्ग कॉलेज पाठ्यक्रम का विषय हो सकता है। आपको इसे प्रबंधनीय विखंडू में तोड़ने की आवश्यकता है। जैसे, मैं अभी कुछ आंशिक उत्तर बाहर फेंकूंगा।

किस तरह के डेटाबेस का उपयोग करना है, यह तय करने में देखने वाली पहली चीजों में से एक है कि आप किस प्रकार के प्रश्नों को चलाएंगे और क्या आप डेटाबेस बनाने के लिए पहले से उन सभी को जान पाएंगे। SQL डेटाबेस डेटाबेस में सभी डेटा में शक्तिशाली और लचीले प्रश्नों का लाभ है। ग्राफ़ डेटाबेस में अत्यधिक विशिष्ट क्वेरी क्षमताएं होती हैं जो उन्हें ग्राफ़ डेटा के लिए सर्वश्रेष्ठ बनाती हैं और गैर-ग्राफ़ डेटा के लिए वास्तव में खराब होती हैं (हालाँकि ग्राफ़ डेटाबेस SQL ​​डेटाबेस में घटक हो सकते हैं)। NoSQL डेटाबेस डेटा को पुनः प्राप्त करने और संचालित करने की उनकी क्षमता में बहुत अधिक सीमित हैं।

अगला यह है कि आप एसीआईडी ​​गुणों के बारे में कैसा महसूस करते हैं: एटमॉसिटी, कंसिस्टेंसी, अलगाव और स्थायित्व। SQL डेटाबेस सभी के बारे में मजबूत गारंटी प्रदान करता है 4. NoSQL डेटाबेस आमतौर पर सभी 4 का वादा नहीं करते हैं, और वे जिस तरह से रवाना होते हैं, वे विभिन्न अंतरों में से हैं जो विभिन्न NoSQL डेटाबेस कार्यान्वयन को अलग करते हैं। दूसरी ओर, विभाजन के दौरान संगति और उपलब्धता की गारंटी देना संभव नहीं है ( ब्रूअर की कैप देखें ), इसलिए यदि आप विभाजन के पक्ष में पूर्ण उपलब्धता पर जोर देते हैं, तो कोई भी SQL डेटाबेस नहीं करेगा। व्यक्तिगत रूप से, मैं डेटाबेस में डेटा की स्थायित्व के बारे में बहुत परवाह करता हूं, क्योंकि मैं आमतौर पर डेटा के साथ काम करता हूं जहां एक 0.0001% डेटा हानि अस्वीकार्य है, और डेटा सेट बहुत छोटा है कि मुझे विभाजन के बारे में चिंता करने की आवश्यकता नहीं है, इसलिए मुझे भारी SQL डेटाबेस के पक्ष में।

एक अन्य बहुत ही व्यावहारिक विचार सर्वर कोड की गुणवत्ता, डेटाबेस प्रशासक और प्रोग्रामर की उपलब्धता, उत्पन्न होने वाली समस्याओं के लिए उपलब्ध समर्थन की गुणवत्ता, आपके एप्लिकेशन को डेटाबेस से जोड़ने के लिए इंटरफ़ेस लाइब्रेरी की गुणवत्ता और उपलब्धता है, और इसी तरह। MySQL लगभग 2 दशकों के लिए रहा है, इसमें बगों के विशाल बहुमत का उपयोग किया गया है, बहुत व्यापक रूप से उपयोग किया जाता है और इसलिए दोनों कर्मियों का बहुत अच्छा समर्थन और शानदार उपलब्धता है, और अगले 10 वर्षों तक समर्थित होने की संभावना है। आप उन बातों के बारे में कोई भी बात नहीं कह सकते।

ध्यान दें कि जब Google ने व्यावहारिक रूप से NoSQL डेटाबेस का आविष्कार किया था, तो वे पूरे विश्व व्यापी वेब के कैश्ड और अनुक्रमित संस्करण को संग्रहीत कर सकते थे, वे अभी भी कुछ चीजों के लिए MySQL का उपयोग करते हैं।


1
मुझे लगता है कि मैं बहुत कुछ पूछ रहा था, इसलिए एक सामान्य उत्तर ठीक होता। मुख्य प्रश्न ये हैं: (1) जब आप शार्पिंग रेंज का उपयोग करके लॉजिक में क्षैतिज रूप से शार्पिंग को लागू कर सकते हैं, तो कथित डेटाबेस के लिए दस्तावेज़ डेटाबेस का उपयोग क्यों करें? (२) फोरस्क्यूअर परिदृश्य में उपयोग करने के लिए आप एक डॉक्यूमेंट डेटाबेस को कैसे डिज़ाइन करेंगे और यह कुछ सामान्य उपयोगों को कैसे दर्शाता है (उपयोगकर्ता के चेकइन दिखाते हैं, उपयोगकर्ता के दोस्तों को दिखाते हैं, वर्तमान में चेक किए गए उपयोगकर्ताओं को दिखाते हैं)?
wting

1
@William, Google के माध्यम से आपके सवालों के जवाब देने वाले दर्जनों लेख आसानी से सुलभ हैं। यहां तक ​​कि अकेले स्टैक ओवरफ्लो पर कई । अपना होमवर्क करें।
पुराने प्रो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.