database - सीएपी प्रमेय-उपलब्धता और विभाजन सहिष्णुता




nosql consistency (4)

यहां बताया गया है कि मैं विशेष रूप से पी के संबंध में सीएपी पर चर्चा कैसे कर रहा हूं।

सीए केवल तभी संभव है यदि आप एक मोनोलिथिक, एकल सर्वर डेटाबेस (शायद प्रतिकृति के साथ लेकिन एक "विफलता ब्लॉक" पर सभी डेटा के साथ ठीक हैं - सर्वर आंशिक रूप से विफल नहीं माना जाता है)।

यदि आपकी समस्या के लिए स्केल आउट, वितरित और बहु-सर्वर की आवश्यकता होती है --- नेटवर्क विभाजन हो सकता है। आपको पहले ही पी की आवश्यकता है। कुछ समस्याएं जो मैं दृष्टिकोण करता हूं, एकल-सर्वर-हमेशा प्रतिमानों के लिए उपयुक्त हैं (या, जैसा कि स्टोनब्रकर ने कहा, "वितरित टेबल हिस्सेदारी है")। यदि आप सीए समस्या पा सकते हैं, पारंपरिक गैर-स्केल-आउट आरडीबीएमएस जैसे समाधान बहुत सारे लाभ प्रदान करते हैं।

मेरे लिए, दुर्लभ: इसलिए हम एपी बनाम सीपी पर चर्चा करने के लिए आगे बढ़ते हैं।

जब आप विभाजन करते हैं तो आप केवल एपी और सीपी ऑपरेशन के बीच चयन करते हैं। यदि नेटवर्क और हार्डवेयर सही तरीके से परिचालन कर रहे हैं, तो आप अपना केक प्राप्त करते हैं और इसे भी खाते हैं।

आइए एपी / सीपी भेद पर चर्चा करें।

एपी - जब नेटवर्क विभाजन होता है, स्वतंत्र भागों को स्वतंत्र रूप से संचालित करने दें।

सीपी - जब नेटवर्क विभाजन होता है, तो नोड्स को बंद करें या पढ़ना और लिखना अस्वीकार करें ताकि निर्धारिती विफलताएं हो।

मुझे आर्किटेक्चर पसंद हैं जो दोनों कर सकते हैं, क्योंकि कुछ समस्याएं एपी हैं और कुछ सीपी हैं - और कुछ डेटाबेस दोनों ही कर सकते हैं। सीपी और एपी समाधानों में, subtleties भी हैं।

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

एक सीपी सिस्टम में, आप छोटे विभाजन (एकल सर्वर), यदि कोई हो, के साथ कितनी अनुपलब्धता प्राप्त करते हैं? ग्रेटर प्रतिकृति एक सीपी सिस्टम में अनुपलब्धता बढ़ा सकती है, सिस्टम उन ट्रेडऑफ को कैसे संभालता है?

सीपी बनाम एपी से पूछने के लिए ये सभी प्रश्न हैं।

इस क्षेत्र में अभी एक महान पढ़ा है ब्रेवर की "12 साल बाद" पोस्ट। मेरा मानना ​​है कि यह स्पष्टता के साथ सीएपी बहस को आगे बढ़ाता है, और इसे अत्यधिक अनुशंसा करता है।

article

जबकि मैं सीएपी में "उपलब्धता" (ए) और "विभाजन सहिष्णुता" (पी) को समझने की कोशिश करता हूं, मुझे विभिन्न लेखों के स्पष्टीकरण को समझना मुश्किल लगता है।

मुझे एहसास हो रहा है कि ए और पी एक साथ जा सकते हैं (मुझे पता है कि यह मामला नहीं है, और यही कारण है कि मैं समझने में असफल रहा!)।

सरल शब्दों में समझाते हुए, ए और पी क्या हैं और उनके बीच का अंतर क्या है?


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

वितरित में संभावना है कि नेटवर्क विभाजन होगा और हम सीएपी के "पी" से बच नहीं सकते हैं। तो हम "संगति" और "उपलब्धता" के बीच चयन करते हैं।

http://bigdatadose.com/understanding-cap-theorem/


सरल सीएपी प्रमेय में कहा गया है कि एक वितरित प्रणाली के लिए असंभव रूप से सभी तीन गारंटी प्रदान करना असंभव है:

संगति

प्रत्येक नोड में एक ही समय में एक ही डेटा होता है

उपलब्धता

प्रत्येक बार डेटा की सेवा के लिए कम से कम एक नोड उपलब्ध होना चाहिए

विभाजन सहिष्णुता

सिस्टम की विफलता बहुत दुर्लभ है

अधिकतर प्रत्येक प्रणाली केवल सीए, एपी या सीपी की न्यूनतम दो सुविधाओं की गारंटी दे सकती है।


सी और ए के बराबर शर्तों में पी को ध्यान में रखते हुए, सी, ए, पी के बीच '3 में से 2' धारणा के बजाय गलती का थोड़ा सा गलती है। संक्षेप में मैं सीएपी प्रमेय को समझाऊंगा, "एक वितरित डेटा स्टोर में, नेटवर्क विभाजन के समय आपको या तो संगठनात्मकता या उपलब्धता चुननी होगी और दोनों नहीं मिल सकते हैं"। नए नोएसक्यूएल सिस्टम उपलब्धता पर ध्यान केंद्रित करने की कोशिश कर रहे हैं जबकि परंपरागत एसीआईडी ​​डेटाबेस पर संगठनात्मकता पर अधिक ध्यान केंद्रित किया गया था।

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





availability