CDC: Veri Değişikliklerini Gerçek Zamanlı Olarak Yönetme Sanatı

Burak Uğur
5 min readSep 13, 2023

--

Veri, günümüzün iş dünyasında belki de en değerli varlık haline gelmiştir. Her gün milyonlarca veri noktası oluşturuluyor ve bu veriler, işletmelerin daha iyi kararlar almasına, yeni fırsatlar keşfetmesine ve müşterilerine daha iyi hizmet sunmasına yardımcı oluyor. Ancak veri, bir nehir gibi sürekli akar, değişir ve evrilmeye devam eder. İşte bu noktada Change Data Capture (CDC) yöntemleri, veri akışının tüm bu değişikliklerini yakalama ve işleme konusunda bir devrim yaratmıştır.

Bu makalede, Change Data Capture yöntemlerinin iş dünyasında nasıl bir dönüşüm yarattığını ve hangi avantajları sunduğunu keşfedeceğiz. Ayrıca, CDC’nin kullanım örneklerine ve potansiyel zorluklarına da göz atarak, bu önemli teknolojinin veri odaklı bir dünyada neden vazgeçilmez olduğunu anlamaya çalışacağız.

Change Data Capture Ile Veri Replikasyonu Nedir?

source

CDC, adından da anlaşılacağı gibi, veri kaynaklarında meydana gelen değişiklikleri yakalamak ve bu değişiklikleri hızlı ve etkili bir şekilde analiz etmek için kullanılan bir veri entegrasyon yöntemidir. Bu yöntem, veri tabanlarının, uygulamaların veya diğer veri kaynaklarının içeriğindeki herhangi bir değişikliği tespit ederek bu değişiklikleri kaydeder ve bu bilgiyi ilgili sistemlere ileterek veri entegrasyonunu sağlar. Peki, CDC’nin bu veri çılgınlığı içindeki önemi nedir ve avantajları nelerdir?

Özet olarak bir veritabanının tüm anlık görüntüsünün tekrar tekrar diğer veritabanına taşımak için oluşturulan snapshot’un bir alternatifidir.

En Yaygın CDC Kullanım Durumları

  1. İş Zekası ve Analitik için Veri Depolama
  2. Veritabanı Taşıma
  3. Veri Kurtarma

Üretim veritabanları yazma işlemleri için tasarlandığından, verileri kararlı bir kullanıma sokmak için pek bir şey yapmazlar. Bu nedenle bir çok kuruluş, verileri, analitik ve iş zekası için karmaşık okuma işlemlerini yürütebilecekleri bir veri ambarına kopyalamak ister bu noktada CDC kullanılabilir.

CDC aynı zamanda, bir veritabanı teknolojisinden diğerine geçiş yaparken de kullanışlıdır.

Geçiş durumuna benzer şekilde CDC, bir veri tabanında kesinti olması durumunda tüm verilerinizin birden fazla fiziksel konumda her zaman kullanılabilir olmasını sağlamanın etkili ve potansiyel olarak uygun maliyetli bir yoludur.

Yaygın CDC Teknikleri ve Avantajları

A. Query-Based CDC

Sorgu tabanlı CDC oldukça basittir. Bu teknikte tek yapmanız gereken, belirli bir tablodan veri seçmek için basit bir seçme sorgusu ve ardından “yalnızca dün güncellenen veya eklenen verileri seç” gibi bir koşul yazmaktır. İkincil bir tablo için şemanın zaten yapılandırılmış olduğunu varsayarsak, bu sorgular daha sonra bu değiştirilen verileri alacak ve verilerle birlikte yeni bir konuma eklenebilecek yeni, iki boyutlu bir tablo üretecektir.

Avantajları

Son derece esnek: Hangi değişikliklerin yakalanacağını ve bunların nasıl yakalanacağını tanımlamanıza olanak tanır. Bu, replication sürecini çok ayrıntılı bir şekilde özelleştirmeyi kolaylaştırır.

Yükü azaltır: Yalnızca belirli kriterleri karşılayan değişiklikleri yakalar; dolayısıyla bir veritabanındaki tüm değişiklikleri yakalayan CDC’den çok daha ucuzdur.

Sorun gidermek daha kolaydır: Herhangi bir sorun olması durumunda bireysel sorgular kolayca incelenebilir ve düzeltilebilir.

Dezavantajları

Karmaşık bakım: Her bir sorgunun sürdürülmesi gerekir. Örneğin, veritabanınızda birkaç yüz tablo varsa, muhtemelen bu kadar çok sorguya da ihtiyacınız olacaktır ve bunların hepsini sürdürmek bir kabus olacaktır. Bu ana dezavantajdır.

Daha yüksek gecikme: Çoğaltma sürecinde gecikmelere neden olabilecek değişiklikler için yoklamaya dayanır. Bu, seçme sorgularını kullanarak gerçek zamanlı çoğaltmalar elde edemeyeceğiniz ve bir tür toplu işleme zamanlamanız gerekeceği anlamına gelir. Müşteri davranışı gibi uzun bir zaman serisini kullanarak bir şeyi analiz etmeniz gerekiyorsa bu pek sorun olmayabilir.

B. Log-Based CDC

Bugün kullandığımız çoğu veritabanı teknolojisi dağıtık mimariyi destekler; Bu, yüksek kullanılabilirlik elde etmek için bunları birden fazla kopya halinde çalıştırabileceğiniz anlamına gelir. Bu tür teknolojilerin, veritabanındaki tüm değişiklikleri yakalayan bir tür ikili günlüğe sahip olması gerekir. Günlük tabanlı CDC’de değişiklikler veritabanının kendisi yerine günlükten okunur ve ardından hedef sisteme kopyalanır.

Avantajları

Düşük gecikme: Veri değişiklikleri, alt sistemlere çok hızlı bir şekilde kopyalanabilir.

Yüksek Doğruluk : Günlükler , veri tanımlama dili (DDL) değişiklikleri ve veri işleme dili (DML) değişiklikleri dahil olmak üzere veritabanındaki tüm değişiklikleri yakalar. Bu, silinen satırların izlenmesini mümkün kılar (bu, sorgu tabanlı CDC ile imkansızdır).

Dezavantajları

Daha yüksek güvenlik riski :Veritabanı işlem günlüğüne doğrudan erişim gerektirir. Bu, kapsamlı erişim düzeyleri gerektireceğinden güvenlik endişelerini artırabilir.

Sınırlı esneklik : Veritabanındaki tüm değişiklikleri yakalar, bu da değişiklikleri tanımlama ve çoğaltma sürecini özelleştirme esnekliğini sınırlar. Özelleştirme gereksinimlerinin yüksek olması durumunda, günlüklerin yoğun bir şekilde sonradan işlenmesi gerekecektir.

C. Trigger-Based CDC

Tetikleyici tabanlı yöntemler, INSERT, UPDATE ve DELETE yöntemleriyle ilgili tüm olayları yakalamak için veritabanında denetim tetikleyicileri oluşturmayı içerir. Bu yöntemin avantajı, her şeyin SQL düzeyinde gerçekleşmesi ve geliştiricinin yalnızca tüm denetim günlüklerini içeren ayrı bir tabloyu okumasının yeterli olmasıdır.

Avantajları

Esneklik: Silinen satırlar da dahil olmak üzere (günlük tabanlı CDC’de olduğu gibi), hangi değişikliklerin yakalanacağını ve bunların nasıl yakalanacağını (sorgu tabanlı CDC’de olduğu gibi) tanımlamanıza olanak tanır.

Düşük gecikme: Bir tetikleyicinin her tetiklenmesi bir olay olarak sayılır ve olaylar gerçek zamanlı veya neredeyse gerçek zamanlı olarak işlenebilir.

Dezavantajları

Karmaşık bakım : Tıpkı sorgu tabanlı CDC’deki sorgular gibi, tüm tetikleyicilerin ayrı ayrı bakımının yapılması gerekir. Yani 200 tablodan oluşan bir veritabanınız varsa ve bunların tamamındaki değişiklikleri yakalamanız gerekiyorsa, genel bakım maliyetiniz çok yüksek olacaktır.

Postgres tablosunda tetikleyici oluşturmak için aşağıdaki komutu çalıştırın.

SELECT Audit.audit_table(‘target_table’);

Bu ifade, denetim şemasına erişim iznine sahip bir kullanıcı rolüyle yürütülecektir. Tablolara yazan uygulamanın süper kullanıcı rolü kullanarak veritabanına bağlanmaması gerekir.

CDC için Kullanılan Araçlar

Debezium

Debezium, değişiklik olan verilerinin yakalanması için açık kaynaklı, dağıtık mimariyi destekleyen bir platformdur. Uygulamayı başlatıp basit şekilde ayar yaptıktan sonra; Diğer uygulamaların veri tabanına uygulanan tüm ekleme, güncellemelere ve silme işlemlerine yanıt vermeye başlayacaktır. Debezium dayanıklı ve hızlıdır, böylece isteklerinize hızlı bir şekilde yanıt verebilir ve işler ters gittiğinde bile hiçbir veriyi kaçırmaz.

--

--