Tranzaksiya və ACID prinsipləri

Tranzaksiya daha kiçik hissələrə bölünə bilməyən məntiqi iş yığınına verilən addır. Hansıki, bu işlərin ayrılıqda icra olunması məntiqi prosessin pozulmasına gətirib çıxara bilər. Daha aydın olması üçün belə bir nümunəyə nəzər yetirek. 

Düşünək ki bir satış platformasına daxil olduq və bizə lazım olan bir neçə məhsulu seçdik. Daha sonra seçilən məhsulları almaq üçün "Ödəniş et" düyməsini sıxdıq.

Bizim mövzumuza aid olan hissəni bu düymənin altında baş verən əməliyyatlar ilə incələməyə çalışaq (mövzunun ödəniş sisteminin hazırlanması olmadığından sadə olması adına əməliyyatı çox az hissəyə ayırdım)

  1.  Məhsulların anbardakı saylarının tapılması.
  2.  Məhsulların anbardakı sayını dəyişdirmək.
  3.  İstifadəçinin balansını azaldılması (və ya kartdan pulun çıxırılması / Ödəniş məlumatlarının uyğun cədvəllərdə saxlanılması).

Bu iki əməliyyatın bir yerdə icra olunmaması istənməyən bir xətanın yaranmasına yol açacaq. Beləki, sayı azaldıb balansdan pul çıxılmasa, şirket xeyriyyə fondu kimi fəaliyyət göstərəcək əks halda isə pul çıxıb məhsulun sayını azaldılmasa anbarda olan saylar doğru olmayacaq. Elə bu səbəbdən bu iki əməliyyat bir yerdə icra olunmalı və birinin icra olunmaması halında digəri də olmamalıdır. Daha sonra bu məntiqi əməliyyata nə ad verək deyə düşünüb elə "Əməliyyat" yəni "Transaction" deyək deyə qərara gəliblər. Yuxarıdakı izahdan məndə də təsəvür yarandıki bu iki məsələ ilə ödəniş prosessində bütün məsələlər həll olundu. Əslində isə qalan daha bir mühim məsələ var. 

Wikipedia-da isə belə tərif verilir

A database transaction symbolizes a unit of work, performed within a database management system against a database, that is treated in a coherent and reliable way independent of other transactions. A transaction generally represents any change in a database.  

Bizlə eyni anda (çox kiçik zaman dilimi fərqi ilə) eyni məhsulu alan şəxs eyni növ tranzaksiyanı istifadə etdiyindən aşağıdakı formada xəta yarada bilər.

Yuxarıdakı nümunədə baş verən istəyənməyən halların qarışısının alınması üçün, mütəxəsislər Tranzaksiyanın ACID prinsipləri əsasında çalışması tələbini qoydular.

İndidə ACID nə olduğuna baxaq. 

Atomicity (Atomarlıq):

Bu prinsip bir tranzaksiya altında olan əməliyyatların (insert, update, delete kimi) hamısının eyni anda uğurlu icra olunmalı olduğunu və ya birinin xətalı icrası zamanı heç birinin icra olunmamasını təmin edir. Burdan başa düşmək olar ki tranzaksiyanın iki halı olur

—Commit: Əgər tranzaksiya uğurlu olarsa edilən dəyişikliklər verilənlər bazasında görünür.

—Abort: Əgər tranzaksiya uğursuz olarsa verilənlər bazasında edilən dəyişikliklər görünmür.

Consistency (Ardıcıllıq / Bütövlüyün və ya tamlığın qorunması)

Bu prinsip tranzaksiya başlayanda və bitəndə dəyişiklikdən təsirlənən bütün (constraints, cascades, triggers) məlumatların tamlığının qorunmasıdır. 

Məsələn, bir hesabdan digərinə vəsait köçürən tətbiqdə consistency xüsusiyyəti hər iki hesabdakı vəsaitlərin ümumi dəyərinin tranzaksiyanın əvvəlində və sonunda eyni olmasını təmin edir.

Isolation: 

Tranzaksiyanın aralıq vəziyyəti digər tranzaksiya üçün görünməzdir. Tranzaksiya başlayanda məlumatları dəyişdirəcək insert, update kimi ifadələr yalnız sessiyada görünür. 

Durability:

Bir tranzaksiya uğurlu tamamlandığında (commit olunduqda) elektrik kəsintisi ve ya programın çökməsi halında dəyişikliklər verilənlər bazasında qalıcı olmalıdır.


Yorum Gönder

Daha yeni Daha eski