මෙය මා දෙවරක් දුටු අසාර්ථකත්වයකි, වෙනස් එන්ජින් දෙකක. එක් අපනයනයක් 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

බෙදාහැරීම අඩකදී අසාර්ථක වුවහොත් නව මූලාශ්‍ර ස්ථානයක් නිර්මාණය කරනවාට වඩා එම කණ්ඩායමම ගැලපන්න. වඩා නව ඉහළ සීමාවක් සමඟ නැවත උපුටා ගැනීම යනු අර්ධ යෙදවීමක් ස්ථිර පරතරයක් බවට පත්වන මාර්ගයයි. කැඩපතේ නියමය අනෙක් පැත්තට ද අදාළය: ඉලක්කයේ ඉඩෙම්පොටන්ට් යෙදවීම අනුපිටපත් වළක්වන අතර උපුටා ගැනීම කිසිදා නොදුටු වෙනසකට කිසිවක් නොකරයි.

මකා දැමීමට වාර්තා අවශ්‍යයි, නිගමන නොවේ

තවම පවතින පේළි සංසන්දනය කිරීමෙන් යතුරු මොනවාද අතුරුදහන් වූයේ යැයි පාරිභෝගිකයාට කිව නොහැක. මකා දැමීම් කිසිදා වාර්තා නොකරන මූලාශ්‍රයක් ඔබට අසම්පූර්ණ විකල්ප දෙකක් ඉතිරි කරයි: වෙනස සඳහා ප්‍රමාණවත් කලක් යතුරු ඉතිහාසය තබා ගැනීම, හෝ කාලසටහනකට අනුව පැහැදිලි සම්පූර්ණ ගැලපීමක් ක්‍රියාත්මක කිරීම. දෙකම පිරිවැය සහිත නිර්මාණ තීරණ වන අතර කිසිවෙකු ඒවා හිමි නොකරන්නේ නම් එකක්වත් නොපවතී.

රඳවා ගැනීම ද එම ආකාරයේ තීරණයකි. සහාය දක්වන සෑම වෙනස්කම් ෆීඩයකටම කවුළුවක් ඇත; එය ගිවිසුමේ ප්‍රකාශ කර පාරිභෝගිකයාගේ පරීක්ෂණ ලක්ෂ්‍යය එයට ළං වන විට අනතුරු අඟවන්න. සති දෙකක බාධාවකින් පසු අවදි වන පාරිභෝගිකයා නිහඬව අර්ධ කණ්ඩායමක් ලැබීම වෙනුවට පැහැදිලි "නැවත ආරම්භය අවශ්‍යයි" දෝෂය කියවිය යුතුය.

පසුව ඩෙල්ටාව වටිනාදැයි මනින්න

සෑම යතුරක් සහ හැෂ් සංසන්දනය කිරීමට ආපසු යාම සමහර විට නිවැරදිය, එහි පිරිවැය දැනගැනීම වටී. ඔබ තවමත් සෑම පේළියක් පිළිබඳ තොරතුරු මාරු කරයි, හැෂ් වගු හරහා ස්ථාවර ස්නැප්ෂොටයක් නොදෙයි, සහ හැෂ් යෝජනා ක්‍රමය නිරූපණය සහ ගැටුම් පිළිබඳ තමන්ගේම ප්‍රශ්න ගෙන එයි. සත්‍යාපනය කළ හැකි මායිමක් සහිත අඩු බයිට් යනු ඉලක්කයයි; කමිට් වූ වෙනසක් නිහඬව හෙළන අඩු බයිට් ඩෙල්ටාවක්ම නොවේ.

අවසන්-වෙනස්කම් තීරුව ඉඟියකි. ප්‍රමාද වූ කමිට්, මකා දැමීම සහ දිගු බාධාවක් ජයගන්නා කර්සරය ගිවිසුමකි.

අදාළ ලිපි