■
Атомдық (Atomicity) жүйеде ешқандай мәміле жасалмайтындығына
кепілдік береді. Оның барлық операциялары орындалады немесе
жүзеге аспайды;
■
Келісімділік (Consistency) — т
абысты аяқталғанын растаған
транзакция дерекқордың үйлесімділігін сақтайды;
■
оқшаулағыштық(Isolation) — мәміле барысында параллель
мәмілелер оның нәтижесіне әсер етпеуі керек. Бұл жылжымайтын
мүлік төменде қарастырылады;
■
сенімділік (Durability) — Жүйе жұмысы аяқталғаннан кейін сәтті
аяқталған транзакциямен жасалған өзгерістер сақталуы тиіс.
Басқаша айтқанда, егер пайдаланушы жүйеден транзакция
аяқталғаны туралы растау алған болса, ол жасаған өзгерістер қандай
да бір сәтсіздікке байланысты жойылмайтынына сенімді болуы
мүмкін.
Осы талаптардың жиынтығы ACID акронимімен белгіленеді.
13.2.
ТРАНЗАКЦИЯ МЕН БҰҒАТТАУ.
ПАРАЛЛЕЛЬ ҮРДІСТЕРДІ БАСҚАРУ
Көптеген пайдаланушылар дерекқормен жұмыс жасағанда, бірдей
жазбаны бір мезгілде жаңартуды болдырмау үшін деректерге тікелей
қол жеткізуді шектеу енгізу қажет. Бұл жағдайда сіз құлыптарды
қолдануға жүгінесіз.
Бұғаттау— бұл кейбір деректерді өңдеу операцияларын орындауға
уақытша шектеу. Бұғаттауға жеке кесте жазбасында, кестеде, тіпті бүкіл
дерекқорда салық салынуы мүмкін. Сервер нысанындағы құлыптарды
басқарады, оларды пайдалануды және қақтығыстарды шешуді
басқаратын құлыптау менеджері деп аталады.
Операциялар ACID талаптарына сәйкестігін қамтамасыз ету үшін
деректердің құлыптарын орнатады. Блоктауды пайдаланбастан, бірнеше
мәмілелер бірдей деректерді өзгерте алады.
Бұғаттаудың екі түрі бар:
1)
жазбаны бұғаттау - транзакция кестелердегі жолдарды осы жолдарға
басқа транзакция туралы сұрау жойылатын етіп бұғаттайды;
293
2)
Оқуды құлыптау - транзакция жолдарды бөгеді, осылайша басқа
транзакциядан сұрау осы жолдардың жазбаларын құлыптау үшін
қабылданбайды және оқу құлпы қабылданады. Дерекқорды
параллель өңдеуге арналған шешімдер кестелердің жолдары
бұғатталған және осы жолдарды өзгертетін кейінгі әрекеттер
қабылданбайды және күту режиміне қойылады.
Егер бұғаттау жүйесі дерекқорды басқару жүйесінде іске
асырылмаса, бір уақытта бірнеше пайдаланушылармен бірдей
деректерді оқу және өзгерту бір мезгілде кіруге қатысты
проблемаларға әкелуі мүмкін:
■
соңғы өзгеріс мәселесі бірнеше пайдаланушылар бірдей жолды
оның бастапқы мәніне байланысты өзгерткен кезде пайда
болады; онда кейбір деректер жоғалып кетеді, себебі әрбір келесі
транзакция бұрынғыға жасалған өзгертулерді қайта жазады.
Бұл жағдайдың шығу жолы үнемі өзгереді;
■
егер пайдаланушы логикалық тұрғыдан бұрын бірнеше
деректерді өзгертуді қажет ететін күрделі деректерді өңдеу
операцияларын орындаса, «лас» оқу мәселесі мүмкін.
Деректерді модификациялау барысында басқа пайдаланушы
оларды оқиды, ол логикалық түрде дұрыс емес ақпарат алуы
мүмкін. Осындай проблемаларды болдырмау үшін барлық
өзгерістерді аяқтағаннан кейін деректерді оқып шығу керек;
■
қайталанбайтын оқулар мәселесі мәміле бойынша сол
деректердің бірнеше оқылымының нәтижесі болып табылады.
Бірінші транзакцияны орындау барысында басқа деректерге
өзгерістер енгізуге болады, сондықтан оны қайта оқығанда,
бірінші транзакция тұтастықтың немесе логикалық
сәйкессіздіктің жоғалуына әкелетін деректердің басқа
жиынтығын алады;
■
бір транзакция кестеден деректерді таңдағаннан кейін, екіншісі
бірінші аяқталғанша жолдарды жойып немесе жойғаннан кейін
фантомды оқу мәселесі пайда болады. Кестеден таңдалған
мәндер дұрыс болмайды.
Осындай проблемаларды болдырмау үшін қатарлас
операцияларды келісілген орындаудың кейбір процедураларын
жасау керек. Бұл рәсім келесі ережелерге сай болуы керек:
■
мәміле барысында пайдаланушы келісілген деректерді ғана
көреді. Пайдаланушы сәйкессіз аралық деректерді көрмеуі
керек;
294
■
деректер базасында параллельді екі мәміле жасалса, СУБД
транзакцияның нәтижелері 1-транзакция сияқты орындалатын
болады, содан кейін транзакция 2 немесе керісінше, транзакция 2,
және керісінше, транзакцияның орындалу принципін қолдауға
кепілдік беріледі, онда мәміле 1 жүзеге асады.
Мәмілелерді дұрыс ұстау дерекқордың тұтастығын қамтамасыз ету
үшін негіз болып табылады, сондай-ақ көп қолданушы жүйелердегі
пайдаланушыларды оқшаулау үшін негіз болып табылады. Егер
дерекқордың тұтастығын сақтау үшін міндетті талаптарды
орындасаңыз, транзакцияларды оқшаулаудың бірнеше деңгейлері
болуы мүмкін.
Мәмілелерді оқшаулау деңгейі — мәміледе келісілмеген деректерге
рұқсат етілетін деңгейді, яғни транзакцияның басқа біреуінің оқшаулану
дәрежесін көрсететін мән. Оқшауланудың жоғары деңгейі деректердің
дұрыстығын арттырады, бірақ бір мезгілдегі операциялардың саны
азайтылуы мүмкін. Екінші жағынан, оқшаулаудың төменгі деңгейі
біркелкі операциялар жасауға мүмкіндік береді, бірақ деректердің
дұрыстығын азайтады.
Егер дерекқордың тұтастығын сақтау үшін міндетті талаптарды
орындасаңыз, транзакцияны оқшаулаудың келесі деңгейлері мүмкін.
Оқшауланудың ең жоғары деңгейі транзакцияның серияландыру
хаттамасына сәйкес келеді. Бұл деңгей, SERIALIZABLE деп аталатын,
толық транзакция оқшаулануын және параллельді транзакциялардың
дұрыс өңдеуін қамтамасыз етеді.
Оқшауланудың келесі деңгейі - расталған оқу деңгейі деп аталады -
REPEATABLE READ. Мұндай жетіспейтін жаңартулары сияқты
проблемалар, аралық немесе қайшы деректер орын мүмкін емес,
сондықтан, бұл деңгейде, операция, басқа операциялардың аралық
немесе қорытынды нәтижелерін қол жоқ. Алайда, олардың операциялар
орындау кезінде, сіз басқа мәміле базасында қосылған жолды көре
аласыз. Сондықтан, бір транзакция кезінде орындалған бірдей сұрақ
әртүрлі нәтижелерге әкелуі мүмкін, яғни галстук сызықтар мәселесі
қалады. Алайда, егер мұндай мәселе маңызды болса, оны бір
транзакцияда қайта орындауды қоспағанда, өңдеу алгоритмін өзгертуді
алгоритмдік түрде шешу керек.
Оқшауланудың тағы бір деңгейі аяқталған оқумен байланысты, ол
READ COMMITED деп аталады
295
Достарыңызбен бөлісу: |