ستاسو ډیلټا فیډ ناوخته کومټونه له لاسه ورکوي: باوري کرسر جوړ کړئ
یوه کرښه ناوخته راغله ځکه چې د اوبو نښه د کومټ پوله نه وه. ناکامي تعقیب کړئ، بیا پوښ، پوله، ساتنه او خوندي بیا پیل وټاکئ.
دا هغه ناکامي ده چې ما دوه ځله لیدلې، په دوو مختلفو انجنونو کې. یو صادرات په 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
که رسول په نیمه لار کې ناکام شي، د نوي سرچینه موقف د جوړولو پر ځای هماغه بسته همغږه کړئ. له تازه پورتنۍ پولې سره بیا استخراج هغه لار ده چې جزوي تطبیق په تلپاتې تشه بدلیږي. د آینې قاعده بل اړخ ته هم پلي کیږي: په هدف کې ایډمپوټینټ تطبیق کاپي مخنیوی کوي او د هغه بدلون لپاره هیڅ نه کوي چې استخراج هېڅکله نه دی لیدلی.
ړنګولو لپاره ثبت ته اړتیا ده، نه پایلې ته
د هغو کرښو پرتله چې لا هم شته، مصرفوونکي ته نه شي ویلای چې کومې کیلي ورکې شوې. هغه سرچینه چې هېڅکله ړنګول نه ثبتوي، تاسو ته دوه نیمګړې انتخابونه پرېږدي: د توپیر لپاره په کافي اندازه اوږد کیلي تاریخ ساتل، یا د مهالویش له مخې ښکاره بشپړه همغږي چلول. دواړه د لګښت سره ډیزاین پریکړې دي، او هېڅ یوه نه شته تر هغه چې څوک یې مالک نه وي.
ساتنه هم هماغه ډول پریکړه ده. هر ملاتړ شوی بدلون فیډ یوه کړکۍ لري؛ په تړون کې یې یاد کړئ او خبرداری ورکړئ کله چې د مصرفوونکي چیکپواینټ هغې ته نږدې شي. هغه مصرفوونکی چې د دوو اونیو د بندیدو وروسته ویښ شي باید روښانه تېروتنه "بیا تنظیم ته اړتیا ده" ولولي، نه دا چې په غلې جزوي بسته ترلاسه کړي.
بیا اندازه کړئ چې ډیلټا ارزښت درلود که نه
هره کیلي او هش پرتله کولو ته بېرته تلل کله ناکله سم دي، او د هغې لګښت پوهیدل ارزښت لري. تاسو لا هم د هرې کرښې معلومات لیږدوئ، هشونه د جدولونو تر منځ همغږي سنیپشاټ نه درکوي، او د هش سکیم د استازیتوب او ټکرونو په اړه خپلې پوښتنې راوړي. د تایید وړ پولې سره لږ بایټ هدف دی؛ لږ بایټ چې کومټ شوی بدلون په غلې غورځوي، هغه ډیلټا نه ده.
د وروستي بدلون کالم یوه اشاره ده. هغه کرسر چې ناوخته کومټ، ړنګول او اوږد بندیدل تېروي، هغه تړون دی.