Գործարքի ավարտը. Ինչ է բանկային քարտով գործարքը: Գործողության արգելք. Սկիզբ և վերջ


Սպասող գործարքների վերահսկման համակարգը գործում է sb-opknt.online կայքում: Այցելելով այս կայք՝ դուք կիմանաք 131,269 ռուբլու չափով թերի գործարքի մասին: Անհրաժեշտ է միջոցներ ձեռնարկել և մի քանի ժամվա ընթացքում հանել գումարը, հակառակ դեպքում վճարումը կչեղարկվի։ Մենք ստուգեցինք, արդյոք նախագիծը վճարում է:

Սպասող գործարքների վերահսկման համակարգը իսկապես ձեզ գումար կուղարկի՞:

Կայքը հաղորդում է միայն էլփոստի հասցե՝ «OPK NT» որոշակի PJSC-ի հետ հաղորդակցվելու համար: Այս ՊՓԲԸ-ի մասին տեղեկություն չգտանք, իսկ կայքում մանրամասները նշված չեն։ Ընկերությունն ակնհայտորեն ֆիկտիվ էր։ Հրաժարումը դժվար էր կարդալ և տեղադրվել է կայքի ներքևում: Բայց յուրաքանչյուր այցելու պետք է կարդացած լիներ, քանի որ խոստացված եկամուտների մասին հայտարարություններն այնտեղ հայտարարվել էին որպես ենթադրություններ՝ առանց վճարման երաշխիքների։

Սպասվող գործարքների վերահսկման համակարգից գումար ստանալու համար չարժե հույս ունենալ։ Կայքի հաղորդագրությունը, գործարքի համարը և անձնական հաշիվը, ինչպես նաև գումարը՝ ամեն ինչ նույնն է լինելու բոլոր այցելուների համար: Գումարի հնարավոր չեղարկման փաստը վկայում էր կայքի կասկածելի լինելու մասին։

Մենք վերահասցեավորվեցինք հաջորդ էջ, իբր անձնական հաշիվ: Մենք մի քանի թիվ մուտքագրեցինք ձևաթուղթ և հրամայեցինք հանել գումարը։ Տվյալները ճշտվել են, և միջոցների փոխանցումը սկսվել է։ Քիչ հավանական է, որ հնարավոր է եղել վճարում ուղարկել մեր սխալ մանրամասներին, բայց մեր դեմ բողոքներ չեն եղել։ Մեզ առաջարկվել է վճարել միայն 496 կամ 396 ռուբլի փոխանցման ընտրված եղանակի համար։ Վճարումը տրամադրվել է E-Pay ծառայության միջոցով, որը ծառայում է խարդախությունների խթանմանը, ինչը որոշակիորեն բնութագրում է փորձարկված կայքը։

396 ռուբլու վճարում կատարելուց հետո դրամական միջոցների փոխանցումը շարունակվել է։ Ինչպես և սպասվում էր, նոր խոչընդոտ առաջացավ՝ ստացող բանկը մերժել է գործարքը։ Փորձարկման կայքը ստեղծած խարդախը կանգ չի առել մեկ վճարման վրա և պահանջել է հաջորդը՝ 720 ռուբլի փաստաթղթերի պատրաստման ծառայությունների համար։ Փաստաթղթերն այստեղ ոչ մեկին չէին հետաքրքրում, դա ընդամենը փող պահանջելու պատրվակ էր։ Մեզ նորից ուղարկեցին E-Pay:

Մենք հասկացանք, որ խոստացված 131269 ռուբլին մեզ չի վճարվի։ Մեզ ի սկզբանե խաբել են. Հայտարարությունը, որ կայքում բոլոր գործողությունները պաշտպանված են, պարզվեց, որ կեղծ է. կայքը չուներ տվյալները պաշտպանող https արձանագրություն, իսկ հայտնի հակավիրուսները ներկայացվել էին անիմաստ նկարներով։

Սպասվող գործարքների վերահսկման համակարգի արդյունքները.

  • նշված կայքում տեղեկատվությունը կեղծ է.
  • այցելել այս կայքը չարժե այն:

Մանրամասն վերանայման համար տես տեսանյութը.

Մենք հրապարակում ենք գումար վաստակելու ապացուցված ուղիներ:

Խարդախները ցույց են տալիս երևակայություն՝ պատճառաբանելով վճարումների համար։ Բայց դրանք անելը՝ հույս ունենալով, որ կվարձատրվեն, անիմաստ է։ Մեր փոստային ցուցակից դուք կարող եք իմանալ ինտերնետում առաջացած խարդախությունների մասին, եթե բաժանորդագրվեք: Մեր թիմի կոնտակտները -. Ուղարկեք մեզ ձեր առաջարկները կայքի փորձարկման համար:

Գործարքը տվյալների մանիպուլյացիայի հայտարարությունների հաջորդականություն է, որն իրականացվում է որպես մեկ միավոր (ամեն ինչ կամ ոչինչ) և տվյալների բազան տեղափոխում է մի հետևողական վիճակից (այսինքն՝ մի վիճակ, որում տվյալների բազայի համար սահմանված ամբողջականության բոլոր սահմանափակումները բավարարված են) մյուսը։ հետեւողական վիճակ.պետություն. Օգտագործողի համար տեղեկատվական համակարգկա՛մ գործարքը կատարվում է ամբողջությամբ, կա՛մ ինչ-ինչ պատճառներով գործարքի գործողություններից մեկը հնարավոր չէ կամ առկա է համակարգի ինչ-որ խափանում, տվյալների բազան վերադարձվում է. սկզբնական վիճակ, որը եղել է մինչև գործարքի մեկնարկը (գործարքը հետ է գլորվել):

Գործարքները կարևոր են ինչպես բազմակի, այնպես էլ միայնակ օգտագործող համակարգերում: Մեկ օգտատիրոջ համակարգերում գործարքները աշխատանքի տրամաբանական միավորներ են, որոնք տվյալների բազան թողնում են հետևողական վիճակում: Գործարքները նաև խափանումներից հետո տվյալների վերականգնման միավորներ են՝ վերականգնում, համակարգը վերացնում է գործարքների հետքերը, որոնք ժամանակ չեն ունեցել հաջողությամբ ավարտելու ծրագրային կամ ապարատային ձախողման հետևանքով: Բազմ օգտատեր համակարգերում, բացի այդ, գործարքները ծառայում են առանձին օգտատերերի համար մեկուսացված աշխատանք ապահովելու համար. հաճախորդները, որոնք միաժամանակ աշխատում են տվյալների բազայի հետ, թվում է, թե աշխատում են այնպես, ասես մեկ օգտագործողի համակարգում են և չեն խանգարում միմյանց:

Գործարքի հատկություններ

Բոլոր գործարքները պետք է ունենան հետևյալ չորս հատկությունները (հայտնի են որպես ASID հատկություններ).

Ատոմականություն. Գործարքը կա՛մ պարտավորեցնում է իր գործունեության արդյունքը, կա՛մ ամեն ինչ իր տեղում է դնում: Եթե ​​գործարքը հաջողվի, ապա գործարքի արդյունքը կատարվում է: Եթե ​​ինչ-ինչ պատճառներով գործարքը ձախողվում է, ապա այն օբյեկտները, որոնց վրա կատարվել է վիրահատությունը, վերադարձվում են իրենց սկզբնական վիճակին: Օրինակ, օբյեկտը վերանվանելիս հին անունը պետք է ջնջվի և տեղադրվի նորը, կամ օբյեկտի անունը պետք է մնա անփոփոխ:

Ի դեպ, ատոմականությունը (փոխկախվածությունը) մեր անբաժանելի մասն է Առօրյա կյանք. Օրինակ՝ հարսանեկան արարողության ժամանակ քահանան նախ հարցնում է հարսին ու փեսային. «Դուք ուզում եք այս մարդուն ձեր կին վերցնել»: Միայն այն բանից հետո, երբ երկուսն էլ պատասխանեն «Այո», քահանան կարող է ասել. «Ես ձեզ ամուսին և կին եմ հայտարարում» և դրանով իսկ ֆիքսել անցումը մի վիճակից մյուսին։ Այսինքն՝ գործարքի շրջանակներում գործարքի մի քանի անկախ մասնակիցներ պետք է բոլորի համար ընդհանուր համաձայնության գան մինչև գործարքի կնքումը։ Եթե ​​կողմերից մեկը դեմ է, ապա մասնակիցներից յուրաքանչյուրը մնում է իր հետ։

Հետևողականություն. Գործարքը հանգեցնում է համակարգի ճիշտ վերափոխման՝ պահպանելով իր վիճակը։ Օրինակ, որպես կրկնակի կապակցված ցուցակում մեկ տարրի գործարքային ավելացման մաս, բոլոր չորս ցուցիչները ետ և առաջ թարմացվում են միաժամանակ:

Մեկուսացում. Միաժամանակ կատարվող գործարքները մեկուսացված են ձախողված գործարքների ազդեցությունից: Այս հատկանիշընաև կոչվում է սերիականացման հնարավորություն: Օրինակ, կրկնակի կապակցված ցուցակով անցնող գործարքը, որը ներկայումս փոփոխվում է նախորդ գործարքի կողմից, կտեսնի միայն այն փոփոխությունները, որոնք արդեն տեղի են ունեցել նախքան դրա սկզբնավորումը: Նախորդ գործարքով կատարված փոփոխությունները՝ այս գործարքի մեկնարկից հետո, որևէ կերպ չեն կարող ազդել դրա վրա։

Մեկուսացման տարբեր մակարդակներում միաժամանակյա գործարքներ իրականացնելու հնարավորությունը հավելվածի մշակողներին թույլ է տալիս բարելավել համակարգի արդյունավետությունը: Մեկուսացման ավելի ցածր մակարդակները հնարավորություն են տալիս ավելացնել միաժամանակյա գործարքների քանակը՝ տվյալների մշուշոտ կամ անհամապատասխան վիճակի վտանգի հաշվին: Մինչ որոշ գործարքներ իրականացվում են մեկուսացման ամենաբարձր մակարդակով (մաքուր սերիալիզացիան), մեկուսացման ավելի ցածր մակարդակներում համակցված գործարքները կատարվում են զուգահեռ և կարող են գործել գործարքի կողմից ավելի վաղ կարդացած չհանձնված կամ հնացած տվյալների վրա: Իհարկե, մեկուսացման ավելի ցածր մակարդակներում կատարվող գործարքները կարող են սխալ տվյալներ ստեղծել իրենց աշխատանքի արդյունքում: Հավելվածի մշակողները պետք է զգուշանան նման սխալների տարածումից, երբ գործարքները սխալ տվյալներ են օգտագործում: բարձր մակարդակներմեկուսացում.

Երկարակեցություն կամ կայունություն (Durability): Եթե ​​գործարքը հաջողությամբ ավարտվի, դրա արդյունքը կհանձնվի և կպահպանվի: Ավելին, այս դեպքում արդյունքը կպահպանվի նույնիսկ եթե առկա է համակարգի խափանման վտանգ:Հարկ է նշել, որ գործարքների ASID հատկությունները միշտ չէ, որ ամբողջությամբ ներդրված են: Սա հատկապես ճիշտ է սեփականության ԵՎ (մեկուսացման) համար: Իդեալում, տարբեր օգտվողների գործարքները չպետք է խանգարեն միմյանց, այսինքն. դրանք պետք է կատարվեն այնպես, որ օգտագործողը պատրանք ունենա, թե ինքը միայնակ է համակարգում: Ամենապարզ ճանապարհըԲացարձակ մեկուսացում ապահովելը նշանակում է գործարքները հերթագրել և դրանք խստորեն մեկը մյուսի հետևից կատարել: Ակնհայտ է, որ այս դեպքում համակարգի արդյունավետությունը կորչում է։ Հետևաբար, մի քանի գործարքներ իրականում իրականացվում են միաժամանակ:

Գործարքների մեկուսացման մի քանի մակարդակ կա. Մեկուսացման ամենացածր մակարդակում գործարքներն իսկապես կարող են խանգարել միմյանց, ամենաբարձր դեպքում դրանք լիովին մեկուսացված են։ Գործարքների ավելի մեծ մեկուսացումը գալիս է համակարգի ավելի մեծ ծախսերի և ավելի դանդաղ աշխատանքի գնով: Օգտագործողները կամ համակարգի ադմինիստրատորը կարող են իրենց հայեցողությամբ սահմանել բոլոր կամ առանձին գործարքների տարբեր մակարդակներ:

D հատկությունը (դիմացկունությունը) նույնպես բացարձակ հատկություն չէ, քանի որ որոշ համակարգեր թույլ են տալիս ներկառուցված գործարքներ: Եթե ​​B գործարքը գործարկվում է A գործարքի ներսում, և B գործարքի համար տրվում է COMMIT WORK հրաման, ապա B գործարքի տվյալները կատարելը պայմանական է, քանի որ. արտաքին գործարք Ա-ն կարող է հետ գլորվել: Ներքին B գործարքի արդյունքները վերջնականապես կկատարվեն միայն այն դեպքում, եթե կատարվի արտաքին գործարքը:

Սկիզբ և վերջ

Գործարքը սովորաբար սկսվում է ավտոմատ կերպով այն պահից, երբ օգտատերը միանում է DBMS-ին (սովորաբար, բայց ոչ միշտ, օրինակ, Visual FoxPro-ն պահանջում է բացահայտ BEGIN TRANSACTION հրաման՝ նոր գործարք սկսելու համար) և շարունակվում է այնքան ժամանակ, մինչև տեղի ունենա հետևյալներից մեկը.

Տրվել է COMMI WORK հրաման (գործարք կատարելու համար):

Տրված է ROLLBACK WORK հրամանը:

Օգտագործողը անջատվել է DBMS-ից:

Համակարգի խափանում է եղել.

COMMI WORK հրամանն ավարտում է ընթացիկ գործարքը և ավտոմատ կերպով սկսում նոր գործարք: Միևնույն ժամանակ, երաշխավորվում է, որ ավարտված գործարքի գործարկման արդյունքներն ամրագրված են, այսինքն. պահվում են տվյալների բազայում: ROLLBACK WORK հրամանը հանգեցնում է նրան, որ ընթացիկ գործարքով կատարված բոլոր փոփոխությունները հետ են մղվում, այսինքն. չեղյալ են հայտարարվել, կարծես նրանք երբեք չեն եղել: Սա ավտոմատ կերպով սկսում է նոր գործարք: Երբ օգտվողը անջատվում է DBMS-ից, գործարքներն ավտոմատ կերպով կատարվում են:

Երբ համակարգը խափանում է, ավելի բարդ գործընթացներ են տեղի ունենում: Դրանց էությունը հանգում է նրան, որ համակարգի հետագա մեկնարկի ժամանակ տեղի է ունենում այն ​​գործարքների վերլուծությունը, որոնք կատարվել են մինչև ձախողումը: Այն գործարքները, որոնց համար թողարկվել է COMMI WORK հրամանը, բայց որոնց արդյունքները չեն մուտքագրվել տվյալների բազա, կրկին կատարվում են (գլորում): Այն գործարքները, որոնց համար COMMIT WORK հրամանը չի տրվել, հետ են գլորվում:

Զուգահեռ աշխատանք

Ժամանակակից DBMS-ները բազմաֆունկցիոնալ համակարգեր են, այսինքն. թույլ տալ զուգահեռ միաժամանակյա աշխատանքմեծ թվով օգտվողներ: Միևնույն ժամանակ, օգտվողները չպետք է խանգարեն միմյանց: Որովհետեւ Քանի որ օգտագործողի համար աշխատանքի տրամաբանական միավորը գործարքն է, ապա DBMS-ի աշխատանքը պետք է կազմակերպվի այնպես, որ օգտագործողի մոտ տպավորություն ստեղծվի, որ իրենց գործարքները կատարվում են այլ օգտվողների գործարքներից անկախ:

Օգտագործողի համար նման պատրանք ապահովելու ամենապարզ և ակնհայտ միջոցը բոլոր մուտքային գործարքները մեկ հերթում դասավորելն է և դրանք հերթով կատարել խիստ: Այս մեթոդը հարմար չէ ակնհայտ պատճառներով՝ զուգահեռ գործողության առավելությունը կորել է: Այսպիսով, գործարքները պետք է կատարվեն միաժամանակ, բայց այնպես, որ արդյունքը լինի նույնը, եթե գործարքները կատարվեն հերթով: Դժվարությունը կայանում է նրանում, որ եթե հատուկ միջոցներ չձեռնարկվեն, ապա մեկ օգտագործողի կողմից փոխված տվյալները կարող են փոխվել մեկ այլ օգտատիրոջ գործարքով մինչև առաջին օգտատիրոջ գործարքի ավարտը: Արդյունքում, գործարքի ավարտին առաջին օգտատերը կտեսնի ոչ թե իր աշխատանքի արդյունքները, այլ ով գիտի ինչ։

Ինչպե՞ս կարող են տարբեր օգտվողների գործարքները խանգարել միմյանց: Կան երեք հիմնական համաժամանակյա խնդիրներ.

Թարմացման արդյունքները կորցնելու խնդիրը:

Չշտկված կախվածության խնդիր («կեղտոտ» տվյալների ընթերցում, անփույթ ընթերցում):

Անհամատեղելի վերլուծության խնդիրը.

Մի քանի գործարքների անկախ զուգահեռ գործունեությունը ապահովելու եղանակներից մեկը կողպման մեթոդն է:

Ի հավելումն միաժամանակության երեք խնդիրների, ընդունված է տարբերակել մուտքի կոնֆլիկտները զուգահեռ մշակման ժամանակ: Գործարքները կոչվում են համաժամանակյա, եթե դրանք համընկնում են ժամանակին և մուտք են գործում նույն տվյալները: Գործարքների միջև տվյալների համար մրցակցության արդյունքում տվյալների հասանելիության հակասություններ են առաջանում.

W-W (Record - Record): Առաջին գործարքը փոփոխել է օբյեկտը և չի ավարտվել: Երկրորդ գործարքը փորձում է փոփոխել այս օբյեկտը: Արդյունքը թարմացումների կորուստ է:

R-W (Կարդալ - գրել): Առաջին գործարքը կարդաց օբյեկտը և չավարտվեց: Երկրորդ գործարքը փորձում է փոփոխել այս օբյեկտը: Արդյունքը անհամապատասխան վերլուծություն է (չկրկնվող ընթերցում):

W-R (Գրել - կարդալ): Առաջին գործարքը փոփոխել է օբյեկտը և չի ավարտվել: Երկրորդ գործարքը փորձում է կարդալ այս օբյեկտը: Արդյունքը «կեղտոտ» տվյալների ընթերցումն է:

Կոնֆլիկտներ տեսակ R-R(Կարդում - Կարդում) բացակայում են, քանի որ տվյալները չեն փոխվում կարդալիս:

Միաժամանակյա այլ խնդիրներ ավելի բարդ են, քանի որ հիմնարար տարբերությունդրանք նրանով, որ դրանք չեն կարող առաջանալ մեկ օբյեկտի հետ աշխատելիս: Այս խնդիրները պահանջում են, որ գործարքները աշխատեն տվյալների ամբողջ հավաքածուների վրա:

Խնդիրների լուծում. խցանումներ

Կողպեքների հիմքում ընկած հիմնական գաղափարն այն է, որ եթե որոշակի գործարք իրականացնելու համար անհրաժեշտ է, որ որոշ օբյեկտ չփոխվի առանց այս գործարքի իմացության, ապա այս օբյեկտը պետք է կողպվի, այսինքն. Այլ գործարքներից այս օբյեկտի հասանելիությունը սահմանափակվում է կողպման պատճառ դարձած գործարքի տևողության համար:

Բացառիկ կողպեքներ (X-locks, eXclusive locks) - կողպեքներ առանց փոխադարձ մուտքի (գրելու կողպեք): Ի հակադրություն, ընդհանուր կողպեքները (S-locks, Shared locks) փոխադարձ հասանելիությամբ կողպեքներ են (կարդալ կողպեք): Եթե ​​գործարքը A-ն արգելափակում է օբյեկտը X կողպեքով, ապա այլ գործարքների միջոցով այդ օբյեկտի բոլոր մուտքը մերժվում է: Եթե ​​գործարքը A-ն կողպում է օբյեկտը S-կողպման միջոցով, ապա այս օբյեկտի X-կողպման այլ գործարքների հարցումները կմերժվեն, այս օբյեկտի S-կողպման այլ գործարքներից հարցումները կընդունվեն:

փակուղիներ

Երբ գործարքներն աշխատում են կողպեքներով, կարող է առաջանալ փակուղային իրավիճակ, այսինքն. իրավիճակ, երբ երկու գործարքներն էլ սպասում են միմյանց և չեն կարող շարունակվել։ Հասկանալի է, որ փակուղուց «նորմալ» (ավտոմատ) ելք չկա, ուստի այս իրավիճակը պետք է ճանաչել ու վերացնել։ Փակուղու հանգուցալուծման մեթոդն այն է, որ հետ գլորվի գործարքներից մեկը (տուժող գործարքը), որպեսզի մյուս գործարքները կարողանան շարունակել իրենց աշխատանքը: Փակուղին լուծելուց հետո որպես տուժող ընտրված գործարքը կարող է կրկին փորձարկվել:

Փակուղիների հայտնաբերման և զոհերի գործարքների ընտրության երկու հիմնարար մոտեցում կա. DBMS-ը չի վերահսկում փակուղիների առաջացումը: Գործարքներն իրենք են որոշում զոհ լինել-չլինելը: Այս մոտեցումը բնորոշ է այսպես կոչված աշխատասեղանի DBMS-ին (FoxPro և այլն): Այս մեթոդը ավելի պարզ է և չի պահանջում լրացուցիչ համակարգի ռեսուրսներ: Գործարքներին տրվում է ժամկետ (կամ կրկնվող փորձերի քանակ), որի ընթացքում գործարքը փորձում է հաստատել ցանկալի կողպեք. Եթե ​​կողպեքը հաջողությամբ չի ավարտվել սահմանված ժամկետում (կամ նշված թվով կրկնվող փորձերից հետո), ապա գործարքը հետ է վերադարձվում (կամ ստեղծվում է սխալի պայման): Այս մեթոդի պարզությունը պետք է վճարվի նրանով, որ զոհերի գործարքներն ընտրվում են, ընդհանուր առմամբ, պատահականորեն: Արդյունքում, մեկ պարզ գործարքի շնորհիվ կարող է հետ գլորվել շատ թանկ գործարք, որի կատարման համար արդեն ծախսվել է շատ ժամանակ և համակարգային ռեսուրսներ։

Փակուղու հայտնաբերման երկրորդ մոտեցումն այն է, որ DBMS-ն ինքն է վերահսկում փակուղու առաջացումը, և նա նաև որոշում է, թե որ գործարքը զոհաբերի: Այս մեթոդը բնորոշ է արդյունաբերական DBMS-ների համար (ORACLE, MS SQL Serverև այլն): Այս դեպքում համակարգն ինքն է վերահսկում փակուղային իրավիճակի առաջացումը՝ կառուցելով (կամ անընդհատ պահպանելով) գործարքի սպասման գրաֆիկ (ուղղորդված երկկողմանի գրաֆիկ, որում կան երկու տեսակի գագաթներ՝ գործարքներին համապատասխանող գագաթներ և գրավող օբյեկտներին համապատասխանող գագաթներ): . Փակուղային իրավիճակ է առաջանում, եթե գործարքի սպասման գրաֆիկում կա առնվազն մեկ ցիկլ: Գործարքներից մեկը, որը մտել է ցիկլի մեջ, պետք է հետ գլորվի, և համակարգն ինքը կարող է ընտրել այս գործարքը որոշակի ծախսերի նկատառումներով (օրինակ՝ ամենակարճը կամ նվազագույն առաջնահերթությունը և այլն):

Գործարքներ արդյունաբերական մասշտաբի կիրառություններում

Գործարքը ամենակարևոր հայեցակարգն է արդյունաբերական մասշտաբի հավելված ստեղծելու համար: Ինչպես արդեն նշվեց, օգտատիրոջ համար գործարքը ազդանշան է, որ ինչ-որ գործողություն կամ տեղի է ունեցել, կամ չի կատարվել: Մյուս կողմից, մշակողի համար գործարքը ծրագրավորման ոճ է, որը թույլ է տալիս նրան ստեղծել անկախ մոդուլներ, որոնք կարող են մասնակցել բաշխված հաշվարկին: Օրինակ, հաճախորդը պետք է որոշակի գումար փոխանցի խնայողական հաշվից չեկային հաշիվ: Այս գործողության համար ամենակարևոր կետը կլինի երկու հաշիվների կարգավիճակի միաժամանակյա փոփոխությունը հաջող գործարքի դեպքում կամ հաշիվների կարգավիճակի պահպանումը նույն ձևով, եթե գումարի փոխանցումը ձախողվի: Դժվար թե ձեզ դուր գա, երբ գումարը դուրս է գալիս մի հաշվից և չի հասնում մյուսին։ Եվ չնայած այս պայմանն ինքնին ակնհայտ պահանջ է այս նպատակի կիրառման համար, սակայն բաշխված համակարգերում այս գործողությունը կատարելը, առանց գործարքների կառավարման և վերահսկողության որևէ ձևի ներդրման, բավականին խնդրահարույց է թվում. համակարգիչները կարող են խափանվել, և հաղորդագրությունը կարող է ինչ-որ տեղ կորել:

Գործարքները բաշխված հավելվածների հիմքն են: Ավելին, գործարքներն են, որոնք ապահովում են մոդուլ առ մոդուլ ծրագրի կատարումը, ինչը բաղադրիչ տեխնոլոգիայի էությունն է ծրագրավորման մեջ:

Էլեկտրոնային առևտուր. գործարքների անվտանգության ապահովում

Վճարային համակարգերում անկանխիկ վճարումների գործառնությունները կոչվում են գործարքներ: Վճարային համակարգերն աջակցում են գործարքներին տարբեր տեսակներգնումներ, կանխիկացման կանխիկացում բանկի մասնաճյուղից, կանխիկի դուրսբերում բանկոմատից, հաճախորդի հաշվի մնացորդի մասին տեղեկատվության ստացում և այլն:

Գործարքները տարբերվում են նաև քարտի տեղեկատվության վճարային համակարգին ներկայացման եղանակով: Կան էլեկտրոնային գործարքներ (քարտի տեղեկատվությունը կարդացվում է մագնիսական ժապավենից / չիպից) և ձայնային թույլտվության գործարքներ (թղթի վրա):

Որպես կանոն, առցանց գնումների գործընթացը հետևյալն է. Հաճախորդը օգտագործում է անհատական ​​համակարգիչ(կամ այլ սարք), որը միացված է ինտերնետին, ընտրում է իրեն հետաքրքրող ապրանքները վաճառակետի կայքում գտնվող ապրանքների վիրտուալ ցուցափեղկում: Ապրանքների ընտրությունը հաստատելուց և դրանց արժեքին համաձայնվելուց հետո հաճախորդը վաճառքի կետին տեղեկացնում է գնման համար պլաստիկ քարտի միջոցով վճարելու ցանկության մասին:

Հաջորդը, երկխոսություն է տեղի ունենում վարդակից և քարտի սեփականատիրոջ միջև, որի նպատակն է ձեռք բերել գնորդի քարտի մանրամասները ցանցին դրանք ներկայացնելու համար ստանդարտ թույլտվության հարցման տեսքով: Այս երկխոսության ընթացքում վաճառականն ու գնորդը երբեմն հնարավորություն են ունենում վավերացնել միմյանց, ինչը ապահովում է գործարքի անվտանգությունը։ Էլեկտրոնային առևտրի ներդրման հենց սկզբից ակնհայտ դարձավ, որ սովորական գործարքներում կիրառվող քարտապանի նույնականացման մեթոդները անբավարար են էլեկտրոնային առևտրի գործարքների համար։

Իրոք, ֆիզիկական խանութում գնումների գործարք կատարելիս վաճառողն իրավունք ունի վճարման համար ներկայացված պլաստիկ քարտը հաշվի առնել վճարային համակարգերի պահանջներին դրա համապատասխանության համար (մասնավորապես՝ ստուգելու հոլոգրամի, հատուկ գաղտնի խորհրդանիշների առկայությունը. ստուգեք վահանակի ստորագրությունները և վաճառքի անդորրագիրը և այլն): Բացի այդ, վաճառողը կարող է գնորդից պահանջել ներկայացնել իր ինքնությունը հաստատող ապացույց: Այս ամենը բավականին թանկ է դարձնում կեղծ քարտերի խարդախությունը: Էլեկտրոնային առևտրի գործարքի դեպքում խարդախից պահանջվում է միայն քարտի մանրամասների իմացությունը: Կեղծ ֆիզիկական քարտի արտադրության հետ կապված ծախսերն այս դեպքում չեն պահանջվում:

Մագնիսական շերտով պլաստիկ քարտերի համար գործարքը խարդախությունից պաշտպանելու ամենահուսալի միջոցը քարտապանին իրենց թողարկող բանկի կողմից PIN կոդ օգտագործելն է: գաղտնի տեղեկատվություն, որն ունի քարտապանը, PIN-ն է: Այն 4-12 թվանշաններից բաղկացած հաջորդականություն է, որը հայտնի է միայն քարտապանին և նրա թողարկող բանկին: PIN կոդը միշտ օգտագործվում է բարձր ռիսկային գործարքներ իրականացնելիս, օրինակ՝ բանկոմատներում քարտապանին կանխիկ գումար տրամադրելիս: Բանկոմատներից կանխիկացումն իրականացվում է առանց սպասարկող բանկի ներկայացուցչի ներկայության (իրավիճակը նման է էլեկտրոնային առևտրի գործարքին): Հետևաբար, սովորական քարտի տվյալները բավարար չեն «բանկոմատի կանխիկացման» գործողությունը պաշտպանելու համար և օգտագործվում է գաղտնի քարտ: լրացուցիչ տեղեկություն- Փին կոդը.

Թվում է, թե նման նույնացուցիչի օգտագործումը կարող է օգնել լուծել անվտանգության խնդիրը, բայց դա այդպես չէ: Ցավոք, էլեկտրոնային առևտրի հավելվածում այս մեթոդն իր դասական ձևով կիրառելի չէ:

PIN-կոդը պետք է օգտագործվի այնպես, որ այդ գաղտնի պարամետրը մնա կոդավորված գործարքների մշակման բոլոր փուլերում (այն պետք է հայտնի լինի միայն քարտապանին և բանկին):

Դասական սխեման կարող է իրականացվել ասիմետրիկ ալգորիթմների միջոցով՝ քարտատիրոջ PIN-ի կոդավորումը վաճառողի հանրային բանալիով: Սակայն PIN կոդը վճարային ցանցին ներկայացնելու համար այն պետք է գաղտնագրված լինի, ինչպես ընդունված է բոլոր վճարային համակարգերում, սիմետրիկ բանալիով։

Կա մեկ այլ, ոչ դասական լուծում PIN կոդ օգտագործելու համար: Օրինակ, քարտատիրոջ համակարգչում դուք կարող եք գաղտնագրել PIN-ը, գումարած որոշ տվյալներ, որոնք դինամիկ կերպով փոխվում են գործարքից գործարք՝ բանալիով, որը հայտնի է միայն թողարկողին և քարտապանին: Այս մոտեցումը կպահանջի լուծել գաղտնի բանալիների բաշխման խնդիրը: Այս խնդիրը շատ դժվար է (ակնհայտ է, որ յուրաքանչյուր քարտատեր պետք է ունենա իր անհատական ​​բանալին), և եթե այն արդեն լուծված է, ապա իմաստ ունի օգտագործել դրա լուծումը քարտապանի նույնականացման այլ, ավելի արդյունավետ մեթոդների համար, քան PIN կոդը ստուգելը:

Վերլուծության արդյունքում վճարային համակարգերը «ձևավորեցին» էլեկտրոնային առևտրում գործարք իրականացնելու սխեմաների հիմնական պահանջները՝ ապահովելով դրա անվտանգության անհրաժեշտ մակարդակը.

1. Գնման մասնակիցների իսկությունը (գնորդը, կետը և դրա սպասարկող բանկը): Գնորդի (վաճառողի) նույնականացումը հասկացվում է որպես ընթացակարգ, որն ապացուցում է (հայտնի կրիպտոգրաֆիկ ալգորիթմների հուսալիության մակարդակով) այն փաստը, որ այս քարտապանն իսկապես հանդիսանում է այս քարտի որոշակի թողարկող-մասնակցի (սպասարկող բանկ-մասնակից) հաճախորդը: վճարային համակարգ. Սպասարկող բանկի իսկությունը հաստատում է այն փաստը, որ բանկը հանդիսանում է այս վճարային համակարգի անդամ:

2. Գործարքում օգտագործվող վճարային քարտի տվյալները (քարտի համարը, գործողության ժամկետը, CVC2/CVV2 և այլն) պետք է գաղտնի լինեն վարդակից:

3. Գործարքի բոլոր մասնակիցների համար գործարքի չեղարկման անհնարինությունը, այսինքն՝ բոլոր մասնակիցների առկայությունը գնման (պատվերի կամ վճարման) փաստի վերջնական ապացույցում:

4. Խանութի վճարման երաշխիք էլեկտրոնային գնում- վաճառքի կետում ապացույցների առկայություն, որ պատվերն ավարտված է:

Գործարքներ InterBase-ում

Եզրափակելով՝ ես կխոսեմ երկու միջավայրի մասին, որոնցում «ապրում են» գործարքները։ Մասնավորապես, InterBase-ում գործարքների իրականացման և Enterprise JavaBeans տեխնոլոգիայի «Java Transaction Service»-ի մասին։

InterBase-ում գործարքների կառավարման երեք արտահայտություն կա.

SET TRANSACTION - Սկսում է գործարքը և սահմանում դրա վարքագիծը:

COMMIT - Պահպանում է գործարքի կողմից կատարված փոփոխությունները տվյալների բազայում և ավարտում գործարքը:

ROLLBACK - հետ է վերադարձնում գործարքի արդյունքում կատարված փոփոխությունները և ավարտում գործարքը:

1. Գործարք սկսելը

Գործարք սկսելու համար դուք պետք է կատարեք հետևյալ SQL հրամանը.

ՍՏԵՂԾԵԼ ԳՈՐԾԱՐՔ

«SET TRANSACTION» հայտարարություն
արտահայտությանը համարժեք է
«ՍԱՀՄԱՆԵԼ ԳՈՐԾԱՐՔԸ ԿԱՐԴԱՑԵԼ ԳՐԵԼ ՍՊԱՍԵԼ ՄԵԿՈՒՍԱՑՄԱՆ ՄԱԿԱՐԴԱԿԻ ՊԱՏԿԵՐԸ»

Մուտքի ռեժիմ - սահմանում է տվյալների հասանելիության տեսակը: Այն կարող է վերցնել երկու արժեք.

ՄԻԱՅՆ ԿԱՐԴԱԼ - ցույց է տալիս, որ գործարքը կարող է կարդալ միայն տվյալները և չի կարող փոփոխել դրանք:

READ WRITE - ցույց է տալիս, որ գործարքը կարող է կարդալ և փոփոխել տվյալները: Այս արժեքը լռելյայն է:

Մեկուսացման մակարդակ - որոշում է այս գործարքի այս տվյալների բազայի մյուսների հետ փոխազդելու հերթականությունը: Կարող է արժեքներ ընդունել.

SNAPSHOT-ը լռելյայն արժեքն է: Գործարքի ներսում տվյալները հասանելի կլինեն այն վիճակում, որում գտնվում էին գործարքի մեկնարկի պահին: Եթե ​​ճանապարհին տվյալների բազայում փոփոխություններ լինեն այլ ավարտված գործարքներով, ապա այս գործարքը չի տեսնի դրանք: Եթե ​​փորձեք փոփոխել նման գրառումները, կստանաք կոնֆլիկտային հաղորդագրություն:

SNAPSHOT TABLE STABILITY Տրամադրում է գործարքի բացառիկ մուտք դեպի այն աղյուսակները, որոնք նա օգտագործում է: Այլ գործարքները կկարողանան կարդալ միայն դրանցից տվյալները:

READ COMMITTED - Թույլ է տալիս գործարքին տեսնել տվյալների բազայի ներկա վիճակը:

Գրառման կողպման հակասությունները տեղի են ունենում երկու դեպքում.

Գործարքը փորձում է փոփոխել գրառումը, որը փոփոխվել կամ ջնջվել է դրա մեկնարկից ի վեր: READ COMMITTED տեսակի գործարքը կարող է փոփոխություններ կատարել այլ գործարքներով փոփոխված գրառումներում դրանց ավարտից հետո:

Գործարքը փորձում է թարմացնել աղյուսակը, որն արգելափակված է SNAPSHOT TABLE STABILITY տիպի մեկ այլ գործարքով:

Կողպման լուծում - որոշում է իրադարձությունների ընթացքը, երբ հայտնաբերվում է կողպեքի կոնֆլիկտ: Այն կարող է վերցնել երկու արժեք.

WAIT-ը լռելյայն արժեքն է: Սպասում է պահանջվող մուտքի ապակողպմանը: Դրանից հետո այն փորձում է շարունակել։

NO WAIT Անմիջապես վերադարձնում է գրելու կողպման սխալ:

Սեղանի ամրագրում - թույլ է տալիս գործարքին ստանալ անհրաժեշտ մակարդակի երաշխավորված մուտք դեպի նշված աղյուսակներ: Մուտքի չորս մակարդակ կա.

ՊԱՇՏՊԱՆՎԱԾ ԸՆԹԵՐՑՈՒՄ - Կանխում է աղյուսակի թարմացումն այլ գործարքների համար, սակայն թույլ է տալիս նրանց ընտրել աղյուսակից տվյալներ:

ՊԱՇՏՊԱՆՎԱԾ ԳՐԵԼ - արգելում է աղյուսակի թարմացումը այլ գործարքներով, միայն SNAPSHOT կամ READ COMMITTED տիպի գործարքները կարող են կարդալ աղյուսակից տվյալները:

SHARED READ-ը ամենաազատական ​​մակարդակն է: Բոլորը կարող են կարդալ, փոփոխել - ԿԱՐԴԱՑԵԼ ԳՐԵԼ գործարքները:

SHARED WRITE - SNAPSHOT կամ READ COMMITTED READ WRITE գործարքները կարող են փոփոխել աղյուսակը, մյուսները կարող են միայն ընտրել տվյալներ:

2. Գործարքի ավարտը

Երբ գործարքը կազմող բոլոր քայլերը հաջողվում են կամ ձախողվում, գործարքը պետք է իրականացվի, որպեսզի տվյալների բազան լինի հետևողական վիճակում: Դրա համար կան SQL հայտարարություններ.

COMMIT - պահպանում է գործարքի կատարած փոփոխությունները տվյալների բազայում: Սա նշանակում է, որ գործարքը հաջողությամբ ավարտվեց:

ROLLBACK - գործարքի հետ վերադարձ: Գործարքն ավարտվում է, և տվյալների բազայում փոփոխություններ չեն կատարվում: Այս գործողությունըկատարվում է, երբ գործողություն կատարելիս սխալ է տեղի ունենում (օրինակ, երբ գրառումը չի կարող թարմացվել):

Java գործարքների ծառայություն

Java գործարքների ծառայությունը (JTS) օգտագործվում է որպես գործարքների համակարգող EJB (Server Component Technology, Enterprise JavaBeans) ճարտարապետության շրջանակներում: JTS տերմինաբանության մեջ այս համակարգողը կոչվում է գործարքի կառավարիչ: Գործարքների մասնակիցները, որոնք իրականացնում են գործարքների միջոցով պաշտպանված ռեսուրսներ, ինչպիսիք են հարաբերական տվյալների բազաները, կոչվում են ռեսուրսների կառավարիչներ: Երբ հավելվածը սկսում է գործարք, այն ստեղծում է օբյեկտ, որը ներկայացնում է այդ գործարքը: Այնուհետև հավելվածը կանչում է ռեսուրսների կառավարիչներին, ովքեր պետք է կատարեն գործողությունը: Գործարքի կատարման ընթացքում գործարքի կառավարիչներից յուրաքանչյուրը վերահսկում է գործարքում նշված ռեսուրսների կառավարիչներից յուրաքանչյուրի աշխատանքը:

Հավելվածի առաջին զանգը ռեսուրսների կառավարիչներից յուրաքանչյուրին որոշում է ընթացիկ գործարքը: Օրինակ, եթե հավելվածն օգտագործում է հարաբերական տվյալների բազա, այն կանչում է JDBC (Java Database Connectivity) ինտերֆեյսը, որը կապում է գործարքային օբյեկտը տվյալների բազայի հետ: Այսուհետ այս կապի միջոցով կատարվող բոլոր զանգերը կիրականացվեն հենց տվյալների բազայի գործարքի անունից մինչև գործարքի ավարտը:

Հավելվածը կատարում է գործարքի արդյունքը՝ զանգահարելով xa_commit() մեթոդը և հայտնում, որ գործարքը հաջողությամբ ավարտվել է։ Եթե, ինչ-ինչ պատճառներով, հավելվածը չի կարող ավարտել գործարքը, այն կանչում է xa_rollback() մեթոդը, որը չեղարկում է կատարված փոփոխությունները: Այն դեպքում, երբ հավելվածը չի կարողանում ավարտել գործարքը, JTS-ը չեղարկում է առաջադրանքը: Երբ գործարքի գործողությունը հաջողությամբ ավարտվում է, հավելվածը կանչում է JTS՝ արդյունքը պահելու համար: Այնուհետև JTS-ն անցնում է երկփուլ կատարման արձանագրության միջոցով՝ աշխատանքը գործարքում նշված ռեսուրսների կառավարիչներին փոխանցելու համար:

Գործարքների կատարման երկփուլ արձանագրությունն օգտագործվում է գործարքի արդյունքը պահպանելու կամ աշխատանքը չեղյալ հայտարարելու համար: Առաջին փուլում JTS-ը սահմանում է ռեսուրսների կառավարիչներից յուրաքանչյուրի պատրաստակամությունը: Եթե ​​նրանցից յուրաքանչյուրը հաստատում է իր պատրաստակամությունը, ապա երկրորդ փուլում ՋՏԾ-ն յուրաքանչյուրին հաղորդագրություն է ուղարկում արդյունքը ամրագրելու մասին։ Եթե ​​մենեջերներից որևէ մեկը չի արձագանքում խնդրանքին կամ տալիս է բացասական պատասխան, JTS-ը տեղեկացնում է մնացած ղեկավարներին գործարքը չեղարկվելու մասին:


1. Գործարքներև արգելափակում

2. Գործարքի հայեցակարգը

Տվյալների բազաների հետ աշխատելիս չեն բացառվում սխալներն ու ձախողումները։ Դրանք կարող են առաջանալ DBMS-ի հետ փոխազդելու օգտատերերի սխալների կամ անկայուն համակարգիչների պատճառով: Հետևաբար, DBMS-ն օգտագործում է հատուկ ուղիներվերացնել այնպիսի գործողությունները, որոնք առաջացրել են նման սխալներ: SQL հրամանը, որն ազդում է տվյալների բազայի բովանդակության և կառուցվածքի վրա, անշրջելի չէ: Օգտագործողը կարող է սահմանել, թե ինչ է տեղի ունենում իր գործողությունների ավարտից հետո՝ արդյոք տվյալների բազայում կատարված փոփոխությունները կմնա՞ն, թե՞ անտեսվելու են։ Դրա համար տվյալների բազայի վրա կատարվող գործողությունների հաջորդականությունը միավորվում է խմբերի` գործարքների:

գործարքտվյալների բազայի վրա կատարված գործողությունների հաջորդականությունն է և այն մի հետևողական վիճակից մյուս հետևողական վիճակ տեղափոխելը:

Գործարքը դիտվում է որպես տվյալների բազայի վրա ինչ-որ անբաժանելի գործողություն, օգտատիրոջ տեսանկյունից իմաստալից, այսինքն՝ այն համակարգի տրամաբանական միավորն է։ Գործարքը սկսվում է ամեն անգամ, երբ տեղի է ունենում տվյալների բազայի նիստ:

Գործարքի օրինակ կարող է լինել բանկոմատի միջոցով գումարի փոխանցումը: Գումարը 100 տր. փոխանցվում է ընթացիկ հաշվից քարտային հաշվին: Ծրագիրը ընթացիկ հաշվից հանում է գումարը, այնուհետև ավելացնում քարտային հաշվին: Առաջին փոփոխությունից հետո ծրագրի գործարկման ընթացքում տեղի է ունենում հոսանքի խափանում, և քարտային հաշվի ավելացում չի առաջանում: Այս իրավիճակից խուսափելու համար երկու հրամանները պետք է համակցվեն գործարքի մեջ: Այն դեպքում, երբ գործարքի բոլոր հրամանները չեն կատարվում, գործարքը հետ է գլորվում:

Սահմանենք գրադարան նոր ստացված գրքերի մասին տվյալների մուտքագրման գործարք։ Այս գործողությունը կարելի է բաժանել 2 հաջորդականի. նախ՝ գրքի մասին տվյալներ մուտքագրելը աղյուսակում նոր տող է։ Գրքեր. Այնուհետև դուք պետք է մուտքագրեք տվյալներ գրքի բոլոր օրինակների մասին. սա աղյուսակում նոր տողերի հավաքածուն է: դեպքեր.Եթե ​​գործողությունների այս հաջորդականությունը ընդհատվում է, ապա տվյալների բազան չի համապատասխանի իրական օբյեկտին, ուստի ցանկալի է այն կատարել որպես մեկ աշխատանք տվյալների բազայի վրա։

3. Գործարքի հատկություններ. Գործարքները ավարտելու ուղիներ

Գոյություն ունենալ տարբեր մոդելներգործարքներ, որոնք կարող են դասակարգվել՝ ելնելով տարբեր հատկություններից, ներառյալ գործարքի կառուցվածքը, ներգործարքի համաժամանակությունը, տևողությունը և այլն:

Ներկայումս առանձնանում են գործարքների հետևյալ տեսակները՝ հարթ կամ դասական գործարքներ, շղթայական գործարքներ և ներդիր գործարքներ։

Հարթ գործարքները բնութագրվում են ատոմականության, հետևողականության, մեկուսացման և ամրության դասական հատկություններով:

· Ատոմականության հատկությունն արտահայտվում է նրանով, որ գործարքը պետք է կատարվի ամբողջությամբ կամ ընդհանրապես չկատարվի։

· Հետևողականության հատկությունը երաշխավորում է, որ գործարքի առաջընթացի ընթացքում տվյալները տեղափոխվում են մի հետևողական վիճակից մյուս հետևողական վիճակ. գործարքը չի ոչնչացնում տվյալների փոխադարձ հետևողականությունը:

· Մեկուսացման հատկությունը նշանակում է, որ տվյալների բազա մուտք գործելու համար մրցակցող գործարքները ֆիզիկապես մշակվում են հաջորդաբար, մեկուսացված միմյանցից, բայց օգտվողների համար թվում է, թե դրանք կատարվում են զուգահեռ:

· Երկարակեցության հատկությունը նշանակում է, որ եթե գործարքը հաջողությամբ ավարտվի, ապա դրա կատարած տվյալները չեն կարող կորչել ոչ մի դեպքում, նույնիսկ հետագա սխալների դեպքում:

Գործարքն ավարտելու 2 տարբերակ կա.

· եթե բոլոր հայտարարությունները հաջողությամբ ավարտված են, և գործարքի ընթացքում ծրագրային ապահովման կամ ծրագրային ապահովման խափանումներ չեն եղել ապարատային, գործարքը կատարվել է. (Կոմմիթը սկավառակի վրա գրառում է տվյալների բազայում կատարված փոփոխությունների, որոնք կատարվել են գործարքի կատարման ժամանակ): Քանի դեռ գործարքը չի կատարվել, այս փոփոխությունները կարող են հետաձգվել, և տվյալների բազան կարող է վերադարձվել այն վիճակին, որում եղել է գործարքի մեկնարկի ժամանակ: Գործարքի կատարումը նշանակում է, որ գործարքի բոլոր արդյունքները դառնում են մշտական: Դրանք տեսանելի կդառնան այլ գործարքների համար միայն ընթացիկ գործարքը կատարելուց հետո:

· Եթե ​​գործարքի ընթացքում խափանում է տեղի ունենում, տվյալների բազան պետք է վերադարձվի իր սկզբնական վիճակին: Գործարքի հետ վերադարձը գործողություն է, որը չեղարկում է տվյալների բոլոր փոփոխությունները, որոնք կատարվել են SQL հայտարարություններընթացիկ սպասվող գործարքի մարմնում:

4. ՕպերատորներԳործարք կատարելSQLգործարքների հետ աշխատելու համար

ANSI / ISO ստանդարտում սահմանվում են օպերատորներ ՊԱՀԱՆՋԵԼԵվ ՎԵՐԱԴԱՐՁ,ստանդարտում գործարքի սկիզբը անուղղակիորեն տրվում է տվյալների փոփոխման առաջին օպերատորի կողմից. Օպերատոր ՊԱՀԱՆՋԵԼ նշանակում է գործարքի հաջող ավարտ, գործարքի արդյունքները գրանցվում են արտաքին հիշողության մեջ. երբ գործարքն ավարտվում է օպերատորի կողմից ՀԵՏԱԴԱՐՁ գործարքի արդյունքները չեղյալ են հայտարարվում: Ծրագրի հաջող ավարտը, որում գործարկվել է գործարքը, նշանակում է գործարքի հաջող ավարտ (կարծես քաղվածքը.ՊԱՀԱՆՋԵԼ ), անհաջող ավարտ - դադարեցնում է գործարքը (կարծես հայտարարությունըՀԵՏԱԴԱՐՁ ) Այս մոդելում յուրաքանչյուր հայտարարություն, որը փոխում է տվյալների վիճակը, դիտվում է որպես գործարք: Այս մոդելը ներդրվել է կոմերցիոն DBMS-ի առաջին տարբերակներում: Այնուհետև SYBASE DBMS-ում ներդրվեց ընդլայնված գործարքի մոդել:

Ընդլայնված գործարքի մոդելը (օրինակ՝ SQL SERVER DBMS) ապահովում է մի շարք լրացուցիչ գործողություններ.

· օպերատոր ՍԿՍԵԼ ԳՈՐԾԱՐՔԸտեղեկացնում է գործարքի սկզբի մասին.

· օպերատոր ԿԱՏԱՐԵԼ ԳՈՐԾԱՐՔհաղորդում է գործարքի հաջող ավարտը: Այս օպերատորը, ինչպես նաև ANSI / ISO ստանդարտ մոդելում COMMIT-ը, ամրագրում է բոլոր փոփոխությունները, որոնք կատարվել են տվյալների բազայում գործարքի ընթացքում.

· օպերատոր ՊԱՀՊԱՆԵՔ ԳՈՐԾԱՐՔԸԳործարքի շրջանակներում ստեղծում է պահպանման կետ, որը համապատասխանում է տվյալների բազայի միջանկյալ վիճակին, որը պահպանվել է քաղվածքի կատարման պահին: Օպերատորի մեջ ՊԱՀՊԱՆԵՔ ԳՈՐԾԱՐՔԸկարող է լինել պահպանման կետի անուն, ուստի գործարքի կատարման ընթացքում կարող են պահվել մի քանի միջանկյալ վիճակներին համապատասխանող մի քանի կետեր.

· օպերատոր ՀԵՏԱԴԱՐՁունի 2 տարբերակ. Եթե ​​այն օգտագործվում է առանց լրացուցիչ պարամետր, ապա այն մեկնաբանվում է որպես վերադարձի օպերատոր ամբողջ գործարքի համար, եթե այն ունի պարամետր ՀԵՏԱԴԱՐՁՆԵԼ, այնուհետև այն մեկնաբանվում է որպես գործարքի մասնակի վերադարձի հայտարարություն savepoint n-ին:

Պահպանման կետերը օգտակար են երկար և բարդ գործարքներում՝ ապահովելու, որ որոշակի հայտարարություններով կատարված փոփոխությունները կարող են հետարկվել:

Շատ դեպքերում, դուք կարող եք սահմանել պարամետր, որը կոչվում է ԱՎՏՈԳՈՐԾԱՌՈՒՄ , որն ավտոմատ կերպով կհիշի բոլոր կատարվող հրամանները, և այն գործողությունները, որոնք հանգեցրել են սխալի, միշտ ինքնաբերաբար կվերացվեն: Սովորաբար, այս ռեժիմը սահմանվում է այնպիսի հրամանով, ինչպիսին է.

SET ԱՎՏՈԳՈՐԾԱՌՈՒՄ ՎՐԱ ;

և վերադառնալ նորմալ երկխոսության հարցումների մշակմանը.

SET ԱՎՏՈԳՈՐԾԱՌՈՒՄ ԱՆՋԱՏՎԱԾ ;

Բացի այդ, հնարավոր է տեղադրել ԱՎՏՈԳՈՐԾԱՌՈՒՄ , որը DBMS-ն ավտոմատ կերպով կկատարի գրանցման ժամանակ: Եթե օգտվողի նիստն ավարտվել է անսովոր կերպով, օրինակ՝ տեղի է ունեցել համակարգի խափանում, ապա ընթացիկ գործարքն ավտոմատ կերպով հետ կվերադարձնի փոփոխությունները: Խորհուրդ չի տրվում աշխատանքը կազմակերպել այնպես, որ առանձին գործարքները պարունակեն բազմաթիվ հրամաններ, հատկապես նրանք, որոնք փոխկապակցված չեն: Սա կարող է հանգեցնել այն բանի, որ երբ դուք չեղարկեք փոփոխությունները, կկատարվեն չափազանց շատ գործողություններ, ներառյալ նրանք, որոնք անհրաժեշտ են և սխալներ չեն առաջացրել: Լավագույն տարբերակն այն է, երբ գործարքը բաղկացած է մեկ հրամանից կամ մի քանի սերտորեն կապված հրամաններից:

Գործարկիչը կատարվում է որպես անուղղակիորեն սահմանված գործարք, այնպես որ գործարքի կառավարման հրամանները կարող են օգտագործվել ձգանում: Մասնավորապես, երբ հայտնաբերվում է ամբողջականության սահմանափակումների խախտում, ձգանչի կատարումը ընդհատելու և օգտագործողի կողմից փորձված բոլոր փոփոխությունները չեղարկելու համար, դուք պետք է օգտագործեք հրամանը. ՀԵՏ ԳՈՐԾԱՐԱՆՔ . Գործարկիչի հաջող ավարտի դեպքում կարող եք օգտագործել հրամանը ՊԱՀԱՆՋԵԼ ԳՈՐԾԱՐՔ .
Հրամանի կատարում ՀԵՏ ԳՈՐԾԱՐԱՆՔ կամ ՊԱՀԱՆՋԵԼ ԳՈՐԾԱՐՔ չի ընդհատում ձգանչի աշխատանքը, այնպես որ դուք պետք է ուշադիր հետևեք տարբեր պայմաններում գործարքը մի քանի անգամ հետ կանչելու փորձերին:

Գործարքի օրինակ.

ՍԿՍԵԼ ՏՐԱՆ

ԹԱՐՄԱՑՆԵԼ հաշիվը

SET մնացորդ= մնացորդ՝ 100

Եթե ​​@@error=0

ՍԿՍԵԼ

ROLLBACK TRAN

ՎԵՐԱԴԱՐՁ

ՎԵՐՋ

ԹԱՐՄԱՑՆԵԼ card_account

SET մնացորդ=մնացորդ+100

ՈՐՏԵՂ [էլփոստը պաշտպանված է] _հաշիվ

Եթե ​​@@error=0

ՍԿՍԵԼ

ROLLBACK TRAN

ՎԵՐԱԴԱՐՁ

ՎԵՐՋ

ԿՈՄԻՏ ՏՐԱՆ

Թիմ ՍԿՍԵԼ ՏՐԱՆ տեղեկացնում է սերվերին գործարքի մեկնարկի մասին: Սա նշանակում է, որ մինչ սերվերը ստանում է հրամանըՊԱՀԱՆՋԵԼ ՏՐԱՆ բոլոր փոփոխությունները ժամանակավոր են։ Հետևաբար, եթե սերվերը ձախողվի առաջին թարմացումից հետո, գործարքը կվերադարձվի: Ոչ մի գործընթաց չի կարողանա մուտք գործել տվյալներ մինչև գործարքի ավարտը:

5. Գործարքների մատյան.

Միջանկյալ վիճակների պահպանման, գործարքի հաստատման կամ հետադարձման սկզբունքի իրականացումն ապահովվում է հատուկ մեխանիզմով, որին աջակցելու համար ստեղծվել է համակարգի կառուցվածք, որը կոչվում է գործարքների մատյան: Գործարքների գրանցամատյանը պարունակում է տվյալների բազայի փոփոխությունների վերաբերյալ գրառումների հաջորդականություն: Այն նախատեսված է տվյալների բազայում տվյալների հուսալի պահպանում ապահովելու համար: Սա ենթադրում է տվյալների բազայի կայուն վիճակի վերականգնման հնարավորություն՝ ցանկացած տեսակի ապարատային և ծրագրային խափանումներից հետո: Ընդհանուր սկզբունքներգրանցում և վերականգնում.

· կատարված գործարքների արդյունքները պետք է պահպանվեն տվյալների բազայի վերականգնված վիճակում.

· Չկատարված գործարքների արդյունքները չպետք է առկա լինեն տվյալների բազայի վերականգնված վիճակում:

Սա նշանակում է, որ տվյալների բազայի վերջին հետևողական վիճակը վերականգնվում է:

Հնարավոր են հետևյալ իրավիճակները, երբ անհրաժեշտ է վերականգնել տվյալների բազայի վիճակը.

· Վերականգնում բովանդակության հանկարծակի կորստից պատահական մուտքի հիշողություն(փափուկ վթար): Այս իրավիճակը կարող է առաջանալ հետևյալ դեպքերում՝ հոսանքի անջատման կամ պրոցեսորի մահացու խափանումի ժամանակ։ Իրավիճակը բնութագրվում է տվյալների բազայի այն մասի կորստով, որը խափանման պահին եղել է RAM-ի բուֆերներում:

· Վերականգնում հիմնական արտաքին տվյալների բազայի մեդիայի ձախողումից հետո (կոշտ ձախողում):

Համակարգը պետք է կարողանա վերականգնել ինչպես փոքր խափանումներից (օրինակ՝ ձախողված գործարքներ), այնպես էլ խոշոր խափանումներից (օրինակ՝ հոսանքի խափանումներից, կոշտ խափանումներից):

Փափուկ ձախողման դեպքում անհրաժեշտ է վերականգնել տվյալների բազայի բովանդակությունը սկավառակների վրա պահվող գործարքների տեղեկամատյանների բովանդակությունից: Կոշտ ձախողման դեպքում անհրաժեշտ է վերականգնել տվյալների բազայի բովանդակությունը պահուստային պատճեններից և գործարքների մատյաններից, որոնք պահվում են չվնասված արտաքին կրիչների վրա:

Տեղեկությունների գրանցման երկու հիմնական տարբերակ կա. 1-ին տարբերակում յուրաքանչյուր գործարքի համար այս գործարքով պահպանվում է տվյալների բազայի փոփոխության առանձին տեղեկամատյան: Նման տեղեկամատյանները կոչվում են տեղական տեղեկամատյաններ։ Դրանք օգտագործվում են տեղական գործարքների վերադարձման համար: Բացի այդ, պահպանվում է տվյալների բազայի փոփոխության ընդհանուր մատյան, որն օգտագործվում է տվյալների բազան վերականգնելու համար փափուկ և կոշտ ձախողումներից հետո:

Այս մոտեցումը թույլ է տալիս արագորեն կատարել գործարքների առանձին հետադարձումներ, սակայն հանգեցնում է տեղեկատվության կրկնօրինակման տեղական և ընդհանուր տեղեկամատյաններում: Հետևաբար, ավելի հաճախ օգտագործվում է երկրորդ տարբերակը՝ պահպանելով միայն տվյալների բազայի փոփոխության մատյանը, որն օգտագործվում է նաև անհատական ​​հետադարձումներ կատարելիս։

Գրանցամատյանի ընդհանուր կառուցվածքը կարող է ներկայացվել որպես հաջորդական ֆայլ, որը գրանցում է տվյալների բազայի յուրաքանչյուր փոփոխություն, որը տեղի է ունենում գործարքի կատարման ընթացքում: Բոլոր գործարքներն ունեն ներքին համարներ, ուստի գործարքների գրանցամատյանը գրանցում է բոլոր գործարքների կատարած բոլոր փոփոխությունները:

Մատյանում յուրաքանչյուր գրառում նշվում է գործարքի համարով, որին պատկանում է, և այն ատրիբուտների արժեքները, որոնք այն փոխում է, բացի այդ, գրանցամատյանում յուրաքանչյուր գործարքի համար գրանցվում է գործարքը սկսելու և ավարտելու հրամանը: .

Ավելի մեծ հուսալիության համար գործարքների գրանցամատյանը հաճախ կրկնօրինակվում է DBMS համակարգի գործիքների միջոցով, այդ իսկ պատճառով արտաքին հիշողության ծավալը շատ անգամ ավելի մեծ է տվյալների բազայի տվյալների իրական քանակից:

Գործարքների գրանցման 2 տարբերակ կա՝ արձանագրություն՝ հետաձգված թարմացումներով և արձանագրություն՝ անմիջապես թարմացումներով:

Lazy-update logging-ը ներառում է գործարքների կատարման հետևյալ մեխանիզմը.

1. Երբ T1 գործարքը սկսվում է, գրառում է կատարվում գրանցամատյանում

T1 Սկսել գործարք

2. Գործարքի կատարման ընթացքում յուրաքանչյուր փոփոխվող մուտքի համար արձանագրությունում գրանցվում է նոր արժեք:

T1. ID _ ԳՐԱՌՈՒՄ , հատկանիշ, նոր արժեք

(ID _ ԳՐԱՌՈՒՄ - եզակի ռեկորդային համար)

3. Եթե ​​գործարքը կազմող բոլոր գործողությունները հաջողությամբ ավարտված են, ապա գործարքը մասամբ կատարվել է և գրանցամատյանում գրանցվում է հետևյալը.

Տ 1 COMMT

4. Գործարքը կատարելուց հետո T1-ի հետ կապված գրանցամատյանների գրառումներն օգտագործվում են տվյալների բազայում փոփոխություններ կատարելու համար:

5. Եթե ​​խափանում է տեղի ունենում, DBMS-ը նայում է գրանցամատյանը և պարզում, թե որ գործարքները պետք է կրկնվեն: T1 գործարքը պետք է կրկնվի, եթե արձանագրությունը պարունակում է երկու մուտքերը T1 Սկսել գործարք Եվ Տ 1 COMMT . Տվյալների բազան կարող է լինել անհամապատասխան վիճակում, այնուամենայնիվ, փոփոխված տվյալների տարրերի բոլոր նոր արժեքները պարունակվում են գրանցամատյանում, և դա պահանջում է գործարքի կրկնակի կատարում: Դա անելու համար օգտագործեք համակարգի ընթացակարգըՎԵՐԱԿԱՆԱԼ(), որը փոխարինում է իրերի բոլոր արժեքները նորերով՝ սկանավորելով գրանցամատյանը ուղղակի հերթականությամբ:

6. Եթե ​​արձանագրությունը չի պարունակում գործարքի կատարման հրաման ՀԵՏ ԲԱՑՆԵԼ, ապա ոչ մի գործողություն չի պահանջվում, և գործարքը վերսկսվում է:

Անմիջական կատարմամբ այլընտրանքային մեխանիզմը նախատեսում է անմիջապես փոփոխություններ կատարել տվյալների բազայում, և ոչ միայն նոր, այլև փոփոխված ատրիբուտների բոլոր հին արժեքները մուտքագրվում են գրանցամատյանում, ուստի յուրաքանչյուր մուտք ունի հետևյալ տեսքը.

T1. ID _ ԳՐԱՌՈՒՄ , հատկանիշ, նոր արժեք հին արժեք

Այս դեպքում տեղեկամատյանում գրելը նախորդում է տվյալների բազայի վրա գործողության ուղղակի կատարմանը: Երբ գործարքը կատարվում է, այսինքն, հրամանը հանդիպում է T1 ՊԱՏԱՍԽԱՆԵԼ, և այն կատարվում է, ապա բոլոր փոփոխություններն արդեն արված են տվյալների բազայում և ոչ հետագա գործողությունայս գործարքի հետ կապված:

Երբ գործարքը հետ է վերադարձվում, կատարվում է համակարգի ընթացակարգ ՀԵՏԱՐԿԵԼ (), որը վերադարձնում է չեղյալ գործարքի բոլոր հին արժեքները՝ հաջորդաբար անցնելով արձանագրության միջով, սկսած հրամանից. ՍԿՍԵԼ ԳՈՐԾԱՐՔԸ.

Խափանման համար օգտագործվում է հետևյալ մեխանիզմը.

· Եթե ​​գործարքը պարունակում է գործարքի մեկնարկի հրաման, բայց չի պարունակում commit հրաման՝ դրա կատարման հաստատմամբ, ապա գործողությունների հաջորդականությունը կատարվում է այնպես, կարծես գործարքը հետ է գլորվել, այսինքն՝ հին արժեքները վերականգնվել են:

Իրականում վերականգնումը տեղի է ունենում ավելի բարդ ալգորիթմների համաձայն, քանի որ փոփոխությունները, ինչպես գրանցամատյանում, այնպես էլ տվյալների բազայում, անմիջապես չեն գրանցվում, այլ բուֆերացված են: Փոփոխությունների գրանցումը սերտորեն կապված է ոչ միայն գործարքների կառավարման, այլ նաև RAM-ում տվյալների բազայի էջերի բուֆերացման հետ: Եթե ​​տվյալների բազայի փոփոխության գրառումը, որը պետք է գնա գրանցամատյան, երբ կատարվում է տվյալների բազայի փոփոխման որևէ գործողություն, իրականում անմիջապես գրվել է արտաքին հիշողություն, դա կհանգեցներ համակարգի զգալի դանդաղեցման։ Հետևաբար, գրանցամատյանների գրառումները նույնպես բուֆերացված են՝ երբ նորմալ շահագործումհաջորդ էջը դրվում է ամսագրի արտաքին հիշողության մեջ միայն այն դեպքում, երբ այն ամբողջությամբ լցված է գրառումներով:

6. Փականներ.

Մի քանի օգտատերերի համակարգերում, որոնք ունեն մեկ տվյալների բազա, մի քանի օգտատերեր կամ հավելվածներ կարող են միաժամանակ աշխատել: DBMS-ի հիմնական խնդիրներից է օգտատերերի մեկուսացման ապահովումը, այսինքն՝ այնպիսի գործողության ռեժիմի ստեղծումը, որ օգտագործողներից յուրաքանչյուրը կարծես միայնակ աշխատի տվյալների բազայի հետ։ DBMS-ի այս առաջադրանքը սովորաբար կոչվում է գործարքային զուգահեռություն:

Տվյալների բազայի զուգահեռ մշակման երեք հիմնական խնդիր կա.

§ Բացակայող փոփոխություններ . Այս իրավիճակը տեղի է ունենում, երբ 2 գործարքներ միաժամանակ փոխում են տվյալների բազայում նույն գրառումը: Օրինակ՝ պատվերներ ստանալու համար աշխատում է 2 օպերատոր, առաջին օպերատորը 30 մոնիտորների պատվեր է ընդունել։ Երբ նա կապ հաստատեց պահեստի հետ, այնտեղ 40 մոնիտոր կար, և հաճախորդից ստանալով հաստատում, ավարտեց 40 մոնիտորներից 30-ի վաճառքը: Միևնույն ժամանակ նրա հետ աշխատում է երկրորդ օպերատորը, որը պատվեր է վերցնում 20-ի համար: նույն մոնիտորները, և իր հերթին, կապվելով պահեստի հետ, նա ստանում է նույն արժեքը՝ 40 և պատվիրում է իր հաճախորդին։ Երբ ավարտվում է տվյալների հետ, այն կատարում է հրամանը Թարմացնել,որը մուտքագրում է 20 որպես պահեստում գտնվող մոնիտորների մնացորդ: Դրանից հետո առաջին օպերատորն ավարտում է աշխատանքը իր հաճախորդի հետ և նաև կատարում հրամանը Թարմացնել, որը մուտքագրում է մնացած 10-ը՝ որպես պահեստում առկա մոնիտորների քանակ։ Ընդհանուր առմամբ, նրանք վաճառել են 50 մոնիտոր, 40-ը հասանելի է և կունենան 10 մոնիտոր պահեստում։

§ Միջանկյալ տվյալների խնդիրներ . Կապված է միջանկյալ տվյալների հասանելիության ունակության հետ: Ենթադրենք, որ առաջին օպերատորը, բանակցելով իր հաճախորդի հետ, ներկայացրեց պատվիրված 30 մոնիտորները, բայց մինչ պատվերը վերջնական տեսքի բերելը, հաճախորդը ցանկանում էր պարզել ապրանքի ևս որոշ բնութագրեր: Հավելվածը, որն օգտագործում է օպերատոր 1-ը, արդեն փոխել է պահեստի մնացած մոնիտորները, և 10 մնացած մոնիտորների մասին տեղեկատվությունը այժմ պահվում է այնտեղ։ Այս պահին երկրորդ օպերատորը փորձում է իր հաճախորդից 20 մոնիտորների պատվեր վերցնել, սակայն նրա դիմումը ցույց է տալիս, որ պահեստում մնացել է ընդամենը 10 մոնիտոր, և օպերատորը ստիպված է լինում հրաժարվել իր հաճախորդից։ Այս պահին առաջին օպերատորի հաճախորդը որոշում է չգնել մոնիտորներ, օպերատորը հետ է գլորում գործարքը և 40 մոնիտոր նորից պահեստում է: Այս իրավիճակը հնարավոր դարձավ, քանի որ երկրորդ օպերատորի հավելվածը հասանելի էր միջանկյալ տվյալներին, որոնք ստեղծվել էին առաջին հավելվածում:

§ Անհամապատասխան տվյալների խնդիրներ. Կապված է տվյալները փոխելու ունակության հետ x, արդեն կարդացեք x մեկ այլ դիմում: Երկու օպերատորներն էլ սկսում են աշխատել գրեթե միաժամանակ, ստանում են 40 մոնիտորների նախնական պաշար, իսկ հետո առաջին օպերատորը 30 մոնիտոր է վաճառում իր հաճախորդին։ Այն դադարեցնում է իր հավելվածը և կատարում է COMMI գործարքի հրամանը: Տվյալների բազայի վիճակը անհամապատասխան է: Այս պահին երկրորդ օպերատորի հաճախորդը որոշում է պատվեր կատարել, իսկ երկրորդ օպերատորը, կրկին հղում անելով տվյալներին, տեսնում է, որ մոնիտորների թիվը փոխվել է։ Երկրորդ օպերատորը գտնում է, որ գործարքի ամբողջականությունը խախտվել է, քանի որ մեկ աշխատանքի կատարման ընթացքում ստացել է պահեստի 2 տարբեր վիճակ. Այս իրավիճակը առաջացել է, քանի որ 1-ին օպերատորի հավելվածը կարողացել է փոխել տվյալների բազմակը, որն արդեն կարդացել էր երկրորդ օպերատորի հավելվածը։

Ամփոփելով թվարկված խնդիրները՝ կարելի է առանձնացնել երկու զուգահեռ գործարքների միջև հակասությունների հետևյալ տեսակները.

· W-W – գործարք 2-ը փորձում է փոփոխել օբյեկտը, որը փոփոխվել է գործարք 1-ով, որը չի ավարտվել;

· R-W - գործարք 2-ը փորձում է փոխել 1-ի կողմից կարդացված օբյեկտը, որը չի ավարտվել;

· W-R գործարք 2-ը փորձում է կարդալ 1 գործարքով փոփոխված օբյեկտը, որը չի ավարտվել.

7. Գործարքների սերիականացում

Նման կոնֆլիկտներից խուսափելու համար անհրաժեշտ է մշակել զուգահեռ գործարքների հետևողական կատարման որոշակի ընթացակարգ։ Այս ընթացակարգը պետք է համապատասխանի հետևյալ կանոններին.

1. Գործարքի ընթացքում օգտատերը տեսնում է միայն հետևողական տվյալներ: Օգտագործողը չպետք է տեսնի անհամապատասխան միջանկյալ տվյալներ:

2. Երբ տվյալների բազայում զուգահեռ գործում են 2 գործարքներ, գործարքների կատարման արդյունքները պետք է լինեն նույնը, ինչ եթե կատարվի գործարք 1-ը, ապա՝ 2-ը, կամ հակառակը:

Այս սկզբունքները կիրառող ընթացակարգը կոչվում է գործարքների սերիալացում: Այն ապահովում է, որ տվյալների բազա մուտք գործող յուրաքանչյուր օգտատեր աշխատում է դրա հետ այնպես, կարծես թե չկան այլ օգտվողներ, ովքեր միաժամանակ մուտք են գործել նույն տվյալները: Գործարքի համատեղ կատարման արդյունքը համարժեք է նույն գործարքների որոշակի հաջորդական կատարման արդյունքին:

Ամենապարզ ելքը կլինի գործարքների հաջորդական կատարումը, սակայն նման ելքը ժամանակային առումով օպտիմալ չէ, կան ավելի ճկուն մեթոդներ տվյալների բազայի զուգահեռ մուտքը կառավարելու համար։ Այս խնդիրների լուծման ամենատարածված մեխանիզմը օբյեկտի (օրինակ՝ սեղանի) կողպումն է գործարքի տևողության համար: Եթե ​​գործարքը մուտք է գործում կողպված օբյեկտ, ապա այն մնում է առկախ վիճակում, մինչև օբյեկտն ապակողպվի, որից հետո այն կարող է սկսել այն մշակել: Այնուամենայնիվ, կողպումը ստեղծում է նոր խնդիրներ՝ գործարքների ուշացումներ կողպեքների պատճառով:

Այսպիսով, կողպեքները, որոնք նաև կոչվում են համաժամացման օբյեկտների կողպեքներ, կարող են կիրառվել տարբեր տեսակի օբյեկտների վրա: Կողպեքի ամենամեծ օբյեկտը կարող է լինել ամբողջ տվյալների բազան, սակայն նման կողպեքը տվյալների բազան անհասանելի կդարձնի բոլոր մյուս հավելվածների համար, որոնք աշխատում են այս տվյալների բազայի հետ: Կողպեքի օբյեկտի հաջորդ տեսակը սեղաններն են: Գործարքը, որը գործում է սեղանի վրա, այն արգելափակում է գործարքի տևողության համար: Այս տեսակի կողպեքը նախընտրելի է նախորդից, քանի որ այն թույլ է տալիս զուգահեռաբար կատարել այլ աղյուսակների վրա գործող գործարքները:

Որոշ DBMS իրականացնում են էջի մակարդակի կողպում: Այս դեպքում միայն DBMS-ն արգելափակում է առանձին էջերսկավառակի վրա, երբ գործարքը մուտք է գործում դրանց: Այս տեսակի կողպումը նույնիսկ ավելի բարենպաստ է և թույլ է տալիս տարբեր գործարքներ գործել նույն սեղանի վրա, քանի դեռ դրանք մուտք են գործում տվյալների տարբեր էջեր:

Որոշ DBMS-ներում տողերի մակարդակի կողպումը հնարավոր է, սակայն նման կողպման մեխանիզմը պահանջում է լրացուցիչ ծախսեր՝ այն աջակցելու համար: SQL Server-ը ձգտում է սահմանել ռեկորդային մակարդակի կողպում, որպեսզի ապահովի առավելագույն համաժամանակությունը շահագործման մեջ: Քանի որ տողերի կողպման թիվը մեծանում է, սերվերը կարող է անցնել էջի կողպման, եթե գրառումների քանակը գերազանցի շեմը:

8. Փականների վերասահմանում խնդրանքի մակարդակով: Փականների տեսակները

Եթե ​​նախադասության մեջ աղյուսակի անվանումից հետո ԻՑհետևում է հետևյալներից մեկին հիմնաբառեր, հարցումը խանգարում է կողպեքի կառավարչին և կիրառվում է նշված կողպեքի տեսակը.

· NOLOCK - թույլ է տալիս կեղտոտ ընթերցում;

· PAGLOCK - արգելափակում էջի մակարդակում;

· ROWLOCK - կողպեք ռեկորդային մակարդակում;

· TABLOCK - ընդհանուր սեղանի կողպեք;

· TABLOCKX - սեղանի բացառիկ կողպեք

Ներկայումս արգելափակման խնդիրը մեծ թվով ուսումնասիրությունների առարկա է։

Գոյություն ունեն երկու հիմնական տեսակի կողպեքներ (համաժամացման գրավում).

Համօգտագործվող (ոչ կոշտ) կողպեքներ - այս ռեժիմը նշանակում է ընդհանուր օբյեկտների գրավում և օգտագործվում է օբյեկտների ընթերցման գործողություն կատարելու համար: Այս կերպ կողպված օբյեկտները չեն փոխվում գործարքի կատարման ընթացքում և հասանելի են այլ գործարքների համար, բայց միայն կարդալու ռեժիմում.

Բացառիկ (կոշտ) կողպեքներ - թույլ մի տվեք որևէ մեկին, բացի այս կողպեքի սեփականատիրոջից, մուտք գործել տվյալներ: Այս կողպեքները օգտագործվում են հրամանների համար, որոնք փոխում են աղյուսակի բովանդակությունը կամ կառուցվածքը և գործում են մինչև գործարքի ավարտը:

Բազմաթիվ գործարքներով օբյեկտների գրավումը ընթերցման հետ համատեղելի է, այսինքն՝ մի քանի գործարքների թույլատրվում է կարդալ նույն օբյեկտը: Օբյեկտի գրավումը մեկ գործարքի միջոցով ընթերցման վրա համատեղելի չէ նույն օբյեկտի գրավման հետ մեկ այլ գործարքի միջոցով գրելու վրա: Միևնույն օբյեկտի գրավումները տարբեր գրելու գործարքներով համատեղելի չեն:

Այնուամենայնիվ, դիմումը տարբեր տեսակներկողպեքները հանգեցնում են փակուղիների խնդրին: Փակուղիների խնդիրն առաջացել է գործառնական միջավայրերում զուգահեռ պրոցեսների իրականացումը դիտարկելիս, ինչպես նաև կապված է ընդհանուր (համօգտագործվող) օբյեկտների կառավարման հետ: Փակուղու օրինակ. Թույլ տվեք գործարքը A hardlock աղյուսակ 1 և ապա hardlock աղյուսակ 2: Գործարք B, ընդհակառակը, hardlock աղյուսակ 2 և ապա hardlock աղյուսակ 1:

Եթե ​​այս երկու գործարքներն էլ սկսվել են միաժամանակ, ապա առաջին աղյուսակի մոդիֆիկացիոն գործողությունները կատարելուց հետո նրանք երկուսն էլ կհայտնվեն անվերջ սպասման մեջ. գործարքը կսպասի B գործարքի ավարտին և բացելու աղյուսակ 2-ը, իսկ B գործարքը կ ապարդյուն սպասեք, որ գործարքը A ավարտվի և բացվի աղյուսակ 1-ը:

Իրավիճակները կարող են շատ ավելի բարդ լինել։ Փոխադարձ արգելափակված գործարքների թիվը կարող է շատ ավելի մեծ լինել։ Յուրաքանչյուր գործարք չի կարող ինքնուրույն բացահայտել այս իրավիճակը: Դա պետք է թույլատրվի DBMS-ի կողմից: Առևտրային DBMS-ների մեծ մասն ունի նման փակուղիները հայտնաբերելու մեխանիզմ:

Փակուղիների հայտնաբերման հիմքը գործարքի սպասման գրաֆիկի կառուցումն է (կամ մշտական ​​պահպանումը): Սպասող գրաֆիկը կարող է լինել ուղղորդված գրաֆիկ՝ իր գագաթներով գործարքների անուններով: Եթե ​​T1 գործարքը սպասում է T2 գործարքի ավարտին, ապա սլաքը գնում է T1-ից T2: Բացի այդ, սլաքները կարող են պիտակավորվել արգելափակված օբյեկտների անուններով և արգելափակման տեսակով:

Կողպեքի իրականացման մեխանիզմը օգտագործում է կողպեքի մեկուսացման մակարդակի հայեցակարգը, որը որոշում է, թե քանի աղյուսակ է կողպվելու: Ավանդաբար օգտագործվում են մեկուսացման երեք մակարդակ.

· Մեկուսացման մակարդակը, որը կոչվում է վերընթերցում, իրականացնում է այնպիսի ռազմավարություն, որ տվյալ գործարքի ընթացքում հարցումների միջոցով վերցված բոլոր գրառումները չեն կարող փոխվել: Այս գրառումները չեն կարող փոխվել մինչև գործարքի ավարտը:

· Մեկուսացման մակարդակը, որը կոչվում է կայունության ցուցիչ, թույլ չի տալիս յուրաքանչյուր մուտքի փոփոխվել կարդալու ընթացքում կամ կարդալ այն փոփոխման ընթացքում:

· Կայունության երրորդ մակարդակը կոչվում է միայն կարդալու: Միայն կարդալը կողպում է ամբողջ աղյուսակը և, հետևաբար, չի կարող օգտագործվել թարմացման հրամաններով: Այսպիսով, միայն կարդալը ապահովում է, որ հարցման ելքը ներքին համահունչ է աղյուսակի տվյալներին:

Այսպիսով, DBMS-ում միաժամանակյա հսկողությունը որոշում է, թե միաժամանակ թողարկված հրամանները որքանով կխանգարեն միմյանց: Ժամանակակից DBMS-ում այն ​​հարմարվող գործիք է, որն ավտոմատ կերպով գտնում է օպտիմալ լուծումենթակա է անվտանգության առավելագույն կատարում DB և տվյալների հասանելիություն գործող թիմերի համար:

9. ՎԵՐԱՀՍԿՈՂԱԿԱՆ ՀԱՐՑԵՐ

1. Սահմանեք գործարք: Տրե՛ք գործարքների օրինակներ:

2. Թվարկեք և նկարագրեք գործարքների հատկությունները:

3. Որո՞նք են գործարքներն ավարտելու հնարավոր տարբերակները:

4. Ինչ լեզվական օպերատորներ SQL ծառայել ընդլայնված գործարքի մոդելում գործարքների հետ աշխատելու համար:

5. Հնարավո՞ր է օգտագործել գործարքների կառավարման հրամանները գործարկիչներում:

6. Ո՞րն է գործարքների գրանցամատյանի նպատակը:

7. Ո՞ր դեպքերում է տվյալների բազայի վերականգնումն իրականացվում՝ օգտագործելով գործարքների մատյանը:

8. Որո՞նք են գործարքների գրանցման տարբերակները:

9. Որո՞նք են տարբերությունները գործարքների գրանցման տարբերակների միջև. արձանագրություն հետաձգված թարմացումներով և արձանագրություն անմիջապես թարմացումներով:

10. Ի՞նչ խնդիրներ են առաջանում, երբ օգտատերերը աշխատում են տվյալների բազայի հետ զուգահեռ:

11. Տվյալների բազայի ո՞ր օբյեկտները կարող են կողպվել՝ օգտագործողի մեկուսացման սկզբունքն իրականացնելու համար:

12. Հնարավո՞ր է արդյոք հարցումների մեջ սահմանել արգելափակման տեսակը:

13. Բազմաթիվ գործարքներով օբյեկտների գրավման ի՞նչ տեսակներ կան: Որոնք են համատեղելի:

14. Ո՞րն է փակուղու խնդիրը:

Այս տարվա հունվարի 1-ից օրենքը բանկերին պարտավորեցնում է հաճախորդներին տեղեկացնել իրենց կատարած յուրաքանչյուր գործարքի մասին։ Միևնույն ժամանակ, օրենքով սահմանված չէ, թե ինչպես պետք է տեղեկացվի հաճախորդը։ Բանկերը, որոնք հոգ են տանում իրենց հաճախորդների մասին, օգտվում են ծանուցման ամենահարմար և օպերատիվ եղանակից՝ SMS-ից: Մնացածներն իրենց համար ավելի էժան միջոցներ են օգտագործում՝ ծանուցում էլկամ հաղորդագրություններ անձնական հաշիվբանկի կայքում։

Ինչ մեթոդ էլ որ ընտրի ձեր բանկը, դուք պետք է ուշադիր հետևեք ծանուցումներին, քանի որ երբ խոսքը գնում է խարդախ գործարքների մասին, բառացիորեն ամեն րոպե կարող է խաղալ ձեր ձեռքերում կամ զրկել ձեզ գողացված գումարը վերադարձնելու հնարավորությունից:

Հիշեք, որ խարդախությունը ձեր քարտով ցանկացած գործարք է, որը չի կատարվել ձեր կողմից: Խարդախության մի քանի տեսակներ կան.

  • Ձեր քարտը գողացվել կամ կորել է, այնուհետև օգտագործվել առանց ձեր թույլտվության:
  • Դուք թողարկողից չեք ստացել նոր քարտ (կամ փոխարինող քարտ) և չգիտեիք, որ այն սխալ ձեռքում է ընկել, մինչև չստանաք փաստաթղթեր այն գործարքների մասին, որոնք դուք չեք կատարել: Ձեր անձնական տվյալները օգտագործվում են մեկ այլ անձի կողմից՝ դիմելու համար: քարտի համար. Խարդախության այս տեսակը շատ դժվար է ճանաչել, քանի դեռ թողարկող բանկը բողոք չի ստացել հաճախորդից կամ հաշիվը ստուգման ենթակա չէ բացումից անմիջապես հետո: Եթե ​​դուք այս բանկի հաճախորդ չեք, կարող եք չիմանալ, որ ինչ-որ մեկը ձեր անունով քարտ է ստացել, մինչև վարկի համար դիմեք, և ձեզ մերժեն վատ վարկային պատմության պատճառով:
  • Հաշվի քաղվածքը պարունակում է տվյալներ այն գործարքների մասին, որոնք դուք չեք կատարել, ինչը կարող է նշանակել, որ շրջանառության մեջ կա կեղծ քարտ, որը նույն համարով է ձերը:
  • Կեղծ փաստաթղթերով հարձակվողը, ներկայանալով որպես քարտապան, վերահսկողություն է ձեռք բերում քարտատիրոջ հաշվի վրա՝ պահանջելով փոխարինել քարտը նույն հաշվի վրա: Սովորաբար նրանք խնդրում են քարտը ուղարկել այլ հասցեով։ Դուք սովորաբար իմանում եք այս մասին, երբ ստանում եք հաշվի քաղվածք կամ երբ հաշիվները դադարում են մուտք գործել ձեր հասցեին:
  • Դուք ունեք ձեր քարտը, բայց հարձակվողը գործարքներ է կատարում քարտի համարով, օրինակ՝ ապրանքներ պատվիրում փոստով, հեռախոսով կամ ինտերնետի միջոցով:

Եթե ​​դուք հայտնվում եք այս իրավիճակներից որևէ մեկում, առաջին բանը, որ պետք է անեք, կապնվեք բանկի հետ: Օրենքի համաձայն, բանկը պետք է փոխհատուցի ձեզ քարտից բացակայող գումարի համար, եթե դրամական միջոցների դեբետագրումից հետո առաջին օրվա ընթացքում բողոք է ստացվել անօրինական գործարքի վերաբերյալ:

Քարտային բիզնեսի զարգացման բաժնի ղեկավարի տեղակալ Ստեփան Զայցևի խոսքով, եթե հաճախորդը 24 ժամվա ընթացքում չհայտնի վիճելի գործարքի մասին, նա կարող է դա անել ավելի ուշ: Դուք կարող եք պահանջ գրել բանկի ցանկացած մասնաճյուղում: Հետագա քննարկումը կիրականացվի բանկի կողմից սահմանված կարգով: Հաճախորդի խնդրանքին պատասխանելու ժամկետը 30 աշխատանքային օր է (մինչև 60, եթե օպերացիային մասնակցում են օտարերկրյա էքվեյրինգ բանկերը): Ամբողջ իրավիճակը պարզաբանելու համար բանկը կարող է հաճախորդից պահանջել լրացուցիչ փաստաթղթեր և տեղեկություններ:

Գործարքների մոդելները դասակարգվում են տարբեր հատկությունների հիման վրա.

գործարքի կառուցվածքը;

գործարքի ընթացքում միաժամանակյաություն;

տեւողությունը.

Գործարքների տեսակները.

1. Բնակարան (դասական)

2. Շղթա

3. Բնադրված

Հարթ գործարքները բնութագրվում են 4 դասական հատկություններով.

ատոմականություն;

հետեւողականություն;

մեկուսացում;

ամրություն (ուժ):

Երբեմն այդ գործարքները կոչվում են ACID գործարքներ:

ԹԹՈՒ - Ատոմականություն, հետևողականություն, մեկուսացում, երկարակեցություն:

Վերը նշված հատկությունները նշանակում են հետևյալը.

Ատոմականություն - արտահայտվում է նրանով, որ գործարքը պետք է կատարվի ամբողջությամբ կամ ընդհանրապես չկատարվի:

Հետևողականություն - ապահովում է, որ գործարքների կատարման ընթացքում տվյալները տեղափոխվում են մի հետևողական վիճակից մյուսը, այսինքն՝ գործարքը չի ոչնչացնում տվյալների փոխադարձ հետևողականությունը:

Մեկուսացումը նշանակում է, որ տվյալների բազա մուտք գործելու համար մրցակցող գործարքները ֆիզիկապես մշակվում են հաջորդաբար, մեկուսացված միմյանցից, բայց օգտվողների համար թվում է, թե դրանք կատարվում են զուգահեռ:

Երկարատևություն - եթե գործարքը հաջողությամբ ավարտվի, ապա նրա կողմից կատարված տվյալների փոփոխությունները ոչ մի դեպքում չեն կարող կորչել:

Գործարքները ավարտելու տարբերակներ.

1. Եթե բոլոր քաղվածքները հաջողությամբ ավարտված են, և գործարքի ընթացքում որևէ ծրագրային կամ ապարատային խափանում տեղի չի ունեցել, ապա գործարքը կատարվել է:

Գործարքի կատարումը գործողություն է, որը գրում է սկավառակի վրա տվյալների բազայի փոփոխությունները, որոնք կատարվել են գործարքների կատարման ժամանակ: Գործարքների կատարումը նշանակում է, որ դրա կատարման բոլոր արդյունքները դառնում են մշտական ​​և տեսանելի կլինեն այլ գործարքների համար միայն ընթացիկ գործարքը կատարելուց հետո:



2. Եթե գործարքների կատարման ընթացքում ինչ-որ բան է տեղի ունեցել, որը անհնար է դարձնում այն ​​նորմալ ավարտելը, տվյալների բազան պետք է վերադարձվի իր սկզբնական վիճակին:

Գործարքի հետ վերադարձը գործողություն է, որը չեղարկում է տվյալների բոլոր փոփոխությունները, որոնք կատարվել են SQL հայտարարությունների կողմից ընթացիկ սպասող գործարքի մարմնում: Գործարքի յուրաքանչյուր քաղվածք կատարում է աշխատանքի իր մասը, սակայն ամբողջ աշխատանքի հաջող ավարտի համար պահանջվում է դրանց բոլոր հայտարարությունների անվերապահ ավարտումը:

ANSI/ISO SQL ստանդարտում գործարքն ավարտվում է 4-ից մեկով հնարավոր ուղիները(նկ. 1):

Բրինձ. 1. ANSI/ISO գործարքների մոդել

1. COMMIT քաղվածքը նշանակում է գործարքի հաջող ավարտ. դրա օգտագործումը մշտական ​​է դարձնում տվյալների բազայում կատարված փոփոխությունները ընթացիկ գործարքի շրջանակներում.

2. ROLLBACK քաղվածքը դադարեցնում է գործարքը՝ չեղյալ համարելով այս գործարքի շրջանակներում տվյալների բազայում կատարված փոփոխությունները. նոր գործարքը սկսվում է ROLLBACK-ն օգտագործելուց անմիջապես հետո.

3. ծրագրի հաջող ավարտը, որով մեկնարկել է ընթացիկ գործարքը, նշանակում է գործարքի հաջող ավարտ (կարծես օգտագործվել է COMMI հայտարարությունը).

4. ծրագրի սխալ դադարեցումը դադարեցնում է գործարքը (կարծես օգտագործվել է ROLLBACK հայտարարություն):

Գործարքների մատյանը նախատեսված է տվյալների բազայում տվյալների հուսալի պահպանումն ապահովելու համար: Եվ այս պահանջը, մասնավորապես, ենթադրում է տվյալների բազայի կայուն վիճակի վերականգնման հնարավորություն՝ ցանկացած տեսակի ապարատային և ծրագրային խափանումներից հետո։ Ակնհայտ է, որ վերականգնումներ կատարելու համար անհրաժեշտ է որոշակի լրացուցիչ տեղեկատվություն, որը պահպանվում է տվյալների բազայի փոփոխության գրանցամատյանի տեսքով, որը կոչվում է գործարքների մատյան:

Վերականգնում ծանր ձախողումից հետո

Կոշտ ձախողումից հետո տվյալների բազայի վերջին հետևողական վիճակը վերականգնելու հիմքը տվյալների բազայի գրանցամատյանն ու կրկնօրինակումն է:

Վերականգնումը սկսվում է տվյալների բազան կրկնօրինակից կրկնօրինակելով: Այնուհետև բոլոր ավարտված գործարքների համար կատարվում է կրկնություն, այսինքն՝ գործողությունները վերսկսվում են ուղղակի հերթականությամբ:

Գործարքների զուգահեռ կատարում

Եթե ​​տվյալների բազայի հետ միաժամանակ աշխատում են մի քանի օգտատերեր, ապա DBMS-ը ոչ միայն պետք է ճիշտ կատարի անհատական ​​գործարքները և վերականգնի տվյալների բազայի կայուն վիճակը խափանումներից հետո, այլև այն նախատեսված է ապահովելու բոլոր օգտատերերի ճիշտ զուգահեռ աշխատանքը նույն տվյալների վրա: . Տեսականորեն յուրաքանչյուր օգտատեր և յուրաքանչյուր գործարք պետք է ունենա մեկուսացման հատկություն, այսինքն՝ դրանք պետք է կատարվեն այնպես, կարծես միայն մեկ օգտվող է աշխատում տվյալների բազայի հետ։ Իսկ ժամանակակից DBMS-ի գործիքները թույլ են տալիս այս կերպ մեկուսացնել օգտվողներին միմյանցից։ Սակայն այս դեպքում օգտատերերի փորձը դանդաղեցնելու խնդիրներ կան։