Ana içeriğe geç

Databricks’te Delta Tablosu: Kapsamlı Rehber

Delta Tabloların toplu ve akış verisini nasıl birleştirdiğini, performansı nasıl artırdığını ve Databricks’in lakehouse mimarisinde analitiği nasıl basitleştirdiğini keşfedin.
· 12 dk. oku

Yapay Zeka ile Keşfedin

Delta Tablolar, Databricks’in lakehouse mimarisinin bir parçasıdır. Amaçları, veri ambarlarının güvenilirliğini veri göllerinin ölçeklenebilirliğiyle bir araya getirmektir. Farklı veri iş akışlarında çalışırken, Delta Tabloların sorguları nasıl hızlandırdığını (ve hata ayıklamayı nasıl kolaylaştırdığını) bizzat gördüm.

Bu rehberde, Delta Tabloların nasıl çalıştığını, neden önemli olduklarını ve projelerinizde nasıl kullanabileceğinizi açıklayacağım. Başlarken, Databricks Lakehouse platformunu, özelliklerini ve farklı kullanım senaryoları için nasıl yöneteceğinizi tanımak üzere Introduction to Databricks ve Databricks Concepts kurslarımızı almanızı öneririm. 

Delta Tabloların Mimari Temelleri

Delta Tabloların arkasındaki mimariyi anlamak, güçlerini gerçekten takdir etmenin anahtarıdır. Bu bölümde, modern veri iş yükleri için Delta Lake’i dayanıklı, yüksek performanslı ve güvenilir kılan bileşenleri parçalara ayıracağım.

Delta Tablolar ve Delta Lake nedir?

Delta Lake, ACID işlem garantilerini Apache Spark ve büyük veri iş yüklerine getiren açık kaynaklı bir depolama katmanıdır. Delta Tablolar, bu katmanın fiziksel yansımasıdır: işlemsel destek ve şema zorlaması ile zenginleştirilmiş, Parquet tabanlı veri tablolarıdır.

Databricks içinde, Delta Tablolar lakehouse mimarisinin varsayılan veri formatı olarak hizmet eder. Toplu ve akış iş yüklerini birleştirir, ölçeklenebilir veri hatlarını destekler ve zengin meta veriler ile sürüm kontrolü sayesinde yönetişimi basitleştirir.

Uygulamada, Delta Tabloları gerçek zamanlı analitikten ETL hatlarına, makine öğrenimi özellik mağazalarından düzenleyici denetim izlerine kadar pek çok yerde kullanıldığını gördüm. 

İşlem günlüğü ve ACID uyumluluğu

DeltaLog, tabloya yapılan her değişikliği kaydeden bir işlem günlüğüdür. Bu günlük, ölçek dahilinde tam ACID uyumluluğu sağlar. (ACID uyumluluğu, veri işlemlerinin ya hep ya hiç olması, tutarlı olması, diğer işlemlerden yalıtılmış olması ve hatalara rağmen kalıcı olması anlamına gelir.)

Delta Lake, çok sürümlü eşzamanlılık kontrolü (MVCC) ve iyimser eşzamanlılık protokolü kullanır; bu da birden fazla okuyucu ve yazıcının veriyle çakışma olmadan çalışmasına olanak tanır. Bir işlem tamamlandığında, en son tablo durumuna karşı işlemlerini doğrular ve çakışan değişiklik olmadığından emin olur.

DeltaLog’a yapılan her işlem, şu yapılandırılmış eylemleri kaydeder:

  • Ekle: tabloya eklenen yeni dosyalar
  • Kaldır: eski olarak işaretlenen dosyalar
  • Meta veriler: şema tanımları, özellikler ve kısıtlar

Bu kayıtlar, net ve denetlenebilir bir tablo geçmişi oluşturur. Böylece zaman yolculuğu, geri alma ve yeniden üretilebilir hatlar gibi özellikler mümkün olur.

Şema yönetimi ve evrimi

Delta Tablolar yazma-anında-şema (schema-on-write) modelini zorunlu kılarak tabloya yazılan tüm verilerin beyan edilen yapıyla eşleşmesini sağlar. Bu, aşağı akıştaki hataları önlemeye yardımcı olur ve hatları temiz ve tutarlı tutar.

Aynı zamanda, Delta şema evrimini de destekler. Bu, modeliniz değiştikçe yeni sütunlar ekleyebileceğiniz veya veri tiplerini terfi ettirebileceğiniz anlamına gelir. Sütun eşleme gibi özellikler şema değişikliklerini daha yönetilebilir kılar ve tür terfisi (örneğin int’ten long’a) veri kaybını önler. Delta Tablolar DeltaLog’u desteklediğinden, şema değişiklikleri de veri değişiklikleri gibi sürümlenir. Bu da geriye dönük uyumlu okumaları mümkün kılar. Böylece şemanız evrilse bile eski sorgular sorunsuz çalışır.

Delta ayrıca üretilen sütunları, zorunlu kılınabilir kısıtları ve özel meta veri etiketlerini destekler; bu da şemayı daha ifade gücü yüksek hale getirir ve veriyi daha öz-açıklayıcı kılar. Bu yetenekleri faydalı buldum.

Depolama katmanı optimizasyonu

Delta Tablolar, veriyi sütun bazlı Parquet formatında saklar ve yüksek kardinaliteli sütunlar üzerinde veriyi kümeleyerek daha hızlı okumalar için Z-Ordering ile optimize eder. Bu, seçici sorgularda performansı önemli ölçüde artırır. Delta Universal Format (UniForm), Delta Tabloların Databricks dışındaki araçlarca okunabilir olmasını sağlayarak birlikte çalışabilirliği güvence altına alır ve veri gölüne ekosistemler genelinde erişimi genişletir.

Depolama, akıllı dosya boyutlandırma ile daha da optimize edilir. Delta Lake, optimum dosya boyutlarını (100 ila 300 MB) korumak için otomatik sıkıştırma ve kutulama (bin-packing) stratejileri kullanır.

Veri atlama, önbelleğe alma ve otomatik indeksleme gibi özellikler sorgu performansını daha da artırır; Delta Tabloları hem büyük ölçekli analitik hem de gerçek zamanlı iş yükleri için ideal hale getirir

Databricks Lakehouse Mimarisinde Delta Tablolar.

Databricks Lakehouse Mimarisinde Delta Tablolar. Görsel: OpenAI.

Operasyonel İş Akışları

Bu bölümde, Delta Tabloların nasıl oluşturulduğunu, veriyle nasıl beslendiğini ve veri yaşam döngüsünün farklı aşamalarında nasıl değiştirildiğini açıklayacağım.

Tablo oluşturma ve dönüştürme

İş akışınıza ve tercihlerinize bağlı olarak, Delta Tabloları birkaç yöntemle oluşturabilirsiniz. Databricks SQL DDL ifadelerini, örneğin CREATE TABLE ... USING DELTA kullanabilir veya PySpark, Scala ya da Spark SQL ile DataFrame’ler üzerinden programatik olarak oluşturabilirsiniz. Bu esneklik, etkileşimli not defterleri ve otomatik ETL işleri arasında tablo tanımlarını standartlaştırmamı sağladı.

Halihazırda Parquet veya Iceberg formatlarında veriniz varsa, Delta Lake tek seferlik ve artımlı dönüştürmeyi destekler. Statik veri kümeleri için CONVERT TO DELTA ile tek seferlik dönüşüm yapabilir veya tablo sürümleme ve checkpoint stratejileri kullanarak aktif yazılan veriler için artımlı dönüşüm gerçekleştirebilirsiniz.

Şu kursumuzu almanızı da öneririm: Introduction to Spark with sparklyr in R; Spark DataFrame’lerinde devasa veri kümelerini nasıl yöneteceğinizi öğrenin.

Veri alma ve yönetimi

Delta Lake, otomatik şema çıkarımıyla bulut depolamadan veriyi yapılandırılmış şekilde yükleyen COPY INTO dahil çeşitli alma yöntemlerini destekler. Ancak Auto Loader, özellikle akış veya sık güncellenen veri kümeleri için sürekli veri alımında kullanışlıdır ve giriş hacminiz arttıkça otomatik olarak ölçeklenir.

Databricks’teki Add Data arayüzü, yerel dosyaları yüklemek veya bulut kaynaklarını gezmek için basit ve etkileşimli bir yol sunar; bu da hızlı denemeler veya daha az teknik kullanıcıların işe alıştırılması için pratiktir.

Veriyi toplu ve akış modlarında da alabilir, aynı Delta Tablosunu kullanarak gerçek zamanlı ve tarihsel veriyi yöneten birleşik hatlar oluşturabilirsiniz. Fivetran, Informatica ve dbt gibi üçüncü taraf araçlarla entegrasyon, Delta Lake’in erişimini daha da genişletir ve Delta’yı daha büyük kurumsal ekosistemlere bağlamanızı sağlar.

Veri değiştirme işlemleri

Delta Lake, geleneksel veri göllerinden daha gelişmiş hale getiren tam DML’yi (Veri İşleme Dili) destekler. SQL veya PySpark sözdizimini kullanarak Delta Tablolar içinde doğrudan UPDATE, DELETE, MERGE ve UPSERT işlemleri yapabilirsiniz. Bu sayede, müşteri kayıtlarını düzeltmek veya politika değişikliklerini uygulamak gibi iş olaylarına neredeyse gerçek zamanlı tepki veren hatlar kurabildim. Veri işleme için PySpark kullanmanın Cleaning Data with PySpark kursumuzu almanızı öneririm; yöntemleri ve en iyi uygulamaları öğrenin.

Delta Tablolar zaman yolculuğu sorgularını da destekler; burada sürüm numaralarına veya zaman damgalarına odaklanarak önceki tablo durumlarını sorgulayabilirsiniz. (Bu, özellikle denetimlerde çok önemlidir.) Change Data Feed (CDF) özelliği satır düzeyinde değişiklik günlükleri sağlar; böylece aşağı akış tüketicileri, tam tabloları yeniden okumadan güncellemeleri artımlı olarak işleyebilir; bu da gerçek zamanlı panolar için faydalıdır.

Ayrıca, şema evriminin değiştirme iş akışlarını doğrudan etkilediğini de belirtmeliyim. Örneğin, yeni bir sütun eklemek mevcut bir birleştirme (merge) ifadesini bozmaz; ancak tür değişiklikleri, özellikle yönetişimin sıkı olduğu ortamlarda dikkatli ele alınmalıdır.

Performans Optimizasyonu Çerçevesi

Hızlı, maliyet etkin ve güvenilir analitik için performansı en üst düzeye çıkarmak üzere kullandığım en iyi uygulamaları paylaşayım.

Dosya yönetimi stratejileri

En yaygın performans tuzaklarından biri, dosya boyutlarının uygunsuz olmasıdır; çok sayıda küçük dosya ya da tek parça dev dosyalar. Delta Lake bu sorunu otomatik sıkıştırma ve kutulama ile çözer; dosyaların 100–300 MB aralığında kalmasını sağlar. Bu süreçleri elle tetikleyebilir veya tablo özellikleriyle yapılandırabilirsiniz.

Analitik iş yükleri için Z-Ordering, Delta Lake’te veriyi bir veya daha fazla yüksek kardinaliteli sütuna göre yeniden sıralayarak sorgularda taranan dosya sayısını azaltan araçlardan biridir. VACUUM komutu, uzun vadeli depolama sağlığını korumak için önceki sürümlerden kalan, artık referans verilmeyen veri dosyalarını kaldırmaya yardımcı olur. Zaman yolculuğunda kullanılan dosyaları silmemek için saklama süresi konusunda dikkatli olmak, tablo hijyeninin önemli bir parçasıdır.

Sorgu ve depolama performans ayarı

Delta Tablolar, sorgu ve depolama performansını ayarlamak için çeşitli gelişmiş özellikler sunar. Veri atlama, bölümleme ve kümeleme, sorgular sırasında taranan veri miktarını en aza indirirken dinamik dosya budama (DFP), gereksiz dosya okumalarını ortadan kaldırarak birleşim performansını optimize eder. 

Doğru küme boyutu ve yapılandırmasını seçmek anlamına gelen donanım sağlama, delta önbellekleme ile birleştiğinde tekrarlanan sorguları hızlandırabilir. Databricks’te otomatik iş yükü optimizasyonu da kaynakların verimli kullanılmasını sağlar. Bölüm budama ve optimize birleşim stratejileri, büyük veri kümeleri için önemlidir; sorguların daha hızlı ve daha öngörülebilir çalışmasını sağlar.

Delta tablolarını optimize etmek için optimize yazımlar.

Delta tablolarını optimize etmek için optimize yazımlar. Görsel kaynağı: Delta Lake.

Akış entegrasyonu

Delta Tablolar, toplu ve akış iş yüklerini birleştirmek üzere tasarlanmıştır. Özellikle karmaşık akış senaryolarında tam-bir-kez (exactly-once) işleme ve tetikleme-bir-kez (trigger-once) işlevleri veriyi tutarlı kılar. Oran sınırlandırma ise veri alma hızını kontrol eder. 

Gelişmiş Ekosistem Yetenekleri

Bu bölümde, Delta Tabloları kurumsal düzeyde eksiksiz bir çözüme dönüştüren bazı gelişmiş entegrasyon ve optimizasyonları öne çıkaracağım.

Delta paylaşım protokolü

Delta Sharing Protokolü, organizasyon ve platform sınırları arasında güvenli ve ölçeklenebilir veri paylaşımını mümkün kılmak için Databricks tarafından geliştirilen açık bir standarttır. Geleneksel veri dışa aktarımlarından farklı olarak Delta Sharing, alıcılara verinin en güncel haline çoğaltma olmadan canlı erişim sağlar.

İki temel paylaşım senaryosu vardır:

  • Databricks’ten Databricks’e: Çalışma alanları veya hesaplar arasında Delta Tabloları ayrıntılı erişim kontrolleriyle güvenli şekilde paylaşın.
  • Açık paylaşım: Delta verisini Databricks dışındaki kullanıcılar veya araçlarla paylaşın; örneğin bir URL belirteci kullanarak veya Pandas, Power BI ya da Apache Spark gibi açık kaynaklı istemciler üzerinden veri erişimini etkinleştirerek.

Databricks delta paylaşım protokolü.

Databricks delta paylaşım protokolü. Görsel kaynağı: Databricks.

Delta Engine ve özellik uyumluluğu

Delta Engine, Delta Tablolar için optimize edilmiş, yüksek performanslı bir sorgu motorudur. Databricks SQL ve Photon ile bütünleşir; Photon, modern CPU mimarilerinden yararlanarak SQL ve DataFrame iş yüklerini hızlandıran vektörize bir yürütme motorudur. Bu da özellikle büyük ölçekli analitik ve karmaşık sorgularda önemli performans kazanımları sağlar.

Delta Engine, maddileştirilmiş görünümler gibi gelişmiş özellikleri destekler. Maddileştirilmiş görünümlerin akış tablolarından farklı olduğunu not etmek önemlidir. Maddileştirilmiş görünümler tekrarlanan, öngörülebilir sorgular için optimize edilirken, akış tabloları sürekli, gerçek zamanlı veri alımı ve işleme için tasarlanmıştır.

Dinamik dosya budama (DFP)

Dinamik Dosya Budama (DFP), birleşim sorguları sırasında kullanılan bir optimizasyon tekniğidir. Spark’ın, birleşim anahtarlarına göre okuma tarafındaki gereksiz dosyaları filtrelemesine olanak tanır. Birleşimin sağ tarafının tamamını taramak yerine DFP, taramayı yalnızca ilgili dosya bloklarıyla sınırlar. Bu teknik, bölümlenmiş veri kümelerinde veya müşteri, bölge ya da ürün bazında filtreleme yapıldığında performansı iyileştirir.

Uygulamada, DFP’nin ETL hatları veya analitik panolar gibi büyük, bölümlenmiş tabloların birleştirildiği yerlerde önemli fark yarattığını gördüm. Bu da daha hızlı, daha verimli işlemeye ve daha düşük hesaplama maliyetlerine yol açar.

Operasyonel En İyi Uygulamalar

Delta iş akışları kurup ölçeklendirirken edindiğim temel en iyi uygulamalar aşağıdadır:

  • Dosya boyutu yönetimi: Küçük dosya sorunlarını azaltmak ve tarama performansını iyileştirmek için veriyi otomatik sıkıştırma veya OPTIMIZE ile 100 ila 300 MB arasında tutun.

  • Zaman yolculuğu yapılandırması: Geri alma esnekliği ile depolama verimliliği arasında denge kuracak makul saklama süreleri belirlemek için dataRetentionDuration veya VACUUM kullanın.

  • Eşzamanlılık kontrolleri: Çok kullanıcılı yazmaları yönetmek ve işlem onayı çakışmalarını azaltmak için yalıtım seviyelerini ve iyimser eşzamanlılık kontrolünü kullanın.

  • Maliyet optimizasyonu: Özellikle tekrarlanan sorgular için hesaplama maliyetlerini en aza indirmek üzere Photon, Delta Caching ve Z-Ordering’den yararlanın.

  • Performansı izleyin: Yavaş sorguları tespit etmek ve kaynak kullanımını optimize etmek için Query Profile, Lakehouse Monitoring ve Workload Utilization Reports’u kullanın.

  • Bölümleme ve veri yerleşimi: Veri taramalarını en aza indirmek için tabloları yalnızca tarih veya konum gibi düşük kardinaliteli sütunlara göre bölümleyin. Yüksek kardinaliteli alanlar için bölümler içinde Z-Ordering kullanın. Aşırı bölümlemeden kaçının; bu, küçük dosyalara ve performans düşüşüne yol açabilir.

Geleneksel Mimarilerle Karşılaştırmalı Analiz

Delta Tabloların nedenlerini çokça konuştum, ancak hem daha geleneksel veri gölü yapılarıyla hem de Databricks içindeki diğer tablo türleriyle karşılaştırmak da faydalıdır:

Özellik

Delta Tablolar

Hive Tabloları

Delta Live Tables (DLT)

Akış Tabloları

Maddileştirilmiş Görünümler

ACID İşlemleri

Tam destek

Sınırlı/Yok

Delta üzerinde kurulu

Delta aracılığıyla

Delta’nın üzerinde

Şema Zorlaması

Yazmada zorunlu

Manuel zorlama

Bildirimsel + yönetilen

Akış uyumluluğuyla

Temel Delta Tablosunu izler

Zaman Yolculuğu

Yerleşik

Desteklenmez

Delta’dan devralınır

(sürüm-farkında okumalar)

Yenilemeye bağlı

Akış Desteği

Birleşik toplu/akış

Ayrı ele alma

Otomatik yönetilen

Yerel destek

Yalnızca periyodik güncelleme

Meta Veri Ölçeklenebilirliği

Büyük tablolarla ölçeklenir

Bölümlerle yavaşlar

DLT ile optimize

Günlük takibiyle

Delta’dan devralır

Operasyonel Yönetim

OPTIMIZE, VACUUM vb. ile

Manuel ve kırılgan

DLT hatları tarafından yönetilir

Yapılandırılabilir tetikleyiciler

Yenileme ve önbellek seçenekleri

Yaygın Kullanım Senaryoları ve Uygulamalar

Şimdi, Delta Tabloların değer sunduğu yaygın kullanım senaryolarına bakalım.

  • Veri ambarı: ACID uyumluluğu, zaman yolculuğu ve şema zorlaması gibi özelliklerle Delta Tablolar, bulut depolamada yapılandırılmış raporlama, boyutsal modelleme ve iş zekâsı iş akışlarını destekler.
  • Gerçek zamanlı analitik: Delta Tablolar toplu ve akış iş yüklerini birleştirir; gerçek zamanlı içgörü gerektiren panolar ve izleme sistemleri için idealdir.
  • Artımlı iş yükleri: Change Data Feed (CDF) ve verimli birleştirme işlemleriyle Delta Tablolar, yavaş değişen boyutları, upsert’leri ve CDC tabanlı alma desenlerini ölçekte yönetir; bu desenler işlem ve IoT sistemlerinde yaygındır.

Sonuç

Delta Tablolar, Databricks’te veriyi yönetmek için güvenilir ve esnek bir çözüm sunar; gerçek zamanlı ve toplu analitiği destekler. Delta Lake ekosistemi evrilmeye devam ediyor; yeni özellikler veri paylaşımını, yönetişimi ve performansı daha da kolaylaştırıyor.

Veri ambarı becerilerinizi geliştirmek istiyorsanız, veritabanlarını nasıl tasarlayıp kullanacağınızı öğrenmek için Associate Data Engineer in SQL kursumuzu almanızı öneririm. Mülakatlarınıza hazırlanırken, diğer adaylar arasında öne çıkmak için Top 20 Databricks Interview Questions yazımıza da göz atın.

Allan Ouko

Yazar

Allan Ouko

Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

SSS

Delta Lake açık kaynak mı?

Evet, Delta Lake Linux Foundation çatısı altında açık kaynaklı bir projedir.

Delta, Parquet’ten nasıl farklıdır?

Delta, sürümleme ve güvenilirliği desteklemek için Parquet’in üzerine bir işlem günlüğü ve meta veri yönetimi ekler.

Mevcut bir Parquet tablosunu Delta’ya dönüştürebilir miyim?

Evet, mevcut Parquet tablolarını tek seferlik veya artımlı dönüşüm için CONVERT TO DELTA komutunu kullanarak Delta’ya dönüştürebilirsiniz.

Delta’da Z-Ordering nedir?

Z-Ordering, seçili sütunlarda daha hızlı filtreleme için veri yerleşimini optimize eder.

Delta verisini Databricks dışında paylaşabilir miyim?

Evet, açık konektörlerle Delta Sharing protokolünü kullanarak Delta verisini Databricks dışında paylaşabilirsiniz.

Konular

İlgili