MS Lesson13: ACID
ACID - tranzaksiyalarin etibarli ishlemesi ucun 4 esas prinsip teqdim edir. ACID-i esasen DB engine temin edir.
A - Atomicity
Ya hamisi ya hec biri. Bir tranzaksiyanin icinde 5 addim varsa ya 5-de commit olur ya da 1 fail olursa rollback olur.
C - Consistency
Tranzaksiyadan evvel DB duzgun idise tranzaksiyada sonra da DB duzgun olmalidir.
Duzgun ne demekdir?
* DB constaint-ler: non null, unique, foreign key, check
* Biznes qaydalari: balans menfi olmasin, stok sifirdan ashagi dushmesin ve s.
Mes: email unique olmalidir, eyni email ikinci defe insert edilse DB reject versin
I - Isolation
Paralele tranzaksiyalar bir birini korlamasin. Eyni anda iki istifadeci eyni datani ishledende biri o birinin yarimciq veya qarishiq neticelerini gormemelidir. Yeni Isolation paralel ishlemenin riskini idare edir.
D - Durability
Tranzaksiya commit olduqdan sonra server restart olsada, proses cokse de, melumat itmir. Bu adeten WAL/log, disk flush ve DB recovery mexanizmleri ile temin olunur.
@Transactional - ACID-in tetbiqde istifade olunan duymesidir; duymeni Spring basir, ACID-i DB heyata kecirir.
* Atomicity
@Transactional metod daxilinde bir nece emeliyyati bir transaciton-a salir. Exception olarsa rollback edir ve yarimciq veziyyet qalmir.
* Consistency
Commit zamani DB constraint-lerini yoxlayir (FK, UNIQUE, CHECK). Qaydalar pozularsa commit olmur/rollback olur.
* Isolation
@Transactional(isolation = ...) ile paralel tranzaksiya davranishini teyin etmek olur (READ_COMMITTED, SERIALIZABLE ve s).
* Durability
Commit verildikden sonra neticenin qalici olmasini DB temin edir (WAL/log ve recovery mexanizmi ile).
@Transactional sadece commit emri verir.
Комментарии
Отправить комментарий