Bosh sahifa Wiki Consistency level

Consistency level

Consistency level — taqsimlangan ma’lumotlar bazasida o‘qish yoki yozish muvaffaqiyatli deb hisoblanishi uchun nechta replika yoki qaysi izchillik kafolati talab qilinishini belgilovchi parametrdir. U latency, availability va stale data ehtimoli o‘rtasidagi muvozanatni boshqaradi. Bir xil nom turli bazalarda boshqa semantikaga ega bo‘lishi mumkin, shu sababli platforma hujjati asosiy manbadir.

Quorum modeli

N replika bo‘lsa, write concern W ta replika tasdig‘ini, read concern R ta javobni talab qilishi mumkin. R + W > N bo‘lsa read va write to‘plamlari kamida bitta replikada kesishadi. Ammo eng yangi versiyani tanlash, concurrent write, clock va hinted handoff qoidalari to‘liq kafolatga ta’sir qiladi; formula o‘zi linearizability isboti emas.

ONE bitta replika javobi bilan past latency beradi, lekin stale read yoki acknowledged write yo‘qolishi xavfi ko‘proq. QUORUM ko‘pchilikni talab qiladi. ALL barcha replika mavjud bo‘lmasa operatsiyani rad etadi. LOCAL_QUORUM ko‘p regionli tizimda faqat mahalliy data centerdagi ko‘pchilikni kutib, WAN latencydan qochadi.

Yozish va o‘qish

Yozuv bir replika ishlamayotganda hint sifatida saqlanishi va keyin yetkazilishi mumkin. Read repair o‘qishda turli versiyalarni topib, eski nusxani tuzatadi. Anti-entropy repair periodik ravishda barcha diapazonlarni solishtiradi. Ushbu mexanizmlar eventual convergence beradi, lekin repair oynasi ichida stale qiymat mavjud bo‘lishi mumkin.

Read-after-write talabi sessionni coordinatorga bog‘lash, monoton token yoki kuchli consistency level bilan ta’minlanadi. Faqat write uchun quorum, keyingi read uchun ONE ishlatilsa, read eski replikaga tegishi mumkin. Driver policy operatsiyalar ketma-ketligini hisobga oladi.

Conflict resolution

Bir vaqtning o‘zida ikki region ayni keyni yozsa last-write-wins timestampga qarab tanlashi mumkin. Soatlar farqi qonuniy yangi qiymatni yo‘qotadi. Vector clock yoki version concurrencyni aniqlab, application merge talab qiladi. CRDT ayrim data turlarida conflictni deterministik va birlashuvchi usulda hal qiladi.

Consistency level conflict modelini almashtirmaydi. Ko‘pchilik tasdig‘i bilan ham ikkita mustaqil kalit orasidagi biznes invariant tranzaksiyasiz buzilishi mumkin. Conditional write consensusga o‘xshash koordinatsiya bilan compare-and-set beradi, odatiy write dan sekinroq.

Nosozlik va timeout

Quorum uchun yetarli replika tirik bo‘lmasa unavailable xatosi oldindan kelishi mumkin. Replikalar tirik, ammo muddatda javob bermasa timeout bo‘ladi. Timeout operatsiya hech qayerda yozilmaganini anglatmaydi; idempotent retry va operation ID kerak.

Kuchli level har doim eng yaxshi emas. Telemetry va tavsiya cache si vaqtincha stale bo‘lishi mumkin, balans yoki lock esa kuchli kafolat talab qiladi. Har query va business invariant uchun level alohida tanlanadi. Monitoring level bo‘yicha latency, timeout, unavailable, replica lag va repair holatini ko‘rsatadi.

Tanlovning oqibati

Consistency levelni alohida texnik parametr sifatida emas, foydalanuvchi ko‘radigan invariant bilan bog‘lash kerak. Bank balansida eski o‘qish xavfli bo‘lishi mumkin, yangiliklar tasmasida esa qisqa kechikish qabul qilinadi. Bir tizimning turli operatsiyalari turli daraja ishlatishi mumkin; bunday farq hujjatlashtirilmasa, nosozlik paytida kutilmagan xatti-harakat paydo bo‘ladi.

Kuchliroq izchillik ko‘pincha ko‘proq tugun tasdig‘i va tarmoq kutishini talab qiladi. Zaifroq daraja kechikish va mavjudlikni yaxshilashi mumkin, ammo dastur ziddiyat, eskirgan o‘qish yoki qayta urinishni to‘g‘ri boshqarishi kerak.

Bog‘liq tushunchalar

Quorum, Eventual consistency, Strong consistency, Read concern, Write concern, Replica, Conflict resolution