Počítače Windows internet

Pošlite správu, že vaša transakcia bola úspešne dokončená. Čo je to transakcia bankovou kartou. Zákaz operácie. takzvaný „automatický záväzok“


Systém kontroly čakajúcich transakcií funguje na sb-opknt.online. Návštevou tejto stránky sa dozviete o nedokončenej transakcii vo výške 131 269 rubľov. Je potrebné zakročiť a vybrať peniaze do niekoľkých hodín, inak bude platba zrušená. Skontrolovali sme, či projekt uskutočňuje platbu.

Naozaj vám systém kontroly čakajúcich transakcií pošle peniaze?

Stránka poskytla iba e-mailovú adresu na komunikáciu s určitou PJSC „OPK NT“. Nenašli sme informácie o tomto PJSC a podrobnosti na stránke neboli uvedené. Spoločnosť bola jednoznačne fiktívna. Vyhlásenie bolo ťažko čitateľné a bolo umiestnené v spodnej časti stránky. Ale mal by si to prečítať každý návštevník, keďže vyhlásenia o sľúbených príjmoch tam boli oznámené ako predpoklady bez garancií platby.

Nemalo zmysel dúfať, že dostanete peniaze zo systému kontroly čakajúcich transakcií. Správa na stránke, číslo transakcie a osobný účet, ako aj suma - všetko bude pre všetkých návštevníkov rovnaké. Skutočnosť možného zrušenia peňazí naznačovala pochybný charakter stránky.

Boli sme presmerovaní na ďalšiu stránku, ktorá je údajne osobným účtom. Do formulára sme zadali niekoľko čísel a objednali sme výber peňazí. Údaje boli overené a prostriedky boli odoslané. Je nepravdepodobné, že bolo možné poslať platbu na naše nesprávne údaje, ale neboli proti nám žiadne sťažnosti. Bolo nám ponúknuté zaplatiť len 496 alebo 396 rubľov za zvolený spôsob prevodu. Platba bola zabezpečená prostredníctvom služby E-Pay, ktorá slúži na propagáciu podvodov, ktoré určitým spôsobom charakterizovali testovanú stránku.

Po zaplatení 396 rubľov prevod pokračoval. Ako sa dalo očakávať, nastala nová prekážka – banka prijímajúcej strany transakciu odmietla. Podvodník, ktorý vytvoril testovanú stránku, sa nezastavil pri jednej platbe a požadoval ďalšiu, 720 rubľov za služby prípravy dokumentácie. O doklady tu nikto nemal záujem, bola to len zámienka na vymáhanie peňazí. Boli sme znova poslaní do E-Pay.

Pochopili sme, že sľúbených 131 269 rubľov nám nezaplatí. Spočiatku sme boli oklamaní. Vyhlásenie, že všetky akcie na stránke sú chránené, sa ukázalo ako nepravdivé: na stránke nebol protokol https, ktorý by chránil dáta, a známe antivírusy boli zastúpené nezmyselnými obrázkami.

Výsledky systému kontroly nedokončených transakcií:

  • informácie na uvedenej stránke sú nepravdivé;
  • tento zdroj by ste nemali navštevovať.

Podrobný prehľad nájdete vo videu:

zverejňujeme osvedčené spôsoby, ako zarobiť peniaze.

Podvodníci sú kreatívni, keď vymýšľajú dôvody na platby. Ale robiť ich v nádeji, že dostanete zaplatené, je zbytočné. Z nášho zoznamu adresátov sa môžete dozvedieť o podvodoch, ktoré sa objavili na internete, ak sa prihlásite na odber. Kontakty na náš tím -. Pošlite nám svoje návrhy na testovacie stránky.

Existujú rôzne modely transakcií, ktoré možno klasifikovať na základe rôznych vlastností, vrátane štruktúry transakcie, súbežnosti v rámci transakcie, trvania atď.

V súčasnosti sa rozlišujú tieto typy transakcií: ploché alebo klasické transakcie, reťazené transakcie a vnorené transakcie.

Ploché, alebo tradičné transakcie sa vyznačujú štyrmi klasickými vlastnosťami: atomicita, konzistencia, izolácia, trvanlivosť (sila) - ACID (Atomicity, Consistency, Isolation, Durability). Tradičné transakcie sa niekedy označujú ako transakcie ACID. Vyššie uvedené vlastnosti znamenajú nasledovné:

Vlastnosť atomickosti (Atomicity) je vyjadrená v skutočnosti, že transakcia by mala byť vykonaná ako celok alebo vôbec.

Vlastnosť konzistencie zaisťuje, že v priebehu transakcií údaje prechádzajú z jedného konzistentného stavu do druhého – transakcia nenarúša vzájomnú konzistenciu údajov.

Vlastnosť Izolácia znamená, že konkurenčné transakcie o prístup k databáze sa fyzicky spracovávajú postupne, izolovane od seba, ale používateľom sa to javí, ako keby sa vykonávali paralelne.

Vlastnosť Trvanlivosť sa interpretuje nasledovne: ak je transakcia úspešne dokončená, zmeny v údajoch, ktoré vykonala, nemôžu byť za žiadnych okolností stratené (ani v prípade následných chýb).

Existujú dve možnosti dokončenia transakcie. Ak sú všetky príkazy úspešné a počas transakcie nenastali žiadne hardvérové ​​alebo softvérové ​​zlyhania, transakcia je potvrdená.

Potvrdenie transakcie je akt zápisu na disk zmien v databáze, ktoré boli vykonané počas vykonávania transakcie.

Kým transakcia nie je potvrdená, je dovolené tieto zmeny vrátiť späť, obnoviť databázu do stavu, v ktorom sa nachádzala v čase začiatku transakcie. Potvrdenie transakcie znamená, že všetky výsledky transakcie sú konštantné. Pre ostatné transakcie sa stanú viditeľnými až po potvrdení aktuálnej transakcie. Až do tohto bodu budú všetky údaje ovplyvnené transakciou „viditeľné“ pre používateľa v stave na začiatku aktuálnej transakcie.

Ak sa počas vykonávania transakcie stane niečo, čo znemožňuje jej normálne dokončenie, databázu je potrebné vrátiť do pôvodného stavu. Vrátenie transakcie je akcia, ktorá vráti späť všetky zmeny údajov, ktoré boli vykonané príkazmi SQL, do tela aktuálnej čakajúcej transakcie.



Každý príkaz v transakcii vykoná svoju časť práce, ale všetky jeho príkazy sa musia bezpodmienečne dokončiť, aby sa celá práca úspešne dokončila. Zoskupenie príkazov v transakcii hovorí DBMS, že celá skupina by mala byť vykonaná ako celok a toto vykonanie by malo byť podporované automaticky.

Štandard ANSI / ISO SQL definuje transakčný model a funkcie príkazov COMMIT a ROLLBACK. Štandard špecifikuje, že transakcia začína prvým príkazom SQL, iniciovaným používateľom alebo obsiahnutým v programe, ktorý mení aktuálny stav databázy. Všetky nasledujúce príkazy SQL tvoria telo transakcie. Transakcia končí jedným zo štyroch možných spôsobov (obrázok 11.1):

vyhlásenie COMMIT znamená úspešné dokončenie transakcie; jeho použitie spôsobuje trvalé zmeny v databáze v rámci aktuálnej transakcie;

príkaz ROLLBACK preruší transakciu a zruší zmeny vykonané v databáze ako súčasť tejto transakcie; nová transakcia sa začne ihneď po použití ROLLBACK;

úspešné ukončenie programu, v ktorom bola aktuálna transakcia iniciovaná, znamená úspešné dokončenie transakcie (ako keby bol použitý príkaz COMMIT);

chybné ukončenie programu preruší transakciu (ako keby bol použitý príkaz ROLLBACK).

V tomto modeli sa každý príkaz, ktorý zmení stav databázy, považuje za transakciu, preto po úspešnom dokončení tohto príkazu sa databáza dostane do nového stabilného stavu.

Prvé verzie komerčných DBMS implementovali transakčný model ANSI / ISO. Neskôr bol v SYBASE DBMS implementovaný rozšírený transakčný model, ktorý zahŕňa množstvo dodatočných operácií. Model SYBASE používa nasledujúce štyri operátory:

Príkaz BEGIN TRANSACTION oznamuje začiatok transakcie. Na rozdiel od modelu ANSI / ISO, kde je začiatok transakcie implicitne špecifikovaný prvým príkazom na úpravu údajov, v modeli SYBASE je začiatok transakcie špecifikovaný explicitne pomocou príkazu začiatku transakcie.

Výpis COMMIT TRANSACTION informuje o úspešnom dokončení transakcie. Je ekvivalentom vyhlásenia COMMIT v štandardnom modeli ANSI / ISO. Tento operátor, podobne ako operátor COMMIT, potvrdí všetky zmeny, ktoré boli vykonané v databáze počas vykonávania transakcie.

Príkaz SAVE TRANSACTION vytvorí bod uloženia vnútri transakcie, ktorý zodpovedá prechodnému stavu databázy uloženej v čase vykonania tohto príkazu. Príkaz SAVE TRANSACTION môže obsahovať názov bodu uloženia. Preto počas vykonávania transakcie môže byť uložených niekoľko bodov uloženia, ktoré zodpovedajú niekoľkým medzistavom.

Príkaz ROLLBACK má dve modifikácie. Ak sa tento príkaz použije bez dodatočného parametra, interpretuje sa ako príkaz na vrátenie celej transakcie, to znamená, že v tomto prípade je ekvivalentný príkazu ROLLBACK v modeli ANSI / ISO. Ak má príkaz rollback parameter a je zapísaný ako ROLLBACK B, potom sa interpretuje ako čiastočný príkaz na vrátenie transakcie do bodu uloženia B.

Princípy vykonávania transakcií v rozšírenom transakčnom modeli sú znázornené na obr. 11.2. Na obrázku sú operátori označení číslami, aby bolo pre nás pohodlnejšie sledovať priebeh transakcie vo všetkých možných prípadoch.

Transakcia začína výslovným operátorom začiatku transakcie, ktorý má v našej schéme číslo 1. Ďalej nasleduje operátor 2, ktorý je operátorom vyhľadávania a nemení aktuálny stav databázy, a nasledujúce operátory 3 a 4 preniesť databázu do nového stavu. Príkaz 5 uloží tento nový medzistav databázy a označí ho ako prechodný stav v bode A. Potom nasledujú príkazy 6 a 7, ktoré prenesú databázu do nového stavu. A operátor 8 uloží tento stav ako prechodný stav v bode B. Operátor 9 vykoná nový vstup dát a operátor 10 vykoná určitú kontrolu podmienky 1; ak je splnená podmienka 1, vykoná sa príkaz 11, ktorý vráti transakciu späť do prechodného stavu B To znamená, že dôsledky akcií príkazu 9 sú akoby vymazané a databáza sa vráti do prechodného stavu B, hoci po vykonaní príkazu 9 už bol v novom stave A po návrate transakcie namiesto príkazu 9, ktorý bol predtým vykonaný zo stavu V databáze sa vykoná príkaz 13 zadania nových údajov a potom sa prenesie kontrola do príkazu 14. Príkaz 14 znova kontroluje podmienku, ale už nejakú novú podmienku 2, ak je podmienka splnená, potom sa riadenie prenesie na operátora 15, ktorý vráti transakciu späť do medzistavu A, teda všetky príkazy ktoré zmenili databázu, počnúc 6 a končiac 13, sa považujú za nespustené, to znamená, že výsledky ich vykonania zmizli a sme opäť v stave A, pretože po vykonaní príkazu 4 sa ďalšia kontrola prenesie na operátora 17, ktorá aktualizuje obsah databázy, po ktorej sa kontrola Rozhodnutie je prenesené na operátora 18, čo je spojené s kontrolnou podmienkou 3. Kontrola končí buď odovzdaním kontroly operátorovi 20, ktorý transakciu potvrdí a databáza prejde do nového stabilného stavu, ktorý nie je možné v rámci alebo ak je kontrola prevedená na operátora 19, transakcia sa vráti na začiatok a DB sa vráti do pôvodného stavu a všetky medzistavy už tu boli skontrolované a nie je možné vykonať operáciu vrátenia do týchto prechodných stavov po vykonaní príkazu 19

Rozšírený transakčný model SYBASE samozrejme podporuje oveľa flexibilnejší mechanizmus vykonávania transakcií Body uloženia umožňujú nastaviť markery v rámci transakcie tak, aby bolo možné vrátiť späť iba časť práce vykonanej v transakcii možnosť vrátiť zmeny pre určitých operátorov Avšak, to spôsobuje dodatočné náklady na systémové zdroje - operátor vykoná prácu a zmeny sa potom zrušia, zvyčajne môžu byť vylepšenia v logike spracovania lepším riešením

1. Transakciea blokovanie

2. Koncept transakcie

Pri práci s databázami nie sú vylúčené chyby a zlyhania. Môžu byť spôsobené chybami používateľov pri interakcii s DBMS alebo nestabilnou prevádzkou počítačov. Preto DBMS používa špeciálne metódy na zrušenie akcií, ktoré spôsobili takéto chyby. Príkaz SQL ovplyvňujúci obsah a štruktúru databázy nie je nezvratný. Používateľ môže určiť, čo sa stane po ukončení jeho akcií: či zmeny vykonané v databáze zostanú alebo budú ignorované. Na tento účel sa postupnosť operácií v databáze spája do skupín - transakcií.

Transakciouje postupnosť operácií vykonaných na databáze a jej prenosu z jedného konzistentného stavu do iného konzistentného stavu.

Transakcia sa považuje za nejakú nedeliteľnú akciu v databáze, zmysluplnú z pohľadu používateľa, to znamená, že je to logická jednotka práce systému. Transakcia sa spustí vždy, keď dôjde k relácii databázy.

Príkladom transakcie môže byť prevod peňazí z bankomatu. Suma 100 tr. sa prevádza z bežného účtu na kartový účet. Program odpočíta čiastku z bežného účtu a následne ju pripočíta na kartový účet. Keď je program spustený, po vykonaní prvej úpravy dôjde k výpadku prúdu a kartový účet sa nezvýši. Aby sa predišlo tejto situácii, musia byť oba tímy spojené do transakcie. V prípade, že sa nevykonajú všetky príkazy transakcie, transakcia sa vráti späť.

Definujme transakciu pre zadávanie údajov o novoprijatých knihách v knižnici. Túto operáciu možno rozdeliť na 2 postupné operácie: po prvé, zadanie údajov o knihe je nový riadok v tabuľke knihy... Potom je potrebné zadať údaje o všetkých kópiách knihy - ide o vstup množiny nových riadkov do tabuľky Inštancie. Ak sa táto postupnosť akcií preruší, databáza nebude zodpovedať skutočnému objektu, preto je žiaduce vykonať ju ako jednu prácu na databáze.

3. Vlastnosti transakcie. Spôsoby dokončenia transakcie

Existujú rôzne modely transakcií, ktoré možno klasifikovať na základe rôznych vlastností, vrátane štruktúry transakcie, súbežnosti v rámci transakcie, trvania atď.

V súčasnosti sa rozlišujú tieto typy transakcií: ploché alebo klasické transakcie, reťazené transakcie a vnorené transakcie.

Ploché transakcie sa vyznačujú klasickými vlastnosťami atomickosti, konzistencie, izolácie a odolnosti.

· Vlastnosť atomickosti je vyjadrená v tom, že transakcia musí byť vykonaná ako celok alebo vôbec.

· Vlastnosť konzistencie zabezpečuje, že ako transakcia pokračuje, údaje prechádzajú z jedného konzistentného stavu do iného konzistentného stavu – transakcia nenarúša vzájomnú konzistenciu údajov.

· Vlastnosť izolácie znamená, že transakcie, ktoré súťažia o prístup do databázy, sa fyzicky spracúvajú postupne, navzájom izolovane, ale pre používateľov sa zdá, že sa vykonávajú paralelne.

· Vlastnosť dlhovekosti znamená, že ak je transakcia úspešne dokončená, zmeny údajov, ktoré vykonala, nemôžu byť za žiadnych okolností stratené, a to ani v prípade následných chýb.

Existujú 2 možnosti dokončenia transakcie:

· ak sú všetky príkazy úspešné a počas transakcie nenastali žiadne hardvérové ​​alebo softvérové ​​zlyhania, transakcia je potvrdená. (Potvrdenie je zápis zmien v databáze, ktoré boli vykonané počas vykonávania transakcie, na disk). Pokiaľ transakcia nie je potvrdená, tieto zmeny možno vrátiť späť a databázu je možné vrátiť do stavu, v ktorom bola, keď transakcia začala. Potvrdenie transakcie znamená, že všetky výsledky transakcie sú konštantné. Pre ostatné transakcie sa stanú viditeľnými až po potvrdení aktuálnej transakcie.

· Ak počas vykonávania transakcie dôjde k zlyhaniu, databázu je potrebné vrátiť do pôvodného stavu. Vrátenie transakcie je akcia, ktorá vráti späť všetky zmeny údajov, ktoré boli vykonané príkazmi SQL, do tela aktuálnej čakajúcej transakcie.

4. OperátoriTransakciaSQLpracovať s transakciami

ANSI / ISO definované operátory ZAMESTNAŤ SA a ROLLBACK, v štandarde je začiatok transakcie implicitne špecifikovaný prvým operátorom úpravy údajov; Operátor ZAMESTNAŤ SA znamená úspešné dokončenie transakcie, výsledky transakcie sa zaznamenajú do externej pamäte; keď operátor transakciu dokončí ROLLBACK výsledky transakcie sa zrušia. Úspešné dokončenie programu, v ktorom bola transakcia iniciovaná, znamená úspešné dokončenie transakcie (ako keby operátorZAMESTNAŤ SA ), neúspešné dokončenie - preruší transakciu (ako keby bol použitý operátorROLLBACK ). V tomto modeli sa každý príkaz, ktorý zmení stav údajov, považuje za transakciu. Tento model bol implementovaný v prvých verziách komerčných DBMS. Následne bol implementovaný rozšírený transakčný model v SYBASE DBMS.

V rozšírenom transakčnom modeli (napríklad v SQL SERVER DBMS) je poskytovaných množstvo dodatočných operácií:

· operátor ZAČAŤ TRANSAKCIU informuje o začiatku transakcie;

· operátor ZATVORTE TRANSAKCIU informuje o úspešnom dokončení transakcie. Tento operátor, rovnako ako COMMIT v štandardnom modeli ANSI / ISO, opravuje všetky zmeny, ktoré boli vykonané v databáze počas vykonávania transakcie;

· operátor ULOŽIŤ TRANSAKCIU vytvorí bod uloženia vnútri transakcie, ktorý zodpovedá medzistavu databázy uloženej v čase vykonania tohto príkazu. V operátorovi ULOŽIŤ TRANSAKCIU môže existovať názov bodu uloženia, preto počas vykonávania transakcie môže byť uložených niekoľko bodov uloženia zodpovedajúcich niekoľkým medzistavom;

· operátor ROLLBACK má 2 modifikácie. Ak sa použije bez dodatočného parametra, potom sa interpretuje ako operátor na vrátenie celej transakcie, ak má parameter ROLLBACK n, potom sa interpretuje ako operátor na čiastočné vrátenie transakcie do bodu uloženia n.

Body uloženia sú užitočné v dlhých a zložitých transakciách, aby poskytli možnosť vrátiť späť zmeny vykonané konkrétnymi príkazmi.

Vo väčšine prípadov môžete nastaviť parameter tzv AUTOMATICKÝ ZÁVÄZOK , ktorý si automaticky zapamätá všetky vykonané príkazy a akcie, ktoré viedli k chybe, budú vždy automaticky zrušené. Zvyčajne sa tento režim nastavuje príkazom ako:

SET AUTOMATICKÝ ZÁVÄZOK ON ;

a návrat k normálnemu dialógovému spracovaniu požiadaviek:

SET AUTOMATICKÝ ZÁVÄZOK VYPNUTÉ ;

Okrem toho je možné inštalovať AUTOMATICKÝ ZÁVÄZOK . Neodporúča sa organizovať prácu tak, aby jednotlivé transakcie obsahovali veľa príkazov, najmä navzájom nesúvisiacich. To môže viesť k tomu, že pri zrušení zmien sa vykoná príliš veľa akcií, vrátane tých, ktoré sú nevyhnutné a nespôsobili chyby. Najlepšou možnosťou je, keď transakcia pozostáva z jedného príkazu alebo niekoľkých úzko súvisiacich príkazov.

Spúšťač sa vykonáva ako implicitne definovaná transakcia, takže príkazy na riadenie transakcií sú povolené vo vnútri spúšťača. Najmä ak zistíte porušenie obmedzení integrity, musíte príkaz použiť TRANSAKCIA VRÁTENIA ... Ak sa spúšťač úspešne dokončí, môžete použiť príkaz ZAMESTNAŤ SA TRANSAKCIA .
Vykonanie príkazu TRANSAKCIA VRÁTENIA alebo ZAMESTNAŤ SA TRANSAKCIA neporuší spúšť, takže by ste mali pozorne sledovať pokusy o vrátenie transakcie viackrát, keď sú splnené rôzne podmienky.

Príklad transakcie:

ZAČAŤ TRAN

AKTUALIZOVAŤ účet

SET zostatok = zostatok- 100

Ak chyba @@ = 0

ZAČAŤ

ROLLBACK TRAN

NÁVRAT

KONIEC

UPDATE card_account

SET zostatok = zostatok + 100

KDE [e-mail chránený] _účet

Ak chyba @@ = 0

ZAČAŤ

ROLLBACK TRAN

NÁVRAT

KONIEC

ZAMESTNAŤ TRAN

Príkaz ZAČAŤ TRAN informuje server o začiatku transakcie. To znamená, že predtým, ako server prijme príkazZAMESTNAŤ SA TRAN všetky zmeny sú dočasné. Ak teda server po prvej aktualizácii zlyhá, transakcia bude vrátená späť. Žiadny proces nemôže získať prístup k údajom, kým sa transakcia nedokončí.

5. Denník transakcií.

Implementáciu princípu zachovania medzistavov, potvrdenia alebo odvolania transakcie zabezpečuje špeciálny mechanizmus, na podporu ktorého bola vytvorená systémová štruktúra, nazývaná transakčný protokol. Transakčný protokol obsahuje sekvenciu záznamov o zmenách databázy. Je navrhnutý tak, aby poskytoval spoľahlivé ukladanie údajov v databáze. To znamená schopnosť obnoviť konzistentný stav databázy po akomkoľvek zlyhaní hardvéru a softvéru. Všeobecné princípy protokolovania a obnovy:

· výsledky potvrdených transakcií musia byť uložené v obnovenom stave databázy;

· výsledky nepotvrdených transakcií by nemali byť prítomné v obnovenom stave databázy.

To znamená, že sa obnoví posledný konzistentný stav databázy.

Nasledujúce situácie sú možné, v ktorých je potrebné obnoviť stav databázy:

· Obnova po náhlej strate obsahu pamäte RAM (mäkká porucha). Táto situácia môže nastať v nasledujúcich prípadoch: počas núdzového vypnutia alebo keď dôjde k fatálnej poruche procesora. Situácia je charakterizovaná stratou tej časti databázy, ktorá sa v čase zlyhania nachádzala vo vyrovnávacej pamäti RAM.

· Obnova po poruche hlavného externého databázového média (závažné zlyhanie).

Systém by mal byť schopný zotaviť sa z menších prerušení (napríklad neúspešných transakcií), ako aj po veľkých prerušeniach (napríklad výpadky prúdu, vážne zlyhania).

V prípade mäkkého zlyhania je potrebné obnoviť obsah databázy z obsahu transakčných protokolov uložených na diskoch. V prípade ťažkého zlyhania je potrebné obnoviť obsah databázy z archívnych kópií a transakčných protokolov, ktoré sú uložené na nepoškodenom externom médiu.

Existujú dve hlavné možnosti uchovávania informácií denníka. V 1. možnosti sa pre každú transakciu touto transakciou vedie samostatný protokol zmien lokálnej databázy. Tieto protokoly sa nazývajú lokálne protokoly. Používajú sa na lokálne vrátenie transakcií. Okrem toho sa udržiava všeobecný protokol zmien databázy, ktorý sa používa na obnovu databázy po mäkkých a ťažkých zlyhaniach.

Tento prístup vám umožňuje rýchlo vykonať vrátenie jednotlivých transakcií, ale výsledkom sú duplicitné informácie v lokálnych a zdieľaných protokoloch. Častejšie sa preto využíva druhá možnosť – udržiavanie len všeobecného denníka zmien databázy, ktorý sa využíva aj pri vykonávaní jednotlivých rollbackov.

Všeobecná štruktúra protokolu môže byť reprezentovaná vo forme sekvenčného súboru, v ktorom je zaznamenaná každá zmena v databáze, ku ktorej dôjde počas vykonávania transakcie. Všetky transakcie majú interné čísla, takže všetky zmeny vykonané všetkými transakciami sú zaznamenané v protokole transakcií.

Každá položka protokolu je označená číslom transakcie, ku ktorej patrí, a hodnotami atribútov, ktoré mení, navyše pre každú transakciu je do protokolu zaznamenaný príkaz na spustenie a ukončenie transakcie.

Pre väčšiu spoľahlivosť je protokol transakcií často duplikovaný systémovými nástrojmi DBMS, a preto je množstvo externej pamäte mnohonásobne väčšie ako skutočné množstvo údajov v databáze.

Existujú 2 možnosti protokolovania transakcií: protokol odloženej aktualizácie a protokol okamžitej aktualizácie.

Protokolovanie lenivých aktualizácií predpokladá nasledujúci mechanizmus vykonávania transakcií:

1. Keď začne transakcia T1, do protokolu sa zapíše záznam

T1 Začať Transakcia

2. Počas vykonávania transakcie sa do protokolu zaznamená pre každý zmenený záznam nová hodnota.

T1. ID _ RECORD (záznam). , atribút, nová hodnota

(ID _ RECORD (záznam). - jedinečné číslo záznamu)

3. Ak sú všetky akcie, ktoré tvoria transakciu, úspešne dokončené, transakcia sa čiastočne zaznamená a do protokolu sa zapíše:

T 1 COMMT

4. Po potvrdení transakcie sa záznamy protokolu súvisiace s T1 použijú na vykonanie zmien v databáze.

5. Ak dôjde k zlyhaniu, DBMS sa pozrie do denníka a zistí, ktoré transakcie je potrebné prerobiť. Transakciu T1 je potrebné zopakovať, ak protokol obsahuje oba záznamy T1 Začať Transakcia a T 1 COMMT . Databáza môže byť v nekonzistentnom stave, avšak všetky nové hodnoty zmenených dátových položiek sú obsiahnuté v protokole, čo si vyžaduje opätovné vykonanie transakcie. Na to sa používa systémový postup.REDO(), ktorý nahradí všetky hodnoty položiek novými prechádzaním denníka v doprednom poradí.

6. Ak protokol neobsahuje príkaz na potvrdenie transakcie S OMMIT, potom sa nevyžaduje žiadna akcia a transakcia sa reštartuje.

Alternatívny mechanizmus s okamžitým spustením umožňuje vykonávať zmeny priamo v databáze a do protokolu sa zapisujú nielen nové, ale aj všetky staré hodnoty zmenených atribútov, takže každý záznam vyzerá takto:

T1. ID _ RECORD (záznam). , atribút, nová hodnota stará hodnota

V tomto prípade zápis do protokolu predchádza priamemu vykonaniu operácie v databáze. Keď je transakcia potvrdená, to znamená, že sa zistí príkaz T1 ZÁVÄZKA a vykoná sa, potom sú už všetky zmeny vykonané v databáze a v súvislosti s touto transakciou nie je potrebná žiadna ďalšia akcia.

Keď je transakcia vrátená späť, vykoná sa systémová procedúra VRÁTENIE SPÄŤ (), ktorý vráti všetky staré hodnoty v zrušenej transakcii, postupne prechádza protokolom, počnúc príkazom ZAČAŤ TRANSAKCIU.

Na núdzové prepnutie sa používa nasledujúci mechanizmus:

· Ak transakcia obsahuje príkaz na spustenie transakcie, ale neobsahuje príkaz odovzdania s potvrdením jej vykonania, postupnosť akcií sa vykoná, ako keď sa transakcia vráti späť, to znamená, že sa obnovia staré hodnoty.

V skutočnosti sa obnova uskutočňuje podľa zložitejších algoritmov, pretože zmeny v protokole aj v databáze sa nezaznamenajú okamžite, ale uložia sa do vyrovnávacej pamäte. Protokolovanie zmien úzko súvisí nielen so správou transakcií, ale aj s ukladaním databázových stránok do pamäte RAM. Ak by bol záznam o zmene databázy, ktorý by mal ísť do logu pri vykonávaní akejkoľvek operácie úpravy databázy, v skutočnosti okamžite zapísaný do externej pamäte, viedlo by to k výraznému spomaleniu systému. Záznamy denníka sa preto tiež ukladajú do vyrovnávacej pamäte: počas bežnej prevádzky sa ďalšia stránka vloží do externej pamäte denníka iba vtedy, keď je plná záznamov.

6. Zámky.

Vo viacužívateľských systémoch môže niekoľko používateľov alebo aplikácií bežať súčasne s tou istou databázou. Jednou z hlavných úloh DBMS je zabezpečiť izoláciu používateľov, teda vytvorenie takého režimu fungovania, aby si každý z používateľov myslel, že s databázou pracuje sám. Takáto úloha DBMS sa zvyčajne nazýva paralelizmus transakcií.

Pri paralelnom spracovaní databáz existujú tri hlavné problémy:

§ Chýbajúce zmeny ... Táto situácia nastane, keď 2 transakcie súčasne upravia ten istý záznam v databáze. Napríklad 2 operátori pracujú na prijímaní objednávok, prvý operátor prijal objednávku na 30 monitorov. Keď išiel do skladu, bolo tam 40 monitorov a on po potvrdení od klienta vydal predaj 30 monitorov zo 40. Paralelne s ním pracuje druhý operátor, ktorý prijíma objednávku na 20 kusov. rovnaké monitory a obratom, kontaktovaním skladu, dostane rovnakú hodnotu 40 a zadá objednávku pre svojho zákazníka. Po dokončení práce s údajmi vykoná príkaz aktualizovať,čo pridá 20 ako zvyšok monitorov v sklade. Potom prvý operátor ukončí prácu so svojím zákazníkom a tiež vykoná príkaz Obnoviť, ktorá eviduje zvyšok 10 ako počet monitorov na sklade. Celkovo predali 50 monitorov zo 40, pričom na sklade bolo 10 monitorov.

§ Problémy s prechodnými údajmi ... Prepojené s možnosťou prístupu k medziľahlým údajom. Predpokladajme, že prvý operátor, ktorý rokoval so svojím zákazníkom, zadal objednaných 30 monitorov, ale pred dokončením objednávky chcel zákazník zistiť ďalšie vlastnosti produktu. Aplikácia, s ktorou pracuje 1. operátor, už vymenila zvyšné monitory v sklade a informácie o zvyšných 10 monitoroch sú tam teraz uložené. Druhý operátor sa momentálne snaží od svojho zákazníka prijať objednávku na 20 monitorov, no jeho aplikácia ukazuje, že na sklade zostáva už len 10 monitorov a operátor je nútený svojho zákazníka odmietnuť. V tomto čase sa zákazník prvého operátora rozhodne nekupovať monitory, operátor vráti transakciu späť a opäť je na sklade 40 monitorov. Táto situácia bola možná, pretože aplikácia druhého operátora mala prístup k medziľahlým údajom, ktoré boli vytvorené prvou aplikáciou.

§ Problémy s nekonzistentnými údajmi. Súvisí s možnosťou zmeny údajov x, už prečítané x inou aplikáciou. Obaja operátori začnú pracovať takmer súčasne, dostanú počiatočný stav skladu 40 monitorov a potom prvý operátor predá 30 monitorov svojmu zákazníkovi. Opustí svoju aplikáciu a tá vykoná príkaz na potvrdenie transakcie COMMIT. Stav databázy je konzistentný. V tomto momente sa zákazník druhého operátora rozhodne zadať objednávku a druhý operátor po opätovnom prístupe k údajom vidí, že sa zmenil počet monitorov. Druhý operátor sa domnieva, že je narušená integrita transakcie, pretože v priebehu jednej zákazky dostal 2 rôzne stavy skladu. Táto situácia nastala tak, že aplikácia 1. operátora dokázala zmeniť dátovú n-ticu, ktorá už bola načítaná aplikáciou 2. operátora.

Ak zhrnieme uvedené problémy, možno rozlíšiť nasledujúce typy konfliktov medzi dvoma paralelnými transakciami:

· W-W - transakcia 2 sa pokúša upraviť objekt modifikovaný transakciou 1, ktorá sa neskončila;

· R-W - transakcia 2 sa pokúša upraviť objekt čítaný transakciou 1, ktorá sa neskončila;

· W-R transakcia 2 sa pokúša prečítať objekt modifikovaný neukončenou transakciou 1;

7. Serializácia transakcií

Aby sa predišlo takýmto konfliktom, je potrebné vyvinúť určitý postup na konzistentné vykonávanie súbežných transakcií. Tento postup musí byť v súlade s nasledujúcimi pravidlami:

1. Počas vykonávania transakcie používateľ vidí iba konzistentné údaje. Používateľ by nemal vidieť nekonzistentné prechodné údaje.

2. Keď sa transakcie v DB 2 vykonávajú paralelne, výsledky vykonania transakcií by mali byť rovnaké, ako keby sa vykonala transakcia 1 a potom transakcia 2, alebo naopak.

Postup implementácie týchto princípov sa nazýva serializácia transakcií. Zaručuje, že každý používateľ pristupujúci k databáze s ňou pracuje tak, ako keby k tým istým údajom v rovnakom čase nemali prístup žiadni iní používatelia. Výsledok spoločného vykonania transakcie je ekvivalentný výsledku nejakého postupného vykonania rovnakých transakcií.

Najjednoduchším východiskom by bolo sekvenčné vykonávanie transakcií, no takýto výstup nie je z časového hľadiska optimálny, existujú flexibilnejšie metódy riadenia paralelného prístupu k databáze. Najbežnejším mechanizmom na riešenie týchto problémov je uzamknutie objektu (napríklad tabuľky) na celú dobu trvania transakcie. Ak transakcia pristupuje k zamknutému objektu, zostáva nevybavená, kým sa objekt neodomkne, a potom ho môže začať spracovávať. Blokovanie však vytvára nové problémy – latenciu transakcií v dôsledku blokovania.

Zámky, tiež nazývané synchronizované zachytávanie objektov, možno použiť na rôzne typy objektov. Najväčším blokujúcim objektom môže byť celá databáza, ale tento typ blokovania spôsobí, že databáza bude nedostupná pre všetky ostatné aplikácie, ktoré s touto databázou pracujú. Ďalším typom objektu zámku sú tabuľky. Transakcia, ktorá funguje na stole, ho uzamkne na celú dobu trvania transakcie. Tento typ uzamykania je vhodnejší ako predchádzajúci, pretože umožňuje súbežné transakcie, ktoré fungujú na iných tabuľkách.

Množstvo DBMS implementuje uzamykanie na úrovni stránky. V tomto prípade DBMS uzamkne jednotlivé stránky na disku len vtedy, keď k nim pristúpi transakcia. Tento typ uzamykania je ešte mäkší a umožňuje, aby rôzne transakcie fungovali na tej istej tabuľke, ak majú prístup k rôznym dátovým stránkam.

V niektorých DBMS je možné uzamykanie na úrovni riadkov, ale takýto uzamykací mechanizmus si vyžaduje dodatočné náklady na jeho podporu. SQL Server sa snaží nastaviť zámky na úrovni záznamov, aby sa maximalizovala súbežnosť. Keď sa počet zámkov riadkov zvyšuje, server sa môže presunúť na uzamknutie stránky, ak počet záznamov prekročí prah.

8. Prepísať zámky na úrovni požiadavky. Typy uzamykania

Ak za názvom tabuľky vo vete OD nasleduje jedno z nasledujúcich kľúčových slov, požiadavka zasahuje do správcu zámkov a použije sa zadaný typ zámku:

· NOLOCK - umožňuje špinavé čítanie;

· PAGLOCK - uzamknutie úrovne strany;

· ROWLOCK - blokovanie na úrovni záznamov;

· TABLOCK - zámok zdieľaného stola;

· TABLOCKX - exkluzívny stolový zámok

V súčasnosti je problém blokovania predmetom veľkého množstva štúdií.

Existujú dva základné typy zámkov (synchronizačné úchytky):

Zdieľané (nie pevné) zámky – Tento režim znamená zdieľané zachytenie objektu a používa sa na vykonanie operácie čítania objektu. Takto uzamknuté objekty sa počas vykonávania transakcie nemenia a sú dostupné pre iné transakcie, ale iba v režime čítania;

Exkluzívne (tvrdé) zámky – nikomu okrem vlastníka tohto zámku neumožňujú prístup k údajom vôbec. Tieto zámky sa používajú pre príkazy, ktoré menia obsah alebo štruktúru tabuľky a sú platné až do konca transakcie.

Zachytenie objektov niekoľkými transakciami čítania je kompatibilné, to znamená, že niekoľko transakcií môže čítať rovnaký objekt. Zachytenie objektu jednou transakciou čítania nie je kompatibilné s iným zachytením inou transakciou toho istého objektu zápisom. Zachytenia toho istého objektu rôznymi transakciami zápisu nie sú kompatibilné.

Použitie rôznych typov zámkov však vedie k problému zablokovania. Problém uviaznutia nastal pri zvažovaní vykonávania paralelných procesov v operačných prostrediach a súvisel aj so správou zdieľaných (zdieľaných) objektov. Príklad zablokovania: Predpokladajme, že transakcia A pevne uzamkne stôl 1 a potom pevne uzamkne stôl 2. Na druhej strane transakcia B pevne uzamkne stôl 2 a potom pevne uzamkne stôl 1.

Ak obe tieto transakcie začali fungovať v rovnakom čase, potom po vykonaní operácií modifikácie na prvej tabuľke skončia obe v nekonečnom čakaní: transakcia A bude čakať na dokončenie transakcie B a odomkne tabuľku 2 a transakcia B bude márne čakať na dokončenie transakcie A a na odomknutie stola 1.

Situácie môžu byť oveľa zložitejšie. Počet vzájomne zablokovaných transakcií môže byť oveľa vyšší. Každá transakcia nedokáže túto situáciu sama odhaliť. Musí to vyriešiť DBMS. Väčšina komerčných DBMS má mechanizmus na zisťovanie takýchto uviaznutí.

Detekcia zablokovania je založená na vytváraní (alebo udržiavaní) grafu čakania transakcie. Čakacím grafom môže byť orientovaný graf, na vrcholoch ktorého sa nachádzajú názvy transakcií. Ak transakcia T1 čaká na koniec transakcie T2, potom sa šípka presunie z hornej časti T1 do hornej časti T2. Okrem toho môžu byť šípky označené názvami blokovaných objektov a typom blokovania.

Uzamykací mechanizmus používa koncepciu úrovne izolácie zámku na určenie, koľko tabuliek bude uzamknutých. Tradične sa používajú tri úrovne izolácie:

· Úroveň izolácie, nazývaná reread, implementuje stratégiu tak, že v rámci danej transakcie nie je možné zmeniť všetky záznamy získané pomocou dotazov. Tieto záznamy nemožno zmeniť, kým sa transakcia nedokončí.

· Úroveň izolácie, nazývaná ukazovateľ stability, bráni tomu, aby sa každý záznam zmenil počas jeho čítania alebo aby sa čítal počas jeho úpravy.

· Tretia úroveň stability sa nazýva iba na čítanie. Iba na čítanie uzamkne celú tabuľku, a preto sa nedá použiť s príkazmi aktualizácie. Iba na čítanie teda zabezpečuje, že výstup dotazu je interne konzistentný s údajmi tabuľky.

Nástroj na kontrolu súbežnosti v DBMS teda určuje, do akej miery sa budú súčasne vydané príkazy navzájom rušiť. V moderných DBMS ide o adaptabilný nástroj, ktorý automaticky nájde optimálne riešenie s prihliadnutím na zabezpečenie maximálneho výkonu databázy a dostupnosti dát pre prevádzkové tímy.

9. KONTROLNÉ OTÁZKY

1. Definujte transakciu. Uveďte príklady transakcií.

2. Vymenujte a charakterizujte vlastnosti transakcií.

3. Aké sú možné možnosti dokončenia transakcií.

4. Aké sú operátory jazyka SQL slúžiť na prácu s transakciami v rozšírenom transakčnom modeli?

5. Môžem použiť príkazy na riadenie transakcií v spúšťačoch?

6. Na čo slúži denník transakcií?

7. V akých prípadoch sa obnova databázy vykonáva z protokolu transakcií?

8. Aké možnosti existujú na zaznamenávanie transakcií?

9. Aké sú rozdiely medzi možnosťami protokolovania transakcií: protokol odloženej aktualizácie a protokol okamžitej aktualizácie.

10. Aké problémy vznikajú, keď užívatelia pracujú paralelne s databázou?

11. Aké databázové objekty je možné uzamknúť, aby sa implementoval princíp izolácie používateľov?

12. Dá sa v dopytoch nastaviť typ blokovania?

13. Aké typy zachytávania objektov viacerými transakciami existujú? Ktoré sú kompatibilné?

14. Aký je problém slepých uličiek?

Existujú rôzne modely transakcií, ktoré možno klasifikovať na základe rôznych vlastností, vrátane štruktúry transakcie, súbežnosti v rámci transakcie, trvania atď.

V súčasnosti sa rozlišujú tieto typy transakcií: ploché alebo klasické transakcie, reťazené transakcie a vnorené transakcie.

Ploché, alebo tradičné transakcie sa vyznačujú štyrmi klasickými vlastnosťami: atomicita, konzistencia, izolácia, trvanlivosť (sila) - ACID (Atomicity, Consistency, Isolation, Durability). Tradičné transakcie sa niekedy označujú ako transakcie ACID. Vyššie uvedené vlastnosti znamenajú nasledovné:

· Atomická vlastnosť(Atomicita) je vyjadrená v tom, že transakcia by mala byť dokončená ako celok alebo vôbec.

· Vlastnosť konzistencie(Konzistentnosť) zabezpečuje, že pri postupe transakcií dáta prechádzajú z jedného konzistentného stavu do druhého – transakcia nenarúša vzájomnú konzistenciu dát.

· Izolačná nehnuteľnosť(Izolácia) znamená, že konkurenčné transakcie o prístup do databázy sa fyzicky spracúvajú postupne, navzájom izolovane, ale pre používateľov sa zdá, že sa vykonávajú paralelne.

· Trvanlivosť vlastnosť(Trvanlivosť) sa interpretuje nasledovne: ak je transakcia úspešne dokončená, zmeny v údajoch, ktoré vykonala, nemôžu byť za žiadnych okolností stratené (ani v prípade následných chýb).

Existujú dve možnosti dokončenia transakcie. Ak sú všetky príkazy úspešné a počas transakcie nenastali žiadne hardvérové ​​alebo softvérové ​​zlyhania, transakcia je potvrdená.

Potvrdenie transakcie je akt zápisu na disk zmien v databáze, ktoré boli vykonané počas vykonávania transakcie.

Kým transakcia nie je potvrdená, je dovolené tieto zmeny vrátiť späť, obnoviť databázu do stavu, v ktorom sa nachádzala v čase začiatku transakcie. Potvrdenie transakcie znamená, že všetky výsledky transakcie sú konštantné. Pre ostatné transakcie sa stanú viditeľnými až po potvrdení aktuálnej transakcie. Až do tohto bodu budú všetky údaje ovplyvnené transakciou „viditeľné“ pre používateľa v stave na začiatku aktuálnej transakcie.

Ak sa počas vykonávania transakcie stane niečo, čo znemožňuje jej normálne dokončenie, databázu je potrebné vrátiť do pôvodného stavu. Vrátenie transakcie je akcia, ktorá vráti späť všetky zmeny údajov, ktoré boli vykonané príkazmi SQL, do tela aktuálnej čakajúcej transakcie.

Každý príkaz v transakcii vykoná svoju časť práce, ale všetky jeho príkazy sa musia bezpodmienečne dokončiť, aby sa celá práca úspešne dokončila. Zoskupenie príkazov v transakcii hovorí DBMS, že celá skupina by mala byť vykonaná ako celok a toto vykonanie by malo byť podporované automaticky.

Štandard ANSI / ISO SQL definuje transakčný model a funkcie príkazov COMMIT a ROLLBACK. Štandard špecifikuje, že transakcia začína prvým príkazom SQL, iniciovaným používateľom alebo obsiahnutým v programe, ktorý mení aktuálny stav databázy. Všetky nasledujúce príkazy SQL tvoria telo transakcie. Transakcia končí jedným zo štyroch možných spôsobov (obrázok 11.1):

1. vyhlásenie COMMIT znamená úspešné ukončenie transakcie; jeho použitie spôsobuje trvalé zmeny v databáze v rámci aktuálnej transakcie;

2. príkaz ROLLBACK preruší transakciu a zruší zmeny vykonané v databáze ako súčasť tejto transakcie; nová transakcia sa začne ihneď po použití ROLLBACK;

3. úspešné ukončenie programu, v ktorom bola aktuálna transakcia iniciovaná, znamená úspešné ukončenie transakcie (ako keby bol použitý príkaz COMMIT);

4. chybné ukončenie programu preruší transakciu (ako keby bol použitý príkaz ROLLBACK).

V tomto modeli sa každý príkaz, ktorý zmení stav databázy, považuje za transakciu, preto po úspešnom dokončení tohto príkazu sa databáza dostane do nového stabilného stavu.

Prvé verzie komerčných DBMS implementovali transakčný model ANSI / ISO. Neskôr bol v SYBASE DBMS implementovaný rozšírený transakčný model, ktorý zahŕňa množstvo dodatočných operácií. Model SYBASE používa nasledujúce štyri operátory:

· Príkaz BEGIN TRANSACTION označuje začiatok transakcie. Na rozdiel od modelu ANSI / ISO, kde je začiatok transakcie implicitne špecifikovaný prvým príkazom na úpravu údajov, v modeli SYBASE je začiatok transakcie špecifikovaný explicitne pomocou príkazu začiatku transakcie.

· Výpis COMMIT TRANSACTION informuje o úspešnom dokončení transakcie. Je ekvivalentom vyhlásenia COMMIT v štandardnom modeli ANSI / ISO. Tento operátor, podobne ako operátor COMMIT, potvrdí všetky zmeny, ktoré boli vykonané v databáze počas vykonávania transakcie.

· Príkaz SAVE TRANSACTION vytvorí bod uloženia vnútri transakcie, ktorý zodpovedá prechodnému stavu databázy uloženej v čase vykonania tohto príkazu. Príkaz SAVE TRANSACTION môže obsahovať názov bodu uloženia. Preto počas vykonávania transakcie môže byť uložených niekoľko bodov uloženia, ktoré zodpovedajú niekoľkým medzistavom.

· Operátor ROLLBACK má dve modifikácie. Ak sa tento príkaz použije bez dodatočného parametra, interpretuje sa ako príkaz na vrátenie celej transakcie, to znamená, že v tomto prípade je ekvivalentný príkazu ROLLBACK v modeli ANSI / ISO. Ak má príkaz rollback parameter a je zapísaný ako ROLLBACK B, potom sa interpretuje ako čiastočný príkaz na vrátenie transakcie do bodu uloženia B.

Ryža. 11.1.Transakčný model ANSI / ISO

Princípy vykonávania transakcií v rozšírenom transakčnom modeli sú znázornené na obr. 11.2. Na obrázku sú operátori označení číslami, aby bolo pre nás pohodlnejšie sledovať priebeh transakcie vo všetkých možných prípadoch.

Ryža. 11.2.Príklady vykonávania transakcií v rozšírenom modeli

Transakcia začína výslovným operátorom začiatku transakcie, ktorý má v našej schéme číslo 1. Ďalej nasleduje operátor 2, ktorý je operátorom vyhľadávania a nemení aktuálny stav databázy, a nasledujúce operátory 3 a 4 preniesť databázu do nového stavu. Príkaz 5 uloží tento nový medzistav databázy a označí ho ako prechodný stav v bode A. Potom nasledujú príkazy 6 a 7, ktoré prenesú databázu do nového stavu. A operátor 8 uloží tento stav ako prechodný stav v bode B. Operátor 9 vykoná nový vstup dát a operátor 10 vykoná určitú kontrolu podmienky 1; ak je splnená podmienka 1, vykoná sa príkaz 11, ktorý vráti transakciu späť do prechodného stavu B. To znamená, že dôsledky akcií príkazu 9 sú akoby vymazané a databáza sa opäť vráti do prechodného stavu B, hoci po vykonaní výroku 9 bol už v novom stave. A po návrate transakcie sa namiesto príkazu 9, ktorý bol vykonaný skôr zo stavu V databáze, vykoná príkaz 13 zadania nových údajov a potom sa kontrola prenesie do príkazu 14. Príkaz 14 opäť kontroluje stav, ale už nejaký nový stav 2; ak je podmienka splnená, riadenie sa prenesie na operátora 15, ktorý vráti transakciu späť do medzistavu A, to znamená, že všetci operátori, ktorí zmenili databázu, počnúc 6 a končiac 13, sa považujú za nesplnené, tj. , výsledky ich vykonania zmizli a sme opäť v stave A, ako po vykonaní operátora 4. Ďalej sa riadenie prenesie na operátora 17, ktorý aktualizuje obsah databázy, po ktorej sa kontrola prenesie na operátora 18, ktorý je spojená s kontrolnou podmienkou 3. Kontrola končí buď odovzdaním kontroly operátorovi 20, ktorý transakciu potvrdí, a databáza prejde do nového ustáleného stavu a nie je možné ju zmeniť v rámci aktuálnej transakcie. Alebo, ak je riadenie prenesené na operátora 19, potom sa transakcia vráti späť na začiatok a databáza sa vráti do pôvodného stavu, pričom tu už boli skontrolované všetky medzistavy a nie je možné vykonať operáciu návratu na tieto medziľahlé stavy po vykonaní operátora 19.

Rozšírený transakčný model SYBASE samozrejme podporuje oveľa flexibilnejší mechanizmus vykonávania transakcií. Body uloženia umožňujú nastaviť značky v rámci transakcie tak, aby bolo možné vrátiť späť iba časť práce vykonanej v transakcii. Odporúča sa používať body uloženia v dlhých a zložitých transakciách, aby sa zabezpečila funkcia vrátenia pre konkrétne príkazy. To však vedie k dodatočným nákladom na systémové zdroje - operátor vykoná prácu a zmeny sú potom zrušené; zvyčajne môžu byť vylepšenia v logike spracovania lepším riešením.

Denník transakcií

Implementáciu princípu zachovania medzistavov, potvrdenia alebo odvolania transakcie v DBMS zabezpečuje špeciálny mechanizmus, na podporu ktorého je vytvorená určitá systémová štruktúra, tzv. Denník transakcií.

Účel protokolu transakcií je však oveľa širší. Je navrhnutý tak, aby poskytoval spoľahlivé ukladanie údajov v databáze.

A z tejto požiadavky vyplýva najmä schopnosť obnoviť konzistentný stav databázy po akomkoľvek zlyhaní hardvéru a softvéru. Je zrejmé, že na vykonanie obnovy sú potrebné ďalšie informácie. V drvivej väčšine moderných relačných DBMS sú takéto nadbytočné dodatočné informácie udržiavané vo forme protokolu zmien databázy, najčastejšie tzv. Denník transakcií.

Celkovým cieľom protokolovania zmien databázy je teda zabezpečiť, aby sa databáza dala obnoviť do konzistentného stavu po akomkoľvek zlyhaní. Pretože základom pre zachovanie integrity databázy je transakčný mechanizmus, protokolovanie a obnova úzko súvisia s konceptom transakcie. Všeobecné zásady obnovy sú nasledovné:

· Výsledky potvrdených transakcií musia byť uložené v obnovenom stave databázy;

· Výsledky nepotvrdených transakcií nesmú byť prítomné v obnovenom stave databázy.

To v skutočnosti znamená, že sa obnovuje najnovší konzistentný stav databázy.

Nasledujúce situácie sú možné, v ktorých potrebujete obnoviť stav databázy.

· Individuálne vrátenie transakcie. Toto vrátenie by sa malo použiť v nasledujúcich prípadoch:

o štandardnou situáciou pre vrátenie transakcie je jej explicitné dokončenie príkazom ROLLBACK;

o abnormálne ukončenie aplikačného programu, ktoré je logicky ekvivalentné vykonaniu príkazu ROLLBACK, ale fyzicky má odlišný mechanizmus vykonávania;

o nútené vrátenie transakcie v prípade zablokovania paralelného vykonávania transakcií. V takom prípade, aby sa prelomila patová situácia, môže byť táto transakcia vybraná ako „obeť“ a jej vykonanie jadrom DBMS násilne ukončené.

· Obnova po náhlej strate obsahu pamäte RAM (mäkké zlyhanie). Táto situácia môže nastať v nasledujúcich prípadoch:

o v prípade núdzového vypnutia napájania;

o pri neopraviteľnom zlyhaní procesora (napríklad fungovanie riadenia RAM) atď. Situácia je charakterizovaná stratou tej časti databázy, ktorá bola v čase poruchy obsiahnutá v RAM bufferoch.

· Obnova po poruche hlavného externého média databázy (závažné zlyhanie). Táto situácia, vzhľadom na dostatočne vysokú spoľahlivosť moderných externých pamäťových zariadení, môže nastať pomerne zriedkavo, no napriek tomu by mal byť DBMS schopný obnoviť databázu aj v tomto prípade. Základom obnovy je archívna kópia a protokol zmien databázy.

Ak chcete obnoviť konzistentný stav databázy pri individuálnom odvolaní transakcie, musíte eliminovať účinky príkazov na úpravu databázy, ktoré boli vykonané v danej transakcii. Pre obnovenie konzistentného stavu databázy v prípade mäkkého zlyhania je potrebné obnoviť obsah databázy z obsahu transakčných protokolov uložených na diskoch. Pre obnovenie konzistentného stavu databázy v prípade ťažkého zlyhania je potrebné obnoviť obsah databázy z archívnych kópií a transakčných protokolov, ktoré sú uložené na nepoškodenom externom médiu.

Vo všetkých troch prípadoch je základom obnovy redundantné ukladanie dát. Tieto nadbytočné údaje sú uložené v protokole obsahujúcom postupnosť záznamov o zmenách databázy.

Existujú dve hlavné možnosti uchovávania informácií denníka. V prvej možnosti sa pre každú transakciu danej transakcie uchováva samostatný protokol zmien lokálnej databázy. Tieto protokoly sa nazývajú lokálne protokoly. Používajú sa na individuálne vrátenie transakcií a môžu byť udržiavané v pamäti RAM (správnejšie vo virtuálnej) pamäti. Okrem toho sa udržiava všeobecný protokol zmien databázy, ktorý sa používa na obnovenie stavu databázy po mäkkých a ťažkých zlyhaniach.

Tento prístup vám umožňuje rýchlo vykonať vrátenie jednotlivých transakcií, ale výsledkom sú duplicitné informácie v lokálnych a zdieľaných protokoloch. Preto sa častejšie využíva druhá možnosť – udržiavanie len všeobecného logu zmien databázy, čo sa využíva aj pri vykonávaní jednotlivých rollbackov. Ďalej zvážime túto konkrétnu možnosť.

Všeobecná štruktúra protokolu môže byť podmienene reprezentovaná vo forme sekvenčného súboru, ktorý zaznamenáva každú zmenu v databáze, ku ktorej dôjde počas vykonávania transakcie. Všetky transakcie majú svoje interné čísla, takže všetky zmeny uskutočnené všetkými transakciami sú zaznamenané v jednom protokole transakcií.

Každý záznam v protokole transakcií je označený číslom transakcie, do ktorej patrí, a hodnotami atribútov, ktoré mení. Okrem toho sa pri každej transakcii do protokolu zaznamená príkaz na spustenie a ukončenie transakcie (pozri obrázok 11.3).

Pre väčšiu spoľahlivosť je protokol transakcií často duplikovaný systémovými nástrojmi komerčných DBMS, a preto je množstvo externej pamäte mnohonásobne väčšie ako skutočné množstvo údajov uložených v úložisku.

Existujú dve alternatívy protokolovania transakcií: protokol odloženej aktualizácie a protokol okamžitej aktualizácie.

Protokolovanie čakajúcich zmien predpokladá nasledujúci mechanizmus vykonávania transakcií:

1. Keď sa transakcia T1 začne, do protokolu sa zapíše záznam

<Т1 Begin transaction>

2. Pri vykonávaní transakcie sa do protokolu pre každý zmenený záznam zapíše nová hodnota: ... ID_RECORD je tu jedinečné číslo záznamu.

3. Ak boli všetky úkony tvoriace transakciu T1 úspešne ukončené, transakcia je čiastočne zaznamenaná a zapísaná do protokolu.<Т1 СОММIТ>.

4. Po potvrdení transakcie sa záznamy protokolu súvisiace s T1 použijú na vykonanie príslušných zmien v databáze.

5. Ak dôjde k zlyhaniu, DBMS sa pozrie do denníka a zistí, ktoré transakcie je potrebné prerobiť. Transakciu T1 je potrebné zopakovať, ak protokol obsahuje oba záznamy<Т1 BEGIN TRANSACTION и <Т1 СОММIТ>... Databáza môže byť v nekonzistentnom stave, avšak všetky nové hodnoty zmenených dátových položiek sú obsiahnuté v protokole, čo si vyžaduje opätovné vykonanie transakcie. Na tento účel sa používa systémový postup REDOQ, ktorý nahrádza všetky hodnoty údajových položiek novými, pričom sa pozerá na protokol v priamom poradí.

6. Ak protokol neobsahuje príkaz na potvrdenie transakcie COMMIT, potom sa nevyžaduje žiadna akcia a transakcia sa reštartuje.

Ryža. 11.3.Denník transakcií

Alternatívny mechanizmus s okamžitým spustením umožňuje okamžité vykonanie zmien v databáze a do protokolu sa zapisujú nielen nové, ale aj všetky staré hodnoty zmenených atribútov, takže každý záznam vyzerá ako<Т1, ID_RECORD, атрибут новое значение старое значение...>... V tomto prípade zápis do protokolu predchádza priamemu vykonaniu operácie v databáze. Keď je transakcia potvrdená, to znamená, že sa zistí príkaz<Т1 СОММIТ>a vykoná sa, potom sa už v databáze vykonajú všetky zmeny a v súvislosti s touto transakciou nie sú potrebné žiadne ďalšie kroky.

Keď je transakcia vrátená späť, vykoná sa systémová procedúra UNDO (), ktorá vráti všetky staré hodnoty v zrušenej transakcii, pričom postupuje postupne cez protokol začínajúci príkazom BEGIN TRANSACTION.

Na núdzové prepnutie sa používa nasledujúci mechanizmus:

· Ak transakcia obsahuje príkaz na spustenie transakcie, ale neobsahuje príkaz odovzdania s potvrdením jej vykonania, postupnosť akcií sa vykoná, ako keď sa transakcia vráti späť, to znamená, že sa obnovia staré hodnoty .

· Ak k zlyhaniu došlo po vykonaní posledného príkazu zmeny DB, ale pred vykonaním príkazu odovzdania, vykoná sa príkaz odovzdania av databáze sa nevykonajú žiadne zmeny. Práca prebieha len na protokolárnej úrovni.

· Treba však poznamenať, že problémy s obnovou vyzerajú oveľa komplikovanejšie ako algoritmy uvedené vyššie, keďže zmeny v protokole aj databáze sa nezaznamenajú okamžite, ale uložia sa do vyrovnávacej pamäte. Tomu je venovaná ďalšia časť.

Protokolovanie a ukladanie do vyrovnávacej pamäte

Protokolovanie zmien úzko súvisí nielen so správou transakcií, ale aj s ukladaním databázových stránok do pamäte.

Ak by sa záznam o zmene databázy, ktorý by mal ísť do protokolu pri akejkoľvek operácii úpravy databázy, skutočne okamžite zapísal do externej pamäte, výrazne by to spomalilo systém. Záznamy denníka sa preto tiež ukladajú do vyrovnávacej pamäte: počas bežnej prevádzky sa ďalšia stránka vloží do externej pamäte denníka iba vtedy, keď je plná záznamov.

Výzvou je navrhnúť nejakú všeobecnú politiku push, aby sa zabezpečilo, že databázu bude možné obnoviť po havárii.

Problém nenastáva pri jednotlivých návratoch transakcií, keďže v týchto prípadoch sa nestráca obsah hlavnej pamäte a je možné použiť obsah vyrovnávacej pamäte protokolu aj vyrovnávacej pamäte stránok databázy. Ak však dôjde k mäkkému zlyhaniu a dôjde k strate obsahu vyrovnávacích pamätí, musíte mať určitý konzistentný stav protokolu a databázy v externej pamäti, aby ste mohli obnoviť databázu.

Základnou zásadou konzistentnej politiky pre otváranie vyrovnávacej pamäte protokolu a vyrovnávacej pamäte databázových stránok je, že zmena databázového objektu sa musí zapísať do externej pamäte protokolu predtým, ako sa upravený objekt dostane do externej pamäte databázy. Zodpovedajúci protokol protokolovania (a správy vyrovnávacej pamäte) sa nazýva Write Ahead Log (WAL) – „zapis ako prvý do protokolu“ a spočíva v tom, že ak chcete zapísať upravený databázový objekt do externej pamäte, musíte najskôr zabezpečiť, aby transakčný protokol sa zapisuje do externej pamäte záznamy o jeho zmene.

Inými slovami, ak je v externej pamäti databázy nejaký databázový objekt, vo vzťahu ku ktorému bola vykonaná operácia modifikácie, potom v externej pamäti protokolu je nevyhnutne záznam zodpovedajúci tejto operácii. Opak nie je pravdou, teda ak externá pamäť logu obsahuje záznam o nejakej operácii zmeny databázového objektu, tak samotný zmenený objekt nemusí byť prítomný v externej pamäti databázy.

Ďalšia podmienka pre tlačenie vyrovnávacích pamätí je stanovená požiadavkou, že každá úspešne dokončená transakcia musí byť skutočne potvrdená do externej pamäte. Bez ohľadu na to, aké zlyhanie nastane, systém musí byť schopný obnoviť stav databázy, ktorý obsahuje výsledky všetkých transakcií vykonaných v čase zlyhania.

Jednoduchým riešením by bol pop buffer loga nasledovaný hromadným popom bufferov databázových stránok upravených transakciou. Robí sa to pomerne často, ale pri vykonávaní operácie potvrdenia to predstavuje značnú réžiu.

Ukazuje sa, že minimálnou požiadavkou na zabezpečenie obnovenia posledného konzistentného stavu databázy je, že keď je transakcia potvrdená, všetky záznamy o zmenách databázy touto transakciou sa presunú do externej pamäte protokolu. V tomto prípade je posledný záznam v protokole vykonaný v mene tejto transakcie špeciálnym záznamom o ukončení transakcie.

Teraz sa pozrime na to, ako môžete vykonávať operácie obnovy databázy v rôznych situáciách, ak systém udržiava spoločný protokol uložený vo vyrovnávacej pamäti pre všetky transakcie a je udržiavaný v súlade s protokolom WAL.

Individuálne vrátenie transakcie

Aby bolo možné vykonať vrátenie jednotlivých transakcií vo všeobecnom denníku, všetky záznamy denníka pre túto transakciu sú prepojené v opačnom zozname. Na začiatku zoznamu neúspešných transakcií je posledná zmena databázy vykonaná touto transakciou. Pre ukončené transakcie (ktorých jednotlivé vrátenia už nie sú možné) je začiatok zoznamu záznam o ukončení transakcie, ktorý sa nutne zatlačí do externej pamäte logu Koniec zoznamu je vždy prvý záznam o zmene databázy vykonanej touto transakciou. Typicky je každému záznamu priradené jedinečné ID transakcie, takže daná transakcia môže obnoviť priamy zoznam záznamov o zmene databázy.

Vrátenie jednotlivých transakcií (ešte raz zdôrazňujeme, že je to možné len pre nepotvrdené transakcie) sa teda vykonáva takto:

· Ďalší záznam sa vyberie zo zoznamu tejto transakcie.

· Vykoná sa opačná operácia: namiesto operácie INSERT sa vykoná zodpovedajúca operácia DELETE, namiesto operácie DELETE sa vykoná operácia INSERT a namiesto priamej operácie UPDATE sa inverzná operácia UPDATE obnoví predchádzajúci stav databázy. objekt.

· Každá z týchto spätných operácií sa tiež zaznamenáva. V skutočnosti to nie je potrebné pri individuálnom vrátení späť, ale pri vykonávaní jednotlivého vrátenia transakcie môže dôjsť k mäkkému zlyhaniu, pri obnove, z ktorého bude potrebné vrátiť späť transakciu, pre ktorú sa jednotlivé vrátenia úplne nevykonajú.

· Ak sa rollback úspešne dokončí, do protokolu sa zapíše záznam o ukončení transakcie. Z pohľadu logu je takáto transakcia spáchaná.

Zotavovanie sa z mäkkého zlyhania

Jedným z hlavných problémov pri obnove po mäkkom zlyhaní je to, že jedna operácia zmeny logickej databázy môže zmeniť viacero fyzických databázových blokov, ako napríklad údajovú stránku a viacero indexových stránok. Databázové stránky sa ukladajú do pamäte RAM a vyskakujú nezávisle. Napriek použitiu protokolu WAL sa po miernom zlyhaní môže ukázať, že sada stránok v externej pamäti databázy je nekonzistentná, to znamená, že niektoré stránky externej pamäte zodpovedajú objektu pred zmenou a niektoré - po zmene. Operácie logickej úrovne nie sú použiteľné pre tento stav objektu.

Stav externej pamäte databázy sa nazýva fyzicky konzistentný, ak sú sady stránok všetkých objektov konzistentné, to znamená, že zodpovedajú stavu objektu buď pred jeho zmenou, alebo po zmene.

Budeme predpokladať, že protokol označuje body fyzickej konzistencie databázy - časové okamihy, v ktorých externá pamäť obsahuje konzistentné výsledky operácií, ktoré boli dokončené pred zodpovedajúcim časovým bodom, a neexistujú žiadne výsledky operácií, ktoré nie je dokončená a vyrovnávacia pamäť denníka sa presunie do externej pamäte. Na to, ako sa dá dosiahnuť fyzická konzistencia, sa pozrieme o niečo neskôr. Takéto body nazvime tpc (čas fyzikálnej konzistencie) – body fyzikálnej zhody.

Potom v čase slabého zlyhania sú možné nasledujúce stavy transakcie:

· Transakcia bola úspešne dokončená, to znamená, že operácia COMMIT transakcie bola potvrdená a pre všetky operácie transakcie bolo prijaté potvrdenie o jej vykonaní v externej pamäti;

· Transakcia bola úspešne dokončená, ale pre niektoré operácie nebolo prijaté potvrdenie o ich vykonaní v externej pamäti;

· Transakcia prijala a vykonala príkaz ROLLBACK;

· Transakcia nie je dokončená.

Fyzická konzistencia databázy

Ako môžete zabezpečiť, aby v databáze boli body fyzickej konzistencie, teda ako obnoviť stav databázy v čase tpc? Na tento účel sa používajú dva hlavné prístupy: prístup založený na tieňoch a prístup, ktorý využíva protokolovanie zmien databázy po jednotlivých stránkach.

Pri otvorení súboru sa do RAM načíta tabuľka na mapovanie počtov jeho logických blokov na adresy fyzických blokov externej pamäte. Keď sa zmení ktorýkoľvek blok súboru, v externej pamäti sa pridelí nový blok. V tomto prípade sa zmení aktuálna mapovacia tabuľka (v RAM) a tieňová tabuľka zostane nezmenená. Ak dôjde k zlyhaniu pri práci s otvoreným súborom, stav súboru pred jeho otvorením sa automaticky uloží do externej pamäte. Na explicitné obnovenie súboru stačí znovu prečítať tabuľku mapovania tieňov do pamäte RAM.

Všeobecná myšlienka mechanizmu tieňa je znázornená na obr. 11.4.

Ryža. 11.4.Používanie tabuliek tieňového zobrazenia

V kontexte databázy sa tieňový mechanizmus používa nasledovne. Kontrolné body sa vykonávajú pravidelne. Za týmto účelom sú dokončené všetky logické operácie, všetky vyrovnávacie pamäte hlavnej pamäte, ktorých obsah nezodpovedá obsahu zodpovedajúcich stránok externej pamäte, sú vytlačené. Tieňová tabuľka pre mapovanie databázových súborov je nahradená aktuálnou (správnejšie, aktuálna mapovacia tabuľka sa zapisuje na miesto tieňovej tabuľky).

Obnova na tpc je okamžitá: aktuálna tabuľka mapovania sa nahradí tieňovou (počas obnovy sa tabuľka mapovania tieňov jednoducho číta). Všetky problémy s obnovou sú vyriešené, ale na úkor prílišného nadmerného využívania externej pamäte. Pri limite možno budete potrebovať dvakrát toľko externej pamäte, ako skutočne potrebujete na uloženie databázy. Tieňový mechanizmus je spoľahlivý, ale príliš hrubý nástroj. Konzistentný stav externej pamäte je poskytovaný v jednom časovom bode spoločnom pre všetky objekty. V skutočnosti stačí mať súbor konzistentných súborov stránok, z ktorých každá môže zodpovedať vlastným časovým vzorkám.

Na splnenie takejto slabšej požiadavky sa spolu s logickým protokolovaním operácií zmeny databázy zaznamenávajú zmeny po stránke. Prvým krokom pri zotavovaní sa z mäkkého zlyhania je vrátiť neúspešné logické operácie jednu stránku po druhej. Ako sa to robí s logickými záznamami vzhľadom na transakcie, posledný stránkovaný záznam zmeny z jednej logickej operácie je koncom operácie.

V tomto prístupe existujú dva spôsoby riešenia problému. Prvá metóda udržiava spoločný protokol logických a stránkovacích operácií. Prítomnosť dvoch typov záznamov, interpretovaných úplne odlišným spôsobom, prirodzene komplikuje štruktúru časopisu. Záznamy o zmenách po stránke, ktorých relevantnosť je lokálneho charakteru, navyše výrazne (a nie veľmi zmysluplne) zväčšujú časopis.

Preto je čoraz populárnejšie viesť samostatný (krátky) žurnál stránkovaných zmien. Táto technika je použitá napríklad v známom produkte Informix Online.

Predpokladajme, že nejakým spôsobom bolo možné obnoviť externú pamäť databázy do stavu v čase tpc (ako sa to dá urobiť - o niečo neskôr). potom:

· Pre transakciu T1 nie je potrebná žiadna akcia. Skončil pred tpc a všetky jeho výsledky sa premietli do externej pamäte databázy.

· Pre transakciu T2 musíte znova vykonať zvyšok operácií (zopakovať). Vo vonkajšej pamäti skutočne nie sú úplne žiadne stopy operácií, ktoré boli vykonané v transakcii T2 po okamihu tpc. Preto je priama reinterpretácia operácií T2 správna a povedie k logicky konzistentnému stavu databázy (keďže transakcia T2 bola úspešne dokončená pred mäkkým zlyhaním, protokol obsahuje záznam všetkých zmien vykonaných touto transakciou).

· Pri transakcii TK musí byť prvá časť operácií (vrátenie späť) vykonaná v opačnom smere. V externej pamäti databázy totiž úplne chýbajú výsledky operácií TK, ktoré boli vykonané po momente tpc. Na druhej strane, externá pamäť zaručene obsahuje výsledky operácií TK, ktoré boli vykonané pred tpc. V dôsledku toho je spätná interpretácia operácií TK správna a povedie ku konzistentnému stavu databázy (keďže transakcia TK nebola dokončená v čase mäkkého zlyhania, pri obnove je potrebné zachovať všetky dôsledky jej vykonania ).

· Pre transakciu T4, ktorá sa začala po tpc a skončila pred miernym zlyhaním, by sa malo vykonať úplné zopakovanie.

Nakoniec sa nevyžaduje žiadna akcia pre transakciu T5, ktorá sa začala po momente tpc a nestihla sa dokončiť v čase slabého zlyhania. Výsledky tejto transakcie v externej pamäti databázy úplne chýbajú.

Zotavovanie sa z tvrdej havárie

Je jasné, že protokol zmien databázy nestačí na obnovenie databázy do posledného konzistentného stavu po ťažkom zlyhaní. V tomto prípade je základom obnovy protokol a záložná kópia databázy.

Obnova začína skopírovaním databázy späť z archívnej kópie. Potom sa vykoná zopakovanie pre všetky dokončené transakcie, to znamená, že operácie sa znova vykonajú v doprednom poradí.

Presnejšie povedané, stane sa nasledovné:

· Všetky operácie sa vykonávajú pozdĺž guľatiny v smere dopredu;

· Pre transakcie, ktoré sa neskončili v čase zlyhania, sa vykoná vrátenie.

V skutočnosti, keďže ťažké zlyhanie nemá za následok stratu vyrovnávacej pamäte RAM, je možné obnoviť databázu na takú úroveň, že aj neúspešné transakcie môžu pokračovať. To sa však zvyčajne nerobí, pretože zotavenie sa z tvrdej havárie je pomerne zdĺhavý proces.

Aj keď sú na protokolovanie z hľadiska spoľahlivosti kladené špeciálne požiadavky, v zásade sa môže stratiť. Potom jediný spôsob, ako obnoviť databázu, je vrátiť sa späť k archívnej kópii. Samozrejme, v tomto prípade nebudete môcť získať posledný konzistentný stav databázy, ale je to lepšie ako nič.

Posledný problém, na ktorý sa stručne pozrieme, sa týka vytvárania záloh databázy. Najjednoduchším spôsobom je archivovať databázu, keď je denník plný. V denníku je zavedená takzvaná "žltá zóna", po dosiahnutí ktorej je vytváranie nových transakcií dočasne zablokované. Keď sú všetky transakcie dokončené, a teda databáza je v konzistentnom stave, môžete ju archivovať a potom znova začať vypĺňať denník.

Databázu môžete zálohovať menej často, než sa protokol zaplní. Ak je denník plný a všetky začaté transakcie sa skončili, môžete samotný denník archivovať. Keďže takýto archivovaný protokol je v podstate potrebný len na opätovné vytvorenie archivovanej kópie databázy, informácie z archivovaného protokolu môžu byť značne komprimované.

Pri každom použití bankovej karty na platbu za tovar, výber finančných prostriedkov alebo prevody vykoná klient banky určité transakcie. A hoci všetky transakcie trvajú len niekoľko minút, celý cyklus operácií je pomerne rozsiahly proces, ktorý zahŕňa odosielanie žiadostí o výber peňazí, ich spracovanie a realizáciu.

Transakcia je akákoľvek operácia s bankovou kartou, ktorej vykonaním dochádza k zmene stavu účtu klienta. Transakcia môže byť vykonaná v reálnom čase (online) a offline.

Online transakcie vyžadujú povinné potvrdenie platby v čase vykonania platby alebo prevodu finančných prostriedkov.

Online transakcie zahŕňajú prevody peňazí medzi kartami, operácie výberu hotovosti v bankomatoch, zúčtovacie operácie v maloobchodných predajniach a obchodoch. Zvážte proces vykonávania online transakcie na príklade platby za položku v nákupnom centre.

Na operácii sa podieľajú tri strany:

  • prijímajúca banka obsluhujúca vybranú predajňu (je to jej POS terminál, ktorý je nainštalovaný v predajni);
  • banka, ktorá vydala platobnú bankovú kartu;
  • medzinárodný platobný styk, ktorý je medzičlánkom pri zúčtovacích transakciách (Visa, MasterCard a pod.).

Online transakčná objednávka

Zúčtovacia transakcia začína od odovzdania platobnej karty pokladníkovi a POS terminálu načítaním údajov potrebných na platbu (číslo karty, doba platnosti, priezvisko majiteľa a ďalšie informácie zašifrované na magnetickej páske). Prečítané informácie sa prenášajú do prijímajúcej banky obsluhujúcej POS terminál (obchody spravidla uzatvárajú osobitné zmluvy na obsluhu terminálov, podľa ktorých sa účtujú provízie za každú transakciu).

Prijaté údaje prenáša prijímajúca banka do centra spracovania údajov (DPC) medzinárodného platobného systému obsluhujúceho kartu.

Dátové centrum skontroluje prítomnosť alebo absenciu platobnej karty v stopliste (v stopliste sa môžu objaviť karty podozrivé z podvodu), v dôsledku čoho je operácia schválená alebo zamietnutá.

Potom sa informácie prenesú do spracovateľského centra vydávajúcej banky, kde je platba schválená. Tu sa skontroluje legálnosť transakcie: skontroluje sa, či je dostatok prostriedkov na dokončenie transakcie, a skontroluje sa, či zadaný PIN kód zodpovedá skutočnej hodnote. Okrem toho sa vykonáva kontrola prekročenia stanoveného limitu na vykonávanie operácií.

Odpoveď vydávajúcej banky sa posiela späť cez dátové centrum prijímajúcej banke a obchodu. Údaje o platbe sú zobrazené na šeku, ktorý je prevedený kupujúcemu.

Vlastnosti online a offline transakcií

Uvažované akcie pri vykonávaní online transakcií dokončujú interakciu medzi kupujúcim a obchodom. Tým sa však samotný proces transakcie nekončí. Faktom je, že prostriedky sa z karty neodpíšu okamžite: sú dočasne zablokované. Prostriedky sa prevedú do obchodu z účtu nadobúdateľa a z karty sa odpíšu až po tom, čo nadobúdajúca banka prevedie finančný doklad vydavateľovi na ich odpísanie. Môže sa to stať v priebehu niekoľkých dní alebo dokonca mesiaca.

Offline transakcie prebiehajú podľa iného princípu. Prechádzajú bez overovacích akcií zo strany vzdialenej strany a schválenia alebo zamietnutia. Transakcia je vopred schválená, zostatok na bankovej karte je rezervovaný a všetky platobné údaje sú uložené v pamäti platobného terminálu.

Offline transakcia sa vykoná neskôr, keď sa informácie nahromadené v termináli prenesú cez komunikačné kanály do obsluhujúcej banky. Od momentu vyžiadania platby až po skutočnú platbu zvyčajne uplynie niekoľko dní.

Offline transakcie sa využívajú v prípadoch, keď nie je možné nadviazať spojenie so spracovateľským centrom v reálnom čase (v lietadlách, autobusoch, taxíkoch a pod.).

Zákaz a zrušenie transakcií

Najbežnejšími transakciami sú platby v obchode, prevody peňazí a výbery hotovosti. Existuje niekoľko dôvodov, prečo môžu byť transakcie zakázané.

Najbežnejšie sú:

  • banková karta bola zablokovaná;
  • na bankovej karte nie je dostatok finančných prostriedkov potrebných na dokončenie operácie;
  • platobná karta má stanovené obmedzenia na uskutočňovanie platieb;
  • platnosť platobnej karty vypršala;
  • pri zadávaní PIN kódu sa vyskytla chyba;
  • banková karta bola zaradená na stoplist pre podozrenie z prania špinavých peňazí, podvodu atď.;
  • vyskytli sa technické problémy (na webovej stránke, s bankomatom atď.).

Ak zákaz transakcií nesúvisí s nedostatočným zostatkom na karte, musíte sa obrátiť na servisnú banku, aby problém vyriešila. V niektorých prípadoch môžu byť transakcie zrušené na podnet samotných zákazníkov (samozrejme, ak nehovoríme o výberoch hotovosti). Musíte vedieť o možnosti zrušenia transakcií, aby ste mohli podvodne vrátiť prostriedky odpísané z karty.

Najjednoduchším spôsobom je zrušiť transakciu v deň, keď bola vykonaná.

Funkcia zrušenia operácií je v samotných termináloch.

Ak už boli údaje z terminálov prevedené do banky, mali by ste kontaktovať samotný finančný ústav.