د راکړې ورکړې او د هغوی د کنټرول میکانیزمونه

معاملې

معامله د معلوماتو په اړه د عملیاتو لړۍ ده چې پیل او پای لري.

معامله د لوستلو او لیکلو عملیاتو ترتیبي اجرا کول دي. د لیږد پای یا د بدلونونو خوندي کول (ژمنه) یا د بدلونونو لغوه کول (رول بیک) کیدی شي. د ډیټابیس په تړاو، معامله د څو غوښتنو څخه جوړه ده چې د یوې غوښتنې په توګه چلند کیږي.

لیږدونه باید د ACID ملکیتونه پوره کړي

اتومي. معامله یا په بشپړه توګه بشپړه شوې یا په بشپړه توګه نه ده.

تسلسل. کله چې د لیږد بشپړول، په ډیټا باندې لګول شوي محدودیتونه (د بیلګې په توګه، په ډیټابیس کې محدودیتونه) باید سرغړونه ونه شي. تسلسل پدې معنی دی چې سیسټم به له یو سم حالت څخه بل سم حالت ته لیږدول کیږي.

انزوا. په موازي ډول پرمخ وړل شوي لیږدونه باید یو بل اغیزه ونکړي، د بیلګې په توګه، د بل لیږد لخوا کارول شوي ډاټا بدل کړئ. د موازي معاملو د اجرا کولو پایله باید ورته وي لکه څنګه چې لیږدونه په ترتیب سره اجرا شوي وي.

پایښت. یوځل چې ژمن وي، بدلونونه باید له لاسه ورنکړل شي.

د راکړې ورکړې ثبت

لاګ د لیږدونو لخوا رامینځته شوي بدلونونه ذخیره کوي ، د سیسټم ناکامۍ په صورت کې د ډیټا اټومي او ثبات تضمینوي

لاګ هغه ارزښتونه لري چې ډاټا مخکې او وروسته د راکړې ورکړې لخوا بدل شوي. د لیکلو دمخه لاګ ستراتیژي د پیل څخه دمخه د پخوانیو ارزښتونو په اړه د ننوتلو اضافه کولو ته اړتیا لري ، او د لیږد بشپړیدو وروسته د وروستي ارزښتونو په اړه. د سیسټم د ناڅاپه بندیدو په صورت کې، ډیټابیس د بیاکتنې په ترتیب کې لاګ لولي او د معاملو لخوا رامینځته شوي بدلونونه لغوه کوي. کله چې د مداخلې لیږد سره مخ شو، ډیټابیس دا اجرا کوي او په لاګ کې د هغې په اړه بدلونونه رامینځته کوي. د ناکامۍ په وخت کې په دولت کې پاتې کیدل، ډیټابیس د لاګ ان فارورډ ترتیب لوستل او د معاملو لخوا رامینځته شوي بدلونونه بیرته راګرځوي. په دې توګه، د راکړې ورکړې ثبات چې مخکې یې ژمنې شوي او د مداخلې اتومیکیت ساتل کیږي.

په ساده ډول د ناکامه معاملو بیا اجرا کول د بیا رغونې لپاره کافي ندي.

بېلګه. کارونکي په خپل حساب کې $ 500 لري او کارونکي پریکړه کوي چې دا له ATM څخه وباسي. دوه معاملې روانې دي. لومړی د بیلانس ارزښت لوستل کیږي او که چیرې په بیلانس کې کافي فنډ شتون ولري نو دا کارونکي ته پیسې ورکوي. دوهم د توازن څخه اړین مقدار کموي. راځئ چې ووایو سیسټم خراب شو او لومړی عملیات ناکام شو، مګر دویم یې ترسره کړ. په دې حالت کې، موږ نشو کولی کارونکي ته پیسې بیرته صادر کړو پرته له دې چې سیسټم خپل اصلي حالت ته د مثبت توازن سره بیرته راستانه کړو.

د موصلیت کچه

ژمن ولولئ

د خراب لوستلو ستونزه دا ده چې یوه معامله کولی شي د بلې معاملې منځمهاله پایله ولولي.

بېلګه. د ابتدايي بیلانس ارزښت $0 دی. T1 ستاسو توازن ته $ 50 اضافه کوي. T2 د بیلانس ارزښت ($50) لوستل کیږي. T1 بدلونونه ردوي او وځي. T2 د غلط بیلانس ډیټا سره اجرا کولو ته دوام ورکوي.

د حل لاره دا ده چې د ثابت معلوماتو لوستل (Read Committed)، کوم چې د لیږد لخوا بدل شوي ډاټا لوستل منع کوي. که چیرې لیږد A د ډیټا یو ټاکلی سیټ بدل کړی وي ، نو بیا لیږد B ، کله چې دې ډیټا ته لاسرسی ومومي ، د لیږد A بشپړیدو ته انتظار کولو ته اړ کیږي.

د تکرار وړ لوستل

د ورک شوي تازه کولو ستونزه. T1 د T2 بدلونونو په سر کې بدلونونه خوندي کوي.

بېلګه. د ابتدايي بیلانس ارزښت $0 دی او دوه لیږدونه په ورته وخت کې بیلانس ډکوي. T1 او T2 د $ 0 بیلانس لوستل. T2 بیا $200 ته $0 اضافه کوي او پایله خوندي کوي. T1 $ 100 ته $ 0 اضافه کوي او پایله خوندي کوي. وروستۍ پایله د $100 پرځای $300 ده.

د نه تکراریدونکي لوستلو ستونزه. د ورته معلوماتو لوستل په مکرر ډول مختلف ارزښتونه راګرځوي.

بېلګه. T1 د $ 0 بیلانس ارزښت لوستل کیږي. T2 بیا بیلانس ته $ 50 اضافه کوي او پای ته رسیږي. T1 ډاټا بیا لوستل کوي او د تیرې پایلې سره توپیر پیدا کوي.

د تکرار وړ لوستل ډاډ ورکوي چې دوهم لوستل به ورته پایله بیرته راوړي. د یوې معاملې لخوا لوستل شوي معلومات په نورو کې نشي بدلیدلی تر هغه چې لیږد بشپړ شوی وي. که چیرې لیږد A د ډیټا یو ټاکلی سیټ لوستلی وي ، نو بیا لیږد B ، کله چې دې ډیټا ته لاسرسی ومومي ، د لیږد A بشپړیدو ته انتظار کولو ته اړ کیږي.

ترتیب شوی لوستل (د لړۍ وړ)

د فینټم لوستلو ستونزه. دوه پوښتنې چې د یو ځانګړي حالت پراساس ډیټا غوره کوي مختلف ارزښتونه بیرته راوړي.

بېلګه. T1 د ټولو کاروونکو شمیر غوښتنه کوي چې بیلانس یې د $ 0 څخه ډیر دی مګر د $ 100 څخه کم دی. T2 د یو کارونکي څخه $ 1 کموي چې د $ 101 بیلانس سره. T1 غوښتنه بیا خپروي.

د لوستلو امر شوی (د لړۍ وړ). لیږدونه په بشپړ ډول ترتیب شوي دي. دا د ریکارډونو تازه کول یا اضافه کول منع دي چې د غوښتنې شرایطو کې راځي. که چیرې لیږد A د ټول جدول څخه د معلوماتو غوښتنه کړې وي، نو ټول جدول د نورو معاملو لپاره کنګل کیږي تر هغه چې د A لیږد بشپړ نشي.

مهالویش کوونکی

هغه ترتیب ترتیبوي په کوم کې چې عملیات باید د موازي معاملو په جریان کې ترسره شي

د انزوا یوه ټاکلې کچه وړاندې کوي. که د عملیاتو پایله د دوی په ترتیب پورې اړه نه لري، نو دا ډول عملیات بدلیدونکي (Permutable) دي. د مختلفو معلوماتو د لوستلو عملیات او عملیات بدلیدونکي دي. د لوستلو لیکلو او لیکلو لیکلو عملیات بدلیدونکي ندي. د مهالویش ورکوونکي دنده دا ده چې د موازي معاملو لخوا ترسره شوي عملیات مداخله وکړي ترڅو د اجرا کولو پایله د لیږدونو ترتیبي اجرا کولو سره مساوي وي.

د موازي دندو د کنټرول میکانیزم (د همغږي کنټرول)

خوشبیني د شخړو په موندلو او حل کولو ولاړه ده، خوشبیني د شخړو د رامنځ ته کیدو په مخنیوي ولاړه ده.

په خوشبینانه چلند کې، ډیری کاروونکي د دوی په اختیار کې د معلوماتو کاپي لري. د سمون بشپړولو لپاره لومړی کس بدلونونه خوندي کوي، پداسې حال کې چې نور باید بدلونونه یوځای کړي. یو خوشبین الګوریتم اجازه ورکوي چې شخړې رامنځته شي، مګر سیسټم باید د شخړې څخه بیرته راشي.

د بدبینانه چلند سره، لومړی کارونکی چې د معلوماتو ترلاسه کولو لپاره کار کوي د نورو معلوماتو ترلاسه کولو مخه نیسي. که شخړې لږې وي، نو دا ښه ده چې خوشبینه ستراتیژي غوره کړئ، ځکه چې دا د لوړې کچې همغږي چمتو کوي.

تالاشي کول

که چیرې یوه لیږد ډیټا بنده کړې وي ، نو نورې لیږدونه باید تر هغه پورې انتظار وباسي تر څو چې ډیټا ته لاسرسی ومومئ.

یو بلاک په ډیټابیس، میز، قطار، یا خاصیت کې پوښل کیدی شي. شریک شوی لاک په ورته ډیټا باندې د څو لیږدونو لخوا پلي کیدی شي ، ټولو لیږدونو ته اجازه ورکوي (پشمول هغه چې دا یې لګولی وي) لوستلو ته اجازه ورکوي ، ترمیم او ځانګړي نیول منع کوي. ځانګړي قفل یوازې د یوې معاملې لخوا پلي کیدی شي ، د مسلط شوي لیږد هر ډول عمل ته اجازه ورکوي ، د نورو لخوا هر ډول عمل منع کوي.

تعطل هغه حالت دی چیرې چې راکړې ورکړې په یوه پاتې حالت کې پای ته رسیږي چې د نامعلوم وخت لپاره دوام کوي.

بېلګه. لومړۍ معامله د دوهم لخوا نیول شوي ډیټا خوشې کیدو ته انتظار باسي ، پداسې حال کې چې دوهم د لومړي لخوا نیول شوي ډیټا خوشې کیدو ته انتظار باسي.

د ډیډ لاک ستونزې ته خوشبینه حل اجازه ورکوي چې ځنډ رامینځته شي ، مګر بیا د ځنډیدو کې دخیل یو له لیږد څخه بیرته راګرځولو سره سیسټم بیرته راګرځوي.

ځنډول په ځانګړو وقفو کې لټول کیږي. د کشف میتودونو څخه یوه د وخت په واسطه ده ، دا په پام کې ونیسئ چې یو خنډ رامینځته شوی که چیرې لیږد بشپړیدو لپاره ډیر وخت ونیسي. کله چې یو تعطل وموندل شي، یو له معاملو څخه بیرته راګرځول کیږي، او نورو معاملو ته اجازه ورکوي چې په تعطل کې ښکیل وي بشپړ شي. د قربانیانو انتخاب د راکړې ورکړې د ارزښت یا د دوی د لوړتیا پر بنسټ کیدی شي (د انتظار مړینه او د زخم انتظار سکیمونه).

هره معامله T یو مهال ویش ټاکل شوی TS د راکړې ورکړې د پیل وخت لري.

انتظار وکړئ - مړ شئ.

که TS(Ti) < TS(Tj)بیا وروسته Ti انتظار کوي، که نه Ti بیرته راګرځي او د ورته مهال ویش سره بیا پیل کوي.

که چیرې یو ځوان لیږد سرچینه ترلاسه کړي او یو زوړ لیږد د ورته سرچینې غوښتنه وکړي، نو زاړه لیږد ته اجازه ورکول کیږي چې انتظار وکړي. که یو زوړ لیږد یوه سرچینه ترلاسه کړې وي، نو بیا هغه ځوان لیږد چې د دې سرچینې غوښتنه کوي بیرته بیرته اخیستل کیږي.

زخم - انتظار.

که TS(Ti) < TS(Tj)بیا وروسته Tj بیرته راګرځي او د ورته مهال ویش سره بیا پیل کوي، که نه Ti انتظار

که یو ځوان معامله سرچینه ترلاسه کړې وي او یو زوړ لیږد د ورته سرچینې غوښتنه کوي، نو ځوان معامله به بیرته واخیستل شي. که چیرې یو زوړ لیږد سرچینه ترلاسه کړي، نو بیا هغه ځوان لیږد چې د دې سرچینې غوښتنه کوي د انتظار اجازه لري. د لومړیتوب پر بنسټ د قرباني انتخاب د ځنډ مخه نیسي، مګر هغه لیږدونه بیرته راولي چې ځنډول شوي ندي. ستونزه دا ده چې لیږدونه ډیری وختونه بیرته راګرځیدلی شي ځکه چې ... یو زوړ لیږد ممکن د اوږدې مودې لپاره سرچینې وساتي.

د تعطل د ستونزې لپاره نا امیدي حل اجازه نه ورکوي چې معامله پیل شي که چیرې د بندیدو خطر شتون ولري.

د ځنډ د موندلو لپاره، یو ګراف جوړ شوی دی (د انتظار ګراف، د انتظار لپاره ګراف)، د هغې عمودی معاملې دي، او څنډې د لیږد څخه الرښوونه کیږي چې د لیږد لپاره د ډیټا خوشې کیدو انتظار کوي چې دا ډاټا یې نیولې ده. که چیرې ګراف یو لوپ ولري یو تعطل واقع شوی وي. د انتظار ګراف جوړول، په ځانګړې توګه په توزیع شوي ډیټابیسونو کې، یو ګران پروسیجر دی.

دوه مرحلې تالاشۍ - د راکړې ورکړې په پیل کې د لیږد لخوا کارول شوي ټولې سرچینې ضبط کولو او په پای کې خوشې کولو سره د ځنډ مخه نیسي

د بلاک کولو ټول عملیات باید د لومړي خلاصولو څخه مخکې وي. دا دوه مرحلې لري - د ودې مرحله، په کوم کې چې گرفتونه راټولیږي، او د کمیدو مرحله، په کوم کې چې گرفت خوشې کیږي. که چیرې د یوې سرچینې نیول ناممکن وي، معامله بیا پیل کیږي. دا ممکنه ده چې یوه معامله به د اړتیا وړ سرچینې ترلاسه کولو توان ونلري، د بیلګې په توګه، که څو لیږدونه د ورته سرچینو لپاره سیالي وکړي.

د دوه مرحلې ژمنې ډاډ ورکوي چې ژمنې په ټولو ډیټابیس نقلونو کې اجرا کیږي

هر ډیټابیس د ډیټا په اړه معلومات داخلوي چې په لاګ کې به بدل شي او همغږي کونکي ته ځواب ورکوي OK (د رایې ورکولو مرحله). وروسته له دې چې هرڅوک سم ځواب ورکړ، همغږي کوونکی یو سیګنال لیږي چې هرڅوک یې ژمنتیا ته اړوي. د ژمنې کولو وروسته، سرورونه سم ځواب ورکوي؛ که لږترلږه یو ځواب سم نه وي، نو همغږي کوونکی یو سیګنال لیږي ترڅو ټولو سرورونو ته بدلونونه لغوه کړي (د بشپړیدو مرحله).

د مهال ویش طریقه

یو زوړ لیږد بیرته راګرځول کیږي کله چې د ځوان لیږد لخوا ښکیل ډیټا ته د لاسرسي هڅه کوي

هره معامله د مهال ویش ټاکل کیږي TS د اجرا کولو د پیل وخت سره مطابقت لري. که Ti ختم Tjبیا وروسته TS(Ti) < TS(Tj).

کله چې معامله بیرته راګرځول کیږي، نو دا د نوي مهال ویش ټاکل کیږي. هر ډیټا اعتراض Q په راکړه ورکړه کې ښکیل د دوو لیبلونو سره نښه شوی. W-TS(Q) - د ترټولو ځوان لیږد مهال ویش چې په بریالیتوب سره یو ریکارډ بشپړ کړ Q. R-TS(Q) - د ترټولو ځوان لیږد مهال ویش چې د لوستلو ریکارډ یې ترسره کړی Q.

کله چې معامله T د معلوماتو لوستلو غوښتنه کوي Q دوه اختیارونه شتون لري.

که TS(T) < W-TS(Q)، دا دی، معلومات د ځوان لیږد لخوا تازه شوي، بیا لیږد T بیرته راګرځي.

که TS(T) >= W-TS(Q)، بیا لوستل ترسره کیږي او R-TS(Q) روان دی MAX(R-TS(Q) TS(T)).

کله چې معامله T د معلوماتو بدلون غوښتنه کوي Q دوه اختیارونه شتون لري.

که TS(T) < R-TS(Q)، دا دی، معلومات لا دمخه د یو ځوان لیږد لخوا لوستل شوي او که بدلون رامنځته شي، یو شخړه به رامنځته شي. معامله T بیرته راګرځي.

که TS(T) < W-TS(Q)، دا دی، معامله هڅه کوي یو نوی ارزښت پورته کړي، د لیږد T بیرته راګرځول کیږي. په نورو قضیو کې، بدلون ترسره کیږي او W-TS(Q) مساوي کیږي TS(T).

هیڅ ګران انتظار ګراف جوړونې ته اړتیا نشته. زاړه راکړې ورکړې په نويو پورې اړه لري، نو د انتظار په ګراف کې هیڅ دوره شتون نلري. هیڅ ډول خنډونه شتون نلري ځکه چې لیږدونه انتظار نه کیږي مګر سمدلاسه بیرته راستانه شوي. کاسکیډینګ رول بیک ممکن دی. که Ti لرې شو او Tj ما هغه معلومات لوستل چې ما بدل کړل Tiبیا وروسته Tj هم باید بیرته راوګرځي. که په ورته وخت کې Tj مخکې له دې چې ژمنه شوې وي، نو بیا به د ثبات له اصولو څخه سرغړونه وي.

د cascading rollbacks لپاره یو له حلونو څخه. یوه معامله په پای کې د لیکلو ټول عملیات بشپړوي، او نور لیږدونه باید د دې عملیاتو بشپړیدو ته انتظار وباسي. لیږدونه د لوستلو دمخه ژمن کیدو ته انتظار باسي.

د توماس د لیکلو قاعده - د مهال ویش د میتود یو توپیر چې په هغه کې د ځوان لیږد لخوا تازه شوي معلومات د زاړه لخوا د لیکلو څخه منع دي

معامله T د معلوماتو بدلون غوښتنه کوي Q. که TS(T) < W-TS(Q)، يعنې، معامله هڅه کوي چې نوي ارزښت له سره وليکي، د راکړې ورکړې T د ټايم سټمپ ميتود په توګه بېرته نه راګرځول کيږي.

سرچینه: www.habr.com

Add a comment