Change Data Capture — ma’lumotlar bazasidagi insert, update va delete o‘zgarishlarini aniqlab, boshqa tizimlarga oqim sifatida yetkazish usulidir. CDC analitik ombor, qidiruv indeksi, kesh, audit va event-driven integratsiyani asosiy bazani doimiy to‘liq skan qilmasdan yangilashga imkon beradi.
O‘zgarishni olish usullari
Log-based CDC database transaction log, WAL yoki binlogni o‘qiydi. Har committed tranzaksiya tartibi va oldingi-keyingi qiymatlar mavjud imkoniyatga qarab olinadi. Bu usul asosiy jadvalga trigger qo‘ymaydi va odatda kamroq yuk beradi, lekin database format hamda retentionga bog‘liq.
Trigger-based yondashuv jadval triggeri orqali o‘zgarishni alohida outbox yoki audit jadvaliga yozadi. Semantika nazoratli, ammo har write’ga qo‘shimcha ish qo‘shadi va schema migratsiyasini murakkablashtiradi. Timestamp polling updated_at bo‘yicha yangi qatorlarni qidiradi; bir xil vaqt, clock va delete hodisasi sabab ishonchli cursor talab qiladi.
Tartib va delivery
CDC record odatda table, key, operation, position va transaction metadata’ni saqlaydi. Global tartib har doim mavjud emas; partitionlar bo‘yicha tartib bo‘lishi mumkin. Bir obyektning eventlari bir partitionga yo‘naltirilsa, consumer ketma-ket holatni saqlaydi. Parallel transaction va commit tartibi source semantikasi bilan bir xil talqin qilinadi.
At-least-once uzatishda record takror keladi. Consumer source position yoki event ID bo‘yicha idempotent ishlaydi. Exactly-once atamasi connector, broker va sink chegarasi bilan aniq izohlanadi; tashqi yon ta’sir baribir deduplication talab qilishi mumkin. Offset sink checkpointi bilan atomik saqlanmasa, crashda yo‘qotish yoki takror paydo bo‘ladi.
Snapshot va schema
Yangi consumer avval mavjud holat snapshotini oladi, keyin snapshot davomida yig‘ilgan log pozitsiyasidan streamga ulanadi. Chegara noto‘g‘ri bo‘lsa o‘zgarish tushib qoladi yoki ikki marta keladi. Katta snapshot source bazani band qilmasligi uchun rate limit, consistent read va replica ishlatiladi.
Schema evolution record formatiga ta’sir qiladi. Ustun qo‘shish backward compatible bo‘lishi mumkin, rename esa delete va add kabi ko‘rinadi. Schema registry yoki version metadata consumerga yangi maydonni tushunishga yordam beradi. Sensitive ustunlar CDC pipeline orqali ruxsatsiz sinkga tarqalmasligi uchun projection va access policy qo‘llanadi.
Monitoring replication lag, oxirgi source position, throughput, schema xatosi va dead-letter recordlarni ko‘rsatadi. Transaction log retention connector uzoq to‘xtaganda ham kerak segmentni saqlashi kerak; aks holda yangi snapshot talab qilinadi. Recovery runbook cursor va sink holatini birga tekshiradi.
Amaliy nazorat
Initial snapshot va transaction log position atomik muvofiqlashtirilmasa, snapshot bilan stream chegarasida event yo‘qolishi yoki takrorlanishi mumkin. Change Data Capture bo‘yicha nazorat faqat bitta input filterga tayanmaydi. API erkin sintaksis o‘rniga aniq identifikator va typed parametr qabul qiladi, jarayon esa least privilege bilan ishlaydi. Normal holat bilan birga encoding, duplicate, timeout, parallel so‘rov va qisman nosozlik test qilinadi. Production telemetry xato turi, kechikish va rad etilgan urinishlarni ko‘rsatadi, maxfiy payloadni to‘liq jurnalga yozmaydi. O‘zgarish avval kichik doirada sinovdan o‘tib, regression kuzatilmagach kengaytiriladi. Incident runbook ta’sirlangan obyektlarni aniqlash, credential yoki holatni tiklash va sababni kod darajasida bartaraf etishni belgilaydi.
Bog‘liq tushunchalar
Transaction log, Binlog, WAL, Outbox pattern, Event streaming, Schema evolution, Replication lag