2013-12-12 11 views
5

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

मान लीजिए कि लिखने के दौरान, कुछ बुरा होता है, और विभिन्न डायनेमो डीबी नोड्स में से कुछ असफल हो जाते हैं या एक-दूसरे से कनेक्टिविटी खो देते हैं। मेरे लेखन कार्यों का क्या होता है?

क्या वे दोनों ब्लॉक या असफल होंगे (सीएपी प्रमेय में "ए" का बलिदान)? क्या वे दोनों सफल होने लगेंगे और केवल बाद में यह पता चला है कि उनमें से एक को वास्तव में अनदेखा किया गया था ("सी" का बलिदान)? या डायनेमो डीबी सिस्टम में चल रहे कुछ जादू (लगातार हैशिंग?) के चलते वे किसी भी तरह से सही तरीके से काम करेंगे?

यह वास्तव में एक कठिन समस्या की तरह लगता है, लेकिन मुझे सशर्त लेखन के साथ उपलब्धता के मुद्दों की संभावना पर चर्चा करने में कुछ भी नहीं मिल रहा है (उदाहरण के लिए, उदाहरण के लिए, लगातार पढ़ता है, जहां उपलब्धता में कमी की संभावना स्पष्ट है)।

उत्तर

8

इस क्षेत्र में स्पष्ट जानकारी की कमी है लेकिन हम कुछ सुंदर मजबूत संदर्भ बना सकते हैं। बहुत से लोग मानते हैं कि डायनेमो डीबी अपने पूर्ववर्ती "डायनेमो" से सभी विचारों को लागू करता है, लेकिन ऐसा लगता है कि यह मामला प्रतीत नहीं होता है और दोनों को आपके दिमाग में अलग रखना महत्वपूर्ण है। अमेज़ॅन द्वारा Dynamo Paper में मूल डायनेमो सिस्टम का ध्यानपूर्वक वर्णन किया गया था। इनके बारे में सोचने में, यह भी सहायक होता है यदि आप डायनामो विचारों जैसे रीक और कैसंद्रा के आधार पर वितरित डेटाबेस से परिचित हैं। विशेष रूप से, Apache Cassandra जो सीएपी के संबंध में व्यापार-बंद की पूरी श्रृंखला प्रदान करता है।

डायनेमोडीबी की तुलना करके जो कैसंद्रा में उपलब्ध विकल्पों में स्पष्ट रूप से वितरित किया गया है, मुझे लगता है कि हम देख सकते हैं कि यह सीएपी स्पेस में कहां रखा गया है। अमेज़ॅन के मुताबिक "डायनेमोडीबी स्थायित्व सुनिश्चित करने के लिए प्रत्येक आइटम की कई प्रतियां रखता है। जब आपको अपने लेखन अनुरोध के लिए 'ऑपरेशन सफल' प्रतिक्रिया प्राप्त होती है, तो डायनेमो डीबी यह सुनिश्चित करता है कि लेखन एकाधिक सर्वरों पर टिकाऊ है। हालांकि, अपडेट को प्रचारित करने में समय लगता है सभी प्रतियों के लिए। " (Data Read and Consistency Considerations)। इसके अलावा, डायनेमो डीबी को डायनेमो के तरीके से संघर्ष समाधान करने के लिए एप्लिकेशन की आवश्यकता नहीं होती है। मान लीजिए कि वे जितना संभव हो उतना उपलब्धता प्रदान करना चाहते हैं, क्योंकि वे कहते हैं कि वे कई सर्वरों पर लिख रहे हैं, डायनमो डीबी में लिखते हैं कैसंड्रा QUORUM स्तर के बराबर हैं। साथ ही, ऐसा लगता है कि डायनेमो डीबी hinted handoff का समर्थन नहीं करता है, क्योंकि इससे परिस्थितियों के समाधान की आवश्यकता हो सकती है। अधिकतम उपलब्धता के लिए, एक असंगत पढ़ने केवल कैसंड्रस के ONE स्तर के बराबर होना चाहिए। हालांकि, लगातार पढ़ने के लिए कोरम लिखने के लिए QUORUM स्तर पढ़ने की आवश्यकता होगी (स्थिरता के लिए आर + डब्ल्यू> एन के बाद)। कैसंद्रा के स्तरों के बारे में अधिक जानकारी के लिए About Data Consistency in Cassandra देखें।

सारांश में, मैं निष्कर्ष है कि:

  • लिखते हैं, "कोरम", कर रहे हैं तो के लिए लिखने सफल होने के लिए नोड्स पंक्ति उपलब्ध होना चाहिए दोहराया जाता है के बहुमत
  • असंगत पुस्तकें हैं "एक ", इसलिए पंक्ति के साथ केवल एक नोड उपलब्ध होना चाहिए, लेकिन वापस लौटाया गया डेटा
  • लगातार पढ़ना" कोरम "है, इसलिए नोड्स के बहुमत को पढ़ने के लिए उपलब्ध होना आवश्यक है सफल होने के लिए

तो लिखते हैं कि एक समान पढ़ने के समान उपलब्धता है।

विशेष रूप से दो प्रश्नों के बारे में अपने प्रश्न को संबोधित करने के लिए, एक या दोनों असफल हो जाएंगे कि कितने नोड्स नीचे हैं। हालांकि, कभी भी असंगतता नहीं होगी। लिखने की उपलब्धता में वास्तव में कुछ भी नहीं है कि वे सशर्त हैं या नहीं, मुझे लगता है।

संबंधित मुद्दे