yangi

ACID tamoyillari. Consistency — Davomiylik.

ACID tamoyillari. Consistency — Davomiylik.

Avvalgi maqolamizda biz ACID tamoyillarining birinchisi, ATOMICITY haqida gaplashgan edik. Consistency bu atomicity tamoyilining mantiqiy davomi hisoblanadi. Consistencyni ta'riflashdan oldin DATA VALIDITY iborasiga ta'rif berish kerak bo'ladi. Butun DBdagi datalarimiz valid degani — barcha ma'lumotlarimiz DBdagi validatsiya qoidalariga muvofiq keladi degani. Misol uchun sizda login nomli column bor. Ushbu ustun NULL bo'lishi mantiqan mumkin emas. Loginni DBda valid bo'lishi bu — uni NULL bo'lmasligi hisoblanadi(Aslida boshqa juda ko'p validation rule'lar mavjud. Soddaroq bo'lishi uchun aynan bittasi tanlab olindi). ACID tamoyillaridagi Consistency bu muammosiz qabul qilib, olib muammosiz topshirishga o'xshaydi, ya'ni:

DBga transaction apply qilinishidan oldingi valid holati, transaction apply qilingandan keyin ham saqlanib qolishiga Consistencydavomiylik tamoyili deyiladi.

Consistencyni Atomicity(Abortability)ga nima aloqasi bor? U qanday qilib Atomicityni mantiqiy davomi bo'lishi mumkin? Javob oddiy: Transaction ichidagi operatsiyalardan istalgan biri DB consistencyga tahdid solsa, u holda u bilan birga bajarilishi kerak bo'lgan barcha operatsiyalar bekor qilinishga mahkum. Deylik, PRODUCTS table'da quantity column uchun validation rule qo'yilgan: quantity 0(nol)dan kichik bo'lishi mumkin emas. Oldingi maqolamizdagi DBga quyidagi buyruqni berish orqali quantityga 0(nol)dan kichik bo'lmaslik shartini qo'yamiz:

ALTER TABLE PRODUCTS ADD CONSTRAINT check_positive CHECK (quantity > 0);

Quyidagi query esa, uni 0(nol)dan kichik qilishga urinib ko'ryapti deylik:

BEGIN TRANSACTION;
UPDATE PRODUCTS SET quantity = quantity - 1000 WHERE id = 1;
INSERT INTO SALES(productId, price, quantity) VALUES(1, 999.99, 1000);
COMMIT;

Ekranda xato chiqdi, ya'ni ushbu operatsiyalar to'plamini amalga oshirishni imkoni bo'lmadi. Sababi esa oddiy — birinchi query data consistencyga zarba berishga harakat qildi. Oqibatda esa, butun transaction rollback buyrug'i orqali bekor qilindi.

Aslida ACID bu ko'proq marketing atamasiga o'xshaydi. To'g'ridan-to'g'ri tarjimasi — kislota bo'lgan bu atamani esda qolarli bo'lishi uchun shu holga keltirilgan desak adashmaymiz. Sababi, ushbu atamalar o'zlari ta'riflayotgan sifatlarga deyarli mos kelmaydi Misol uchun, ACID tamoyillaridan biri Consistencyni DBga oid boshqa tamoyillarda ham uchratish mumkin. Misol uchun:
CAP teoremasidagi Consistency(Immediate)
Eventual Consistency
Yuqoridagi ikki Consistency Distributed system(taqsimlangan tizim)lar uchundir. Eventual consistencyDB replica'da ishlatiladi. Ya'ni master DBga yozilgan ma'lumot, qachondir(bir vaqtda emas) barcha slave DBlarda ham paydo bo'ladi. Ayni shu distributed system'larda datalarni bir xilligini saqlab turish Consistency deb ataladi. CAP teoremasiga ko'ra Consistency bu immediate consistency — ya'ni birdan sodir bo'ladigan consistency. Bu eventual consistencyning teskarisidir. Shuni alohida ta'kidlash kerakki, CAP teoremasidagi Consistency bilan ACID tamoyillaridagi Consistency bu ikki xil tamoyilni bir so'z orqali ifodalanishidir. Ikkisi boshqa-boshqa tamoyillar.

Keyingi maqolamizda ISOLATIONIzolyatsiya tamoyili haqida emas, balki DURABILITY — mustahkamlik tamoyili haqida gaplashamiz.


Soataliyev Jahongir - Texnoman foydalanuvchisi

Muallif haqida

Soataliyev Jahongir SWE @ EPAM Systems | Leader of Java Community Uzbekistan


Qiziq bo‘ladi:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!