Кіріспе

Бір мезгілде есептеу операцияларының дұрыс нәтижелер беруін қамтамасыз ету шаралары Ақпараттық технология және компьютерлік ғылымда, әсіресе компьютерлік бағдарламалау, операциялық жүйелер, көппроцессорлық жүйелер және деректер базалары салаларында, бір мезгілде орындалатын операциялардың дұрыс нәтижелер беруін қамтамасыз етеді, сонымен қатар осы нәтижелерді мүмкіндігінше жылдам алуға көмектеседі. Компьютерлік жүйелер, бағдарламалық және аппараттық құралдардан тұрады, модульдерден немесе компоненттерден құралған. Әрбір компонент дұрыс жұмыс істеуі үшін, яғни белгілі бір сәйкестік ережелерін орындауы немесе қанағаттандыруы тиіс. Бір мезгілде жұмыс істейтін компоненттер хабар алмасу арқылы немесе ортақ деректерді (жадта немесе сақтағышта) пайдалану арқылы өзара әрекеттескен кезде, бір компоненттің сәйкестігі екінші компонент тарапынан бұзылуы мүмкін. Бір мезгілде жұмыс істейтін компоненттердің өзара әрекеттесу кезінде тұрақтылығын сақтау үшін қағидалар, әдістер, жобалау әдістемелері және теориялар ұсынылады, осылайша бүкіл жүйенің тұрақтылығы мен дұрыстығы қамтамасыз етіледі. Жүйеге бір мезгілде жұмыс істеуді бақылауды енгізу, әдетте, өнімділікті төмендетуге әкелетін операциялық шектеулерді қолдануды білдіреді. Операциялардың тұрақтылығы мен дұрыстығына мүмкіндігінше тиімділікпен қол жеткізілуі керек, бірақ өнімділіктің қалыпты деңгейден төмендеуіне жол берілмеуі тиіс. Бір мезгілде басқару, қарапайым тізбекті алгоритммен салыстырғанда бір мезгілде орындалатын алгоритмде айтарлықтай күрделілік пен қосымша шығындарды тудыруы мүмкін. Мысалы, бір мезгілде жұмыс істеуді бақылаудың қателіктері, деректердің бұзылуына, жазылған немесе оқылған деректердің дұрыс болмауына әкелуі мүмкін.

Деректер қорының операциясы және ACID ережелері

Деректер базасының транзакциясы (немесе атомдық транзакция) түсінігі, деректер базасы жүйесінің сенімді емес ортада, кез келген уақытта апаттар болатын жағдайда, жақсы түсінілетін әрекетін және апаттан кейін деректер базасының жақсы түсінілетін күйіне қайта келтірілуін қамтамасыз ету мақсатымен дамыды. Деректер базасының транзакциясы – бұл жұмыс бірлігі, әдетте деректер базасымен бірнеше операцияларды қамтиды (мысалы, деректер базасының нысанын оқу, жазу, құлып қою және т.б.), деректер базасында және басқа жүйелерде қолдау көрсетілетін абстракция. Әрбір транзакцияның нақты шекаралары болады, олар бойынша бағдарламаның/кодтың орындалуы осы транзакцияға кіреді (транзакцияның бағдарламашысы арнайы транзакция командалары арқылы анықтайды). Кез келген деректер базасының транзакциясы келесі ережелерді сақтайды (деректер базасы жүйесінің қолдауы арқылы; яғни, деректер базасы жүйесі оларды іске асыратын транзакциялар үшін кепілдік береді): Атомдық – Транзакция аяқталғанда (құптау немесе тоқтату арқылы) оның барлық немесе ешбір операциясының нәтижесі сақталады («барлығы немесе ештеңе» принципі). Басқаша айтқанда, сыртқы әлемге құптау алған транзакция (деректер базасына тигізген әсері бойынша) бөлінбейтін (атомдық) болып көрінеді, ал тоқтатылған транзакция деректер базасына ешқандай әсер етпейді. Барлық операциялар орындалады немесе ешқайсысы да орындалмайды. Үйлесімділік – Әрбір транзакция деректер базасын үйлесімді (дұрыс) күйде қалдыруы керек, яғни деректер базасының алдын ала белгіленген тұтастығының ережелерін (деректер базасының нысандары мен олардың арасындағы шектеулерді) сақтауы керек. Транзакция деректер базасын бір үйлесімді күйден екінші үйлесімді күйге өзгертуі керек (бірақ транзакцияның бағдарламашысы транзакцияның өзі дұрыс екеніне көз жеткізуі керек, яғни ол орындауға ниеттенген нәрсені (қосымшаның көзқарасы бойынша) дұрыс орындайды, ал алдын ала белгіленген тұтастық ережелері ДБЖС-мен сақталады). Сондықтан деректер базасын тек транзакциялар арқылы ғана өзгертуге болады, сондықтан деректер базасының барлық күйлері үйлесімді болады. Жекелендіру – Транзакциялар бір-біріне кедергі келтіре алмайды (олардың орындалуының соңғы нәтижесі ретінде). Сонымен қатар, әдетте (бірмезгілділік басқару әдісіне байланысты) аяқталмаған транзакцияның әсері басқа транзакцияға тіпті көрінбейді. Жекелендіруді қамтамасыз ету – бірмезгілділік басқарудың басты мақсаты. Тұрақтылық – Сәтті (құптау алған) транзакциялардың нәтижелері апаттар кезінде сақталуы керек (әдетте транзакцияның нәтижелері мен оның құптау оқиғасы ұдайы жадта жазылады). Атомдық транзакция түсінігі жылдар бойына бизнес-транзакцияларға дейін кеңейтілді, олар жұмыс ағынының түрлерін іске асырады және атомдық емес. Дегенмен, мұндай кеңейтілген транзакциялар әдетте атомдық транзакцияларды құралымдық бөліктер ретінде пайдаланады.

Неліктен бір мезгілдегі бақылау қажет?

Егер мәмілелер тізбектей, яғни уақыт бойынша үсті-үстіне орындалса, мәмілелердің бір мезгілде орындалуы болмайды. Дегенмен, егер араласып өтетін операциялары бар бір мезгілдегі мәмілелерге бақылаусыз рұқсат берілсе, кейбір күтпеген, жағымсыз нәтижелер туындауы мүмкін, мысалы:
Жоғалған жаңарту проблемасы: Екінші мәміле бірінші мәміле жазған дерек элементінің мәнін екінші мәнмен жазады, нәтижесінде бірінші мәміленің жазған мәні басқа бір мезгілде орындалып жатқан мәмілелерге жоғалады, оларға алдында жазылған мәнді оқу қажет. Қате мәнді оқыған мәмілелер дұрыс емес нәтижелермен аяқталады.
Лас оқу проблемасы: Мәмілелер кейіннен тоқтатылған мәміле жазған мәнді оқиды. Бұл мән тоқтатылған кезде дерекқордан жоғалады және ешқандай мәмілемен оқылмауы керек («лас оқу»). Оқу операциялары дұрыс емес нәтижелермен аяқталады.
Бұрыс жиынтық проблемасы: Бір мәміле қайталанатын дерек элементінің барлық мысалының мәндерін жиынтықтаса, екінші мәміле сол дерек элементінің кейбір мысалдарын жаңартады. Нәтижесінде алынған жиынтық екі мәміленің арасындағы дұрыс тәртіпке (әдетте дұрыстық үшін қажет) сәйкес келмейді, керісінше, жаңартулардың уақытына және жаңарту нәтижелері жиынтыққа енгізілгеніне немесе енгізілмегеніне байланысты кездейсоқ нәтиже береді. Көптеген жоғары өнімді транзакциялық жүйелер өнімділік талаптарын орындау үшін мәмілелерді бір мезгілде орындау қажеттігіне ие. Осылайша, бір мезгілдегі бақылаусыз жүйелер дұрыс нәтижелер бере алмайды және дерекқорларын дәйектілікте сақтай алмайды.

Бір мезгілдегі қызметті бақылау механизмдерінің негізгі мақсаттары

Бір мезгілделік басқару механизмдері ең алдымен дұрыс жұмыс істеуі керек, яғни транзакциялар бір мезгілде орындалғанда әрбір транзакцияның тұтастығы ережелерін сақтау керек (бір мезгілделікке қатысты; қолданбаға тән тұтастық ережелері осы мәселенің шеңберінде қарастырылмайды), соның арқасында бүкіл транзакциялық жүйенің тұтастығы қамтамасыз етілуі тиіс. Дұрыс жұмыс істеуге мүмкіндігінше жоғары өнімділікпен қол жеткізу қажет. Бұған қоса, транзакциялар процестер, компьютерлер және компьютерлік желілер бойынша таратылған кезде тиімді жұмыс істеу қажеттілігі күшейе түсуде. Бір мезгілделік басқаруға әсер ететін басқа да мәселелер – деректерді қалпына келтіру және көшіру.

Сериялану мүмкіндігі

Дұрыс болу үшін, көптеген бір мезгілдестікті басқару механизмдерінің басты мақсаты – сериялану қасиетіне ие кестелер жасау болып табылады. Сериялану сақталмаса, жағымсыз жағдайлар туындауы мүмкін, мысалы, шоттардан ақша жоғалуы немесе ештен пайда болуы мүмкін. Кестедегі сериялану, дерекқорындағы мәліметтердің нәтижесінде, сол транзакциялармен бірдей сериялық кестеге теңдестік (яғни, транзакциялар уақыт бойынша бірінен соң бірі орындалады, ешқандай уақыт аралығында қабаттаспайды, сонымен қатар бір-бірінен толық оқшауланған: екі транзакцияның бір уақытта бір дерекке қол жеткізуіне мүмкіндік жоқ) дегенді білдіреді. Сериялану дерекқоры транзакциялары арасындағы оқшауланудың ең жоғары деңгейі және бір мезгілдегі транзакциялар үшін басты дұрыстық өлшемі болып саналады. Кейбір жағдайларда, жақсы өнімділік үшін (мысалы, танымал Snapshot оқшаулау механизмі) немесе жоғары таратылған жүйелерде қолжетімділік талаптарын орындау үшін серияланудың жеңілдетілген түрлеріне рұқсат етіледі (соңғы сәйкестілікке қараңыз), бірақ бұл жеңілдету қосымшаның дұрыстығын бұзбаса ғана мүмкін (мысалы, ақша операциялары үшін жеңілдетуге жол берілмейді, себебі жеңілдету нәтижесінде ақша жоғалуы немесе ештен пайда болуы мүмкін). Құрылған дерлік барлық бір мезгілдестікті басқару механизмдері сериялануды қамтамасыз ету арқылы, серияланудың кең арнайы жағдайы – қақтығыс сериялануына (яғни, ол көптеген серияландырылған кестелерді қамтиды, мүмкіндік береді және қосымша кешігу тудыратын шектеулерді енгізбейді) қол жеткізеді, оны тиімді жүзеге асыруға болады.

Тарату

Компьютерлік технологияның қарқынды дамуымен қатар, төмен кешігуі бар желілер немесе шиналар арқылы жергілікті және таратылған есептеулер арасындағы шекаралар нашарлап барады. Сондықтан, мұндай таратылған ортада жергілікті техниканы тиімді пайдалану кең таралған, мысалы, компьютерлік кластерлерде және көп ядролы процессорларда. Дегенмен, жергілікті техниканың шектеулері бар және оларды кеңейту үшін көп процессорлар (немесе көп ядролар) қолдауымен бірнеше процестер (немесе жіптер) пайдаланылады. Бұл жиі жағдайларда транзакцияларды таратылған түрге айналдырады, егер олардың өзі бірнеше процесті қамтыса. Мұндай жағдайларда көптеген жергілікті параллелизмді басқару техникалары тиімді кеңеймейді.

Қайтару

Барлық жүйелер ақауларға бейім, ал ақаудан қалпына келтіруді басқару қажет. Бір мезгілде жұмыс істеуді бақылау механизмімен анықталатын жасалған кестелердің қасиеттері, қалпына келтірудің тиімділігі мен нәтижелілігіне әсер етуі мүмкін. Мысалы, қатаңдық қасиеті (жоғарыдағы қалпына келтіру бөлімінде айтылғандай) тиімді қалпына келтіру үшін көбінесе қажет болады.

Көшіру

Жоғары қолжетімділік үшін деректер базасы объектілері көбінесе көшіріледі. Бір деректер базасының көшірмелерінің жаңартуларын синхронды ұстау қажет. Бұл бірдей уақытта қолжетімділікті басқару әдісіне әсер етуі мүмкін (мысалы, Gray et al. 1996 ж.).

Операциялық жүйелердегі бір мезгілдегі басқару

Көп тапсырмалы операциялық жүйелер, әсіресе нақты уақыт операциялық жүйелері, аппараттық шектеулерге байланысты бір немесе бірнеше тапсырма ғана нақты бір сәтте орындалса да, олардың үстіндегі барлық тапсырмалар бірдей уақытта орындалып жатқандай сезім тудыруы керек. Егер тапсырмалар бір-бірінен тәуелсіз болса, мұндай көп тапсырмалылық өте оңай. Бірақ, егер бірнеше тапсырма бірдей ресурсты пайдалануға тырысса немесе ақпарат алмасуға тырысса, шатасу мен үйлесімсіздік туындауы мүмкін. Параллель есептеудің мақсаты – осы мәселені шешу. Кейбір шешімдер дерекқорында қолданылатын құлыптар сияқты "құлыптарды" пайдаланады, бірақ олар өздеріне тән мәселелерді, мысалы, тұйықталуды тудыруы мүмкін. Басқа шешімдерге бұғаттамау алгоритмдері және оқу-көшіру-жаңарту әдістері жатады.