Računala Windows Internet

Pošaljite poruku o uspješno završenoj transakciji. Što je transakcija bankovnom karticom. Zabrana operacije. Takozvano "auto-commit"


Sustav kontrole transakcija na čekanju radi na sb-opknt.online. Posjetivši ovu stranicu, saznat ćete o nedovršenoj transakciji u iznosu od 131.269 rubalja. Potrebno je poduzeti mjere i podići novac u roku od nekoliko sati, inače će plaćanje biti poništeno. Provjerili smo plaća li se projekt.

Hoće li vam sustav kontrole transakcija na čekanju doista poslati novac?

Stranica je dala samo adresu e-pošte za komunikaciju s određenim PJSC "OPK NT". Nismo pronašli informacije o ovom PJSC-u, a detalji na stranici nisu navedeni. Tvrtka je očito bila izmišljena. Odricanje od odgovornosti bilo je teško pročitati i postavljeno je na dno stranice. No, svaki posjetitelj trebao bi ga pročitati, budući da su izjave o tamošnjem obećanom prihodu najavljivane kao pretpostavke bez jamstva plaćanja.

Nije imalo smisla nadati se primanju novca iz sustava kontrole transakcija na čekanju. Poruka na stranici, broj transakcije i osobnog računa, kao i iznos - sve će biti isto za sve posjetitelje. Činjenica mogućeg otkazivanja novca ukazivala je na upitnu prirodu stranice.

Preusmjereni smo na sljedeću stranicu, koja je navodno osobni račun. U obrazac smo unijeli nekoliko brojeva i naručili podizanje novca. Podaci su provjereni i sredstva su poslana. Malo je vjerojatno da je bilo moguće poslati uplatu na naše netočne podatke, ali pritužbi na nas nije bilo. Ponuđeno nam je da platimo samo 496 ili 396 rubalja za odabrani način prijenosa. Plaćanje je bilo predviđeno na servisu E-Pay koji služi za promicanje prijevara koje su na određeni način obilježile testiranu stranicu.

Nakon uplate od 396 rubalja, operacija prijenosa je nastavljena. Očekivano, pojavila se nova prepreka - banka primatelja odbila je transakciju. Prevarant koji je stvorio testirano mjesto nije se zaustavio na jednoj uplati i tražio je sljedeću, 720 rubalja za usluge pripreme dokumentacije. Ovdje nikoga nisu zanimali dokumenti, to je bio samo izgovor za traženje novca. Opet smo poslani na E-Pay.

Razumjeli smo da nam obećanih 131.269 rubalja neće biti isplaćeno. U početku smo bili prevareni. Izjava da su sve radnje na stranici zaštićene pokazala se lažnom: na stranici nije postojao https protokol koji štiti podatke, a poznati antivirusi bili su predstavljeni besmislenim slikama.

Rezultati o sustavu kontrole nepotpunih transakcija:

  • podaci na navedenoj stranici su lažni;
  • ne biste trebali posjećivati ​​ovaj resurs.

Za detaljan pregled pogledajte video:

objavljujemo provjerene načine zarade.

Prevaranti postaju kreativni kada dođu do razloga za plaćanje. Ali činiti ih, nadajući se da ćete biti plaćeni, besmisleno je. S naše mailing liste možete saznati o prijevarama koje su nastale na internetu, ako se pretplatite. Kontakti našeg tima -. Pošaljite nam svoje prijedloge za testiranje stranica.

Postoje različiti modeli transakcija koji se mogu klasificirati na temelju različitih svojstava, uključujući strukturu transakcije, istodobnost unutar transakcije, trajanje itd.

Trenutno se razlikuju sljedeće vrste transakcija: ravne ili klasične transakcije, lančane transakcije i ugniježđene transakcije.

Flat, ili tradicionalne, transakcije karakteriziraju četiri klasična svojstva: atomičnost, konzistentnost, izoliranost, trajnost (snaga) - ACID (Atomicity, Consistency, Isolation, Durability). Tradicionalne transakcije se ponekad nazivaju ACID transakcijama. Gore navedena svojstva znače sljedeće:

Svojstvo atomičnosti (Atomicity) izražava se u činjenici da se transakcija treba izvršiti u cjelini ili uopće ne izvršiti.

Svojstvo Consistency osigurava da kako transakcija napreduje, podaci prelaze iz jednog dosljednog stanja u drugo - transakcija ne narušava međusobnu konzistentnost podataka.

Svojstvo Isolation znači da se konkurentske transakcije za pristup bazi podataka fizički obrađuju uzastopno, izolirano jedna od druge, ali se korisnicima čini kao da se izvršavaju paralelno.

Svojstvo Durability tumači se na sljedeći način: ako je transakcija uspješno dovršena, tada se promjene podataka koje je izvršila ne mogu izgubiti ni pod kojim okolnostima (čak ni u slučaju naknadnih pogrešaka).

Postoje dvije opcije za dovršetak transakcije. Ako su svi nalozi uspješni i tijekom transakcije nije došlo do kvarova hardvera ili softvera, transakcija je predana.

Potvrda transakcije je čin pisanja na disk promjena u bazi podataka koje su napravljene tijekom izvršenja transakcije.

Dok transakcija nije predana, dopušteno je vratiti te promjene, vratiti bazu podataka u stanje u kojem je bila u vrijeme kada je transakcija započela. Potvrda transakcije znači da su svi rezultati transakcije konstantni. Postat će vidljivi drugim transakcijama tek nakon što je trenutna transakcija predana. Do ovog trenutka svi podaci na koje utječe transakcija bit će "vidljivi" korisniku u stanju na početku trenutne transakcije.

Ako se tijekom izvršenja transakcije dogodi nešto što onemogućuje njezino normalno dovršenje, baza podataka se mora vratiti u izvorno stanje. Vraćanje transakcije unatrag je radnja koja vraća sve promjene podataka koje su izvršili SQL izrazi u tijelo trenutne transakcije na čekanju.



Svaka naredba u transakciji obavlja svoj dio posla, ali svi njezini izrazi moraju se bezuvjetno dovršiti da bi se cijeli posao uspješno završio. Grupiranje izraza u transakciji govori DBMS-u da se cijela grupa treba izvršiti kao cjelina, a ovo izvršenje treba biti podržano automatski.

ANSI / ISO SQL standard definira transakcijski model i funkcije naredbi COMMIT i ROLLBACK. Standard navodi da transakcija počinje s prvim SQL izrazom, koji je pokrenuo korisnik ili sadržan u programu, koji mijenja trenutno stanje baze podataka. Svi sljedeći SQL izrazi čine tijelo transakcije. Transakcija završava na jedan od četiri moguća načina (slika 11.1):

naredba COMMIT znači uspješan završetak transakcije; njegovo korištenje vrši trajne promjene u bazi podataka unutar tekuće transakcije;

naredba ROLLBACK prekida transakciju, poništavajući promjene napravljene u bazi podataka kao dio ove transakcije; nova transakcija počinje odmah nakon korištenja ROLLBACK;

uspješan završetak programa u kojem je pokrenuta trenutna transakcija znači uspješan završetak transakcije (kao da je korišten izraz COMMIT);

pogrešan završetak programa prekida transakciju (kao da je korišten izraz ROLLBACK).

U ovom modelu, svaka izjava koja mijenja stanje baze podataka smatra se transakcijom, stoga, nakon uspješnog završetka ove izjave, baza podataka ulazi u novo stabilno stanje.

Prve verzije komercijalnih DBMS-a implementirale su ANSI/ISO transakcijski model. Kasnije je prošireni model transakcije implementiran u SYBASE DBMS, koji uključuje niz dodatnih operacija. SYBASE model koristi sljedeća četiri operatora:

Izjava BEGIN TRANSACTION izvještava o početku transakcije. Za razliku od ANSI/ISO modela, gdje je početak transakcije implicitno određen prvim naredbom za modifikaciju podataka, u SYBASE modelu početak transakcije se specificira eksplicitno pomoću naredbe početka transakcije.

Izjava COMMIT TRANSACTION izvještava o uspješnom završetku transakcije. To je ekvivalentno naredbi COMMIT u standardnom modelu ANSI / ISO. Ovaj operator, kao i operator COMMIT, urezuje sve promjene koje su napravljene u bazi podataka tijekom izvršenja transakcije.

Naredba SAVE TRANSACTION stvara točku spremanja unutar transakcije koja odgovara srednjem stanju baze podataka spremljene u vrijeme izvršenja ovog izraza. Naredba SAVE TRANSACTION može sadržavati naziv točke spremanja. Stoga se tijekom izvršenja transakcije može pohraniti nekoliko točaka spremanja, koje odgovaraju nekoliko međustanja.

Naredba ROLLBACK ima dvije izmjene. Ako se ovaj izraz koristi bez dodatnog parametra, tumači se kao rollback naredba za cijelu transakciju, odnosno u ovom slučaju je ekvivalentna izrazu ROLLBACK u ANSI/ISO modelu. Ako izjava za vraćanje ima parametar i napisana je kao ROLLBACK B, onda se tumači kao djelomični izraz vraćanja transakcije na točku spremanja B.

Principi izvršavanja transakcija u proširenom transakcijskom modelu prikazani su na Sl. 11.2. Na slici su operateri označeni brojevima kako bi nam bilo praktičnije pratiti tijek transakcije u svim mogućim slučajevima.

Transakcija počinje eksplicitnim operatorom početka transakcije, koji u našoj shemi ima broj 1. Slijede operator 2, koji je operator pretraživanja i ne mijenja trenutno stanje baze podataka, te sljedeći operatori 3 i 4 prenijeti bazu podataka u novo stanje. Naredba 5 sprema ovo novo međustanje baze podataka i označava ga kao međustanje u točki A. Zatim slijede izjave 6 i 7, koje prenose bazu podataka u novo stanje. A operator 8 sprema ovo stanje kao međustanje u točki B. Operator 9 izvodi novi unos podataka, a operator 10 izvodi neku provjeru uvjeta 1; ako je uvjet 1 zadovoljen, tada se izvršava naredba 11, koja vraća transakciju u međustanje B. To znači da se posljedice akcija naredbe 9, takoreći, brišu i baza podataka se vraća u srednje stanje B, iako je nakon izvršenja naredbe 9 već bila u novom stanju I nakon što se transakcija vrati, umjesto naredbe 9, koja je prethodno izvršena iz stanja U bazi se izvršava naredba 13 unosa novih podataka, a zatim kontrola se prenosi na naredbu 14 Izjava 14 ponovno provjerava uvjet, ali već neki novi uvjet 2, ako je uvjet zadovoljen, tada se kontrola prenosi na operatora 15, koji vraća transakciju u međustanje A, odnosno sve naredbe koje su promijenile bazu podataka, počevši od 6 i završavajući s 13, smatraju se neizvršenim, odnosno rezultati njihovog izvršenja su nestali i opet smo u stanju A, jer nakon izvršenja naredbe 4 Sljedeća kontrola se prenosi na operatora 17 , koji ažurira sadržaj baze podataka, nakon čega se kontrola Prijenos se prenosi na operatora 18, koji je povezan s uvjetom provjere 3. Provjera završava ili prijenosom kontrole na operatera 20, koji izvršava transakciju, a baza podataka prelazi u novo stabilno stanje i nemoguće ju je promijeniti unutar ili, ako se kontrola prenese na operatora 19, transakcija se vraća na početak i DB se vraća u svoje početno stanje, a sva međustanja su ovdje već provjerena i nemoguće je izvesti operaciju vraćanja u ta međustanja nakon izvršenja izjave 19

Naravno, SYBASE-ov prošireni model transakcije podržava mnogo fleksibilniji mehanizam izvršenja transakcije. Točke spremanja omogućuju postavljanje oznaka unutar transakcije tako da se samo dio posla obavljenog u transakciji može poništiti. mogućnost poništavanja promjena za određene operatore Međutim, to nameće dodatne troškove za resurse sustava - operater obavlja posao, a promjene se tada poništavaju, obično poboljšanja logike obrade mogu biti bolje rješenje

1. Transakcijei blokiranje

2. Koncept transakcije

Prilikom rada s bazama podataka nisu isključene greške i kvarovi. Mogu biti uzrokovane pogreškama korisnika u interakciji s DBMS-om ili nestabilnim radom računala. Stoga DBMS koristi posebne metode za poništavanje radnji koje su uzrokovale takve pogreške. SQL naredba koja utječe na sadržaj i strukturu baze podataka nije nepovratna. Korisnik može odrediti što će se dogoditi nakon završetka njegovih radnji: hoće li promjene napravljene u bazi podataka ostati ili će biti zanemarene. Za to se slijed operacija na bazi podataka kombinira u grupe - transakcije.

Po transakcijije slijed operacija koje se izvode na bazi podataka i prenose je iz jednog konzistentnog stanja u drugo konzistentno stanje.

Transakcija se smatra nekom nedjeljivom radnjom na bazi podataka, smislenom s stajališta korisnika, odnosno logičnom jedinicom rada sustava. Transakcija počinje kad god se dogodi sesija baze podataka.

Primjer transakcije bio bi prijenos novca na bankomatu. Iznos 100 tr. se prenosi s tekućeg računa na račun kartice. Program oduzima iznos s tekućeg računa i zatim ga dodaje na račun kartice. Kada je program pokrenut, nakon izvršene prve izmjene dolazi do nestanka struje i račun kartice se ne povećava. Kako bi se izbjegla ova situacija, oba tima moraju biti spojena u transakciju. U slučaju kada se sve naredbe transakcije ne izvrše, transakcija se vraća nazad.

Definirajmo transakciju za unos podataka o novoprimljenim knjigama u knjižnicu. Ova se operacija može podijeliti u 2 uzastopne: prvo, unos podataka o knjizi je novi red u tablici knjige... Zatim morate unijeti podatke o svim primjercima knjige - ovo je unos skupa novih redaka u tablicu Instance. Ako se ovaj slijed radnji prekine, tada baza podataka neće odgovarati stvarnom objektu, stoga je poželjno da se izvrši kao jedan rad na bazi podataka.

3. Svojstva transakcije. Metode završetka transakcije

Postoje različiti modeli transakcija koji se mogu klasificirati na temelju različitih svojstava, uključujući strukturu transakcije, istodobnost unutar transakcije, trajanje itd.

Trenutno se razlikuju sljedeće vrste transakcija: ravne ili klasične transakcije, lančane transakcije i ugniježđene transakcije.

Flat transakcije karakteriziraju klasična svojstva atomičnosti, konzistentnosti, izoliranosti i trajnosti.

· Svojstvo atomičnosti izražava se u činjenici da se transakcija mora izvesti u cjelini ili nikako.

· Svojstvo konzistentnosti osigurava da kako se transakcija odvija, podaci prelaze iz jednog dosljednog stanja u drugo konzistentno stanje - transakcija ne narušava međusobnu konzistentnost podataka.

· Svojstvo izolacije znači da se transakcije koje se natječu za pristup bazi podataka fizički obrađuju uzastopno, izolirano jedna od druge, ali korisnicima izgleda kao da se izvršavaju paralelno.

· Svojstvo dugovječnosti znači da ako je transakcija uspješno dovršena, tada se promjene podataka koje je izvršila ne mogu izgubiti ni pod kojim okolnostima, čak ni u slučaju naknadnih pogrešaka.

Postoje 2 opcije za završetak transakcije:

· ako su svi nalozi uspješni i tijekom transakcije nije došlo do hardverskih ili softverskih kvarova, transakcija je predana. (Urezivanje je upisivanje na disk promjena u bazi podataka koje su napravljene tijekom izvršenja transakcije). Sve dok transakcija nije predana, te se promjene mogu vratiti i baza podataka se može vratiti u stanje u kojem je bila kada je transakcija započela. Potvrda transakcije znači da su svi rezultati transakcije konstantni. Postat će vidljivi drugim transakcijama tek nakon što je trenutna transakcija predana.

· Ako se tijekom izvršenja transakcije dogodi kvar, baza podataka se mora vratiti u izvorno stanje. Vraćanje transakcije unatrag je radnja koja vraća sve promjene podataka koje su izvršili SQL izrazi u tijelo trenutne transakcije na čekanju.

4. OperateriTransakcijaSQLza rad s transakcijama

ANSI / ISO definirani operatori POČINITI i VRANJE, u standardu je početak transakcije implicitno specificiran od strane prvog operatora izmjene podataka; Operater POČINITI znači uspješan završetak transakcije, rezultati transakcije se bilježe u vanjsku memoriju; kada operater završi transakciju VRANJE rezultati transakcije se poništavaju. Uspješan završetak programa u kojem je transakcija pokrenuta znači uspješan završetak transakcije (kao da operaterPOČINITI ), neuspješan završetak - prekida transakciju (kao da je korišten operatorVRANJE ). U ovom modelu, svaka izjava koja mijenja stanje podataka smatra se transakcijom. Ovaj model je implementiran u prvim verzijama komercijalnog DBMS-a. Nakon toga, prošireni model transakcije implementiran je u SYBASE DBMS.

U proširenom modelu transakcije (na primjer, u DBMS-u SQL SERVER), pruža se niz dodatnih operacija:

· operater POČNITE TRANSAKCIJU obavještava o početku transakcije;

· operater POČINITI TRANSAKCIJU izvješćuje o uspješnom završetku transakcije. Ovaj operator, kao i COMMIT u ANSI/ISO standardnom modelu, popravlja sve promjene koje su napravljene u bazi podataka tijekom izvršenja transakcije;

· operater SPREMI TRANSAKCIJU stvara točku spremanja unutar transakcije koja odgovara srednjem stanju baze podataka spremljene u vrijeme izvršenja ove izjave. U operateru SPREMI TRANSAKCIJU može postojati naziv točke spremanja, stoga se tijekom izvršenja transakcije može pohraniti nekoliko točaka spremanja koje odgovaraju nekoliko međustanja;

· operater VRANJE ima 2 modifikacije. Ako se koristi bez dodatnog parametra, onda se tumači kao operator za vraćanje cijele transakcije unatrag, ako ima parametar VRANJE n, tada se tumači kao operator za djelomično vraćanje transakcije na točku spremanja n.

Točke spremanja korisne su u dugim i složenim transakcijama kako bi pružile mogućnost poništavanja promjena napravljenih određenim izjavama.

U većini slučajeva možete postaviti parametar tzv AUTOCOMMIT , koji će automatski zapamtiti sve izvršene naredbe, a radnje koje su dovele do pogreške uvijek će se automatski poništiti. Obično se ovaj način postavlja naredbom poput:

SET AUTOCOMMIT NA ;

i povratak na normalnu obradu zahtjeva u dijalogu:

SET AUTOCOMMIT ISKLJUČENO ;

Osim toga, moguće je ugraditi AUTOCOMMIT , koji će DBMS automatski izvršiti prilikom registracije.Ako je korisnička sesija prekinuta nenormalno - na primjer, došlo je do kvara sustava, tada će trenutna transakcija automatski vratiti promjene. Ne preporuča se organizirati rad na način da pojedinačne transakcije sadrže mnogo naredbi, posebice one koje nisu međusobno povezane. To može dovesti do činjenice da će se, kada se promjene ponište, izvršiti previše radnji, uključujući one koje su potrebne i nisu uzrokovale pogreške. Najbolja opcija je kada se transakcija sastoji od jedne naredbe ili nekoliko blisko povezanih naredbi.

Okidač se izvršava kao implicitno definirana transakcija, tako da su naredbe kontrole transakcije dopuštene unutar okidača. Konkretno, ako otkrijete kršenje ograničenja integriteta, morate koristiti naredbu TRANSAKCIJA ROLLBACK ... Ako se okidač uspješno dovrši, možete koristiti naredbu POČINITI TRANSAKCIJA .
Izvršavanje naredbe TRANSAKCIJA ROLLBACK ili POČINITI TRANSAKCIJA ne prekida okidač, stoga biste trebali pažljivo pratiti pokušaje vraćanja transakcije više puta kada su ispunjeni različiti uvjeti.

Primjer transakcije:

POČNI TRAN

AŽURIRAJ račun

POSTAVI saldo = saldo- 100

Ako je @@ pogreška = 0

POČETI

ROLLBACK TRAN

POVRATAK

KRAJ

AŽURIRAJ card_account

POSTAVI ravnotežu = saldo + 100

GDJE [e-mail zaštićen] _račun

Ako je @@ pogreška = 0

POČETI

ROLLBACK TRAN

POVRATAK

KRAJ

COMMIT TRAN

Naredba POČETI TRAN obavještava poslužitelj o početku transakcije. To znači da prije nego što poslužitelj primi naredbuPOČINITI TRAN sve promjene su privremene. Stoga, ako se poslužitelj sruši nakon prvog ažuriranja, transakcija će biti vraćena. Niti jedan proces ne može pristupiti podacima dok se transakcija ne dovrši.

5. Dnevnik transakcija.

Implementacija principa očuvanja međustanja, potvrđivanja ili vraćanja transakcije unatrag osigurava se posebnim mehanizmom za podršku kojemu je stvorena struktura sustava, koji se naziva dnevnik transakcija. Dnevnik transakcija sadrži slijed zapisa promjena baze podataka. Dizajniran je za pouzdano pohranjivanje podataka u bazi podataka. To podrazumijeva mogućnost vraćanja konzistentnog stanja baze podataka nakon bilo kakvog kvara hardvera i softvera. Opća načela zapisivanja i oporavka:

· rezultati izvršenih transakcija moraju biti spremljeni u vraćenom stanju baze podataka;

· rezultati nepovezanih transakcija ne bi trebali biti prisutni u vraćenom stanju baze podataka.

To znači da se vraća posljednje konzistentno stanje baze podataka.

Moguće su sljedeće situacije u kojima je potrebno vratiti stanje baze podataka:

· Oporavak od iznenadnog gubitka sadržaja RAM-a (meki propust). Ova se situacija može dogoditi u sljedećim slučajevima: tijekom isključivanja u nuždi ili kada dođe do fatalnog kvara procesora. Situaciju karakterizira gubitak onog dijela baze podataka koji se u trenutku kvara nalazio u RAM međuspremnicima.

· Oporavak od kvara glavnog vanjskog medija baze podataka (teški kvar).

Sustav bi se trebao moći oporaviti i od manjih poremećaja (na primjer, neuspjelih transakcija) i nakon većih poremećaja (na primjer, nestanci struje, teški kvarovi).

U slučaju mekog kvara, potrebno je obnoviti sadržaj baze podataka iz sadržaja dnevnika transakcija pohranjenih na diskovima. U slučaju teškog kvara potrebno je obnoviti sadržaj baze podataka iz arhivskih kopija i dnevnika transakcija koji su pohranjeni na neoštećenim vanjskim medijima.

Postoje dvije glavne opcije za održavanje informacija dnevnika. U 1. opciji, odvojeni dnevnik promjena lokalne baze podataka održava se za svaku transakciju ovom transakcijom. Ti se dnevnici nazivaju lokalni dnevnici. Koriste se za lokalno vraćanje transakcija unatrag. Osim toga, održava se opći dnevnik promjena baze podataka koji se koristi za oporavak baze podataka nakon mekih i teških kvarova.

Ovaj pristup vam omogućuje brzo izvođenje povrata pojedinačnih transakcija, ali rezultira duplim informacijama u lokalnim i zajedničkim zapisnicima. Stoga se češće koristi druga opcija - održavanje samo općeg dnevnika promjena baze podataka, koji se također koristi pri izvođenju pojedinačnih vraćanja.

Opća struktura dnevnika može se prikazati u obliku sekvencijalne datoteke, u kojoj se bilježi svaka promjena baze podataka koja se dogodi tijekom izvršenja transakcije. Sve transakcije imaju interne brojeve, tako da se sve promjene koje su izvršile sve transakcije bilježe u dnevnik transakcija.

Svaki unos u dnevniku označen je brojem transakcije kojoj pripada i vrijednostima atributa koje mijenja, osim toga, za svaku transakciju u dnevniku se bilježi naredba za početak i završetak transakcije.

Radi veće pouzdanosti, zapisnik transakcija se često duplicira sistemskim alatima DBMS-a, zbog čega je količina vanjske memorije višestruko veća od stvarne količine podataka u bazi podataka.

Postoje 2 opcije za bilježenje transakcija: protokol za odgođeno ažuriranje i protokol za trenutno ažuriranje.

Zapisivanje lijenih ažuriranja pretpostavlja sljedeći mehanizam izvršenja transakcije:

1. Kada započne transakcija T1, zapis se unosi u protokol

T1 Početi Transakcija

2. Tijekom izvršenja transakcije u protokol se bilježi nova vrijednost za svaki promijenjeni zapis.

T1. iskaznica _ SNIMITI , atribut, nova vrijednost

(iskaznica _ SNIMITI - jedinstveni broj zapisa)

3. Ako su sve radnje koje čine transakciju uspješno obavljene, transakcija se djelomično snima i u protokol se unosi sljedeće:

T 1 COMMT

4. Nakon što je transakcija predana, zapisi protokola koji se odnose na T1 koriste se za izmjene u bazi podataka.

5. Ako dođe do kvara, DBMS gleda u zapisnik i otkriva koje transakcije treba ponoviti. Transakciju T1 potrebno je ponoviti ako protokol sadrži oba zapisa T1 Početi Transakcija i T 1 COMMT . Baza podataka može biti u nedosljednom stanju, međutim, sve nove vrijednosti promijenjenih stavki podataka sadržane su u dnevniku, a to zahtijeva ponovno izvođenje transakcije. Za to se koristi postupak sustava.PONOVNO(), koji zamjenjuje sve vrijednosti stavki novima prelaskom dnevnika prema naprijed.

6. Ako zapisnik ne sadrži naredbu za predaju transakcije S IZPUSTI, tada nije potrebna nikakva radnja i transakcija se ponovno pokreće.

Alternativni mehanizam s trenutnim izvršavanjem omogućuje izmjenu izravno u bazi podataka, a ne samo nove, već i sve stare vrijednosti promijenjenih atributa unose se u protokol, pa svaki zapis izgleda ovako:

T1. iskaznica _ SNIMITI , atribut, nova vrijednost stara vrijednost

U ovom slučaju, upisivanje u dnevnik prethodi izravnom izvršenju operacije u bazi podataka. Kada je transakcija predana, odnosno nailazi se na naredbu T1 POČIVANJE, i ona se izvrši, tada su sve promjene već napravljene u bazi podataka i nisu potrebne daljnje radnje u vezi s ovom transakcijom.

Kada se transakcija vrati, izvršava se sistemska procedura PONIŠTITI (), koji vraća sve stare vrijednosti u otkazanoj transakciji, uzastopno prolazeći kroz protokol, počevši od naredbe POČNITE TRANSAKCIJU.

Sljedeći mehanizam koristi se za nadilaženje greške:

· Ako transakcija sadrži naredbu za pokretanje transakcije, ali ne sadrži naredbu commit s potvrdom njenog izvršenja, tada se slijed radnji izvodi kao kada se transakcija vrati, odnosno vraćaju se stare vrijednosti.

Zapravo, oporavak se odvija prema složenijim algoritmima, budući da promjene, kako u dnevniku tako iu bazi podataka, ne bilježe se odmah, već se spremaju. Evidentiranje promjena usko je povezano ne samo s upravljanjem transakcijama, već i sa međuspremnikom stranica baze podataka u RAM-u. Kada bi se zapis o promjeni baze podataka, koji bi trebao ići u dnevnik prilikom izvođenja bilo koje operacije izmjene baze podataka, zapravo odmah zapisan u vanjsku memoriju, to bi dovelo do značajnog usporavanja sustava. Stoga se zapisi dnevnika također spremaju u međuspremnik: tijekom normalnog rada, sljedeća stranica se gura u vanjsku memoriju dnevnika samo kada je puna zapisa.

6. Brave.

U sustavima s više korisnika, nekoliko korisnika ili aplikacija može se izvoditi istovremeno s istom bazom podataka. Jedna od glavnih zadaća DBMS-a je osiguranje izolacije korisnika, odnosno stvaranje takvog načina rada da svaki od korisnika misli da sam radi s bazom podataka. Takav DBMS zadatak obično se naziva transakcijski paralelizam.

Postoje tri glavna problema s paralelnom obradom baze podataka:

§ Nedostaju promjene ... Ova situacija se događa kada 2 transakcije istovremeno modificiraju isti zapis u bazi podataka. Na primjer, 2 operatera rade na primanju narudžbi, prvi operater je preuzeo narudžbu za 30 monitora. Kada je otišao u skladište, bilo je 40 monitora, a on je, nakon što je dobio potvrdu od naručitelja, raspisao prodaju 30 monitora od 40. Paralelno s njim radi i drugi operater koji prihvaća narudžbu za 20 monitora. isti prati, a zauzvrat, kontaktirajući skladište, dobiva istu vrijednost od 40, i naručuje za svog kupca. Završivši rad s podacima, izvršava naredbu Ažuriranje,što dodaje 20 kao ostatak monitora u skladištu. Nakon toga, prvi operater završava rad sa svojim klijentom i također izvršava naredbu Osvježiti, koji bilježi ostatak od 10 kao broj monitora na zalihama. Prodali su ukupno 50 monitora od 40, s 10 monitora na skladištu.

§ Problemi s srednjim podacima ... Povezano s mogućnošću pristupa međupodacima. Pretpostavimo da je prvi operater, pregovarajući sa svojim kupcem, unio naručenih 30 monitora, ali prije finalizacije narudžbe kupac je želio saznati još neke karakteristike proizvoda. Aplikacija s kojom radi 1. operater već je promijenila preostale monitore u skladištu, a tu se sada pohranjuju podaci o 10 preostalih monitora. U ovom trenutku, drugi operater pokušava preuzeti narudžbu od svog kupca za narudžbu za 20 monitora, ali njegova aplikacija pokazuje da je u skladištu ostalo samo 10 monitora i operater je prisiljen odbiti svog kupca. U ovom trenutku, kupac prvog operatera odlučuje ne kupiti monitore, operater poništava transakciju i opet ima 40 monitora u skladištu. Ova situacija postala je moguća jer je aplikacija drugog operatera imala pristup međupodacima koje je formirala prva aplikacija.

§ Problemi s nedosljednim podacima. Povezan s mogućnošću promjene podataka x, već pročitao x drugom aplikacijom. Oba operatera počinju raditi gotovo u isto vrijeme, dobivaju početno stanje skladišta od 40 monitora, a zatim prvi operater prodaje 30 monitora svom kupcu. On napušta svoju aplikaciju, a ona izvršava naredbu COMMIT za predaju transakcije. Stanje baze podataka je dosljedno. U ovom trenutku, korisnik drugog operatera odlučuje izvršiti narudžbu i drugi operater, ponovnim pristupom podacima, vidi da se broj monitora promijenio. Drugi operater smatra da je narušen integritet transakcije, jer tijekom jednog posla dobio je 2 različite skladišne ​​države. Ova situacija je nastala jer je aplikacija 1. operatora uspjela promijeniti podatkovnu torbu koju je aplikacija 2. operatora već pročitala.

Rezimirajući navedene probleme, mogu se razlikovati sljedeće vrste sukoba između dvije paralelne transakcije:

· W-W - transakcija 2 pokušava modificirati objekt izmijenjen transakcijom 1 koji nije završio;

· R-W - transakcija 2 pokušava modificirati objekt koji je pročitala transakcija 1 koji nije završio;

· W-R transakcija 2 pokušava pročitati objekt koji je modificirala nezavršena transakcija 1;

7. Serijaliziranje transakcija

Kako bi se izbjegli takvi sukobi, potrebno je razviti neku proceduru za dosljedno izvršenje istodobnih transakcija. Ovaj postupak mora biti u skladu sa sljedećim pravilima:

1. Tijekom izvršenja transakcije korisnik vidi samo konzistentne podatke. Korisnik ne bi trebao vidjeti nedosljedne međupodatke.

2. Kada se u DB 2 transakcije izvode paralelno, rezultati izvršavanja transakcija trebaju biti isti kao da se izvršavaju transakcija 1, a zatim transakcija 2, ili obrnuto.

Postupak implementacije ovih principa naziva se serijalizacija transakcija. Jamči da svaki korisnik, pristupajući bazi, radi s njom kao da nema drugih korisnika koji pristupaju istim podacima u isto vrijeme. Rezultat zajedničkog izvršenja transakcije jednak je rezultatu nekog uzastopnog izvršenja istih transakcija.

Najjednostavniji izlaz bilo bi sekvencijalno izvršavanje transakcija, ali takav izlaz nije vremenski optimalan, postoje fleksibilnije metode za kontrolu paralelnog pristupa bazi podataka. Najčešći mehanizam za rješavanje ovih problema je zaključavanje objekta (na primjer, tablice) za cijelo vrijeme trajanja transakcije. Ako transakcija pristupi zaključanom objektu, ostaje na čekanju dok se objekt ne otključa, nakon čega ga može početi obraditi. Međutim, blokiranje stvara nove probleme – kašnjenje transakcija zbog blokiranja.

Dakle, zaključavanja, koja se također nazivaju sinkroniziranim hvatanjem objekata, mogu se primijeniti na različite vrste objekata. Najveći objekt blokiranja može biti cijela baza podataka, ali ova vrsta blokiranja učinit će bazu podataka nedostupnom svim drugim aplikacijama koje rade s ovom bazom podataka. Sljedeća vrsta objekta zaključavanja su tablice. Transakcija koja djeluje na tablici zaključava je za cijelo vrijeme trajanja transakcije. Ova vrsta zaključavanja je poželjnija od prethodne jer omogućuje istodobne transakcije koje rade na drugim tablicama.

Brojni DBMS implementiraju zaključavanje na razini stranice. U ovom slučaju, DBMS samo zaključava pojedinačne stranice na disku kada im transakcija pristupa. Ova vrsta zaključavanja je još mekša i omogućuje različitim transakcijama da rade na istoj tablici ako pristupaju različitim stranicama s podacima.

U nekim DBMS-ovima moguće je zaključavanje na razini reda, ali takav mehanizam zaključavanja zahtijeva dodatne troškove za njegovu podršku. SQL Server nastoji postaviti zaključavanja na razini zapisa kako bi se povećala istodobnost. Kako se broj zaključavanja reda povećava, poslužitelj može prijeći na zaključavanje stranice ako broj zapisa premašuje prag.

8. Nadjačajte zaključavanja na razini zahtjeva. Vrste zaključavanja

Ako iza naziva tablice u rečenici IZ slijedi jedna od sljedećih ključnih riječi, zahtjev ometa upravitelja zaključavanja i primjenjuje se navedena vrsta zaključavanja:

· NOLOCK - omogućuje prljavo čitanje;

· PAGLOCK - zaključavanje na razini stranice;

· ROWLOCK - blokiranje na razini zapisa;

· TABLOCK - zajedničko zaključavanje tablice;

· TABLOCKX - ekskluzivna brava za stol

Trenutno je problem blokiranja predmet velikog broja studija.

Postoje dvije osnovne vrste brava (sinkronizacijske ručke):

Zajednička (ne-tvrda) zaključavanja - Ovaj način rada znači zajedničko hvatanje objekta i koristi se za izvođenje operacije čitanja na objektu. Ovako zaključani objekti ne mijenjaju se tijekom izvršenja transakcije i dostupni su drugim transakcijama, ali samo u načinu čitanja;

Ekskluzivne (tvrde) brave - nikome osim vlasniku ove brave uopće ne dopustite pristup podacima. Ova se zaključavanja koriste za naredbe koje mijenjaju sadržaj ili strukturu tablice i vrijede do kraja transakcije.

Hvatanje objekata s nekoliko transakcija čitanja je kompatibilno, odnosno, nekoliko transakcija smije čitati isti objekt. Hvatanje objekta jednom transakcijom čitanja nije kompatibilno s drugom transakcijom istog objekta pisanjem. Hvatanje istog objekta različitim transakcijama pisanja nije kompatibilno.

Međutim, korištenje različitih vrsta brava dovodi do problema zastoja. Problem zastoja nastao je prilikom razmatranja izvođenja paralelnih procesa u operativnim okruženjima, a odnosio se i na upravljanje zajedničkim (dijeljenim) objektima. Primjer zastoja: Pretpostavimo da transakcija A čvrsto zaključava tablicu 1, a zatim tvrdo zaključava tablicu 2. Transakcija B, s druge strane, tvrdo zaključava tablicu 2, a zatim tvrdo zaključava tablicu 1.

Ako su obje ove transakcije počele raditi u isto vrijeme, tada će nakon izvođenja operacija izmjene na prvoj tablici obje završiti u beskonačnom čekanju: transakcija A će čekati da se transakcija B završi i otključa tablicu 2, a transakcija B će uzalud čekati da se transakcija A završi i da se tablica 1 otključa.

Situacije mogu biti puno složenije. Broj međusobno blokiranih transakcija može biti puno veći. Svaka transakcija ne može sama otkriti ovu situaciju. To mora riješiti DBMS. Većina komercijalnih DBMS-ova ima mehanizam za otkrivanje takvih zastoja.

Otkrivanje zastoja temelji se na izgradnji (ili održavanju) grafa transakcije na čekanju. Graf čekanja može biti usmjereni graf na čijim se vrhovima nalaze nazivi transakcija. Ako transakcija T1 čeka kraj transakcije T2, tada strelica ide od vrha T1 do vrha T2. Dodatno, strelice se mogu označiti nazivima blokiranih objekata i vrstom blokiranja.

Mehanizam zaključavanja koristi koncept razine izolacije zaključavanja kako bi odredio koliko će tablica biti zaključano. Tradicionalno se koriste tri razine izolacije:

· Razina izolacije, nazvana ponovno čitanje, implementira strategiju tako da se unutar dane transakcije ne mogu mijenjati svi zapisi dohvaćeni upitima. Ovi se zapisi ne mogu mijenjati dok se transakcija ne dovrši.

· Razina izolacije, nazvana pokazivač stabilnosti, sprječava promjenu svakog zapisa za vrijeme čitanja ili čitanje dok se mijenja.

· Treća razina stabilnosti naziva se samo za čitanje. Samo za čitanje zaključava cijelu tablicu i stoga se ne može koristiti s naredbama ažuriranja. Dakle, samo za čitanje osigurava da je izlaz upita interno konzistentan s podacima tablice.

Dakle, alat za kontrolu istodobnosti u DBMS-u određuje do koje mjere će istovremeno izdane naredbe ometati jedna drugu. U modernom DBMS-u, to je prilagodljiv alat koji automatski pronalazi optimalno rješenje, vodeći računa o pružanju maksimalne performanse baze podataka i dostupnosti podataka za operativne timove.

9. KONTROLNA PITANJA

1. Definirajte transakciju. Navedite primjere transakcija.

2. Navedite i okarakterizirajte svojstva transakcija.

3. Koje su moguće opcije za dovršenje transakcija.

4. Koji su operatori jezika SQL služe za rad s transakcijama u proširenom transakcijskom modelu?

5. Mogu li koristiti naredbe za kontrolu transakcija u okidačima?

6. Čemu služi dnevnik transakcija?

7. U kojim se slučajevima obnavljanje baze podataka izvodi iz dnevnika transakcija?

8. Koje opcije postoje za evidentiranje transakcija?

9. Koje su razlike između opcija bilježenja transakcija: protokola odgođenog ažuriranja i protokola trenutnog ažuriranja.

10. Koji problemi nastaju kada korisnici rade paralelno s bazom podataka?

11. Koji se objekti baze podataka mogu zaključati kako bi se implementirao princip izolacije korisnika?

12. Je li moguće postaviti vrstu blokiranja u upitima?

13. Koje vrste hvatanja objekata višestrukim transakcijama postoje? Koje su kompatibilne?

14. Što je problem slijepih ulica?

Postoje različiti modeli transakcija koji se mogu klasificirati na temelju različitih svojstava, uključujući strukturu transakcije, istodobnost unutar transakcije, trajanje itd.

Trenutno se razlikuju sljedeće vrste transakcija: ravne ili klasične transakcije, lančane transakcije i ugniježđene transakcije.

Flat, ili tradicionalne, transakcije karakteriziraju četiri klasična svojstva: atomičnost, konzistentnost, izoliranost, trajnost (snaga) - ACID (Atomicity, Consistency, Isolation, Durability). Tradicionalne transakcije se ponekad nazivaju ACID transakcijama. Gore navedena svojstva znače sljedeće:

· Atomičnost svojstva(Atomičnost) se izražava u činjenici da transakcija treba biti dovršena u cjelini ili nikako.

· Svojstvo konzistencije(Dosljednost) osigurava da kako transakcija napreduje, podaci prelaze iz jednog dosljednog stanja u drugo – transakcija ne narušava međusobnu konzistentnost podataka.

· Svojstvo izolacije(Izolacija) znači da se konkurentske transakcije za pristup bazi podataka fizički obrađuju uzastopno, izolirano jedna od druge, ali se korisnicima čini kao da se izvršavaju paralelno.

· Svojstvo trajnosti(Trajnost) tumači se na sljedeći način: ako je transakcija uspješno dovršena, tada se promjene podataka koje je izvršila ne mogu izgubiti ni pod kojim okolnostima (čak ni u slučaju naknadnih pogrešaka).

Postoje dvije opcije za dovršetak transakcije. Ako su svi nalozi uspješni i tijekom transakcije nije došlo do kvarova hardvera ili softvera, transakcija je predana.

Potvrda transakcije je čin pisanja na disk promjena u bazi podataka koje su napravljene tijekom izvršenja transakcije.

Dok transakcija nije predana, dopušteno je vratiti te promjene, vratiti bazu podataka u stanje u kojem je bila u vrijeme kada je transakcija započela. Potvrda transakcije znači da su svi rezultati transakcije konstantni. Postat će vidljivi drugim transakcijama tek nakon što je trenutna transakcija predana. Do ovog trenutka svi podaci na koje utječe transakcija bit će "vidljivi" korisniku u stanju na početku trenutne transakcije.

Ako se tijekom izvršenja transakcije dogodi nešto što onemogućuje njezino normalno dovršenje, baza podataka se mora vratiti u izvorno stanje. Vraćanje transakcije unatrag je radnja koja vraća sve promjene podataka koje su izvršili SQL izrazi u tijelo trenutne transakcije na čekanju.

Svaka naredba u transakciji obavlja svoj dio posla, ali svi njezini izrazi moraju se bezuvjetno dovršiti da bi se cijeli posao uspješno završio. Grupiranje izraza u transakciji govori DBMS-u da se cijela grupa treba izvršiti kao cjelina, a ovo izvršenje treba biti podržano automatski.

ANSI / ISO SQL standard definira transakcijski model i funkcije naredbi COMMIT i ROLLBACK. Standard navodi da transakcija počinje s prvim SQL izrazom, koji je pokrenuo korisnik ili sadržan u programu, koji mijenja trenutno stanje baze podataka. Svi sljedeći SQL izrazi čine tijelo transakcije. Transakcija završava na jedan od četiri moguća načina (slika 11.1):

1. naredba COMMIT znači uspješan završetak transakcije; njegovo korištenje vrši trajne promjene u bazi podataka unutar tekuće transakcije;

2. naredba ROLLBACK prekida transakciju, poništavajući promjene napravljene u bazi podataka kao dio ove transakcije; nova transakcija počinje odmah nakon korištenja ROLLBACK;

3. uspješan završetak programa u kojem je pokrenuta trenutna transakcija znači uspješan završetak transakcije (kao da je korišten izraz COMMIT);

4. pogrešan završetak programa prekida transakciju (kao da je korišten izraz ROLLBACK).

U ovom modelu, svaka izjava koja mijenja stanje baze podataka smatra se transakcijom, stoga, nakon uspješnog završetka ove izjave, baza podataka ulazi u novo stabilno stanje.

Prve verzije komercijalnih DBMS-a implementirale su ANSI/ISO transakcijski model. Kasnije je prošireni model transakcije implementiran u SYBASE DBMS, koji uključuje niz dodatnih operacija. SYBASE model koristi sljedeća četiri operatora:

· Naredba BEGIN TRANSACTION označava početak transakcije. Za razliku od ANSI/ISO modela, gdje je početak transakcije implicitno određen prvim naredbom za modifikaciju podataka, u SYBASE modelu početak transakcije se specificira eksplicitno pomoću naredbe početka transakcije.

· Izjava COMMIT TRANSACTION izvještava o uspješnom završetku transakcije. To je ekvivalentno naredbi COMMIT u standardnom modelu ANSI / ISO. Ovaj operator, kao i operator COMMIT, urezuje sve promjene koje su napravljene u bazi podataka tijekom izvršenja transakcije.

· Naredba SAVE TRANSACTION stvara točku spremanja unutar transakcije koja odgovara srednjem stanju baze podataka spremljene u vrijeme izvršenja ovog izraza. Naredba SAVE TRANSACTION može sadržavati naziv točke spremanja. Stoga se tijekom izvršenja transakcije može pohraniti nekoliko točaka spremanja, koje odgovaraju nekoliko međustanja.

· Operator ROLLBACK ima dvije modifikacije. Ako se ovaj izraz koristi bez dodatnog parametra, tumači se kao rollback naredba za cijelu transakciju, odnosno u ovom slučaju je ekvivalentna izrazu ROLLBACK u ANSI/ISO modelu. Ako izjava za vraćanje ima parametar i napisana je kao ROLLBACK B, onda se tumači kao djelomični izraz vraćanja transakcije na točku spremanja B.

Riža. 11.1.ANSI / ISO model transakcije

Principi izvršavanja transakcija u proširenom transakcijskom modelu prikazani su na Sl. 11.2. Na slici su operateri označeni brojevima kako bi nam bilo praktičnije pratiti tijek transakcije u svim mogućim slučajevima.

Riža. 11.2.Primjeri izvršavanja transakcija u proširenom modelu

Transakcija počinje eksplicitnim operatorom početka transakcije, koji u našoj shemi ima broj 1. Slijede operator 2, koji je operator pretraživanja i ne mijenja trenutno stanje baze podataka, te sljedeći operatori 3 i 4 prenijeti bazu podataka u novo stanje. Naredba 5 sprema ovo novo međustanje baze podataka i označava ga kao međustanje u točki A. Zatim slijede izjave 6 i 7, koje prenose bazu podataka u novo stanje. A operator 8 sprema ovo stanje kao međustanje u točki B. Operator 9 izvodi novi unos podataka, a operator 10 izvodi neku provjeru uvjeta 1; ako je uvjet 1 ispunjen, tada se izvršava naredba 11, koja vraća transakciju u međustanje B. To znači da se posljedice radnji naredbe 9, takoreći, brišu i baza podataka se ponovno vraća u međustanje B, iako je nakon izvršenja izjave 9 već bila u novom stanju. I nakon vraćanja transakcije unatrag, umjesto naredbe 9, koja je izvršena ranije iz stanja U bazi podataka, izvršava se naredba 13 unosa novih podataka, a zatim se kontrola prenosi na naredbu 14. Izjava 14 ponovno provjerava stanje, ali već neki novo stanje 2; ako je uvjet ispunjen, tada se kontrola prenosi na operatora 15, koji vraća transakciju u međustanje A, odnosno svi operatori koji su promijenili bazu podataka, počevši od 6 do 13, smatraju se neispunjenim, tj. , rezultati njihovog izvršenja su nestali i ponovno smo u stanju I, kao nakon izvršenja operatora 4. Zatim se kontrola prenosi na operatora 17, koji ažurira sadržaj baze podataka, nakon čega se kontrola prenosi na operatora 18, koji je povezana s uvjetom provjere 3. Provjera završava ili prijenosom kontrole na operatera 20, koji izvršava transakciju, a baza podataka prelazi u novo stabilno stanje i nemoguće ju je promijeniti unutar trenutne transakcije. Ili, ako se kontrola prenese na operatera 19, tada se transakcija vraća na početak i baza podataka se vraća u svoje početno stanje, a sva međustanja su ovdje već provjerena i nemoguće je izvršiti operaciju vraćanja na ta međustanja stanja nakon izvršenja operatora 19.

Naravno, SYBASE-ov prošireni model transakcije podržava mnogo fleksibilniji mehanizam izvršenja transakcije. Točke spremanja omogućuju postavljanje oznaka unutar transakcije tako da se samo dio posla obavljenog u transakciji može poništiti. Preporučljivo je koristiti točke spremanja u dugim i složenim transakcijama kako bi se osigurala funkcionalnost poništavanja za određene izjave. Međutim, to dovodi do dodatnih troškova resursa sustava - operater obavlja posao, a promjene se tada poništavaju; obično, poboljšanja logike obrade mogu biti bolje rješenje.

Dnevnik transakcija

Implementacija u DBMS principa očuvanja međustanja, potvrđivanja ili vraćanja transakcije unatrag osigurava se posebnim mehanizmom za čiju se podršku kreira određena struktura sustava tzv. Dnevnik transakcija.

Međutim, svrha dnevnika transakcija je mnogo šira. Dizajniran je za pouzdano pohranjivanje podataka u bazi podataka.

A ovaj zahtjev posebno podrazumijeva mogućnost vraćanja konzistentnog stanja baze podataka nakon bilo kakvih kvarova hardvera i softvera. Očito, za izvođenje restauracije potrebne su neke dodatne informacije. U velikoj većini modernih relacijskih DBMS-ova, takve suvišne dodatne informacije održavaju se u obliku dnevnika promjena baze podataka, koji se najčešće naziva Dnevnik transakcija.

Dakle, opći cilj bilježenja promjena baze podataka je osigurati da se baza podataka može vratiti u dosljedno stanje nakon bilo kakvog kvara. Budući da je temelj za održavanje integriteta baze podataka mehanizam transakcije, evidentiranje i oporavak usko su povezani s konceptom transakcije. Opća načela oporavka su sljedeća:

· Rezultati izvršenih transakcija moraju biti spremljeni u vraćenom stanju baze podataka;

· Rezultati nepovezanih transakcija ne smiju biti prisutni u vraćenom stanju baze podataka.

To, zapravo, znači da se vraća najnovije konzistentno stanje baze podataka.

Moguće su sljedeće situacije u kojima morate vratiti stanje baze podataka.

· Pojedinačno vraćanje transakcije unatrag. Ovo vraćanje treba primijeniti u sljedećim slučajevima:

o standardna situacija za vraćanje transakcije unatrag je njeno eksplicitno dovršavanje s naredbom ROLLBACK;

o nenormalan završetak aplikacijskog programa, što je logički ekvivalentno izvršenju naredbe ROLLBACK, ali fizički ima drugačiji mehanizam izvršenja;

o prisilno vraćanje transakcije unatrag u slučaju zastoja u paralelnom izvršavanju transakcija. U takvom slučaju, kako bi se prekinula blokada, ova transakcija se može odabrati kao "žrtva" i njezino izvršenje od strane jezgre DBMS-a prisilno prekinuto.

· Oporavak nakon iznenadnog gubitka sadržaja RAM-a (meki kvar). Ova situacija može nastati u sljedećim slučajevima:

o u slučaju isključenja napajanja u nuždi;

o u slučaju nenadoknadivog kvara procesora (primjerice, rad RAM kontrole) itd. Situaciju karakterizira gubitak onog dijela baze podataka koji je u trenutku kvara bio sadržan u RAM međuspremnicima.

· Oporavak od kvara glavnog vanjskog medija baze podataka (teški kvar). Ova situacija, s obzirom na dovoljno visoku pouzdanost suvremenih vanjskih memorijskih uređaja, može se dogoditi relativno rijetko, no ipak bi DBMS i u tom slučaju trebao moći vratiti bazu podataka. Osnova oporavka je arhivska kopija i dnevnik promjena baze podataka.

Za vraćanje dosljednog stanja baze podataka kada pojedinačno vraćate transakciju unatrag, morate eliminirati učinke naredbi modifikacije baze podataka koje su izvršene u toj transakciji. Za vraćanje konzistentnog stanja baze podataka u slučaju mekog kvara, potrebno je vratiti sadržaj baze podataka iz sadržaja dnevnika transakcija pohranjenih na diskovima. Za vraćanje konzistentnog stanja baze podataka u slučaju teškog kvara, potrebno je vratiti sadržaj baze podataka iz arhivskih kopija i dnevnika transakcija koji su pohranjeni na neoštećenim vanjskim medijima.

U sva tri slučaja temelj za oporavak je redundantna pohrana podataka. Ovi suvišni podaci pohranjeni su u dnevnik koji sadrži slijed zapisa promjena baze podataka.

Postoje dvije glavne opcije za održavanje informacija dnevnika. U prvoj opciji, odvojeni dnevnik promjena lokalne baze podataka održava se za svaku transakciju te transakcije. Ti se dnevnici nazivaju lokalni dnevnici. Koriste se za pojedinačne povrate transakcija i mogu se održavati u RAM-u (točnije, u virtualnoj) memoriji. Osim toga, održava se opći dnevnik promjena baze podataka koji se koristi za oporavak stanja baze podataka nakon mekih i teških kvarova.

Ovaj pristup vam omogućuje brzo izvođenje povrata pojedinačnih transakcija, ali rezultira duplim informacijama u lokalnim i zajedničkim zapisnicima. Stoga se češće koristi druga opcija - održavanje samo općeg dnevnika promjena baze podataka, koji se također koristi pri izvođenju pojedinačnih vraćanja. Dalje, razmatramo ovu konkretnu opciju.

Opća struktura dnevnika može se uvjetno predstaviti u obliku sekvencijalne datoteke, koja bilježi svaku promjenu baze podataka koja se dogodi tijekom izvršenja transakcije. Sve transakcije imaju svoje interne brojeve, tako da se sve promjene koje su izvršile sve transakcije bilježe u jedinstvenom dnevniku transakcija.

Svaki unos u dnevniku transakcija označen je brojem transakcije kojoj pripada i vrijednostima atributa koje mijenja. Osim toga, za svaku transakciju, naredba za početak i završetak transakcije bilježi se u dnevnik (vidi sliku 11.3).

Za veću pouzdanost, dnevnik transakcija se često duplicira sistemskim alatima komercijalnih DBMS-a, zbog čega je količina vanjske memorije višestruko veća od stvarne količine podataka pohranjenih u pohrani.

Postoje dvije alternative za bilježenje transakcija: protokol za odgođeno ažuriranje i protokol za trenutno ažuriranje.

Zapisivanje promjena na čekanju pretpostavlja sljedeći mehanizam za izvršavanje transakcija:

1. Kada započne transakcija T1, zapis se unosi u protokol

<Т1 Begin transaction>

2. Tijekom izvršenja transakcije u protokol se upisuje nova vrijednost za svaki promijenjeni zapis: ... Ovdje je ID_RECORD jedinstveni broj zapisa.

3. Ako su sve radnje koje čine transakciju T1 uspješno obavljene, transakcija se djelomično bilježi i unosi u protokol.<Т1 СОММIТ>.

4. Nakon što je transakcija predana, zapisi protokola koji se odnose na T1 koriste se za izradu odgovarajućih promjena u bazi podataka.

5. Ako dođe do kvara, DBMS gleda u zapisnik i saznaje koje transakcije treba ponoviti. Transakciju T1 potrebno je ponoviti ako protokol sadrži oba zapisa<Т1 BEGIN TRANSACTION и <Т1 СОММIТ>... Baza podataka može biti u nedosljednom stanju, međutim, sve nove vrijednosti promijenjenih stavki podataka sadržane su u dnevniku, a to zahtijeva ponovno izvođenje transakcije. Za to se koristi neka sistemska procedura REDOQ, koja zamjenjuje sve vrijednosti stavki podataka novima, gledajući protokol u izravnom redoslijedu.

6. Ako protokol ne sadrži naredbu COMMIT predaje transakcije, tada nije potrebna nikakva radnja i transakcija se ponovno pokreće.

Riža. 11.3.Dnevnik transakcija

Alternativni mehanizam s trenutnim izvođenjem omogućava da se promjene u bazi podataka odmah izvrše, a u protokol se unose ne samo nove, već i sve stare vrijednosti promijenjenih atributa, pa svaki zapis izgleda kao<Т1, ID_RECORD, атрибут новое значение старое значение...>... U ovom slučaju, upisivanje u dnevnik prethodi izravnom izvršenju operacije u bazi podataka. Kada je transakcija predana, odnosno nailazi se na naredbu<Т1 СОММIТ>i kada se izvrši, tada su sve promjene već napravljene u bazi podataka i nisu potrebne daljnje radnje u vezi s ovom transakcijom.

Kada se transakcija vrati, izvršava se procedura sustava UNDO (), koja vraća sve stare vrijednosti u otkazanoj transakciji, nastavljajući uzastopno kroz protokol počevši od naredbe BEGIN TRANSACTION.

Sljedeći mehanizam koristi se za nadilaženje greške:

· Ako transakcija sadrži naredbu za pokretanje transakcije, ali ne sadrži naredbu commit s potvrdom njenog izvršenja, tada se slijed radnji izvodi kao kada se transakcija vrati, odnosno vraćaju se stare vrijednosti .

· Ako se neuspjeh dogodio nakon što je izvršena zadnja naredba za promjenu DB-a, ali prije nego što je izvršena naredba commit, tada se izvršava naredba commit i nema promjena u bazi podataka. Rad se odvija samo na razini protokola.

· Međutim, treba napomenuti da problemi obnavljanja izgledaju puno složenije od prethodno opisanih algoritama, s obzirom na to da se promjene u zapisniku i bazi podataka ne bilježe odmah, već se pohranjuju u međuspremnik. Tome je posvećen sljedeći odjeljak.

Zapisivanje i puferiranje

Zapisivanje promjena usko je povezano ne samo s upravljanjem transakcijama, već i sa spremanjem stranica baze podataka u memoriju.

Kada bi zapis promjene baze podataka, koji bi trebao ići u zapisnik za bilo koju operaciju izmjene baze podataka, zapravo bio odmah zapisan u vanjsku memoriju, to bi značajno usporilo sustav. Stoga se zapisi dnevnika također spremaju u međuspremnik: tijekom normalnog rada, sljedeća stranica se gura u vanjsku memoriju dnevnika samo kada je puna zapisa.

Izazov je osmisliti neku opću politiku push kako bi se osiguralo da se baza podataka može oporaviti od pada.

Problem ne nastaje kod pojedinačnih vraćanja transakcija unatrag, jer se u tim slučajevima ne gubi sadržaj glavne memorije i može se koristiti sadržaj i međuspremnika dnevnika i međuspremnika stranica baze podataka. Međutim, ako se dogodi lagani kvar i sadržaj međuspremnika je izgubljen, morate imati neko dosljedno stanje dnevnika i baze podataka u vanjskoj memoriji kako biste oporavili bazu podataka.

Osnovno načelo dosljedne politike za iskakanje međuspremnika dnevnika i međuspremnika stranice baze podataka je da se promjena objekta baze podataka mora upisati u vanjsku memoriju dnevnika prije nego što se modificirani objekt nađe u vanjskoj memoriji baze podataka. Odgovarajući protokol za bilježenje (i upravljanje međuspremnikom) naziva se Write Ahead Log (WAL) - "najprije upiši u dnevnik" i sastoji se u činjenici da ako želite zapisati modificirani objekt baze podataka u vanjsku memoriju, prvo morate osigurati da dnevnik transakcija upisuje se u zapise vanjske memorije o njegovoj promjeni.

Drugim riječima, ako u vanjskoj memoriji baze podataka postoji neki objekt baze podataka, u odnosu na koji je izvršena operacija izmjene, tada u vanjskoj memoriji dnevnika nužno postoji zapis koji odgovara ovoj operaciji. Ne vrijedi suprotno, odnosno ako vanjska memorija dnevnika sadrži zapis o nekoj operaciji promjene objekta baze podataka, onda sam promijenjeni objekt možda neće biti prisutan u vanjskoj memoriji baze podataka.

Dodatni uvjet za guranje međuspremnika nameće se zahtjevom da svaka uspješno dovršena transakcija mora biti predana vanjskoj memoriji. Koji god se kvar dogodio, sustav mora moći vratiti stanje baze podataka koje sadrži rezultate svih transakcija izvršenih u vrijeme kvara.

Jednostavno rješenje bilo bi iskakanje međuspremnika dnevnika nakon čega slijedi bulk iskakanje međuspremnika stranice baze podataka modificiranih transakcijom. To se radi prilično često, ali dovodi do značajnih troškova prilikom izvođenja operacije predaje.

Ispostavilo se da je minimalni zahtjev da se osigura vraćanje posljednjeg konzistentnog stanja baze podataka da kada je transakcija predana, svi zapisi promjene baze podataka ovom transakcijom budu gurnuti u vanjsku memoriju dnevnika. U ovom slučaju, posljednji zapis u dnevniku napravljen u ime ove transakcije je poseban zapis o završetku transakcije.

Pogledajmo sada kako možete izvesti operacije vraćanja baze podataka u različitim situacijama ako sustav održava zajednički dnevnik u međuspremniku za sve transakcije i održava se u skladu s WAL protokolom.

Pojedinačno vraćanje transakcije unatrag

Kako biste mogli izvršiti povrat pojedinačne transakcije u općem dnevniku, svi zapisi dnevnika za ovu transakciju povezani su u obrnuti popis. Vrh popisa za neuspjele transakcije je posljednja promjena baze podataka koju je izvršila ova transakcija. Za dovršene transakcije (čiji pojedinačni povrati više nisu mogući), početak popisa je zapis o završetku transakcije, koji se nužno gura u vanjsku memoriju dnevnika. Kraj popisa je uvijek prvi zapis promjene baze podataka izvršene ovom transakcijom. Obično se svakom zapisu dodjeljuje jedinstveni ID transakcije tako da se izravan popis zapisa promjena baze podataka može vratiti određenom transakcijom.

Dakle, pojedinačno vraćanje transakcije (još jednom naglašavamo da je to moguće samo za nepovezane transakcije) izvodi se na sljedeći način:

· Sljedeći zapis se odabire s popisa ove transakcije.

· Izvodi se suprotna operacija: umjesto operacije INSERT izvodi se odgovarajuća operacija DELETE, operacija INSERT umjesto operacije DELETE, a umjesto izravne operacije UPDATE, inverzna operacija UPDATE vraća prijašnje stanje baze podataka objekt.

· Svaka od ovih obrnutih operacija također se bilježi. Zapravo, to nije potrebno za pojedinačno vraćanje unatrag, ali pri izvođenju pojedinačnog vraćanja transakcije može doći do mekog kvara, nakon oporavka od kojeg će biti potrebno vratiti transakciju za koju pojedinačno vraćanje nije izvršeno u potpunosti.

· Ako se vraćanje uspješno završi, zapis o završetku transakcije upisuje se u dnevnik. Sa stajališta dnevnika, takva transakcija je predana.

Oporavak od mekog kvara

Jedan od glavnih problema s oporavkom od mekog kvara je da jedna operacija promjene logičke baze podataka može izmijeniti više fizičkih blokova baze podataka, kao što su stranica s podacima i više stranica indeksa. Stranice baze podataka se spremaju u RAM i iskaču nezavisno. Unatoč korištenju WAL protokola, nakon mekog kvara, skup stranica u vanjskoj memoriji baze podataka može se pokazati nedosljednim, odnosno neke od stranica vanjske memorije odgovaraju objektu prije promjene, a neke - nakon promjene. Operacije logičke razine nisu primjenjive na ovo stanje objekta.

Stanje vanjske memorije baze podataka naziva se fizički konzistentno ako su skupovi stranica svih objekata dosljedni, odnosno odgovaraju stanju objekta prije ili nakon promjene.

Pretpostavit ćemo da zapisnik označava točke fizičke konzistentnosti baze podataka - trenutke u kojima vanjska memorija sadrži konzistentne rezultate operacija koje su dovršene prije odgovarajuće točke u vremenu, a nema rezultata operacija koje su nije dovršen, a međuspremnik dnevnika se gura u vanjsku memoriju. Malo kasnije ćemo pogledati kako se može postići fizička konzistentnost. Nazovimo takve točke tpc (vrijeme fizičke konzistencije) – točke fizičkog slaganja.

Zatim, do trenutka mekog kvara, moguća su sljedeća stanja transakcije:

· Transakcija je uspješno završena, odnosno potvrđena je operacija COMMIT transakcije i za sve operacije transakcije primljena je potvrda o njenom izvršenju u vanjskoj memoriji;

· Transakcija je uspješno dovršena, ali za neke operacije nije primljena potvrda o njihovom izvršenju u vanjskoj memoriji;

· Transakcija je primila i izvršila naredbu ROLLBACK;

· Transakcija nije dovršena.

Fizička konzistentnost baze podataka

Kako možete osigurati da postoje točke fizičke konzistentnosti u bazi podataka, odnosno kako vratiti stanje baze podataka u vrijeme tpc-a? Za to se koriste dva glavna pristupa: pristup koji se temelji na sjeni i pristup koji koristi bilježenje promjena baze podataka stranicu po stranicu.

Kada se datoteka otvori, tablica za preslikavanje brojeva njezinih logičkih blokova u adrese fizičkih blokova vanjske memorije čita se u RAM. Kada se modificira bilo koji blok datoteke, novi blok se dodjeljuje u vanjsku memoriju. U ovom slučaju, trenutna tablica mapiranja (u RAM-u) se mijenja, a sjena tablica ostaje nepromijenjena. Ako dođe do kvara tijekom rada s otvorenom datotekom, stanje datoteke prije nego što je otvorena automatski se sprema u vanjsku memoriju. Da biste eksplicitno vratili datoteku, dovoljno je ponovno pročitati tablicu mapiranja sjene u RAM.

Opća ideja mehanizma sjene prikazana je na Sl. 11.4.

Riža. 11.4.Korištenje tablica za prikaz sjena

U kontekstu baze podataka, mehanizam sjene se koristi na sljedeći način. Kontrolne točke se obavljaju periodično. Da biste to učinili, dovršavaju se sve logičke operacije, ističu se svi međuspremnici glavne memorije, čiji sadržaj ne odgovara sadržaju odgovarajućih stranica vanjske memorije. Sjena tablica za mapiranje datoteka baze podataka zamjenjuje se trenutnom (točnije, trenutna tablica mapiranja se upisuje na mjesto sjene).

Oporavak na tpc je trenutan: trenutna tablica mapiranja zamjenjuje se sjenovita (tijekom oporavka, tablica mapiranja sjene se jednostavno čita). Svi problemi s oporavkom su riješeni, ali na račun prevelikog korištenja vanjske memorije. Na granici, možda ćete trebati dvostruko više vanjske memorije nego što vam je zapravo potrebno za pohranu baze podataka. Mehanizam sjene je pouzdan, ali previše grub alat. Dosljedno stanje vanjske memorije osigurava se u jednom trenutku zajedničkom za sve objekte. Zapravo, dovoljno je imati skup dosljednih skupova stranica, od kojih svaka može odgovarati vlastitim vremenskim uzorcima.

Da bi se ispunio takav slabiji zahtjev, zajedno s logičkim zapisivanjem operacija promjene baze podataka, bilježe se promjene stranica po stranicu. Prvi korak u oporavku od mekog kvara je vraćanje neuspjelih logičkih operacija jednu po stranicu. Slično kao što se to radi s logičkim zapisima u odnosu na transakcije, posljednja promjena stranice po stranicu iz jedne logičke operacije je kraj operacije.

Postoje dvije metode za rješavanje problema u ovom pristupu. Prva metoda održava zajednički dnevnik logičkih operacija i operacija stranica. Naravno, postojanje dvije vrste zapisa, interpretiranih na potpuno različite načine, komplicira strukturu časopisa. Osim toga, zapisi o promjenama stranica po stranicu, čija je relevantnost lokalne prirode, značajno (i ne baš smisleno) povećavaju časopis.

Zbog toga je sve popularnije voditi poseban (kratki) dnevnik promjena stranica. Ova tehnika se koristi, primjerice, u poznatom proizvodu Informix Online.

Pretpostavimo da je na neki način bilo moguće vratiti vanjsku memoriju baze podataka u stanje u trenutku tpc (kako se to može učiniti - malo kasnije). Zatim:

· Za transakciju T1 nije potrebna nikakva radnja. Završio je prije tpc-a, a svi njegovi rezultati se odražavaju u vanjskoj memoriji baze podataka.

· Za transakciju T2, trebate ponovno izvršiti ostale operacije (ponovno). Doista, u vanjskoj memoriji u potpunosti nema tragova operacija koje su izvršene u transakciji T2 nakon trenutka tpc. Stoga je izravna ponovna interpretacija T2 operacija ispravna i dovest će do logički konzistentnog stanja baze podataka (budući da je T2 transakcija uspješno dovršena prije mekog kvara, zapisnik sadrži zapis svih promjena koje je izvršila ova transakcija).

· Za TK transakciju, prvi dio operacija (poništavanje) mora se izvesti u suprotnom smjeru. Doista, u vanjskoj memoriji baze podataka, rezultati TK operacija koje su izvedene nakon trenutka tpc potpuno su odsutni. S druge strane, vanjska memorija zajamčeno sadrži rezultate TK operacija koje su izvedene prije tpc-a. Posljedično, obrnuto tumačenje TK operacija je ispravno i dovest će do konzistentnog stanja baze podataka (budući da TK transakcija nije dovršena do trenutka mekog kvara, tijekom oporavka potrebno je sačuvati sve posljedice njezinog izvršenja ).

· Za T4 transakciju koja je započela nakon tpc-a i završila prije mekog kvara, potrebno je izvršiti potpuni ponovni rad.

Konačno, nije potrebna nikakva radnja za transakciju T5 koja je započela nakon tpc trenutka i nije imala vremena dovršiti do trenutka mekog kvara. Rezultati ove transakcije potpuno nedostaju u vanjskoj memoriji baze podataka.

Oporavak od teškog sudara

Jasno je da zapisnik promjena baze podataka nije dovoljan za vraćanje baze podataka u posljednje konzistentno stanje nakon teškog kvara. U ovom slučaju, osnova oporavka je dnevnik i sigurnosna kopija baze podataka.

Oporavak počinje kopiranjem baze podataka natrag iz arhivske kopije. Zatim se za sve dovršene transakcije vrši redo, odnosno operacije se ponovno izvršavaju naprijed.

Točnije, događa se sljedeće:

· Sve operacije se izvode duž trupca u smjeru naprijed;

· Za transakcije koje nisu dovršene do trenutka kvara, vrši se vraćanje unatrag.

Zapravo, budući da teško rušenje ne rezultira gubitkom RAM međuspremnika, moguće je vratiti bazu podataka na takvu razinu da se čak i neuspjele transakcije mogu nastaviti. Ali to se obično ne radi jer je oporavak od teškog sudara prilično dugotrajan proces.

Iako postoje posebni zahtjevi za sječu u smislu pouzdanosti, u načelu se može izgubiti. Tada je jedini način za vraćanje baze podataka vraćanje na arhivsku kopiju. Naravno, u ovom slučaju nećete moći dobiti posljednje konzistentno stanje baze podataka, ali ovo je bolje nego ništa.

Posljednje pitanje koje ćemo ukratko osvrnuti odnosi se na izradu sigurnosnih kopija baze podataka. Najlakši način je arhivirati bazu podataka kada je dnevnik pun. U zapisnik se uvodi tzv. "žuta zona" nakon koje se formiranje novih transakcija privremeno blokira. Kada su sve transakcije dovršene i, prema tome, baza podataka je u dosljednom stanju, možete je arhivirati, a zatim ponovno početi ispunjavati zapisnik.

Možete sigurnosno kopirati bazu podataka rjeđe nego što se zapisnik napuni. Ako je dnevnik pun i sve započete transakcije su završile, možete arhivirati sam dnevnik. Budući da je takav arhivirani dnevnik u biti potreban samo za ponovno stvaranje arhivirane kopije baze podataka, informacije arhiviranog dnevnika mogu se značajno komprimirati.

Svaki put koristeći bankovnu karticu za plaćanje robe, podizanje sredstava ili prijenos, klijent banke obavlja određene transakcije. I iako sve transakcije traju samo nekoliko minuta, cijeli ciklus operacija je prilično opsežan proces, koji uključuje slanje zahtjeva za povlačenje novca, njihovu obradu i izvršenje.

Transakcija je svaka operacija s bankovnom karticom čije izvršenje dovodi do promjene stanja računa klijenta. Transakcija se može obaviti u stvarnom vremenu (online) i offline.

Online transakcije zahtijevaju obveznu potvrdu plaćanja u trenutku plaćanja ili prijenosa sredstava.

Online transakcije uključuju prijenos novca između kartica, operacije podizanja gotovine na bankomatima, operacije namirenja u maloprodajnim objektima i trgovinama. Razmotrite postupak obavljanja online transakcije na primjeru plaćanja artikla u trgovačkom centru.

U operaciji su uključene tri strane:

  • banka primatelj koja opslužuje odabranu poslovnicu (u trgovini je instaliran njezin POS terminal);
  • banka izdavatelj koja opslužuje platnu bankovnu karticu;
  • međunarodni platni sustav, koji je posredna karika u transakcijama namire (Visa, MasterCard i dr.).

Online transakcijski nalog

Transakcija namire počinje od trenutka kada je platna kartica predana blagajniku i POS terminal očitava podatke potrebne za plaćanje (broj kartice, rok valjanosti, ime vlasnika i drugi podaci kriptirani na magnetskoj vrpci). Pročitane informacije prenose se banci primatelju koja opslužuje POS terminal (trgovine u pravilu sklapaju posebne ugovore za uslugu terminala, prema kojima se za svaku transakciju naplaćuju provizije).

Primljene podatke banka primatelj prenosi u centar za obradu podataka (DPC) međunarodnog platnog sustava koji opslužuje karticu.

Podatkovni centar provjerava prisutnost ili odsutnost platne kartice na stop listi (kartice za koje postoji sumnja na prijevaru mogu se pojaviti na stop listi), zbog čega se operacija odobrava ili odbija.

Nakon toga, podaci se prenose u procesni centar banke izdavatelja, gdje se odobrava plaćanje. Ovdje se provjerava zakonitost transakcije: provjerava se da ima dovoljno sredstava za dovršetak operacije, provjerava se podudarnost unesenog PIN-koda sa stvarnom vrijednošću. Osim toga, provodi se provjera prekoračenja utvrđene granice za obavljanje operacija.

Odgovor banke izdavatelja šalje se natrag, preko podatkovnog centra, do banke preuzimatelja i trgovine. Podaci o plaćanju prikazani su na čeku, koji se prenosi na kupca.

Značajke online i izvanmrežnih transakcija

Razmotrene radnje prilikom obavljanja online transakcija dovršavaju interakciju između kupca i trgovine. Ali sam proces transakcije tu ne završava. Činjenica je da se sredstva ne naplaćuju s kartice odmah: ona su privremeno blokirana. Sredstva se prenose u trgovinu s računa stjecatelja, a terećenja kartice tek nakon što banka primatelj prenese financijski dokument izdavatelju na terećenje. To se može dogoditi u razdoblju od nekoliko dana ili čak mjesec dana.

Izvanmrežne transakcije provode se po drugačijem principu. Prolaze bez radnji provjere od strane udaljene strane i odobrenja ili odbijanja. Transakcija je unaprijed odobrena, stanje na bankovnoj kartici je rezervirano, a svi podaci o plaćanju spremaju se u memoriju terminala za plaćanje.

Izvanmrežna transakcija se obavlja kasnije, kada se informacije akumulirane u terminalu prenose komunikacijskim kanalima do banke koja uslužuje. Obično prođe nekoliko dana od trenutka kada je zatraženo plaćanje do stvarnog plaćanja.

Izvanmrežne transakcije koriste se u slučajevima kada nije moguće uspostaviti vezu s procesnim centrom u stvarnom vremenu (u zrakoplovima, autobusima, taksijima i sl.).

Zabrana i otkazivanje transakcija

Najčešće transakcije su plaćanja u trgovini, prijenos novca i podizanje gotovine. Postoji nekoliko razloga zašto se transakcije mogu zabraniti.

Najčešći su:

  • bankovna kartica je blokirana;
  • nema dovoljno sredstava na bankovnoj kartici potrebna za dovršetak operacije;
  • platna kartica ima utvrđena ograničenja plaćanja;
  • platna kartica je istekla;
  • došlo je do pogreške prilikom unosa PIN koda;
  • bankovna kartica je uvrštena na stop listu zbog sumnje na pranje novca, prijevaru itd .;
  • postoje tehnički problemi (na web stranici, s bankomatom itd.).

Ako zabrana transakcija nije povezana s nedovoljnim stanjem na kartici, potrebno je kontaktirati banku servisa kako bi riješili probleme. U nekim slučajevima transakcije se mogu otkazati na inicijativu samih kupaca (naravno, ako ne govorimo o podizanju gotovine). Morate znati o mogućnosti otkazivanja transakcija kako biste mogli prijevarno vratiti sredstva terećena s kartice.

Najlakši način je poništiti transakciju na dan izvršenja.

Funkcija otkazivanja operacija je u samim terminalima.

Ako su podaci s terminala već prebačeni u banku, obratite se samoj financijskoj instituciji.