Ana içeriğe geç
Kesit SQL
İleri · Veri Mühendisliği

Değişen veriyi yakalamak (CDC, change data capture)

Sorgulayarak mı günlükten mi okumalı; silmeler, sıra, tekrar eden olaylar ve zamanlama.

Uygulamada aç, 4 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Kaynak sistemdeki her değişikliği ambara taşımak istiyorsun, ama her gece tüm tabloyu kopyalamak pahalı. CDC (change data capture) yalnız değişen satırları yakalar.

İki yol

YolNasılKaçırdığı ya da bedeli
Sorgulayarak (polling)WHERE updated_at > :watermark ile değişenleri çekerFiziksel silmeleri görmez; aynı satırın iki değişimi arasındaki ara hâli kaçırır; updated_at güncellenmiyorsa hiçbir şey görmez
Günlükten (log-based)Veritabanının işlem günlüğünü okur: PostgreSQL mantıksal çoğaltma (wal_level = logical), MySQL binlog, SQL Server CDC (sys.sp_cdc_enable_table). Debezium gibi araçlar bunları olay akışına çevirirSilmeler dahil her değişikliği sırayla görür; ama kurulum ve yetki ister, günlük saklama süresi dolarsa olay kaybolur

Olayları hedefe uygulamak

Bir değişiklik olayı en az şunları taşır: anahtar, işlem türü (ekleme, güncelleme, silme), yeni değerler, sıra bilgisi. Üç kural:

WITH s AS (
  SELECT product_id, new_price, updated_at,
         ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY updated_at DESC) AS sira
  FROM price_updates
)
SELECT product_id, new_price, updated_at
FROM s
WHERE sira = 1;
ZamanlamaBu işleri Airflow gibi bir orkestrasyon aracı sıraya koyar: bağımlılık, yeniden deneme ve izleme onun işidir. SQL tarafında senin sorumluluğun, bir adım iki kez çalışsa da sonucu bozmayan sorgu yazmaktır. Toplu yüklemede watermark: Artımlı yükleme dersi.
Alıştırmalara geç (4)