19 новембар 2021

ACID database transactions

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.


Нема коментара:

Постави коментар

Братоубилачки мир

Нема тог великог рата док се Срби не лате оружја и међусобно не поубијају. Једино добро у тој погибли je  што је један део увек победник.  М...