आप किसी ऑनलाइन शॉपिंग साइट पर भुगतान का बटन दबाते हैं, लेकिन जो उत्पाद स्टॉक में ‘उपलब्ध’ दिख रहा था, वह अचानक बिक चुका होता है। ऐसा इसलिए होता है क्योंकि दूसरे सर्वर पर अब भी स्टॉक की पुरानी जानकारी मौजूद थी। जब कई कंप्यूटर एक सेवा की तरह काम करते हैं, तो एक साथ ये तीन वादे करना कठिन होता है कि डेटा हमेशा समान रहेगा, जवाब हमेशा मिलेगा और नेटवर्क कभी नहीं टूटेगा। इसी दुविधा को एक पंक्ति में व्यक्त करने वाला सिद्धांत ‘CAP प्रमेय (CAP Theorem)’ है।
सरल शब्दों में, CAP प्रमेय वह सिद्धांत है जिसके अनुसार ‘किसी वितरित प्रणाली में संगति (Consistency), उपलब्धता (Availability) और विभाजन सहनशीलता (Partition tolerance), तीनों की एक साथ गारंटी नहीं दी जा सकती।’ एरिक ब्रूअर (Eric Brewer) ने इसे 2000 में PODC के मुख्य व्याख्यान में प्रस्तुत किया था, और 2002 में सेथ गिल्बर्ट (Seth Gilbert) तथा नैन्सी लिंच (Nancy Lynch) ने इसे औपचारिक रूप से सिद्ध किया।
इस लेख में CAP प्रमेय की उत्पत्ति की पृष्ठभूमि और उसकी सटीक परिभाषा से लेकर C·A·P के तीन अक्षरों का अर्थ, तीनों को एक साथ सुनिश्चित न कर पाने का कारण और व्यावहारिक काम में इस प्रमेय को समझने का तरीका सरल ढंग से प्रस्तुत किया गया है।
CAP प्रमेय: वितरित प्रणाली के सामने तीन वादे
CAP प्रमेय क्या है?


वितरित प्रणाली केवल एक कंप्यूटर नहीं, बल्कि नेटवर्क से जुड़े कई नोडों की संरचना होती है। शॉपिंग साइट, मैसेंजर और क्लाउड डेटाबेस जैसी सेवाओं का आकार बढ़ने के साथ डेटा को कई जगह बाँटकर रखना स्वाभाविक है। समस्या यह है कि नोडों के बीच संचार हमेशा त्रुटिहीन नहीं होता। केबल टूटने, विलंब बहुत बढ़ जाने या कुछ सर्वरों से जवाब न मिलने पर ‘विभाजन (Partition)’ उत्पन्न होता है।
ब्रूअर ने ऐसे परिवेश में उन तीन गुणों को C·A·P के रूप में एक साथ रखा जिन्हें कोई प्रणाली एक साथ बनाए नहीं रख सकती। मूल संदेश सरल है: जब वास्तव में नेटवर्क विभाजन होता है, तो संगति और उपलब्धता में से किसी एक को प्राथमिकता देनी पड़ती है। इसे अक्सर ‘तीन में से केवल दो चुनें’ कहकर संक्षेप में समझाया जाता है, लेकिन आधुनिक व्याख्या में विभाजन सहनशीलता को व्यावहारिक रूप से अनिवार्य शर्त मानकर इसे C और A के बीच समझौते के रूप में देखा जाता है।
इस प्रमेय को पढ़ते समय निम्नलिखित अवधारणाओं को साथ में समझना उपयोगी है।
- वितरित प्रणाली (Distributed System): ऐसी संरचना जिसमें कई कंप्यूटर एक सेवा की तरह मिलकर काम करते हैं।
- नोड (Node): इस सहयोग में भाग लेने वाला कोई अलग सर्वर या प्रक्रिया।
- प्रतिकृति निर्माण (Replication): एक ही डेटा की प्रतियाँ कई नोडों पर रखने का तरीका।
- समझौता (Trade-off): ऐसा संबंध जिसमें एक गुण को मजबूत करने के लिए दूसरे गुण में कुछ छूट देनी पड़ती है।
C·A·P के तीन अक्षरों का सटीक अर्थ

इन तीन अक्षरों को रोजमर्रा की भाषा में समझने पर अवधारणाएँ स्पष्ट हो जाती हैं।
(1) संगति (Consistency)
सभी नोड एक ही समय पर समान नवीनतम मान देखते हैं—यही इसका वादा है। यदि किसी एक जगह स्टॉक घटाकर 1 कर दिया गया है, तो तुरंत बाद दूसरी जगह जाँचने पर भी वह 1 ही होना चाहिए। CAP में C का अर्थ डेटाबेस सिद्धांत की ‘मजबूत संगति’ के करीब है और यह उस ढीली संगति से अलग है जिसमें मान केवल अंततः समान होते हैं।
(2) उपलब्धता (Availability)
जो नोड सक्रिय है, वह अनुरोध का जवाब अवश्य देता है—यही इसका वादा है। इसका अर्थ है कि विफलता या टाइमआउट के बिना ‘पढ़ने और लिखने का परिणाम वापस मिलता है’; इसका अर्थ यह नहीं कि परिणाम हमेशा नवीनतम होगा। देर से ही सही, जवाब देना और अनुरोध को पूरी तरह अस्वीकार कर देना अलग-अलग विकल्प हैं।
(3) विभाजन सहनशीलता (Partition tolerance)
नोडों के बीच संचार टूटने पर भी प्रणाली बिना रुके काम करती रहती है—यही इसका वादा है। वास्तविक इंटरनेट और डेटा केंद्रों में विभाजन असामान्य नहीं हैं, इसलिए अधिकांश बड़ी सेवाओं के लिए P को छोड़ना कठिन है।
एक सरल उदाहरण लें: मान लीजिए कि किसी बैंक की दो शाखाओं के काउंटर केवल टेलीफोन लाइन से जुड़े हैं। फोन कटने के क्षण में भी (विभाजन), यदि दोनों काउंटर अपने-अपने यहाँ पैसे निकालने की अनुमति देते हैं (उपलब्धता), तो खाते की शेष राशि अलग-अलग हो सकती है (संगति को नुकसान)। यदि शेष राशि समान रखने के लिए लेनदेन रोक दिया जाए (संगति बनाए रखना), तो ग्राहकों के अनुरोध अस्वीकार होते हैं (उपलब्धता को नुकसान)।
तीनों एक साथ क्यों नहीं मिल सकते

नेटवर्क विभाजित होने पर नोडों के समूह एक-दूसरे की नवीनतम स्थिति की पुष्टि नहीं कर सकते। तब मोटे तौर पर दो विकल्प होते हैं।
(1) जब CP चुना जाता है
संगति बनाए रखने के लिए दूसरे पक्ष की स्थिति जाने बिना लिखने की अनुमति नहीं दी जा सकती। इसलिए कुछ अनुरोध अस्वीकार किए जाते हैं या उन्हें प्रतीक्षा में रखा जाता है। डेटा सही रहता है, लेकिन उस समय सेवा ‘जवाब नहीं दे रही’ जैसी दिख सकती है। पारंपरिक सहमति आधारित डेटाबेस और मजबूत संगति पर जोर देने वाली प्रणालियाँ इस विकल्प के अधिक करीब हैं।
(2) जब AP चुना जाता है
उपलब्धता बनाए रखने के लिए हर नोड अपने पास मौजूद जानकारी के आधार पर ही जवाब देता है। सेवा उपलब्ध रहती है, लेकिन विभाजन दूर होने तक अलग-अलग मान दिखा सकती है। इसके साथ अक्सर ‘अंततः संगति (Eventual Consistency)’ की रणनीति अपनाई जाती है, जिसमें बाद में समन्वयन और टकरावों के समाधान के जरिए मानों को समान किया जाता है।
पाठ्यपुस्तकों में ‘CA प्रणाली’ शब्द भी मिलता है, लेकिन यह ऐसे परिवेश जहाँ विभाजन कभी होता ही नहीं की धारणा पर आधारित एक आदर्शीकृत स्थिति के करीब है। एक ही मशीन या बहुत स्थिर स्थानीय क्लस्टर में इसे लगभग हासिल करना संभव हो सकता है, लेकिन व्यापक भौगोलिक क्षेत्र में वितरित प्रणालियों के लिए P की अनदेखी करना कठिन है। इसलिए व्यावहारिक प्रश्न “C·A·P में से किसे छोड़ें?” से अधिक “विभाजन होने पर C और A में से किसमें कितनी छूट दें?”होता है।
व्यावहारिक काम में CAP को कैसे समझें

CAP प्रमेय एक प्रभावशाली अंतर्दृष्टि देता है, लेकिन यह हर स्थिति पर लागू होने वाला लेबल नहीं है। स्वयं ब्रूअर ने भी बाद के एक लेख में माना कि ‘2 out of 3’ के नारे ने गलतफहमियाँ पैदा की थीं। आधुनिक प्रणालियों को समझने के लिए निम्नलिखित पूरक दृष्टिकोण भी आवश्यक हैं।
- मात्रा का प्रश्न: संगति और उपलब्धता चालू या बंद करने वाले स्विच नहीं, बल्कि एक विस्तृत परास हैं। पढ़ने में ढीली और लिखने में मजबूत संगति रखने जैसे मिश्रित तरीके आम हैं।
- विलंब से संबंध: डैनियल अबादी (Daniel Abadi) द्वारा प्रतिपादित PACELC के अनुसार, विभाजन न होने पर भी (Else) विलंब (Latency) और संगति के बीच चुनाव करना पड़ता है।
- काम के अनुसार प्राथमिकता: भुगतान और स्टॉक जैसे धन से जुड़े कार्यप्रवाहों में C की ओर झुकाव होता है, जबकि फीड और देखे जाने की संख्या जैसे कार्यप्रवाहों में, जहाँ थोड़े समय का अंतर स्वीकार्य है, A को प्राथमिकता मिलने की संभावना अधिक होती है।
डिज़ाइनरों को केवल “हमारी प्रणाली CP है/AP है” कहकर बात खत्म करने के बजाय कौन-सी संक्रिया किस परिस्थिति में किस बात की गारंटी देती है यह स्पष्ट रूप से लिखना चाहिए। CAP विकल्प खत्म करने वाला नियम नहीं, बल्कि वितरित परिवेश की सीमाएँ पहले ही दिखाने वाला नक्शा है।
CAP प्रमेय यह चेतावनी नहीं है कि ‘कोई पूर्ण वितरित प्रणाली नहीं होती।’ यह सीमाओं को स्वीकार करके कारोबार के अनुकूल समझौते डिज़ाइन करने का आमंत्रण है। नेटवर्क में गड़बड़ी की स्थिति की कल्पना करके पहले ही तय करना कि संगति और उपलब्धता में से किसे बनाए रखना है, विश्वसनीय वितरित प्रणाली के डिज़ाइन की पहली सीढ़ी है।