Od ovoga je napravljena cela nauka, a i na wiki i nа internetu je poprilično netačno obašnjena
https://en.wikipedia.org/wiki/ACID
Pojednostavljenje cele priče:
A (Atomicity)- se podazumeva kod većine baza - il je prošla cela transakcija ili ništa i to je već standard, a samo treba da se vodi računa šta je logički jedna trasakcija.
C (Consistency)- ovo nema veze sa transakcijama vec je stvar domena i implemntacije biznis logike
I (Isolation)- se tiče odnosa više transkakcija i transkacije sa samom sobom. Tu postoje 4 levela
Read uncommited - narušava pravilo Atomicity i ne traba da postoji u bazama podataka jer nek druga transakcija ne sme da vidi podatke iz transakcije koja nije završena.
Read commited - podatak je zaključan samo dok se čita. To znači ako se u istoj transkaciji opet čita isti podatak moguće je da bude druga vrednsot jer je završena neka druga tranakcija koja ga je promenila.
Repeateble read - podatak se zakljucava od trenutka čitanja do kraja transakcije i ni jedna druga trenasakcija ne može da ga menja (samo update) vec čeka da se ta transkcija završi.
Serialiable - zakljucava se skup podatka koji se nalaze u where uslovu. ako where uslov nije indeksiran bice zakljucana cela tabela od pocetka citanje do kraja transakcije i drugim transakcijama nece biti dozovoljen ni update , ni insert, ni delete. Ako se dve ili vise transakcije paralelno izvrsavaju nad istim opsegom podataka serijalizacija nije moguca, izvrsice se samo jedna a druga ce rolbekovati sa greskom (ERROR: could not serialize access due to read/write dependencies among transactions)
D (durability)- ovo nije svojstvo transkacije vec baze podataka
Distribuirane transakcije - resavaju na dva nacina
1. Kao svojsto RDBMS . Sve se redje koristi jer ne moze da se implementira logika i da se kontrolišu resursi
2.Kao svojsto aplikativnog koda - postoje dva pristupa
2.1. Two phase commit - koristi se kad je celokupna transakcija kratka i nisu bitne performanse. Tj spoljna transkacija ceka odgovor od unutrasnje i drzi resurse zakljucane
2.2. Saga pattern ( imaju probelm sa I(Ispolation) a i mora da se implementira undo logika). Postoje dva pristupa
2.2.1.Choreography - svaki step salje poruku seldbeniku. Sledebenik salje prethodnik rezultat sopstvene transkacije
2.2.2 Orchestration - implementira se centralni orkestrator - saga executor gde se smesta logika i komunikacija izmedju odvojenih servisa koji imaju svoje transakcije.
Нема коментара:
Постави коментар