ACID 3-qism: Consistency nima?

Assalamu Alaykum bugun ACIDtamoyillaridagi C ya’ni Consistency atamasini ko'rib chiqamiz.

Consistency asosan databazalar o'rtasida ACIDning boshqa tamoyillari uchun trade off (almashtiriladi) masalan (NoSQL, Relational, Graph dbs ). Ba’zi databazalar uni tezlik uchun qurbon qilishsa ba’zilari uni scalability ya’ni oson kengaytira olish uchun voz kechishadi .

Ushbu maqolani o'qishdan oldin bu seriyadagi boshqa maqolalarni o'qishni tavsiya qilaman :

Agenda

  1. Tranzaksiya nima ?

  2. ACID 1-qism (Atomicity)

  3. ACID 2-qism (Isolation, Isolation levels)

Ushbu maqolada Consistency nima degan katta savolga javob berishga harakat qilamiz.

  1. Ma’lumotdagi Consistency (Consistency in data)

  2. O'qishdagi Consistency (Consistency in reads)

Ma’lumotdagi consistency

Ma’lumotdagi consistency bu sizda saqlanayotgan ma’lumot siz tuzgan model bilan bir xilligini anglatadi . U odatda dasturchi tomonidan quriladi yani databaza sxemasi . Bu yerda bo'ladigan eng katta maummo bu referential integrity (foreign keys) ya’ni jadvallarni bir biriga bo'glab turadigan idlardagi muammo , bazilar NoSQLda bunaqa muammo yoq deb aytishi mumkin ammo NoSQLda ikki document orasida aloqani bog'lab berolmaslik ham shunga kiradi . Yana ma’lumotdagi consistencyni ushlab turishga Atomicitykerak bo'ladi ,masalan , biz debit qilayotganda databaza crash bo'lib qolsa hamma narsa o'z holiga qaytishini atomicity taminlab beradi .Agarda bunday bo'lmasa oldingi maqolada aytib o'tganimizdek pul shunchaki havoda yoq bo'lib ketadi .Va bu ma’lumot corrupteddeyiladi . Hamda Isolationham inconsistentma’lumot olishga sabab bo'lishi mumkin ,oldingi maqolada ko'rganimizdek Isolation levelga qarab bir tranzaksiyadagi querylar ikki xil natija berishi mumkin (inconsistent) , bu holatda databazadagi ma’lumotlar consistent ammo isolation tufayli incosistency yuzaga keladi.

Tepadagi 2 rasmda consistent va inconsistent ma’lumotlar ko'rsatilgan 2 rasm inconsistent bo'lishining asosiy sabablari 1 video 9 like to'plagani ko'rsatilmoqdi ammo likes jadvali u videoda faqatgina 2ta like borligini aytomoqda , hamda likes jadvali Nodir 6 idlik videoga like bosdi demoqda ammo video jadvalida 6 idlik video mavjud emas bu inconsistent ma’lumot.

O'qishdagi consistency

O'qishdagi consistency bu siz bir ma’lumotni yangilagandan so'ng shu ma’lumotga qayta so'rov jo'natgandan shu yangi ma’lumot kelishi , bu oldingi holatdan farq qiladi bu yerda sizning diskdagi hamma ma’lumotlarinigiz consistent bo'ladi ammo bizda juda ko'p instancelar borligi uchun o'qishda muammolar bo'lishi mumkin . Biz bir savolga javob berishimiz kerak agar tranzaksiya yangi ma’lumotni commit qilsa va yangi so'rovlar uni darhol ko'ra olmasa bu inconsistent bo'ladi chunki biz eski ma’lumotni o'qiyotgan bo'lamiz. Bu butun systemaga talluqli yani sizda yangilanish mavjud siz uni replicalarga va master bo'lsangiz slave databazalarga o'tkazish uchun vaqt ketadi (sync time) va bu vaqtda siz replicadan ma’lumot o'qisangiz bu ma’lumot boshqacha bo'lishi mumkin.

Va bu bizni Eventual consistencyga olib keladi ya’ni men hozir consistent emasman ammo biroz vaqtdan so'ng hamma dblar consistent bo'ladi degan manoni bildiradi .Bu holat sizning databazangiz corruptbo'lgan yokireferential integritybuzilgan bo'lsa amalga oshmaydi .Bu shunchaki ma’lumotlarngiz dunyoni hamma burchagida paydo bo'lishga vaqt ketadi degani xolos.

Eventual consistency uchun alohida maqola bo'ladi !!!

Xulosa

Xosh bizdagi C (Consistency ) referential integrityga bo'glik ekan . Hamda biz ma’lumotlarimiz hamma databazalarda bir xil bo'lishiga vaqt ketar ekan va bunga eventual consistency deyilar ekan.