இது நான் இரண்டு வெவ்வேறு இயந்திரங்களில் இருமுறை பார்த்த தோல்வி. ஒரு ஏற்றுமதி 10:00 மணிக்கு இயங்கி, தான் பார்த்த மிக உயர்ந்த கடைசி-மாற்ற நேரமுத்திரையைப் பதிவு செய்கிறது. 09:58 மணிக்குத் தொடங்கிய ஒரு பரிவர்த்தனை இன்னும் திறந்திருக்கிறது, 10:03 மணிக்குக் கமிட் ஆகி, தான் தொடங்கிய தருணத்தின் நேரமுத்திரையைக் கொண்டுள்ளது. அடுத்த ஏற்றுமதி 10:00 ஐ விடப் புதிய வரிசைகளை மட்டுமே கேட்கிறது, அதை ஒருபோதும் பார்க்காது. பரிமாற்ற அளவு சிறப்பாக இருந்தது, தரவு தவறாக இருந்தது.

ஒரு வரிசையை இழந்த ஏற்றுமதியைப் பின்தொடரவும்

SQL அல்ல, நிகழ்வுகளின் வரிசையைப் பின்தொடரவும். பரிவர்த்தனை தொடங்கும்போது பயன்பாடு வரிசையின் மாற்ற நேரத்தை எழுதுகிறது, கமிட் ஆகும்போது அல்ல. அந்தப் பரிவர்த்தனை இன்னும் திறந்திருக்கும்போது ஏற்றுமதியாளர் சுவர்-கடிகார நீர்அடையாளத்தைப் படிக்கிறார். பின்னர் பரிவர்த்தனை சேமித்த நீர்அடையாளத்தை விடப் பழைய மாற்ற நேரத்துடன் கமிட் ஆகிறது. நுகர்வோரின் அடுத்த தொகுதி நீர்அடையாளத்துக்குப் பிறகு தொடங்குகிறது, எனவே வரிசை கர்சருக்குப் பின்னால் இருக்கும், மீண்டும் ஒருபோதும் தேர்ந்தெடுக்கப்படாது.

எதுவும் பிழையைப் பதிவு செய்யவில்லை, ஏனெனில் எதுவும் தோல்வியடையவில்லை. இதுவே இந்த வகை பிழைகளை விலை உயர்ந்ததாக்குகிறது: டெல்டா ஊட்டம் வேகமாக உள்ளது, வரிசை எண்ணிக்கை நம்பத்தகுந்ததாகத் தெரிகிறது, காணாமல் போன வரிசை வாரங்களுக்குப் பிறகு யாரும் மீண்டும் உருவாக்க முடியாத சமரச டிக்கெட்டாக மேலெழுகிறது.

வரிசை எண்களுக்கு வேறு காரணத்தால் அதே வடிவக் குறைபாடு உள்ளது. சீரான ID மதிப்புகள் ஒதுக்கப்பட்ட வரிசையைச் சொல்கிறது, பரிவர்த்தனைகள் கமிட் ஆன வரிசையை அல்ல. குறைந்த எண்ணை எடுத்த பரிவர்த்தனை அதிக எண்ணை எடுத்ததற்குப் பிறகு கமிட் ஆகலாம், எனவே ஒதுக்கீட்டு வரிசையை அடிப்படையாகக் கொண்ட கர்சரும் துளையை விட்டுச் செல்லலாம்.

ஊட்டம் கொடுக்க வேண்டிய ஐந்து உறுதிமொழிகள்

போக்குவரத்தைத் தேர்ந்தெடுக்கும் முன் மூல அமைப்பிடம் ஐந்து பிரிவுகள் கொண்ட ஒப்பந்தத்தைக் கேளுங்கள். எந்தப் பிரிவும் இல்லாவிட்டால் உங்களிடம் மாற்ற ஊட்டம் அல்ல, ஒரு ஊகம் உள்ளது.

  • பாதுகாப்பு: செருகல்கள், புதுப்பிப்புகள் மற்றும் நீக்கங்கள், ஒவ்வொன்றும் பயன்படுத்தத் தேவையான நிலையான விசையுடன்.
  • எல்லை: கர்சர் மதிப்பின் பொருள் என்ன, சீரான தொகுதியில் என்ன உள்ளது.
  • சீர்மை: பொருந்தாத மூல நிலைகளைக் கலக்காமல் தொடர்புடைய அட்டவணைகள் எவ்வாறு படிக்கப்படுகின்றன.
  • தக்கவைப்பு: துண்டிக்கப்பட்ட நுகர்வோர் தன் சேமித்த நிலையிலிருந்து எவ்வளவு காலம் மீளத் தொடங்கலாம்.
  • மீள்தொடக்கம்: அந்த நிலை இனி செல்லுபடியாகாதபோது ஆதரிக்கப்படும் முழு ஸ்னாப்ஷாட்.

ஆதரிக்கப்படும் ஒரு பொறிமுறை ஐந்தையும் பூர்த்தி செய்ய முடியும். SQL Server இன் மாற்றக் கண்காணிப்பு ஆவணம் ஒரு குறிப்பிட்ட வெளியிடப்பட்ட எடுத்துக்காட்டு: அது குறைந்தபட்ச செல்லுபடியாகும் பதிப்பை வரையறுக்கிறது, மாற்றங்களுடன் நீக்கங்களையும் பதிவு செய்கிறது, சரிபார்ப்பு, பதிப்புப் பிடிப்பு மற்றும் தொடர்புடைய மாற்ற வினவல்களை உள்ளடக்கிய ஸ்னாப்ஷாட் பரிவர்த்தனையை விவரிக்கிறது. இது ஒரு மூலத்திடம் என்ன கோர வேண்டும் என்பதற்கான எடுத்துக்காட்டு, வேறு இயந்திரத்தில் ஒட்டக்கூடிய தொடரியல் அல்ல.

சரிபார்ப்புப் புள்ளியை பைப்லைனின் பகுதியாக வடிவமைக்கவும்

நுகர்வோரின் சேமித்த நிலையே உண்மையான நிலை இயந்திரம், எனவே அதை அப்படியே எழுதுங்கள். தொகுதியை ஏற்கனவே பயன்படுத்தி இலக்கு பரிவர்த்தனையைக் கமிட் செய்த பணிப்பாய்வு வழியாக மட்டுமே கர்சர் முன்னேற முடியும்.

cursor  = durable_checkpoint()          # last fully applied position
batch   = extract(cursor, upper_bound)  # one consistent batch
apply(batch)                            # idempotent at the target
commit()
checkpoint(batch.upper_bound)           # only now

விநியோகம் பாதியில் தோல்வியடைந்தால், புதிய மூல நிலையைக் கற்பனை செய்வதற்குப் பதிலாக அதே தொகுதியைச் சமரசம் செய்யுங்கள். புதிய உயர் எல்லையுடன் மீண்டும் பிரித்தெடுப்பதே பகுதி பயன்பாட்டை நிரந்தர இடைவெளியாக மாற்றும் வழி. கண்ணாடி விதி மறுபக்கத்திலும் பொருந்தும்: இலக்கில் இடெம்போடென்ட் பயன்பாடு நகல்களைத் தடுக்கிறது, பிரித்தெடுப்பு ஒருபோதும் காணாத மாற்றத்துக்கு எதுவும் செய்யாது.

நீக்கங்களுக்கு பதிவுகள் தேவை, முடிவுகள் அல்ல

இன்னும் இருக்கும் வரிசைகளை ஒப்பிடுவது எந்த விசைகள் மறைந்தன என்பதை நுகர்வோருக்குச் சொல்ல முடியாது. நீக்கங்களை ஒருபோதும் பதிவு செய்யாத மூலம் உங்களுக்கு இரண்டு முழுமையற்ற வழிகளை விட்டுச் செல்கிறது: வேறுபாட்டுக்குப் போதுமான காலம் விசை வரலாற்றை வைத்திருத்தல், அல்லது அட்டவணைப்படி வெளிப்படையான முழு சமரசத்தை இயக்குதல். இரண்டும் செலவுள்ள வடிவமைப்பு முடிவுகள், யாரும் உரிமை கொள்ளாவிட்டால் எதுவும் இல்லை.

தக்கவைப்பும் அதே வகை முடிவு. ஆதரிக்கப்படும் ஒவ்வொரு மாற்ற ஊட்டத்துக்கும் ஒரு சாளரம் உள்ளது; அதை ஒப்பந்தத்தில் அறிவித்து, நுகர்வோரின் சரிபார்ப்புப் புள்ளி அதை நெருங்கும்போது எச்சரிக்கவும். இரண்டு வார இடைவெளிக்குப் பிறகு விழிக்கும் நுகர்வோர் அமைதியாகப் பகுதி தொகுதியைப் பெறுவதற்குப் பதிலாக தெளிவான "மீள்தொடக்கம் தேவை" பிழையைப் படிக்க வேண்டும்.

பின்னர் டெல்டா மதிப்புக்குரியதா என அளவிடுங்கள்

ஒவ்வொரு விசையையும் ஹாஷையும் ஒப்பிடுவதற்குத் திரும்புவது சில நேரம் சரி, அதன் செலவை அறிவது மதிப்புள்ளது. நீங்கள் இன்னும் ஒவ்வொரு வரிசையின் தகவலையும் பரிமாற்றுகிறீர்கள், ஹாஷ்கள் அட்டவணைகளுக்கிடையே சீரான ஸ்னாப்ஷாட்டைத் தருவதில்லை, ஹாஷ் திட்டம் பிரதிநிதித்துவம் மற்றும் மோதல்கள் பற்றிய தன் சொந்தக் கேள்விகளைக் கொண்டுவருகிறது. சரிபார்க்கக்கூடிய எல்லையுடன் குறைந்த பைட்டுகளே இலக்கு; கமிட் ஆன மாற்றத்தை அமைதியாக விழவிடும் குறைந்த பைட்டுகள் டெல்டாவே அல்ல.

கடைசி-மாற்ற நெடுவரிசை ஒரு துப்பு. தாமதமான கமிட், நீக்கம் மற்றும் நீண்ட இடைவெளியைக் கடக்கும் கர்சர் ஒரு ஒப்பந்தம்.

தொடர்புடைய கட்டுரைகள்