Clickhouse-Postgresql Arasında Change Data Capture ve Trino Entegrasyonu - Overview
Change Data Capture - CDC
Change Data Capture, bir veritabanında yapılan veri değişikliklerini (insert, update, delete gibi) gerçek zamanlı olarak tespit edip bu değişiklikleri başka bir sisteme aktarma yöntemidir.
CDC, özellikle mikro hizmet mimarilerinde, veri analitiği platformlarında ve veri eşitleme senaryolarında kritik bir rol oynar.
Bu raporda CDC'nin temel mantığı ve PostgreSQL, Kafka, Debezium, ClickHouse ve Trino gibi teknolojiler kullanılarak nasıl gerçekleştirilebileceği açıklanmaktadır.
CDC’nin Amacı
CDC, büyük ve karmaşık sistemlerde veri değişikliklerini izlemek ve bu değişiklikleri başka sistemlere gerçek zamanlı olarak iletmek için kullanılır.
Bu yöntem sayesinde:

Veri tutarlılığı sağlanır.

Gerçek zamanlı analitik yapılabilir.

Sistemler arasında veri entegrasyonu mümkün hale gelir.

Veritabanında yük oluşturmadan veri çoğaltma yapılabilir.
Bu projede CDC Sürecinde Kullanılan Teknolojiler:
- PostgreSQL
CDC sürecinin başlangıç noktasıdır. Veriler burada saklanır ve yapılan değişiklikler (örneğin bir kaydın eklenmesi, güncellenmesi veya silinmesi) write-ahead log (WAL) adı verilen bir kayıt mekanizmasıaracılığıyla izlenir. PostgreSQL’in mantıksal çoğaltma (logical replication) özelliği, bu değişikliklerin yakalanmasını sağlar.
Mantıksal çoğaltma, Debezium gibi araçların PostgreSQL’den veri değişikliklerini okumasına olanak tanır. Böylece veritabanında yapılan değişiklikler tespit edilip dış sistemlere iletilebilir.
- Debezium
Debezium, veritabanında yapılan değişiklikleri gerçek zamanlı olarak yakalayan bir Change Data Capture (CDC) aracıdır. PostgreSQL'deki mantıksal çoğaltma yuvasını kullanarak değişiklikleri okur ve bu değişiklikleri Apache Kafka’ya aktarır.
Bu değişiklikler genellikle JSON formatında Kafka’ya iletilir.
- Apache Kafka
Kafka, CDC sürecinde merkezi bir veri iletim omurgası olarak görev yapar. Debezium’dan gelen veriler, Kafka’da topic adı verilen bölümlerde saklanır. Bu veriler, daha sonra ihtiyaç duyan sistemlere veya uygulamalara dağıtılabilir.
- ClickHouse
CDC sürecinde, Kafka’dan gelen veriler hızlı ve performanslı bir şekilde ClickHouse’a yazılabilir. ClickHouse’un kolon bazlı mimarisi, büyük veri kümeleri üzerinde analitik sorguların hızlı bir şekilde yapılmasını sağlar.
Kafka’daki CDC verileri, ETL süreçleri aracılığıyla ClickHouse’a yazılır.
- Trino
Trino, birden fazla veri kaynağını birleştirerek sorgulama yapma yeteneği sunar. CDC sürecinde, hem Kafka hem de ClickHouse gibi veri kaynaklarından gelen veriler üzerinde birleşik analizler yapılabilir.
Zookeeper
Zookeeper, dağıtık sistemlerde koordinasyon hizmeti sağlayan bir araçtır. Kafka gibi sistemlerin birden fazla düğüm üzerinde kararlı bir şekilde çalışmasını sağlamak için kullanılır. Lider seçimi, yapılandırma yönetimi ve durum takibi gibi işlemler için kritik öneme sahiptir.
CDC Süreci

Veri Değişikliği: PostgreSQL üzerinde bir veri eklenir, güncellenir veya silinir.

WAL Kaydı: PostgreSQL, bu değişikliği WAL’e kaydeder.

Debezium’un Yakalaması: Debezium, mantıksal çoğaltma özelliğini kullanarak bu değişikliği okur ve Kafka’ya gönderir.

Kafka’ya Yazma: Kafka, Debezium’dan gelen veriyi uygun bir topic’e kaydeder.

ClickHouse, bu veriyi Kafka’dan okuyarak analitik için saklar.
