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. 




































Комментарии

Популярные сообщения из этого блога

Interview questions

Lesson1: JDK, JVM, JRE

Lesson_2: Operations in Java