संगति मॉडल
संगति वर्णन करती है कि पाठक क्या मूल्य देखते हैं और प्रतिस्पर्धी परिवर्त मॉडल का सही विकल्प अपरिवर्तनीय, विलंबता, उपलब्धता और लागत (PACELC) की कठोरता के बीच संतुलन है। नीचे मॉडल और उनके आवेदन के लिए एक व्यावहारिक मार्गदर्शिका
1) "सख्त" मॉडल
रैखिक (मजबूत)
व्यवहार जैसे कि सभी ऑपरेशन कुछ समान क्रम में तुरंत किए गए थे जो वास्तविक समय का सम्मान करते हैं।
पेशेवरों: सरल मानसिक मॉडल, पैसे और विशिष्टता के लिए सुरक्षित।
विपक्ष: कोरम/नेता → p95/p99 विकास, विशेष रूप से अंतरक्षेत्रीय रूप से।
मामलों का उपयोग करें: संतुलन, कठोर सीमा के साथ सूची, अद्वितीय नाम/कुंजी।
अनुक्रमिक स्थिरता
सभी धागे संचालन के समान क्रम को देखते हैं, लेकिन वास्तविक समय के आदेश की आवश्यकता नहीं है। रैखिक की तुलना में थोड़ा कमजोर, शायद ही कभी उत्पादों में सीधे प्रदर्शन किया जाता है।
क्रमबद्ध होने योग्य
लेनदेन के कुछ अनुक्रमिक क्रम के बराबर (व्यक्तिगत संचालन नहीं)।
पेशेवरों: क्वेरी/टेबल स्तर पर जटिल आक्रमणकारियों की शुद्धता।
विपक्ष: अधिक महंगा (अवरुद्ध/वर्शनिंग/संघर्ष सत्यापन)।
उपयोग के मामले: जटिल वित्तीय लेनदेन, सुसंगत पुनरावृत्ति, इन्वेंट्री।
स्नैपशॉट अलगाव (एसआई)
प्रत्येक लेनदेन समय के साथ एक अपरिवर्तनीय स्नैपशॉट पढ़ ता है; "एक ही लाइनों" पर प्रविष्टियाँ संघर्ष करती हैं, लेकिन तिरछा लिखना संभव है।
पेशेवरों: तेजी से ताले, स्थिर रिपोर्ट के बिना पढ़ ता है।
विपक्ष: धारावाहिक नहीं, तिरछा जाल लिखें (उदाहरण: ड्यूटी पर डॉक्टर)।
मामलों का उपयोग करें: एनालिटिक्स, रिपोर्ट, अधिकांश CRUD बिना कठोर आक्रमणकारियों के।
2) प्रति सत्र और कारण गारंटी
पढ़ें-आपके राइट्स (RYW)
ग्राहक हमेशा अपने प्रवेश के बाद के रीडिंग में इसे देखता है।
पेशेवरों: अच्छा UX (फॉर्म → पुष्टि)।
विपक्ष: स्थानीय वारंटी, वैश्विक नहीं।
मोनोटोनिक रीड्स/राइट्स
रीडिंग "रोल बैक" नहीं करती है; एक ग्राहक के रिकॉर्ड उसी क्रम में लागू किए जाते हैं जैसे भेजे गए।
कारण स्थिरता
यदि ऑपरेशन दूसरे (A → B) पर निर्भर करता है, तो हर कोई B से पहले A देखता है।
पेशेवरों: सामाजिक फ़ीड, टिप्पणियों के लिए सहज।
विपक्ष: रूटिंग और कारण लेबल (वेक्टर घड़ियां) अधिक कठिन हैं।
उपयोगकर्ता कुंजी: संचार, संयुक्त संपादन, घटना फ़ीड।
3) कमजोर और संकर मॉडल
बाध्य स्थिरता
पढ़ें, t या N संस्करणों से अधिक नहीं पिछड़ सकता है।
पेशेवरों: पूर्वानुमानित यूएक्स, अच्छा समझौता परस्पर।
विपक्ष: लेखन संघर्षों से बचाव नहीं करता है।
अंतिम स्थिरता
समय के साथ, सभी प्रतियां अभिसरण करती हैं; आदेश और देरी की गारंटी नहीं है।
पेशेवरों: न्यूनतम विलंबता/लागत, उच्च उपलब्धता (एपी)
विपक्ष: एक स्पष्ट विलय की आवश्यकता है (CRDT/डोमेन नियम)।
मामलों का उपयोग करें: कैश, फीड, मैट्रिक्स, लाइक्स, नेन क्रिटिकल डायरेक्ट्री।
4) विशिष्ट विसंगतियाँ और उनका क्या मतलब है
डर्टी रीड: अनकमिटेड डेटा पढ़ ना।
नॉन-रिपीटेबल रीड: लेनदेन के भीतर एक ही रीड अलग-अलग मान देता है।
फैंटम: बार-बार अनुरोध करने पर, विधेय से मेल खाने वाला एक स्ट्रिंग दिखाई देता है/गायब हो जाता है।
स्क्यू लिखें (एसआई के साथ): दो लेनदेन इंटरसेटिंग अपरिवर्तनीय को पढ़ ते हैं और अलग-अलग लाइनें लिखते हैं, इस शर्त का उल्लंघन करते हुए "योग 1 होना चाहिए।"
लॉस्ट अपडेट: रिकॉर्ड प्रतियोगी के परिवर्तनों को "ओवरराइट" करता है।
5) कोरम और पढ़ ने/लिखने का स्तर
कई स्टोर आपको 'आर '/' डब्ल्यू' स्तर (पढ़ने/लिखने के लिए प्रतिकृतियों की संख्या) सेट करने की अनुमति देते हैं।
कोरम (R + W> N) "चौराहे" और अंतिम रिकॉर्ड के रीड की मजबूत गारंटी देता है।
W = 1, R = 1 → कम विलंबता, लेकिन पुराना डेटा संभव है।
ट्यूनिंग: क्रिटिकल ऑपरेशन - हाई 'डब्ल्यू' (या लीडर), बाकी - कम 'आर' गति के लिए।
पढ़ें-मरम्मत/संकेत हैंडऑफ मदद पृष्ठभूमि में स्थिरता प्राप्त करते हैं।
6) घंटे और क्रम: हम कैसे "कार्य" को "समझते हैं
लैम्पोर्ट घड़ियाँ: घटनाओं का आंशिक क्रम।
वेक्टर घड़ियाँ: कारण को ठीक करें, संघर्षों का पता लगाने की अनुमति दें।
हाइब्रिड/ट्रूटाइम दृष्टिकोण: लेनदेन आदेश और बाध्य-गतिशीलता के लिए क्लस्टर में घड़ियों के प्रसार को सीमित करें।
संस्करण: विलय के लिए 'संस्करण/टीएस + कर्ता'; CRDT में, बंद अर्धवृत्त (कम्यूटेटिविटी/आइडेम्पोटेंसी)।
7) सीआरडीटी और डोमेन विलय
CRDT (अभिसरित/प्रतिकृत डेटा प्रकार) समन्वय के बिना अभिसरण की गारंटी देता है: जी-काउंटर, या-सेट, LWW-रजिस्टर, मैप, टेक्स्ट ओटी/वूट वेरिएंट।
जब उपयोगी: पसंद है, कई टैग, बास्केट, दस्तावेज़।
सीमाएँ: एक विशिष्ट डोमेन इकाई के लिए सही "विलय" शब्दार्थ के साथ आएं।
8) CAP/PACELC के साथ संचार
बहु-क्षेत्र में सख्त मॉडल (रैखिक/क्रमबद्ध) बढ़ ती विलंबता के साथ सीपी (PACELC: चुनिंदा C और भुगतान एल)।
कमजोर/हाइब्रिड मॉडल → एपी और/या कम एल, लेकिन विलय/संघर्ष-संकल्प की आवश्यकता है।
हाइब्रिड: इनवेरिएंट्स + एपी-प्रोजेक्शन/कैश के लिए सीपी-कर्नेल।
9) मॉडल चयन: चेकलिस्ट
1. अपरिवर्तनीय: क्या उल्लंघन नहीं किया जाना चाहिए? (विशिष्टता, संतुलन, सीमा)।
2. क्षेत्रीयता: राइट/रीड कहां किए गए हैं? (स्थानीय/वैश्विक)।
3. विलंबता से SLO: महत्वपूर्ण रास्तों के लिए p95/p99?
4. समन्वय मूल्य: अंतर-क्षेत्रीय कोरम के साथ भुगतान करने के लिए तैयार?
5. विरोधाभास: क्या आपके पास नियतात्मक विलय है या आपको समन्वयक की आवश्यकता है?
6. UX की उम्मीदें: क्लाइंट के लिए RYW/मोनोटोनिक/कारण महत्वपूर्ण हैं?
7. अवलोकन: आप लैग/संघर्ष/अप्रचलन की डिग्री को कैसे मापते हैं?
8. फोलबैक: जब एक नेट विभाजित होता है (पी) क्या होता है? रीड-ओनली/लोकल एंट्री/कतारें?
10) त्वरित व्यंजनों
भुगतान/संतुलन: वंशावली/क्रमबद्ध, नेता + कोरम, कम समय; RYW रीडिंग।
प्रोफाइल/फ़ीड: कॉसल/बाउंडेड गतिशीलता + कैश; लाइक/काउंट के लिए सीआरडीटी; लेखक के लिए RYW।
खोज/विश्लेषण: SI/पढ़ें प्रतिबद्ध, अतुल्यकालिक अनुमान, सूचकांक के लिए अंतिम।
ग्लोबल सास: भू-विभाजन; "होम रिकॉर्ड" - सीपी, रिपोर्ट/निर्देशिका - एपी।
सह-संपादन: कारण/अंतिम + सीआरडीटी/ओटी; "इतिहास" को संरक्षित करना।
11) स्थिरता देखी गई
लैग मेट्रिक्स: 'प्रतिकृति _ लैग', 'गतिहीनता _ age _ ms' (p50/p95/p99)।
संघर्ष: संघर्ष का प्रतिशत, औसत समाधान समय।
कोरम: 'आर/डब्ल्यू' कोरम की सफलता, अंतरक्षेत्रीय रास्तों का समय।
ग्राहक वारंटी: RYW/मोनोटोनिक - सत्र द्वारा टैग।
12) विशिष्ट त्रुटियां
व्यावसायिक आधार के बिना मजबूत "हर जगह" की मांग - विलंबता और लागत का एक विस्फोट।
Sagas/CRDT fantoms के बिना विभिन्न क्षेत्रों में दोहरी लिखना और आक्रमणकारियों का नुकसान।
UX में RYW/monotonicity को अनदेखा करें → सिर्फ भेजे गए डेटा को "गायब" करें।
कैश/अनुमानों की उम्र बढ़ ने को ट्रैक न करें - "अनन्त" विसंगतियां।
बीमार कल्पना विलय → अप्रत्याशित नुकसान/डुप्लिकेट मूल्य।
13) मिनी-संदर्भ वास्तुकला
राइट-कोर (सीपी): नेता, कोरम रिकॉर्ड, एसएलओ और टाइमआउट, लॉग।
रीड-प्लेन (एपी): भौतिक दृश्य, टीटीएल कैश, रीड-रिपेयर।
क्लाइंट: चिपचिपा-सत्र/सत्र गारंटी (RYW/मोनोटोनिक), संस्करण लेबल।
इंजन संघर्ष: CRDT/डोमेन नियम, मैनुअल निपटान कतार।
निगरानी: लैग्स, संघर्ष, पुरानी रीडिंग के शेयर।
निष्कर्ष
एक स्थिरता मॉडल डेटा, विलंबता और उपलब्धता के बीच एक इंजीनियरिंग अनुबंध है। आक्रमणकारियों और एसएलओ के साथ शुरू करें, जहां आपको इसकी आवश्यकता है, और जहां आप कर सकते हैं, वहां कड़ाई से चुनें, जहां आप ग्राहक गारंटी, कोरम, घंटे और अवलोकन के बारे में नहीं भूल सकते हैं। मॉडल का एक सक्षम संयोजन व्यावसायिक सच्चाई और उपयोगकर्ता विश्वास का त्याग किए बिना पैमाने, पूर्वानुमेयता और स्थिरता देता है।