Modern ELT Mimarilerine Giriş

Günümüzün veri odaklı dünyasında, işletmeler analiz ve karar verme süreçleri için verilerini ayıklama, yükleme ve dönüştürme (ELT) konusunda sürekli olarak verimli yollar aramaktadır. Geleneksel ETL süreçleri, modern veri akışlarının hızı ve hacmiyle başa çıkmakta genellikle zorlanır. İşte bu noktada, Kafka Connect, dbt ve Delta Lake gibi araçlardan yararlanan modern bir ELT mimarisi devreye girer. SoftCrafter olarak, sağlam veri çözümleri geliştirmede uzmanız ve özellikle gelişmiş kurumsal hizmetler ve veri içgörüleri arayan müşterilerimiz için bu teknolojilerin veri pipeline’larını nasıl dönüştürebileceğine ilk elden şahit olduk.

Bu makale, Kafka Connect aracılığıyla veri alımı yaparak ve Delta Lake’te güvenilir bir şekilde depolayarak dbt dönüşümlerinizi nasıl orkestre edebileceğinizi, ACID özelliklerini sağlayarak ve verimli, artımlı dönüşümleri mümkün kılarak ele alacaktır. Bu yaklaşım, özellikle gerçek zamanlı veri işleme ve analiz için tek bir doğru kaynak gerektiren senaryolar için faydalıdır.

Kafka Connect ile Veri Alımı

Kafka Connect, Apache Kafka ile diğer veri sistemleri arasında verileri ölçeklenebilir ve güvenilir bir şekilde akışla aktarmak için güçlü bir framework’tür. Verileri Kafka’ya ve Kafka’dan alma sürecini basitleştirir, çeşitli kaynaklar ve sink’ler için bir köprü görevi görür. ELT iş akışımız için Kafka Connect, ‘E’ (Extract) ve ‘L’ (Load) aşamalarından sorumlu olacak, verileri operasyonel veritabanlarından veya API’lerden veri gölümüze taşıyacaktır.

SoftCrafter’ın uzmanlık alanlarından biri olan bir e-ticaret platformu inşa ettiğinizi düşünün. Sipariş verileri bir PostgreSQL veritabanında bulunabilir. Kafka Connect, bir Debezium connector kullanarak bu veritabanındaki değişiklikleri sürekli olarak yakalayabilir ve doğrudan Kafka topic’lerine aktarabilir. Buradan, başka bir Kafka Connect sink connector’ü bu veriyi Delta Lake’e indirebilir.

{
  "name": "postgres-source-connector",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "postgres-db",
    "database.port": "5432",
    "database.user": "debezium",
    "database.password": "debezium",
    "database.dbname": "orders_db",
    "database.server.name": "postgres_server",
    "table.include.list": "public.orders,public.customers",
    "transforms": "unwrap",
    "transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState",
    "transforms.unwrap.drop.tombstones": "false",
    "transforms.unwrap.delete.handling.mode": "rewrite"
  }
}

Bu konfigürasyon, belirli tablolardaki değişiklikleri yakalamak için bir source connector kurar. ‘unwrap’ transform’u, CDC olaylarından yalnızca yeni kayıt durumunu almak için kritik öneme sahiptir ve downstream işlemleri kolaylaştırır. Bu tür sistemleri entegre etme hakkında daha fazla bilgi için, uzman rehberlik almak üzere her zaman SoftCrafter ile iletişime geçebilirsiniz.

Verileri Delta Lake ile Güvenilir Şekilde Depolama

Veriler Kafka’ya aktıktan sonraki adım, bunları sağlam bir depolama katmanına yüklemektir. Delta Lake, mevcut veri göllerine ACID işlemleri, ölçeklenebilir metadata yönetimi ve birleşik streaming ve batch veri işleme yetenekleri getiren açık kaynaklı bir depolama katmanıdır. Parquet dosyaları üzerine inşa edilmiştir ve Apache Spark ile sorunsuz bir şekilde çalışır.

Bir Kafka Connect Delta Lake sink connector kullanarak, verileri Kafka topic’lerinden Delta tablolara otomatik olarak indirebiliriz. Bu, Kafka’dan gelen her mesajın transaction’lı bir şekilde yazılmasını sağlayarak veri bozulmasını önler ve hatalar durumunda bile veri tutarlılığını garanti eder.

{
  "name": "delta-sink-connector",
  "config": {
    "connector.class": "io.delta.connect.DeltaSinkConnector",
    "topics": "postgres_server.public.orders,postgres_server.public.customers",
    "delta.table.name.format": "{topic}",
    "delta.output.mode": "append",
    "delta.checkpoint.location": "s3a://my-delta-lake/checkpoints/",
    "delta.table.path": "s3a://my-delta-lake/tables/"
  }
}

Bu sink connector, belirtilen Kafka topic’lerinden mesajları alır ve bunları S3’teki ilgili Delta tablolara ekler. delta.checkpoint.location, exactly-once işleme semantiğini sağlamak için hayati öneme sahiptir.

dbt ile Veri Dönüşümü

dbt (data build tool), veri analistlerinin ve mühendislerinin verilerini depolarında daha etkili bir şekilde dönüştürmelerini sağlayan açık kaynaklı bir araçtır. Dönüşümleri kod olarak ele alır, bu da versiyon kontrolü, test ve dokümantasyon imkanı sunar. Mimarimizde dbt, ‘T’ (Transform) aşamasını gerçekleştirmek için doğrudan Delta Lake’e (Spark veya uyumlu motorlar aracılığıyla) bağlanacaktır.

dbt ile dönüşümlerinizi SQL modelleri olarak tanımlarsınız. Örneğin, ham orders verilerinizden toplu bir daily_sales tablosu oluşturmak isteyebilirsiniz. Delta Lake, ACID işlemlerini ve şema evrimini desteklediği için dbt, artımlı modelleri verimli bir şekilde gerçekleştirebilir, yalnızca son çalışmadan bu yana yeni veya değişen verileri işleyebilir.

-- models/marts/daily_sales.sql

{{ config(
    materialized='incremental',
    unique_key='sale_date',
    incremental_strategy='merge'
) }}

SELECT
    CAST(order_timestamp AS DATE) AS sale_date,
    SUM(order_total) AS total_revenue,
    COUNT(DISTINCT customer_id) AS unique_customers
FROM {{ source('raw', 'orders') }}
{% if is_incremental() %}
  WHERE order_timestamp > (SELECT MAX(sale_date) FROM {{ this }})
{% endif %}
GROUP BY 1

Bu dbt modeli, artımlı bir build stratejisini göstermektedir. Günlük satışları toplar ve sonraki çalıştırmalarda, yalnızca tabloda zaten bulunan en son sale_date‘den daha yeni siparişleri işler. Bu, özellikle büyük ölçekli web geliştirme ve veri projeleri için hesaplama süresini ve kaynakları önemli ölçüde azaltır.

İş Akışını Orkestrasyon

Bu kurulumun gerçek gücü, bu bileşenleri orkestre etmekten gelir. dbt çalıştırmalarınızı tetiklemek için Apache Airflow, Prefect gibi araçları veya hatta basit bir cron job kullanabilirsiniz. İş akışı genellikle şöyle görünür:

  1. Kafka Connect, ham verileri sürekli olarak Kafka topic’lerine alır.
  2. Kafka Connect Delta Lake sink, ham verileri Kafka’dan Delta tablolara (örn. raw.orders, raw.customers) sürekli olarak yazar.
  3. Bir orchestrator (örn. Airflow), dbt çalıştırmalarını periyodik olarak (örn. saatlik, günlük) planlar.
  4. Bir dbt çalıştırması sırasında, dbt, ham Delta tablolarından okumak ve dönüştürülmüş verileri yeni Delta tablolara (örn. marts.daily_sales) yazmak için veri işleme motorunuza (Spark gibi) bağlanır.

Bu, sağlam, ölçeklenebilir ve gözlemlenebilir bir ELT pipeline’ı oluşturur. Kafka Connect’ten gelen gerçek zamanlı alım taze veri sağlarken, Delta Lake veri bütünlüğünü ve versiyonlamayı garanti eder ve dbt, veri dönüşümlerinize mühendislik en iyi uygulamalarını getirir. SoftCrafter olarak, sadece işlevsel değil, aynı zamanda sürdürülebilir ve ölçeklenebilir çözümler inşa etmeye inanıyoruz, bu mimari desenle mükemmel bir şekilde uyum sağlıyor.

Sonuç

Verimli veri alımı için Kafka Connect’i, güvenilir ve transaction’lı depolama için Delta Lake’i ve güçlü ve versiyon kontrollü dönüşümler için dbt’yi birleştirerek, son derece etkili bir ELT iş akışı oluşturabilirsiniz. Bu mimari, sadece veri pipeline’larınızı kolaylaştırmakla kalmaz, aynı zamanda ekibinizi zamanında ve doğru içgörüler sunmak için sağlam bir framework ile güçlendirir. İster gelişmiş mobil uygulamalar ister karmaşık web platformları inşa ediyor olun, sağlam bir veri temeli çok önemlidir. SoftCrafter’ın hizmetlerinin bu tür son teknoloji veri çözümlerini uygulamanıza nasıl yardımcı olabileceğini keşfedin.

ELT, dbt, Kafka Connect, Delta Lake, Data Engineering, Data Pipelines, SoftCrafter, Big Data

Kategori:

Veri Mühendisliği,

Son güncelleme: Ekim 13, 2026