Muvofiqlik modellari
Muvofiqlik raqobatbardosh o’zgarishlarda o’quvchilar qanday ma’no va tartibni ko’rishini tasvirlaydi. Modelni to’g’ri tanlash - bu invariantlarning qattiqligi, yashirin, arzonligi va qiymati (PACELC) o’rtasidagi muvozanatdir. Quyida - modellar va ularni qoʻllash boʻyicha amaliy maʼlumotnoma.
1) «Qat’iy» modellar
Linearizable
Xulq-atvor go’yo barcha operatsiyalar bir zumda, real vaqtni hurmat qiladigan tartibda bajarilganga o’xshaydi.
Afzalliklari: oddiy aqliy model, pul va o’ziga xoslik uchun xavfsiz.
Kamchiliklar: kvorumlar/etakchi → o’sish p95/p99, ayniqsa mintaqalararo.
Yuzkeyslar: balanslar, qattiq limitli inventarlar, noyob nomlar/kalitlar.
Sequential consistency
Barcha oqimlar bir xil operatsiya tartibini ko’radi, lekin real vaqt tartibi shart emas. linearizable biroz zaifroq, kamdan-kam hollarda to’g’ridan-to’g’ri mahsulotlarda namoyish etiladi.
Serializable (tranzaksion seriyalanganlik)
Tranzaksiyalarning (alohida operatsiyalar emas) muayyan ketma-ketlik tartibiga ekvivalentdir.
Ijobiy tomonlari: soʻrovlar/jadvallar darajasidagi murakkab invariantlarning toʻgʻriligi.
Minuslar: qimmatroq (to’sib qo’yish/versiyalash/mojarolarni validatsiya qilish).
Yuzkeyslar: murakkab moliyaviy operatsiyalar, konsistent qayta hisoblashlar, inventarlar.
Snapshot Isolation (SI)
Har bir tranzaksiya oʻzgarmas suratni vaqt boʻyicha oʻqiydi; yozuvlar «bir xil satrlar» bo’yicha to’qnashadi, ammo write skew mumkin.
Afzalliklari: blokirovkasiz tez o’qish, barqaror hisobotlar.
Kamchiliklar: seriallashtirilmaydi, tuzoq write skew (misol: navbatchi shifokorlar).
Yuzkeyslar: tahlillar, hisobotlar, aksariyat CRUDlar qattiq invariantlarsiz.
2) Per-session va sababiy kafolatlar
Read-Your-Writes (RYW)
Mijoz o’z yozuvidan keyin uni har doim keyingi o’qishda ko’radi.
Afzalliklari: yaxshi UX (shakl → tasdiqlash).
Kamchiliklar: global emas, mahalliy kafolat.
Monotonic Reads / Writes
Oʻqish orqaga qaytmaydi; bitta mijozning yozuvlari jo’natilgan tartibda qo’llaniladi.
Causal Consistency (sabab)
Agar operatsiya boshqasiga bog’liq bo’lsa (A → B), hamma A ni B. oldida ko’radi.
Afzalliklari: sotss-fid, sharhlar uchun sezgir.
Kamchiliklar: marshrutlash va sabablik belgilari (vektor soatlar) murakkabroq.
Yuzkeyslar: kommunikatsiyalar, birgalikda tahrir qilish, voqealar lentalari.
3) Zaif va gibrid modellar
Bounded Staleness
Oʻqish Δ t yoki N dan ortiq boʻlmasligi mumkin.
Afzalliklari: oldindan aytib bo’ladigan UX, mintaqalararo yaxshi murosa.
Kamchiliklar: yozuvlarni mojarolardan himoya qilmaydi.
Eventual Consistency
Vaqt oʻtishi bilan barcha nusxalar birlashadi; tartib va kechikish kafolatlanmagan.
Afzalliklari: minimal latentlik/qiymat, yuqori ochiqlik (AP).
Kamchiliklar: aniq merge (CRDT/domen qoidalari) kerak.
Yuzkeyslar: keshlar, fidlar, metriklar, layklar, nen critical ma’lumotnomalar.
4) Namunaviy anomaliyalar va ular nimani anglatishi
Dirty Read: noto’g’ri ma’lumotlarni o’qish.
Non-repeatable Read: tranzaksiya ichida bir xil o’qish turli xil qiymatlarni beradi.
Phantom: Qayta soʻrashda predikatga mos keladigan satr paydo boʻladi/yoʻqoladi.
Write Skew (SIda): ikkita tranzaksiya bir-birini kesib o’tuvchi invariantni o’qiydi va «jami 1 ≥ bo’lishi kerak» shartini buzgan holda turli satrlarni yozib qo’yadi.
Lost Update: Raqib oʻzgarishlarini «oʻchiradi».
5) O’qish/yozish kvorumlari va darajalari
Koʻpgina saqlash joylari’R ’/’ W’darajalarini (oʻqish/yozish uchun nusxalar soni) oʻrnatish imkonini beradi.
Kvorum (R + W> N) oxirgi yozuvni oʻqish uchun «kesishma» va kuchli kafolatlar beradi.
W = 1, R = 1 → past kechikish, ammo eski maʼlumotlar mavjud.
Tyuning: tanqidiy operatsiyalarda - yuqori’W’(yoki etakchi), qolganlarida - past’R’tezlik uchun.
Read-repair/Hinted handoff fonda muvofiqlikka erishishga yordam beradi.
6) Soatlar va tartib: biz sababni qanday «tushunamiz»
Lamport clocks: voqealarning qisman tartibi.
Vector clocks: sabablarni aniqlaydi, ziddiyatlarni aniqlashga imkon beradi.
Hybrid/TrueTime-yondashuvlar: tranzaksiyalarni tartibga solish va bound-staleness uchun klaster soatlarining tarqalishini cheklaydi.
Version:’version/ts + actor’uchun merge; CRDTda - yopiq yarim guruhlar (kommutativlik/idempotentlik).
7) CRDT va domen merge
G-Counter, OR-Set, LWW-Register, Map, matnli OT/WOOT variantlarini muvofiqlashtirmasdan muvofiqlashtirishni kafolatlaydi.
Foydali boʻlganda: yoqtirishlar, koʻplab teglar, savatlar, hujjatlar.
Cheklovlar: aniq domen mohiyati uchun to’g "ri" qo’shilish "semantikasini o’ylab topish.
8) CAP/PACELC bilan aloqa
Ko’p mintaqada qat’iy modellar (Linearizable/Serializable) → Yashirin o’sish bilan CP (PACELC: C tanlaymiz va L to’laymiz).
Zaif/gibrid modellar → AP va/yoki past L, lekin merge/mojaro-rezolv kerak.
Gibrid: invariantlar uchun CP yadrosi + oʻqish uchun AP proyeksiyalari/keshlari.
9) Model tanlash: chek-varaq
1. Invariantlar: nimani buzmaslik kerak? (o’ziga xoslik, balans, limitlar).
2. Hududiylik: yozuvlar/oʻqishlar qayerda bajariladi? (lokal/global).
3. Latentlik boʻyicha SLO: kritik yoʻllar uchun p95/p99?
4. Muvofiqlashtirish narxi: mintaqalararo kvorumlar bilan to’lashga tayyormisiz?
5. Mojarolar: aniqlangan merge bormi yoki koordinator kerakmi?
6. UX-kutish: RYW/monotonic/causal mijoz uchun muhimmi?
7. Kuzatilganlik: qanday qilib lag/ziddiyat/eskirish darajasini o’lchaysiz?
8. Folbeklar: tarmoqni ajratishda nima sodir bo’ladi? read-only/lokal yozuv/navbat?
10) Tezkor retseptlar
To’lov/balans: Linearizable/Serializable, lider + kvorum, qisqa taymautlar; RYW oʻqish.
Profillar/fayl: Causal/Bounded staleness + kesh; layk/hisoblagichlar uchun CRDT; Muallif uchun RYW.
Qidirish/tahlil qilish: SI/Read Committed, asinxron proyeksiyalar, indekslar uchun eventual.
Global SaaS: Geo-partitioning; «uy yozuvlari» - CP, hisobotlar/kataloglar - AP.
Birgalikda tahrir qilish: sababiy/eventual + CRDT/OT; «tarix» ni saqlash.
11) Muvofiqlikni kuzatish
Lag metrika:’replication _ lag’,’staleness _ age _ ms’(p50/p95/p99).
Mojarolar: mojarolar ulushi, o’rtacha hal qilish vaqti.
Kvorumlar: R/W’kvorumlarning muvaffaqiyati, mintaqalararo yo’llarning taymautlari.
Mijoz kafolatlari: RYW/monotonic - sessiyalar bo’yicha treys-belgilar.
12) Tipik xatolar
Strong’ni biznes asosisiz «hamma joyda» talab qilish → yashirin va qiymat portlashi.
Dual-write turli mintaqalarga saqsiz/CRDT → fantomlar va invariantlarni yo’qotish.
UX → «yoʻqolish» dagi RYW/monotoniklikni eʼtiborsiz qoldirish.
Kesh/proyeksiyalarning eskirishini kuzatib bormaslik → «abadiy» tafovutlar.
Notoʻgʻri oʻylangan merge → kutilmagan yoʻqotishlar/qiymatlar dubli.
13) Arxitekturaning mini-etaloni
Write-core (CP): yetakchi, kvorum yozuvlari, SLO va taymautlar, jurnallar.
Read-plane (AP): materiallashtirilgan tasavvurlar, TTL-keshlar, read-repair.
Mijoz: sticky-session/sessiya kafolatlari (RYW/monotonic), versiya belgilari.
Mojaro dvigateli: CRDT/domen qoidalari, qoʻlda hal qilish navbati.
Monitoring: laglar, mojarolar, eskirgan o’qishlar ulushi.
Xulosa
Muvofiqlik modeli - ma’lumotlar, kechikish va foydalanish imkoniyati o’rtasidagi muhandislik kontraktidir. Invariantlar va SLO bilan boshlang, mijozlarning kafolatlari, kvorumlari, soatlari va kuzatish qobiliyatini unutmasdan, kerakli joyda va mumkin bo’lgan joyda zaifroq tanlang. Modellarning malakali kombinatsiyasi biznes haqiqati va foydalanuvchi ishonchini qurbon qilmasdan, miqyos, bashorat qilish va barqarorlik beradi.