Кіріспе

Деректер қорын басқару жүйесінде орындалған жұмыс бірлігі

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

Жүйелік қателер кезінде деректер базасын дұрыс қалпына келтіруге және жүйе іркілген жағдайда да деректер базасының тұрақтылығын сақтауға мүмкіндік беретін сенімді жұмыс бірліктерін қамтамасыз ету. Мысалы: орындалу күтпеген жерден тоқтағанда (толық немесе ішінара), деректер қорындағы көптеген операциялар аяқталмай, олардың жай-күйі белгісіз болып қалады. Деректер қорына бір мезгілде қол жеткізетін бағдарламалардың арасында оқшаулануды қамтамасыз ету. Егер оқшаулану қамтамасыз етілмесе, бағдарламалардың нәтижелері қате болуы мүмкін. Деректер қорын басқару жүйесінде транзакция – логиканың немесе жұмыстың бір бірлігі, ол кейде бірнеше операциядан тұрады. Деректер қорында жүйелі түрде орындалатын кез келген логикалық есептеу транзакция деп есептеледі. Мысалы, бір банктік шоттан екіншісіне ақша аудару: толық транзакция үшін аударылатын соманы бір шоттан алып тастап, сол соманы екінші шотқа қосу қажет. Деректер қорының транзакциясы, анықтама бойынша, атомдық (толығымен орындалуы немесе ешқандай әсері болмауы керек), дәйекті (деректер қорындағы қолданыстағы шектеулерге сәйкес болуы керек), оқшауланған (басқа транзакцияларға әсер етпеуі керек) және тұрақты (тұрақты сақтау құрылғысына жазылуы керек) болуы тиіс. Деректер қорымен жұмыс жасайтындар осы транзакциялардың қасиеттерін ACID аббревиатурасымен белгілейді.

Транзакциялық деректер қоры

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

Транзакцияны бастаңыз. Деректерді өңдеу және/немесе сұраныстарды орындаңыз. Егер қате болмаса, транзакцияны бекітіңіз. Егер қате туындаса, транзакцияны кері қайтарыңыз. Транзакцияны бекіту операциясы транзакция шеңберіндегі деректерді өңдеу нәтижелерін деректер базасына сақтайды. Транзакцияны кері қайтару операциясы транзакция шеңберіндегі деректерді өңдеудің аралық нәтижелерін деректер базасына сақтамайды. Ешбір жағдайда деректер базасына аралық транзакция жасалмайды, өйткені бұл деректер базасын дұрыс емес күйде қалдырады. Ішкі жүйеде көп пайдаланушылы деректер қоры транзакцияларды сақтайды және өңдейді, көбінесе транзакция идентификаторы немесе XID арқылы. Жоғарыда сипатталған қарапайым әдістен басқа транзакцияларды жүзеге асырудың көптеген басқа да тәсілдері бар. Мысалы, ішкі транзакциялар – бұл жаңа транзакцияларды бастайтын (яғни қосалқы транзакциялар) операторларды қамтитын транзакциялар. Көп деңгейлі транзакциялар – бұл ішкі транзакциялар қабатталған жүйе архитектурасының әртүрлі деңгейлерінде (мысалы, деректер базасы қозғалтқышы деңгейінде бір операция, операциялық жүйе деңгейінде бір операция) орын алатын ішкі транзакциялардың бір түрі. Тағы бір транзакция түрі – өтемақы транзакциясы.

SQL-де

Транзакциялар көптеген SQL дерекқорында қолжетімді, бірақ беріктігі әртүрлі деңгейде болады. Мысалы, MySQL 3.23 нұсқасынан бастап транзакцияларды қолдауды бастады, бірақ InnoDB сақтау механизмі 5.5 нұсқасына дейін әдепкі болып бағдарланбады. Алдыңғы қолжетімді MyISAM сақтау механизмі транзакцияларды қолдамайды. Транзакция әдетте BEGIN командасымен басталады (бірақ SQL стандарты START TRANSACTION деп көрсетеді). Жүйе COMMIT операторын өңдегенде, транзакция сәтті аяқталады. ROLLBACK операторы да транзакцияны аяқтап, BEGIN-нен бастап орындалған барлық жұмысты кері қайтара алады. Егер транзакция басталғанда автоматты растау өшірілген болса, транзакция аяқталғаннан кейін автоматты растау қайта қосылады. Жеке транзакциялық операциялар үшін де, жалпы түрде де оқшаулану деңгейін орнатуға болады. Ең жоғары деңгейде (READ COMMITTED), транзакция басталғаннан кейін орындалған кез келген операцияның нәтижесі транзакция аяқталғанға дейін басқа дерекқор пайдаланушыларына көрінбейді. Ең төменгі деңгейде (READ UNCOMMITTED), кейде жоғары параллелизмді қамтамасыз ету үшін қолданылатын, мұндай өзгерістер бірден көрінеді.

Нысандар деректер қоры

Байланысты деректер қоры дәстүрлі түрде белгілі өлшемдегі өрістері мен жазбалары бар кестелерден құралады. Объект деректер қоры өзгермелі өлшемдегі блобтардан тұрады, олар тізбелене алады немесе MIME түрін қамтуы мүмкін. Реляциялық және объект деректер қорының негізгі ұқсастығы – транзакцияны бастау және оны міндеттеу немесе кері қайтару. Транзакция басталғаннан кейін деректер қорының жазбалары немесе объектілері тек оқуға немесе оқу-жазуға бұғатталады. Содан кейін оқу және жазу амалдары орындалады. Транзакция толыққаннан кейін өзгерістер атомдық түрде міндеттеледі немесе кері қайтарылады, нәтижесінде транзакция соңында ешқандай қарама-қайшылық болмайды.

Бөлінген операциялар

Деректер қоры жүйелері таратылған транзакцияларды бірнеше түйіндер арқылы деректерге қол жеткізу ретінде іске асырады. Таратылған транзакция бірнеше түйіндерде ACID қасиеттерін сақтайды және деректер базалары, сақтау басқарушылары, файлдық жүйелер, хабар алмасу жүйелері және басқа да дерек басқарушы жүйелерді қамтуы мүмкін. Таратылған транзакцияда әдетте барлық процесті үйлестіретін және транзакцияның барлық бөліктері тиісті жүйелерге қолданылуын қамтамасыз ететін бір нысан болады. Сонымен қатар, осы ортада Storage as a Service (StaaS) интеграциясы маңызды, себебі ол әртүрлі қолжетімділік, кеңейтімділік және ACID қасиеттері бар, бұлттағы деректер сақтау сыныптарын қамтитын, дерлік шексіз сақтау ресурстарын ұсынады. Бұл интеграция бұлттағы деректер сақтауларда орналасқан деректерге көп көлемді қолданушылық қолданбаларда жоғары қолжетімділікке, жауап беру уақытын қысқартуға және шығындарды тиімді етуге септеседі.

Транзакциялық файл жүйелері

Linux үшін Namesys Reiser4 файлдық жүйесі транзакцияларды қолдайды, ал Microsoft Windows Vista нұсқасынан бастап Microsoft NTFS файлдық жүйесі желілер арқылы таратылған транзакцияларды қолдайды. Деректердің үйлесімділігін арттыратын, Warp Transactional Filesystem (WTF) сияқты жаңа файлдық жүйелерді зерттеу жұмыстары жүргізілуде.