मास्टर-मास्टर बनाम मास्टर-दास डेटाबेस वास्तुकला?


117

मैंने दो तरह के डेटाबेस आर्किटेक्चर के बारे में सुना है।

  • गुरु-गुरु

  • प्रमुख अधीन

क्या आज के वेब के लिए मास्टर-मास्टर अधिक उपयुक्त नहीं है क्योंकि यह Git की तरह है, हर इकाई में डेटा का पूरा सेट है और यदि कोई नीचे जाता है, तो यह काफी मायने नहीं रखता है।

मास्टर-दास मुझे SVN की याद दिलाता है (जो मुझे पसंद नहीं है) जहां आपके पास एक केंद्रीय इकाई है जो चीज़ को संभालती है।

प्रशन:

  1. प्रत्येक का भला - बुरा क्या है?

  2. यदि आप अपने मोबाइल फोन में आईफोन जैसे स्थानीय डेटाबेस रखना चाहते हैं, तो कौन सा अधिक उपयुक्त है?

  3. क्या इनमें से किसी एक का चुनाव एक महत्वपूर्ण कारक है?


1
कैप प्रमेय -> संगति उपलब्धता विभाजन सहिष्णुता बताती है कि आप तीनों एक साथ नहीं हो सकते। आवेदन के आधार पर आप किसी एक को चुन सकते हैं।
प्रीतम बनर्जी

जवाबों:


87

हम उपलब्धता, स्थिरता और जटिलता का व्यापार कर रहे हैं। पहले अंतिम प्रश्न को संबोधित करने के लिए: क्या यह मामला है? हाँ बहुत ज्यादा! आपके डेटा को कैसे प्रबंधित किया जाए, इस संबंध में विकल्प पूरी तरह से मौलिक हैं, और निर्णयों को चकमा देते हुए कोई "सर्वश्रेष्ठ अभ्यास" नहीं है। आपको अपनी विशेष आवश्यकताओं को समझने की आवश्यकता है।

एक बुनियादी तनाव है:

एक प्रति: संगति आसान है, लेकिन अगर ऐसा होता है कि हर कोई पानी से बाहर है, और अगर लोग दूरस्थ हैं, तो भयावह संचार लागत का भुगतान कर सकते हैं। पोर्टेबल उपकरणों को लाएं, जिन्हें डिस्कनेक्ट करने की आवश्यकता हो सकती है, चित्र में और एक प्रति इसे काट नहीं पाएगी।

मास्टर स्लेव: निरंतरता बहुत मुश्किल नहीं है क्योंकि डेटा के प्रत्येक टुकड़े में एक मालिक का मालिक होता है। लेकिन तब आप क्या करते हैं यदि आप उस मास्टर को नहीं देख सकते हैं, किसी प्रकार के स्थगित कार्य की आवश्यकता है।

मास्टर-मास्टर: अच्छा है अगर आप इसे काम कर सकते हैं तो यह सब कुछ प्रदान करने लगता है, असफलता का कोई एक बिंदु नहीं, हर कोई हर समय काम कर सकता है। इसके साथ परेशानी यह है कि पूर्ण स्थिरता को संरक्षित करना बहुत कठिन है। अधिक के लिए विकिपीडिया लेख देखें ।

विकिपीडिया के फायदे और नुकसान का अच्छा सारांश है

लाभ

  • यदि एक मास्टर विफल रहता है, तो अन्य स्वामी डेटाबेस को अपडेट करना जारी रखेंगे।

  • मास्टर्स कई भौतिक साइटों में स्थित हो सकता है अर्थात पूरे नेटवर्क में वितरित किया जा सकता है।

नुकसान

  • अधिकांश मल्टी-मास्टर प्रतिकृति सिस्टम केवल शिथिल सुसंगत हैं, अर्थात आलसी और अतुल्यकालिक, ACID गुणों का उल्लंघन करते हैं।

  • उत्सुक प्रतिकृति सिस्टम जटिल हैं और कुछ संचार विलंबता का परिचय देते हैं।

  • संघर्ष समाधान जैसे मुद्दे अचूक बन सकते हैं क्योंकि इसमें शामिल नोड्स की संख्या बढ़ जाती है और आवश्यक विलंबता कम हो जाती है।


CouchDB MVCC का उपयोग करता है। जब मैं एक बार फिर से ऑनलाइन लाया जाता है, तो कई मास्टर्स कारणों से सामना करने वाली संगतता समस्या को संभालता है, वर्जनिंग सिस्टम स्थिरता को संभालता है और इस मास्टर को सही अपडेटेड डेटा मिलेगा।
never_had_a_name 4

8
लेकिन क्या होता है जब दो उपयोगकर्ता कुछ विरोधाभासी करते हैं - जैसे दो उपयोगकर्ता स्टॉक में अंतिम आइटम खरीदने का प्रयास करते हैं? एक परिदृश्य की कल्पना करें, जहां हमारे दो स्वामी हैं और प्रत्येक उपयोगकर्ता एक अलग स्वामी को मार रहा है, तो हमें किसी प्रकार के कॉन्सेमिनेशन गड़बड़ मिलेंगे - अंत में या तो अखंडता का समझौता होगा, या उपलब्धता कम हो जाएगी - एक उपयोगकर्ता को "सॉरी मेट, कहा जाता है" मैं वास्तव में नहीं जानता कि क्या हो रहा है जब तक कि मैं दूसरे मास्टर से बात नहीं करता हूं ", या हमारे पास एक बुरा संघर्ष है जब कॉम्स को बहाल किया जाता है - और वे वास्तव में जटिल हो सकते हैं।
djna

2
वित्तीय व्यापार या शेयर बाजार क्या उपयोग करते हैं? वे हर समय इस समस्या को मार रहे होंगे?
CMCDragonkai

3
जहाँ आपको एक सिंगल, अपडेटिंग, "ट्रुथ" (जैसा कि फाइनेंशियल सिस्टम में) चाहिए, आपको मास्टर / स्लेव या वास्तव में सिर्फ मास्टर चाहिए। जहां आप बाद में सच्चाई को पाट सकते हैं (सोचें कि Git की तरह एक संशोधन नियंत्रण प्रणाली में संघर्षों को मिलाएं) तो आप मास्टर / मास्टर का उपयोग कर सकते हैं।
djna

djna एक बहुत ही सामयिक अवलोकन करता है। डेटाबेस में अब "टाईब्रेकर" तर्क के कुछ प्रकार होने चाहिए। सबसे महत्वपूर्ण क्या है? सबसे "हालिया" डेटा? यह समझ में आता है कि यदि आप किसी क्षेत्र को फिर से लिख रहे हैं, लेकिन इसका कोई मतलब नहीं है कि आप "काउंटर" कर रहे हैं और आपको परिणाम वापस करने से पहले वेतन वृद्धि (या क्षरण) के लिए सभी प्रक्रियाओं की आवश्यकता है। विशेष रूप से इसलिए आप आउट-ऑफ-स्टॉक आइटम नहीं बेचते हैं। यदि आपके पास एक नेटवर्क विभाजन था, तो जब एक साथ वापस आता है तो क्या होता है? यह सब सीएपी प्रमेय सामान है। यह भी है जहाँ आप पाक्सोस जैसे एल्गोरिदम हो सकते हैं, विभिन्न मशीनों के बीच आम सहमति विकसित करने के लिए।
पीटर कॉर्लेस

95

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

  1. मास्टर-दास की प्रतिकृति
  2. मास्टर-मास्टर प्रतिकृति
  3. MySQL क्लस्टर

मैंने अपने उपयोग के मामले के लिए MySQL क्लस्टर का उपयोग करने के लिए समझौता करने का फैसला किया है। हालाँकि कृपया विभिन्न पेशेवरों और विपक्षों के लिए नीचे देखें जिन्हें मैंने संकलित किया है

1. मास्टर-दास प्रतिकृति

पेशेवरों

  • मास्टर को प्रभावित किए बिना विश्लेषणात्मक अनुप्रयोग दास (एस) से पढ़ सकते हैं
  • मास्टर पर अपेक्षाकृत कोई प्रभाव नहीं के पूरे डेटाबेस का बैकअप
  • दासों को ऑफ़लाइन लिया जा सकता है और बिना किसी डाउनटाइम के मास्टर को वापस सिंक किया जा सकता है

विपक्ष

  • असफलता के उदाहरण में, एक गुलाम को अपनी जगह लेने के लिए मास्टर को पदोन्नत करना पड़ता है। कोई स्वचालित विफलता नहीं
  • डाउनटाइम और संभवतः मास्टर के विफल होने पर डेटा का नुकसान
  • सभी लिखने के लिए भी मास्टर-गुलाम डिजाइन में मास्टर करना पड़ता है
  • प्रत्येक अतिरिक्त दास मास्टर को कुछ भार जोड़ते हैं क्योंकि बाइनरी लॉग को पढ़ना पड़ता है और प्रत्येक दास को डेटा की प्रतिलिपि बनाई जाती है
  • आवेदन को फिर से शुरू करना पड़ सकता है

2. मास्टर-मास्टर प्रतिकृति

पेशेवरों

  • आवेदन दोनों स्वामी से पढ़ सकते हैं
  • वितरण दोनों मास्टर नोड्स में भार लिखते हैं
  • सरल, स्वचालित और त्वरित विफलता

विपक्ष

  • लगातार सुसंगत
  • कॉन्फ़िगर और तैनात करने के लिए मास्टर-दास जितना सरल नहीं है

3. MySQL क्लस्टर

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

देखें MySQL क्लस्टर 101 अधिक जानकारी के लिए

पेशेवरों

  • (उच्च उपलब्धता) विफलता का कोई एकल बिंदु नहीं
  • बहुत ऊंचा थ्रूपुट
  • 99.99% अपटाइम
  • ऑटो Sharding
  • वास्तविक समय जवाबदेही
  • ऑन-लाइन ऑपरेशन (स्कीमा परिवर्तन आदि)
  • वितरित लिखते हैं

विपक्ष

आप आर्किटेक्चर आरेखों सहित मेरे ब्लॉग पूर्ण विराम के लिए यात्रा कर सकते हैं जो 3 वर्णित आर्किटेक्चर के बारे में और अधिक विवरण में जाते हैं।


2
क्या आप भी गलेरा के बारे में कुछ लिख सकते हैं? Percona XtraDB क्लस्टर?
इवानोव

"आवेदन को फिर से शुरू करना पड़ सकता है" विपक्ष के हिस्से के रूप में। इसका क्या मतलब है?
लिली

1
यदि आपको डीबी सर्वर का आईपी बदलना है तो इसे एप्लिकेशन में कॉन्फ़िगर करना होगा और साथ ही नए चुने हुए मास्टर से पढ़ना होगा। परिणामस्वरूप आपको नई कॉन्फ़िगरेशन सेटिंग्स लेने के लिए अपने ऐप को पुनरारंभ करना पड़ सकता है। यह सब आपके वर्तमान सेटअप पर निर्भर करता है। आप इसे बायपास करने के लिए एक फ्लोटिंग आईपी का उपयोग कर सकते हैं। बस आपको एक सामान्य विचार देने के लिए
Skillachie
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.