په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

سلام و ټولو ته. ولادیسلاو رودین په تماس کې دی. زه اوس مهال په OTUS کې د لوړ کاري بار آرکیټیک کورس لپاره د کورس مشر یم او د سافټویر معمارۍ کورسونه هم درس ورکوم.

د ښوونې سربیره ، لکه څنګه چې تاسو شاید یادونه کړې وي ، زه په هابری کې د OTUS بلاګ لپاره اصلي توکي لیکم او زه غواړم د نن ورځې مقالې سره همغږي شم ترڅو د کورس له پیل سره همغږي شم. "PostgreSQL"، کوم چې همدا اوس د نوم لیکنې لپاره خلاص دی.

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

پېژندنه

В تیر وخت موږ د دې حقیقت په اړه خبرې وکړې چې په ډیټابیسونو کې لیږد دوه ستونزې حل کوي: د غلطۍ زغم او په سیالۍ چاپیریال کې ډیټا ته لاسرسي تضمین کول. د دې دندو په بشپړه توګه ترسره کولو لپاره، لیږد باید د ACID ملکیتونه ولري. نن موږ به د لیک په اړه په تفصیل سره خبرې وکړو زه (انزول) په دې لنډیز کې.

موصلیت

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

ترټولو مشهوره اضطرابونه عبارت دي له: ناپاک لوستل ، نه تکراریدونکي لوستل ، فینټم لوستل ، مګر په حقیقت کې 5 نور شتون لري: ناپاک لیکل ، کرسر ورک شوی تازه ، ورک شوی تازه ، د لوستلو سکی ، لیکل.

خرابه لیکنه

د ګډوډۍ جوهر دا دی چې راکړې ورکړې کولی شي غیر راجع شوي معلومات له سره لیکي.

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

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

بې نظمۍ په ساده ډول درملنه کیدی شي: موږ د ثبت کولو پیل کولو دمخه ریکارډ ته یو قفل ضمیمه کوو ، د ریکارډ بدلولو څخه نورې معاملې منع کوي تر هغه چې تالا لرې شوی وي.

خراب لوستل

خراب لوستل پدې معنی دي چې د غیر محدود معلوماتو لوستل.

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

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

د بې نظمۍ سمولو لپاره، تاسو کولی شئ د لوستلو قفل ضمیمه کړئ، مګر دا به په فعالیت ډیره اغیزه وکړي. دا خورا ساده ده چې ووایو چې د لیږد بیرته راګرځولو لپاره، د معلوماتو لومړنی حالت (د ثبت پیل کولو دمخه) باید په سیسټم کې خوندي شي. ولې له هغه ځایه نه لوستل کیږي؟ دا دومره ارزانه ده چې ډیری ډیټابیسونه د ډیفالټ لخوا ناپاک لوستل لرې کوي.

تازه له لاسه ورکړ

ورک شوی تازه معنی ورک شوي تازه معلومات دي، او ژباړه په سمه توګه د ستونزې جوهر منعکس کوي:

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

په واقعیت کې، د لیږد T2 پایله بیرته راګرځیده. دا حالت د واضح یا نقلي لیکلو قلفونو سره سم کیدی شي. دا دی، موږ یا په ساده ډول ریکارډ تازه کوو، او بیا یو ضعیف قفل واقع کیږي، یا موږ ترسره کوو د تازه کولو لپاره غوره کړئد لوستلو او لیکلو بندیدو لامل کیږي. مهرباني وکړئ په یاد ولرئ چې دا ډول عملیات خورا خطرناک دي: زموږ د "بې ګناه" لوستلو سره، موږ نور لوستل بندوو. ځینې ​​ډیټابیسونه ډیر خوندي وړاندیز کوي د شریکولو لپاره غوره کړئد معلوماتو لوستلو ته اجازه ورکوي مګر تعدیل شوي ندي.

کرسر تازه له لاسه ورکړ

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

تاسو ولې کرسر ته اړتیا لرئ؟ حقیقت دا دی چې ځینې ډیټابیسونه د انتخاب (لوستلو ثبات) لخوا غوره شوي ټولو ریکارډونو کې تالاش وړاندیز کوي ، یا یوازې په هغه ریکارډ کې چې کرسر اوس مهال موقعیت لري (د کرسر ثبات). د کرسر ثبات سره، لنډ لاک پلي کیږي، کوم چې موږ ته اجازه راکوي چې د تالاشۍ شمیر کم کړو که چیرې موږ د ډیټا لوی نمونې تکرار کړو. له همدې امله، ورک شوی تازه انډول د کرسر لپاره په جلا توګه جلا شوی.

نه تکراریدونکی لوستل

نه تکراریدونکي لوستل دا دي چې زموږ د لیږد پلي کولو پرمهال ، د ورته ریکارډ 2 پرله پسې لوستل به مختلف پایلې رامینځته کړي ، ځکه چې د دې دوه لوستلو ترمینځ بل لیږد مداخله وکړه ، زموږ ډیټا بدله کړه او ژمن شو.

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

ولې دا حتی یوه ستونزه ده؟ تصور وکړئ چې په انځور کې د لیږد T2 هدف د ټولو توکو غوره کول دي چې قیمت یې له 150 USD څخه کم وي. بل چا قیمت $200 ته تازه کړ. په دې توګه، نصب شوي فلټر کار نه دی کړی.

دا ګډوډي هغه وخت پای ته رسیږي کله چې دوه مرحلې انټرلاکونه اضافه شي یا کله چې د MVCC میکانیزم کارول کیږي، کوم چې زه غواړم په جلا توګه بحث وکړم.

پریت لوستل

Phantom د معلوماتو لوستل دي چې د بل لیږد لخوا اضافه شوي.

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

د مثال په توګه، موږ کولی شو د ارزانه محصول ناسم انتخاب وګورو کله چې دا بې نظمۍ واقع کیږي.

د فینټم لوستلو څخه خلاصول لا دمخه خورا ستونزمن دي. منظم بلاک کول کافي ندي ، ځکه چې موږ نشو کولی هغه څه بند کړو چې لاهم شتون نلري. د 2PL سیسټمونه د وړاندوینې تالاشۍ کاروي، پداسې حال کې چې د MVCC سیسټمونه د راکړې ورکړې مهالویش لري چې هغه لیږدونه بیرته راګرځوي چې ممکن د ننوتلو لخوا ګډوډ شي. دواړه لومړی او دویم میکانیزمونه خورا دروند دي.

سکه ولولئ

د لوستلو سکیو هغه وخت رامینځته کیږي کله چې موږ د څو میزونو سره کار کوو، د هغې مینځپانګې باید په دوامداره توګه بدلون ومومي.

راځئ چې ووایو موږ میزونه لرو چې د پوسټونو استازیتوب کوي او د دوی میټا معلومات:

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

یو لیږد د میزونو څخه لوستل کیږي، بل یې تعدیل کوي:

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

د لیږد T1 په پایله کې، پوسټ عنوان لري = ښه، او تازه شوی_by = T2، کوم چې یو ډول متضاد دی.

په حقیقت کې، دا یو نه تکراریدونکی لوستل دی، مګر د څو میزونو د یوې برخې په توګه.

د دې د حل کولو لپاره، T1 کولی شي په ټولو قطارونو کې لاکونه واچوي چې دا به لوستل شي، کوم چې به د لیږد T2 د معلوماتو بدلولو مخه ونیسي. د MVCC په صورت کې، د T2 لیږد به لغوه شي. د دې بې نظمۍ پروړاندې محافظت مهم کیدی شي که چیرې موږ کرسر وکاروو.

ټوکه ولیکئ

دا بې نظمي د مثال په توګه تشریح کول هم اسانه دي: فرض کړئ چې زموږ په سیسټم کې لږترلږه یو ډاکټر باید وظیفه وي، مګر دواړو ډاکټرانو پریکړه وکړه چې خپله دنده لغوه کړي:

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

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

دا ورته نه تکراریدونکی لوستل دی. په بدیل سره، انتخاب کولی شي په دې ریکارډونو کې تالاشۍ ځای په ځای کړي.

skew ولیکئ او skew لوستل د پخوانیو ګډوډیو ترکیبونه دي. تاسو کولی شئ د لیکلو سکیو په پام کې ونیسئ، کوم چې په اصل کې یو فینټم لوستل دی. یو جدول په پام کې ونیسئ چې د کارمندانو نومونه، د دوی معاشونه، او هغه پروژه چې دوی یې کار کوي:

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

په ډیټابیسونو کې د لیږد انزوا کچه کمزورې کولو پایله څه کیدی شي؟

د پایلې په توګه، موږ لاندې انځور ترلاسه کوو: هر مدیر فکر کاوه چې د دوی بدلون به د بودیجې د زیاتوالي لامل نه شي، نو دوی د پرسونل بدلونونه رامینځته کړل چې یوځای یې د لګښتونو زیاتوالی المل شو.

د ستونزې لامل په سمه توګه د فینټم لوستلو په څیر دی.

موندنو

په ډیټابیس کې د لیږد انزوا کچې آرام کول د امنیت او فعالیت تر مینځ تجارت دی؛ د دې کچې انتخاب باید سوداګرۍ ته د احتمالي خطرونو پراساس وټاکل شي که چیرې ځینې ګډوډي رامینځته شي.

د کورس په اړه نور معلومات ترلاسه کړئ.

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

Add a comment