ACID haqida gaplashamiz
Ko'p hollarda foydalanuvchi uchun bir butun sifatida qaraladigan o'zgarish ma'lumotlar ba'zasida bir nechta ketma-ket o'zgarishlarni talab qiladi.
Masalan, do'stingizning kartasiga $100 yubormoqchisiz. Bu siz uchun bir butun ish. Lekin ma'lumotlar ba'zasida bu eng kamida mana bu ketma-ket qadamlardan iborat:
1) Sizning balansingizni $100 ga kamaytirish;
2) Do'stingizning hisobini $100 ga oshirish;
Xatoliklarning oldini olish uchun bunday operatsiyalarni ma'lumotlar ba'zasida ham bir butun deb qarashga imkon beruvchi yangi birlikka ehtiyoj tug'iladi. Bu birlik tranzaksiya deb ataladi. Demak, tranzaksiya ma'lumotlar bazasida mantiqiy jihatdan bir butun ish bo'lgan bir nechta query(so'rov)larni birlashtirish imkonini beradigan "quticha".
ACID esa trakzaksiyalar o'zini qanday tutishini belgilaydigan umumiy qoidalar to'plami. Bu qoidalar orqali kutilmagan vaziyatlarda (xatolik chiqqanida, server o'chib qolganida va h.k.) trakzaksiyadagi ma'lumot haqiqiyligini (data validity) saqlab qolish ta'minlanadi.
ACID so'zi 4 ta qoida: Atomicity, Consistency, Isolation va Durability so'zlarining bosh harflaridan olingan. Xo'sh, bu qoidalar nima?
Atomicity – bo'linmaslik
Bu qoidaga ko'ra tranzaksiyalar bo'linmas, bir butun bo'lishi kerak. Yo tranzaksiyadagi hamma operatsiya muvaffaqiyatli bajariladi yoki hech qaysi operatsiya bajarilmaydi. Bir qismi bajarilib, qolgan qismi bajarilmay qolishi mumkin emas. Agar qaysidir operatsiyani bajarish vaqtida xatolik chiqsa butun tranzaksiya muvaffaqiyatsiz bo'ladi va bu tranzaksiyadagi muvaffaqiyatli bajarilgan operatsiyalar ham avvalgi holiga qaytariladi (rollback). Bir kishi hamma uchun, hamma bir kishi uchun deganlaridek...
Tepadagi misolda, deylik, sizning hisobingizdan pul yechildi, lekin do'stingizning hisobini oshirish vaqtida xatolik chiqdi. Natijada siz $100 yo'qotdingiz, lekin do'stingiz qabul qilmadi. $100 "havoga uchdi".
Buning oldini olish uchun xatolik chiqqanida butun tranzaksiya bo'ylab barcha operatsiyalar avvalgi holatiga qaytariladi, ya'ni $100 sizning hisobingizga qaytariladi.
Consistency – moslik
Tranzaksiya natijasi ma'lumotlar bazasida avvaldan belgilab qo'yilgan qoidalar bilan mos bo'lishi kerak. Aks holda tranzaksiya muvaffaqiyatsiz deb belgilanadi va rollback qilinadi. Deylik, qoidaga ko'ra foydalanuvchi balansi manfiy bo'lmasligi kerak. Agar hisobingizda $60 bo'lsa, do'stingizga $100 o'tkazgandan keyin hisobingiz -$40 bo'ladi. Bu esa tepadagi qoidaga to'g'ri kelmaydi. Operatsiyalar muvaffaqiyatli bo'lsa-da natija qoidalar bilan mos bo'lmagani uchun bekor qilinadi.
Post #347
4.09K
- 👍 26