பல பிராந்திய எழுத்து: கமிட் உண்மையில் எங்கே வந்து சேர்கிறது?
வழிமாற்றல் ஒரு கோரிக்கையை ஒரு பிராந்தியத்திற்குக் கொண்டு செல்கிறது; ஒரு பரிவர்த்தனை எல்லை மட்டுமே எழுத்தை அணுவியலாக்குகிறது. மாறாத கூறைப் பெயரிடுங்கள், உரிமையாளரைத் தேர்ந்தெடுங்கள், பின்னர் அதைச் சுற்றி மறுமுயற்சியை வடிவமைக்கவும்.
இரு பிராந்தியங்களில் இரு பயன்பாட்டுச் சேவையகங்கள், VPN வழியாக எழுதும் ஒரு வாடிக்கையாளர், யாரும் எழுதாத ஒரு கேள்வி: எழுத்து நிகழ்ந்தது என்பதை எந்தக் கூறு தீர்மானிக்கிறது? வழிமாற்றல் கோரிக்கையை ஒரு செயல்முறைக்குக் கொண்டு செல்கிறது. பரிவர்த்தனை எல்லை மாற்றம் எப்போது நீடித்ததாகவும் தெரியக்கூடியதாகவும் ஆகிறது என்பதைத் தீர்மானிக்கிறது. இவை வெவ்வேறு அமைப்புகள் செய்யும் வெவ்வேறு வேலைகள், அவற்றுக்கிடையேயான இடைவெளியே பல பிராந்திய எழுத்துப் பிழைகள் வாழும் இடம்.
வரைபடத்திலிருந்து அல்ல, வணிக விதியிலிருந்து தொடங்குங்கள்
புவியியல் பற்றி அல்ல, வணிக விதி பற்றிய ஒரு வாக்கியத்தில் தொடங்குங்கள்: எந்த வாசிப்புகளும் எழுத்துகளும் ஒன்றாக வெற்றிபெற வேண்டும், அவ்வாறு நிகழும்போது எந்த ஒரே நேர மாற்றங்கள் சாத்தியமற்றதாக இருக்க வேண்டும். சரக்கு முன்பதிவுக்கு இதன் பொருள் சரக்குச் சரிபார்ப்பும் முன்பதிவும் இரண்டும் நடைமுறைக்கு வரும் அல்லது எதுவும் வராது, இடையில் வேறு எந்த ஆர்டரும் அதே அலகைப் பயன்படுத்த முடியாது.
| Requirement | What satisfies it | What does not |
|---|---|---|
| All-or-nothing application | A transaction inside one owning system | A VPN path between regions |
| No double spend | Isolation strong enough to exclude the conflict | Atomicity alone |
| Survive a region loss | Replication the database itself documents | Two independent databases behind one client |
அந்த நடுப்பகுதி வரிசையையே குழுக்கள் தவிர்க்கின்றன. போதுமான தனிமைப்படுத்தல் இல்லாத அணுத்தன்மை இரு பரிவர்த்தனைகள் ஒவ்வொன்றும் சரியாகக் கமிட் ஆக அனுமதிக்கிறது, இருப்பினும் வணிகம் சாத்தியமற்றதாகக் கருதும் நிலையை உருவாக்குகிறது, பின்னர் எந்த மறுமுயற்சி தர்க்கமும் அதைச் சரிசெய்யாது.
ஒரு அதிகார எல்லை இரு பிராந்திய சேவையகங்களை வெல்கிறது
பிராந்திய பயன்பாட்டுச் சேவையகங்கள் தாம் இருக்கும் இடத்திலேயே இருக்கலாம், ஒரு ஆதரவு பெற்ற பரிவர்த்தனை எல்லைக்குள் அதைச் செய்யும் சேவைக்கு செயல்பாட்டை ஒப்படைத்தால் மட்டும். பயன்பாட்டு அடுக்கு நோக்கத்தின் வழிகாட்டியாகிறது; தரவு அடுக்கு உண்மையைக் கொண்டுள்ளது.
அந்த எல்லையைச் சுருக்கமாகவும் அது தொடும் தரவுக்கு அருகிலும் வைத்திருங்கள். ஒரு மனிதர் கேள்விக்குப் பதிலளிக்கும்போது அல்லது ஒரு அழைப்பு இரு பிராந்தியங்களைக் கடக்கும்போது திறந்து வைக்கப்படும் பரிவர்த்தனை தன் நேரத்தைப் பூட்டுகளைப் பிடித்திருப்பதில் செலவழிக்கிறது, அதற்குப் பின்னால் வேறு ஏதாவது காலாவதியாகும் வாய்ப்பை அதிகரிக்கிறது. அந்தத் தோல்வி தரவுத்தளப் பிரச்சினை போலத் தெரிகிறது, உண்மையில் அப்படி வேடமிட்ட வடிவமைப்புப் பிரச்சினை. முடிவைத் தரவு அடுக்குக்கு நகர்த்துவது பொதுவாக அதை முழுவதுமாக நீக்குகிறது.
BEGIN;
UPDATE inventory SET reserved = reserved + 1
WHERE sku = 'A-100' AND available >= 1;
INSERT INTO reservation (sku, order_id) VALUES ('A-100', 'ord-9f');
COMMIT;
அந்த வரைவை ஒரு எல்லையாகப் படியுங்கள், செயல்திறன் பரிந்துரையாக அல்ல. முக்கிய விஷயம், சரிபார்ப்பும் செருகலும் ஒரு கமிட்டைப் பகிர்கின்றன, எனவே ஒரே நேர ஆர்டர் சரக்கு பயன்படுத்தப்பட்டதைப் பார்க்கிறது அல்லது முற்றிலும் பார்க்காது.
பிரதிபலிப்பு தரவுத்தளம் தருவது எது, தராதது எது
அதன் சொந்தப் பரிவர்த்தனை மாதிரி ஆதரிக்கும்போது பிரதிபலிப்பு தரவுத்தளம் பரந்த எல்லையை வழங்க முடியும். Spanner ஒரே தரவுத்தளத்திற்குள் அட்டவணைகள் முழுவதும் அணுவியல் படிப்பு-எழுத்துப் பரிவர்த்தனைகளை, வரையறுக்கப்பட்ட தனிமைப்படுத்தல் மற்றும் மறுமுயற்சி நடத்தையுடன் ஆவணப்படுத்துகிறது. அது நீங்கள் படித்து, சோதித்து, வேண்டுமென்றே நம்பும் உத்தரவாதம்.
அது தயாரிப்பிலிருந்து வரும் உத்தரவாதமும் கூட, பாதையிலிருந்து அல்ல. பிராந்தியங்களுக்கிடையேயான VPN பாக்கெட்டுகள் எவ்வாறு பயணிக்கின்றன, தோல்விகள் எவ்வாறு வெளிப்படுகின்றன என்பதை மாற்றுகிறது. சுரங்கப்பாதை எவ்வளவு ஆரோக்கியமாகத் தெரிந்தாலும் அது பரிவர்த்தனை எல்லையை ஒரு வரிசையும் நீட்டாது. இரண்டையும் குழப்புவது ஒவ்வொரு கூறும் தன் சொந்தச் சரிபார்ப்பைக் கடக்கும், ஆனால் தரவு இன்னும் ஒத்துப்போகாத கட்டமைப்புகளை உருவாக்குகிறது.
இரு தரவுத்தளங்கள் ஒரு அமைப்பாக மாறாது
சுயாதீனமாக நிர்வகிக்கப்படும் இரு தரவுத்தளங்கள் வாடிக்கையாளர்கள் இரண்டையும் அடைய முடியும் என்பதால் பகிரப்பட்ட பரிவர்த்தனை மேலாளரைப் பெறுவதில்லை. வணிகத்திற்கு உண்மையிலேயே அந்த இணை முழுவதும் அணுவியல் உறுதிமொழி தேவைப்பட்டால், ஒருங்கிணைப்பு முறை, பங்கேற்பாளர்கள் மற்றும் மீட்பு செயல்முறை அனைத்தும் ஊகிக்கப்படாமல் தேர்ந்தெடுக்கப்பட்டு தகுதிபெற வேண்டும்.
வேலை தயாரான பிறகு ஒரு பங்கேற்பாளர் அல்லது இணைப்பு மறையும் தருணத்தைப் பற்றிச் சிந்தியுங்கள். ஆதரவு பெற்ற விநியோக கமிட் மீட்பு நடைமுறையும் மனித முடிவும் தேவைப்படும் நிச்சயமற்ற நிலையை விட்டுச் செல்லலாம், ஒவ்வொரு பிரிவினூடாகவும் ஒவ்வொரு பிராந்தியமும் எழுதக்கூடியதாக இருக்கும் என்ற உறுதிமொழியுடன் அது வராது.
அதற்குப் பதிலாக ஒத்திசைவற்ற ஒருங்கிணைப்பு ஏற்றுக்கொள்ளத்தக்கதானால், அதை வெளிப்படையாகச் சொல்லி இடைநிலை வணிக நிலைகளையும் சமரச விதிகளையும் எழுதுங்கள். ஈடுசெயலுடன் உள்ளூரில் கமிட் செய்யப்பட்ட படிகளின் சங்கிலி செல்லுபடியாகும் வடிவமைப்பு; அது வேறு பெயரில் ஒரு அணுவியல் பரிவர்த்தனை மட்டுமே அல்ல.
முதல் தடங்கலுக்கு முன் மறுமுயற்சியை வடிவமைக்கவும்
செயல்பாடு கமிட் ஆன பிறகு வாடிக்கையாளர் பதிலை இழக்கலாம், எனவே அழைப்பவர் நேர முடிவைத் தோல்வியாகக் கருத முடியாது. நீடித்த கோரிக்கை அடையாளத்தைப் பாதுகாத்து, மாற்றத்தை மீண்டும் முயல்வதற்கு முன் சேவை முடிவு அல்லது தன்னொப்பு முறையைப் பயன்படுத்துங்கள், இல்லையேல் மறுமுயற்சி இரண்டாவது எழுத்தாகிறது.
தானியங்கி பரிவர்த்தனை பின்னழைப்புகள் மறுமுயலக்கூடிய ரத்துக்குப் பிறகு ஒரு முறைக்கு மேல் இயங்கலாம், இது அவற்றை மீளமுடியாத வெளிப்புற விளைவுகளுக்கு மோசமான இல்லமாக்குகிறது. பணிப்பாய்வு அவற்றுக்கு வெளிப்படையான பாதுகாப்பான நெறிமுறையை வரையறுக்காத வரை அவற்றைப் பின்னழைப்புக்கு வெளியே வையுங்கள். பணம் செலவழிக்கும் அல்லது செய்தி அனுப்பும் எதற்கும் அதே எச்சரிக்கை பொருந்தும். இரட்டை கட்டணம் இரட்டை பதிவு வரியை விட மிகக் கடினமான உரையாடல்.
ஏற்பு நான்கு சூழல்களை மீண்டும் இயக்க வேண்டும்: ஒரே வரிசைக்காகப் போட்டியிடும் இரு வாடிக்கையாளர்கள், சேவை மறுமுயலக்கூடியது எனக் கூறும் ரத்து, பதிலே வராத கமிட், ஒரு பிராந்தியம் அல்லது அவற்றுக்கிடையேயான இணைப்பின் இழப்பு. கமிட் ஆன வணிக முடிவையும் தீர்க்கப்படாத நிலைகளையும் வழிமாற்றல் வடிவமைப்புக்கு அருகில் பதிவு செய்யுங்கள், யாரும் வலையமைப்பை உத்தரவாதம் வழங்கும் கூறாகத் தவறாக எண்ணாதிருக்க.