Snowflake Dynamic Tables Açıklandı: Modern Veri Boru Hatları
Snowflake Dynamic Tables’ın, yenilemeleri Snowflake’in yönetmesine izin vererek karmaşık ve zaman açısından hassas ETL süreçlerinizi nasıl basitleştirebileceğini öğrenin.
Snowflake’in Dynamic Tables özelliği, veri mühendislerinin boru hattı araç setinde güçlü bir araçtır. Temelde, temel tablolar üzerinde dönüşüm sorguları kullanarak yeni tablolar üreten otomatik yenileme süreçleridir.
Dynamic Tables, veri tazeliğinin önemli olduğu ve SQL tabanlı karmaşık dönüşümlerin gerektiği veri orkestrasyon boru hatlarını basitleştirir. Temel tablolardaki değişikliklere göre tabloları yenilemek için gecikme (lag) esaslı zamanlama kullanırlar.
Yakın zamanda yapılan iyileştirmeler, neredeyse gerçek zamanlı veri yayılımını ve Snowflake ekosistemi içinde daha derin entegrasyonu mümkün kılarak yeteneklerini güçlendirdi (konuya hızlı bir giriş için şu tanıtım kursuna göz atın).
Bu rehber, Dynamic Tables’ın nasıl çalıştığını, nasıl etkili şekilde uygulanacağını ve performansın nasıl izlenip optimize edileceğini inceler. Sonunda, bu uygulamaları değerlendirip test ederek kuruluşunuzun veri ihtiyaçlarına uyup uymadığını görecek donanıma sahip olacaksınız.
Snowflake Dynamic Tables Nedir?
Dynamic Tables, veri boru hatlarını kolaylaştırıp otomatikleştirmeye yardımcı olan, tamamen yönetilen bir Snowflake veritabanı nesneleri sınıfıdır.
Harici orkestrasyon araçları kullanmak veya manuel yenilemeleri kaynak tablo güncellemeleriyle zamanlamaya çalışmak yerine, Dynamic Tables kaynak verideki değişikliklere ve tanımlanmış tazelik hedeflerine göre otomatik olarak güncellenir. Bu sayede veri profesyonelleri, veriler değiştikçe ihtiyaç duyulduğunda güncellenen esnek veri dönüşümleri oluşturabilir.
Sorgulama sırasında kullanıcıdan tablonun hesaplanmasını isteyen görünümlerden (view) farklı olarak, Dynamic Tables hesaplı durumda kalır ve bu da sorgu hızlarını artırır. Benzer şekilde, materialized view’lar da önbelleğe alınmış veriler sunsa da, Dynamic Tables materialized view’ların yapamadığı join, union ve iç içe görünümler gibi işlemleri kullanabilir.
Geleneksel ELT boru hatları ile olay odaklı mimariler arasındaki boşluğu kapatmak için ilk kez sunulan Dynamic Tables, Snowflake’in deklaratif ve bağımlılık farkındalığına sahip veri işleme yeteneklerini geliştirmeye devam ettiğini gösterir.
Tek yapmanız gereken, Dynamic Table’ınızı tanımlayan SQL SELECT sorgusunu ve yenileme sıklığını belirleyen bir TARGET_LAG değeri yazmak.
Örneğin, beş dakikalık bir TARGET_LAG, Dynamic Table’ın temel tablonun en fazla beş dakika gerisinde olduğu anlamına gelir. En iyi yanı, tüm bunların Snowflake’in dahili yenileme motoru tarafından yönetilmesi ve karmaşık boru hatları tasarlama ihtiyacından bizi kurtarmasıdır!
Snowflake Dynamic Tables’ı Anlamak
Dynamic Tables’ı etkili şekilde uygulamak için, güçlü ve zayıf yönlerini anlamak adına Snowflake’in bazı temel teknik uygulamalarına değineceğiz.
Temel mimari ve işletim mekaniği
Materialized view’lara benzer şekilde, Dynamic Tables kalıcı ve otomatik veri yenileme davranışı sağlar. Ancak materialized view’lardan farklı olarak, union ve join gibi işlemlere izin vererek daha karmaşık dönüşümleri destekler.
Bu sayede, daha sonra daha büyük dinamik tablolara veri sağlayabilecek birden fazla küçük Dynamic Table oluşturabilirsiniz.
Temel bir yenilik, Snowflake’in otomatik bir bağımlılık grafiği kullanmasıdır. Ya temel tablolar güncellenirken güncellenen dinamik bir toplulaştırma tablosu oluşturabilir ya da yönlendirilmiş çevrimsiz grafikler kullanarak Dynamic Tables katmanları inşa edebilirsiniz. Bu, bir temel hazırlık tablosunun güncellenmesiyle aşağı akıştaki bir dinamik tablonun güncellenmesini tetikleyerek çalışır.
Bu ara Dynamic Table’lar güncellendikten sonra, nihai toplulaştırma Dynamic Table da güncellenir. Tüm bunlar, Snowflake’in yenileme işçilerinin veri güncellemelerini izlemesi ve kaynak tabloların güncel verilerle tazelenmesini sağlamasıyla yürütülür.
Dynamic Table oluştururken kontrol edebileceğiniz temel mekanizmalar; oluşturma aşamasındaki yenileme modları, gecikme (lag) ve depo (warehouse) parametreleridir. Dynamic Tables iki yenileme modunu destekler:
Artımsal mod: Snowflake, son yenilemeden bu yana olan değişiklikleri analiz eder ve bunları tabloya birleştirir
Tam mod: Her yenilemede tüm tabloyu yeniden hesaplar ve tabloyu tamamen değiştirir
Yenileme modunu elle tanımlayabilir veya dinamik tabloyu ilk oluştururken REFRESH_MODE = AUTO kullanabilirsiniz. Yalnızca, AUTO kullanıldığında modun oluşturma anında belirlendiğini ve güncellenmediğini unutmayın. Snowflake artımsal yenilemenin verimsiz olduğuna karar verirse, tam yenilemeyi tercih edecektir.
WAREHOUSE ayarı, hesaplama kaynakları için kullanılacak depoyu belirler. Hesaplama ve veri depolama ihtiyaçlarınıza uygun olanı seçtiğinizden emin olun.
Belki de en önemli kavram gecikmedir (lag). Gecikmeyi belirlemenin en yaygın yolu, kaynak veriler ile dinamik tablolar arasındaki kabul edilebilir gecikmeyi tanımlayan TARGET_LAG kullanmaktır. Diğer Dynamic Table’ların başkalarına bağımlı olduğu biraz daha karmaşık bir boru hattı üzerinde çalışıyorsanız, TARGET_LAG = DOWNSTREAM ayarını seçebilirsiniz.
TARGET_LAG değerini DOWNSTREAM olarak ayarladığınızda, zamanlama için mevcut Dynamic Table’a bağımlı olan aşağı akıştaki Dynamic Table’lara bakar.
Dynamic Tables ile geleneksel tablolar, görünümler ve materialized view’lar arasındaki farkları özetleyen tablo
Kaynak Kavram
Dynamic Tables’da Devralınan Özellik
Dynamic Tables Bunu Nasıl İyileştirir
Geleneksel Tablolar
Kalıcı depolama; aşağı akışta tekrar kullanılabilirlik
Otomatik olarak yönetilir ve yenilenir; manuel veri yüklemeleri veya tetikleyiciler gerekmez
Görünümler
Deklaratif SQL mantığı; yordam koduna gerek yok
Daha iyi performans için materialize çıktı; tazelik TARGET_LAG ile yönetilir
Materialized View’lar
Otomatik yenileme; durum yönetimi
Karmaşık dönüşümleri destekler; aşamalar arasında entegre bağımlılık takibi
Bağımlılık yönetimi
Her Dynamic Table bir DAG’a katkıda bulunur ve bu da Snowflake’in birden fazla tablo arasındaki yenilemeleri koordine etmesini sağlar. Bu, özellikle çok aşamalı boru hatlarında doğruluk ve verimlilik sağlar.
Snowsight, bu DAG’ı keşfetmek için görsel bir arayüz sunar; bağımlılıkları, yenileme sürelerini ve gecikme metriklerini gösterir. Bu, hata ayıklama ve etki analizi için büyük bir avantajdır. Snowflake mimarisinin nasıl çalıştığı hakkında daha fazla bilgi için Snowflake veri boru hatları hakkındaki bu makaleyi mutlaka okuyun.
Temel Özellikler ve Karşılaştırmalı Üstünlükler
Gelin Dynamic Tables’ın diğer kilit özellikleri ve avantajlarına bakalım.
Geleneksel mimarilere göre karşılaştırmalı avantajlar
Dynamic Tables, bağımlılık takibini ve yenileme mantığını Snowflake içinde yerel olarak ele alarak harici orkestrasyon (ör. Airflow veya dbt Cloud) ihtiyacını ortadan kaldırır.
Bunun çeşitli avantajları vardır, örneğin:
Basitleştirilmiş orkestrasyon: Cron işleri veya manuel yenileme mantığı gerekmez.
Yerleşik değişiklik verisi yakalama (CDC) desteği: Artımsal işleme yerel olarak desteklenir.
Birleşik izleme: Yenileme durumu, gecikme ve soy zinciri Snowsight’ta görülebilir.
Sorgu yeniden yazma desteği: Snowflake, Dynamic Table soy bilgisini kullanarak sorguları optimize edebilir.
Tüm bunlar, güncel ve gerçeğe yakın zamanlı verilerin gerekli olduğu durumlarda Dynamic Tables’ı öne çıkarır. Gerçek zamanlı panolar ve CDC iş akışları gibi uygulamaları düşünün. Ayrıca, çok aşamalı dönüşümler için birden fazla Dynamic Table’ı ardışık olarak zincirleyebilirsiniz.
Gerçek zamanlı veri işleme ve değişiklik verisi yakalama (CDC)
CRON işleriyle manuel yenileme zaman çizelgeleri tanımlamak yerine, Dynamic Tables kaynak tablolara karşı kontrol yapmak için TARGET_LAG kullanır. Akış tabanlı gerçek zamanlı veri tablolarında bu, Dynamic Table belirtilen gecikme eşiğini aştığı anda otomatik olarak güncellendiği anlamına gelir.
Çok benzer olsalar da, Dynamic Tables genellikle Streams ve materialized view’lara alternatif olarak kullanılır. Materialized view’lar, verinin her zaman güncel olması gerektiğinde ve tek bir temel tabloda basit mantık kullandığınızda mükemmeldir.
Streams, CDC’yi manuel olarak uygulamak ve verilerin zaman içindeki değişimini anlamak için idealdir. Dynamic Tables ise karmaşık veri dönüşüm sorgularına düzenli aralıklarla güncelleme uygulamayı kolay bir şekilde yapmak istediğinizde mükemmeldir.
Snowflake’te veriyi nasıl yapılandıracağınıza dair daha fazla değerlendirme için, Snowflake’te veri modelleme konulu bu kurs harika bir kaynaktır.
Snowflake Dynamic Tables’ın Uygulanması
Dynamic Tables’ı sözdizimi kalıpları ve en iyi uygulamaları kullanarak nasıl kuracağımızı adım adım inceleyelim. Bunları çalıştırmak nispeten kolaydır; ancak parametreleri iyice anlamak, dinamik tablolarınızdan en iyi şekilde yararlanmanızı sağlar.
Uygulama çerçevesi ve sözdizimi
İşte, raw_sales tablomuzu temel alarak bir Dynamic Table oluşturmak isteyebileceğimize dair bazı örnek kodlar. Göz atın, ardından parçalayacağız.
# Your Dynamic Table parametersCREATEORREPLACE Dynamic Table sales_agg
TARGET_LAG ='5 minutes'
WAREHOUSE ='prod_wh'
REFRESH_MODE = auto
INITIALIZE = on_create
AS# Your SQL query for the table itselfSELECT
store_id,SUM(amount)AS total_sales,COUNT(*)AS sale_count
FROM raw_sales
GROUPBY store_id;Altyapı:
İkinci kısım oldukça açıktır; tablodaki veriyi tanımlayan SELECT ifademizdir. SELECT ifadesinden önceki ilk kısım ise tüm oluşturma parametrelerimizdir:
TARGET_LAG: Yukarıda açıklandığı gibi tazelik gereksinimini belirtir. Buraya bir zaman aralığı belirleyebilir veya bu veriyi kullanan başka bir Dynamic Table varsa “DOWNSTREAM” yazabilirsiniz.
WAREHOUSE: Hesaplama kaynaklarını belirler. Tabloyu maliyet etkin biçimde üretecek yeterli kaynağa sahip doğru Snowflake deposunu seçtiğinizden emin olun
REFRESH_MODE: Açıkça INCREMENTAL veya FULL olarak ayarlanabilir. Ben, en iyi yöntemi Snowflake’in belirlemesi için AUTOyu seçtim.
INITIALIZE: Tablonun ne zaman ilklendirileceğini belirler. ON_CREATE, tablonun hemen ilklendirilmesi anlamına gelir. ON_SCHEDULE olarak ayarlamak, ilk gecikme süresi dolduğunda tablonun ilklendirilmesini sağlar.
Snowflake’in artımsal yenilemeleri düzgün desteklemek için değişiklik izlemesi gerektirdiğini ve bunun artımsal dinamik tablolar için otomatik olarak açıldığını unutmayın!
Bunu elle kontrol etmek isterseniz ALTER TABLE komutunu kullanabilirsiniz. Değişiklik izlemesinin açık olması, gerekirse tabloların geçmiş sürümlerini geri yüklemek için zaman yolculuğunu da mümkün kılar.
CLONE ve ICEBERG
Dynamic Tables için iki incelik, bunların klonlanması ve harici Apache Iceberg tabanlı Snowflake Iceberg tablolarına bağlanmasıdır.
Iceberg tabloları için, kurulum sırasında hiçbir şey değişmez. Snowflake Iceberg tabloları üzerinde oluşturulan Dynamic Tables’ın temel faydası, verileri sürekli içeri aktarmaya veya çoğaltmaya gerek kalmadan harici veriyi işlemeye devam etmenize izin vermesidir.
Klonlama, Snowflake’in zaman yolculuğu sayesinde mümkündür ve aşağıdaki gibi CLONE komutunu kullanarak Dynamic Table’ımızın daha eski bir sürümünü kopyalayabiliriz:
CREATE Dynamic Table clone_sales_agg
CLONE sales_agg
AT (OFFSET=>-24*60*60) –-24 hours ago
TARGET_LAG = DOWNSTREAM
WAREHOUSE = sales_whAltyapı:
Buradaki çekince, klonlanan tabloların kaynak tablonun tüm meta verilerini paylaşmayabileceği ve ek depolama alanı kaplayacağıdır. Klonlama yaparken dikkatli olun ve gerçekten gerekli olduğundan emin olun.
Örnek veri kurulumu
Dinamik tabloların işlevselliğini test etmek için kurulum pratiği yapmak iyi bir fikirdir. İşte dinamik tabloları test etmeye yönelik genel bir rehber:
raw_sales adlı, zaman damgaları içeren basit bir tablo oluşturun.
Periyodik olarak yeni satırlar ekleyin.
TARGET_LAG = '1 minute' kullanarak yenilemeleri iş başında görün.
Yapabileceğiniz bir şey, periyodik olarak veri yükleyebileceğiniz bir S3 kovasını izleyen bir stream oluşturmaktır. Bu veriler değiştikçe, Dynamic Table’ınızın nasıl güncellendiğini görebilirsiniz. Snowflake veri alımını basit yollarla kurmaya dair bu eğitimleri takip edebilir ve ardından Snowflake’te tablo oluşturma hakkında daha fazla bilgi için bu eğitime bakabilirsiniz.
Dynamic Tables’ın İzlenmesi ve Yönetilmesi
Snowflake, Snowsight ve sorgulama gibi araçlarla Dynamic Tables’ı etkili şekilde izlemenize ve yönetmenize yardımcı olacak çeşitli olanaklar sunar. Bu bilgileri görebilmek için hesabınızda izleme yetkilerine sahip olduğunuzdan emin olun!
İzleme yöntemleri ve araçları
Snowsight kullanarak Dynamic Tables’ı izlemek basittir:
Data bölümüne gidip Databases’ı seçin
Dynamic Table’ınızı içeren veritabanını ve şemayı seçin
Dynamic Tables sekmesini seçin
Bu, seçip daha fazla bilgi görebileceğiniz tabloların bir listesini sunar.
Snowsight, Dynamic Table’ın nasıl oluşturulduğu, DAG, yenileme geçmişi ve metrikler gibi harika bilgiler sağlayabilir.
Aynısını SQL ile yapmak için SHOW DYNAMIC TABLES komutunu kullanırız.
Örneğin, tüm satışla ilgili dinamik tablolarımı görmek istiyorsam:
SHOW Dynamic TablesLIKE ‘sales_%' INSCHEMA mydb.myschema;Altyapı:
Bu, tablonun ne zaman oluşturulduğu, boyutu, hedef gecikmesi ve en son durumu gibi bilgiler sağlar.
Dinamik tabloların yönetilmesi ve değiştirilmesi
Muhtemelen dinamik tablonuzu değiştirmek veya askıya almak isteyeceğiniz bir zaman gelecektir. Neyse ki, Snowflake bunu basit hale getirir.
Tablonuzu askıya almak için ALTER DYNAMIC TABLE ve SUSPEND kullanırız:
Parametreleri değiştirmek için yine ALTER DYNAMIC TABLE satırını kullanabilir ve değiştirmek istediğimiz belirli parametreyi SET ile ayarlayabiliriz:
ALTER Dynamic Table sales_agg SET TARGET_LAG ='10 minutes';Altyapı:
Bağımlılıkları yönetmenin ve operasyonel kesintileri en aza indirmenin en iyi yolu, kritik tabloları askıya almadığınızdan emin olmaktır. Gecikme miktarını değiştirmeyi planlıyorsanız, bunun aşağı akıştaki tabloların zamanlamasını nasıl etkileyebileceğini anladığınızdan emin olun.
Operasyonel Kısıtları Aşma
Dynamic Tables’ın çok faydalı olduğunu gördük, ancak yine de birkaç sınır ve dikkat edilmesi gereken nokta var.
Mimari kısıtlar ve sınırlamalar
Bazı hesap ve kaynak türü sınırlamaları vardır. Mevcut kısıtlar şunları içerir:
Hesap başına 50.000 Dynamic Table ile sınırlıdır (2025 ortası itibarıyla).
Tüm Snowflake nesne türleri kaynak olarak desteklenmez (ör. streams)
Diğer dikkate alınması gerekenler klonlama, zaman yolculuğu ve erişim kontrolüdür. Zaman yolculuğu en basit olanıdır; minimum 1 gün değerine ihtiyaç duyar. DATA_RETENTION_TIME_IN_DAYS değerini 0 yaparak zaman yolculuğunu kapatamazsınız.
Dinamik bir tabloyu klonlarken, tüm meta verilerin kaydedilmediğinin farkında olun. Ayrıca Iceberg dinamik tablolarını klonlayamazsınız. Bir Iceberg dinamik tablosuna dayanan bir Dynamic Table’ı klonlarsanız, o Iceberg Dynamic Table yeni konuma taşınmaz.
Dynamic Tables oluşturmak ve kullanmak, üst veritabanı ve şema için CREATE DYNAMIC TABLE, SELECT ve USAGE erişim rollerini gerektirir.
Bu kısıtları hatırlarsanız, dinamik tablolarla daha az sorun yaşarsınız!
Performans optimizasyon teknikleri
Basit uygulama yöntemleri sayesinde sistemi aşırı yüklemek kolay olabilir. Yaygın bir hata, Dynamic Tables’ı gerçek zamanlı bir veri boru hattı gibi ele almaktır. Gerçek zamanlı veri kaynaklarının yerini almak için tasarlanmamıştır; bunun yerine zamanlamayı ve veri güncelliği gereksinimlerini dikkate almalıyız. Örneğin şu en iyi uygulamaları izleyebiliriz:
REFRESH_MODE = incrementalı mümkün olduğunda kullanın ki her yüklemede tüm Dynamic Table’ı yeniden oluşturmayalım
TARGET_LAG değerini paydaşların maliyet ve veri tazeliği ihtiyaçlarını dengeleyecek şekilde ayarlayın.
Kullanılan hesaplama kaynaklarını optimize etmek için uygun boyutlu WAREHOUSE seçin
Büyük dönüşümleri daha küçük aşamalı tablolara bölün.
Devasa join’lara ve iç içe SELECT ifadelerine dayanmayan akıllı ve verimli SQL yazın.
Bu basit ipuçlarını takip etmek, Dynamic Tables’ınızın sorunsuz çalışmasına yardımcı olabilir. Akıllıca kullanıldıklarında, kritik veri boru hatlarınızı minimum maliyetle gerçekten basitleştirebilirler; ancak düşüncesizce kullanılırsa ileride daha fazla sorun yaratabilirler!
Fiyatlandırma ve Maliyet Hususları
Belirttiğimiz gibi, dinamik tabloları kullanmanın depolama ve hesaplama maliyetleri vardır. Bu maliyetleri anlamaya ve Snowflake’te yönetmeye yönelik bazı stratejileri gösterebiliriz.
Maliyet bileşenleri
Dinamik tablo kullanmanın maliyetinde iki büyük parça vardır: depolama ve hesaplama. Her birinin birkaç bileşeni bulunur; gelin her birine bakalım.
Dynamic Tables ile depolama maliyetleri
Depolama maliyetleri için, her dinamik tablonun materialize edilmiş sonuçlarını depoladığınızdan ücretlendirilirsiniz. Zaman Yolculuğu (Time Travel), fail-safe depolama ve klonlama gibi unsurlar için de ek maliyetler vardır.
Tek istisna, verilerin harici olarak saklandığı dinamik iceberg tablolardır; bunlarda Snowflake depolama maliyeti oluşmaz. Bu maliyetleri, Dynamic Table’ınızı mümkün olduğunca yalın tutarak veya klonlama ve zaman yolculuğu miktarını en aza indirerek sınırlayabilirsiniz.
Dynamic Tables ile hesaplama maliyetleri
Hesaplama maliyetleri iki büyük parçadan oluşur: sanal depo (virtual warehouse) ve Cloud Services compute. Sanal depolar, tablolarınızı ilklendirmek ve yenilemek için kullanacağınız kaynaklardır; sorguyu çalıştırmanın maliyetlerini düşünün.
Cloud Services compute ise Snowflake’in sağladığı otomasyonla ilgilidir. Buna temel nesnelerdeki değişiklikleri tanımlamak ve DAG’leri sürdürmek dahildir. Dynamic Tables’ınızı çalışır durumda tutmak için Snowflake’in arka planda yaptığı tüm işleri düşünün.
Bu, tanımladığınız tablo gecikmesinin bir fonksiyonudur ve maliyet, doğrudan bu tanımlı sıklıkla ilişkilidir.
Snowflake, bu maliyetleri Snowsight kullanarak izlemeyi kolaylaştırır. Alışıldığı gibi Monitoring, ardından Dynamic Tables’a gidebilir ve dinamik tablonun sayfasındaki Refresh History sekmesi altında kullanılan depo kredilerini görebilirsiniz.
Hesabınızın daha geniş kullanımını görmek isterseniz, şu sorguyu da kullanabilirsiniz:
Bu, hesapta çeşitli hizmetler tarafından oluşturulan maliyetleri çıktılar ve dinamik tablolarınıza bağlanabilir.
Ayrıca, dinamik tabloyla ilişkili depo maliyetlerini tam olarak anlayabilmek için özel bir depoda test yapmanızı öneririm. Maliyeti kavradıktan sonra bunları paylaşılan depolarınıza taşıyabilirsiniz.
Maliyetlerden tasarruf etmek istiyorsanız, otomatik askıya alma gibi özellikleri kullanmayı düşünün. Askıya alınmış Dynamic Tables yalnızca depolama için ücretlendirilir, yenileme kaynakları için değil.
Ayrıca, fail-safe depolama maliyeti olmayan geçici (transient) Dynamic Tables da kullanabilirsiniz. Buna ek olarak, TARGET_LAG değerini doğru sıklığa optimize eder ve mümkün olduğunda artımsal yenileme kullanırsanız, önemli ölçüde hesaplama maliyeti tasarrufu sağlayabilirsiniz.
Her zaman olduğu gibi, iyi SQL yazımı ve optimize edilmiş dönüşümler de hesaplama kaynağı kullanımını azaltmanın harika bir yoludur.
Snowflake Dynamic Table Kullanım Senaryoları
Dynamic Tables, karmaşık, hassas zamanlamalı yeniden yükleme ETL boru hattını, gecikme esaslı ve kendi kendini yöneten basitleştirilmiş bir boru hattıyla değiştirmek istediğiniz her yerde kullanılabilir.
Kurumsal Dağıtım Kalıpları
Belirli sektörünüz için faydalı olabilecek bazı dağıtım kullanım örnekleri şunlardır.
Finans temelli kuruluşlar için, dolandırıcılık tespiti veya chargeback gibi işlem verilerinin periyodik yenilemeleri faydalı olabilir.
Saniyesi saniyesine veri gerekmiyorsa, genel sistem sağlığı panoları için 10 dakikalık bir TARGET_LAG isteyebiliriz. Belki bir veri bilimi modeliniz tüm dolandırıcılık uyarılarını tek bir tabloya kaydediyor ve üçüncü taraf bir chargeback izleme sistemi başka bir tabloya yazıyor olabilir.
Bu ikisini, karmaşık Airflow DAG’lerine ihtiyaç duymadan basitçe tek bir toplulaştırılmış tabloda bir araya getirebilirsiniz. Bu, sorgulama performansını basitleştirip iyileştirmelidir.
Perakende analitiği için farklı bölgelerin performansıyla ilgileniyor olabiliriz. Her bölgenin kendi merkezi veritabanına sahip olması ve veriyi periyodik olarak, ancak biraz senkron dışı göndermesi mümkündür. Zamanlamayı her veritabanına göre uyarlayan ETL boru hatları oluşturmak yerine, her tablodaki gecikmelere göre ihtiyaç duyuldukça bunları bir araya getiren bir Dynamic Table oluşturabiliriz. Bu, boru hattı karmaşıklığını azaltır ve sürekli bakım ihtiyacını en aza indirir.
Diğer bazı senaryolar şunları içerebilir:
Gerçek zamanlı davranış analitiği: ortaya çıkan eğilimleri özetlemek için gerçek zamanlı müşteri davranış bilgilerini toplulaştırma
CDC iş akışları: iş sorunlarını takip etmek için operasyonel değişiklikler için gerçeğe yakın zamanlı veriyi koruma
Data vault modelleme: yeni veriyi geldikçe artımsal olarak ekleme ve verinin nasıl içe alındığına dair tekil bir kaynak olarak hizmet etme
Sonuç
Snowflake Dynamic Tables, karmaşık zaman esaslı ETL boru hatlarını basitleştirmenize yardımcı olacak harika bir araçtır. Otomasyon, esneklik ve performans arasında zarif bir denge sunarlar. Yalnızca, veri yenileme davranışını anlamak için kritik olmayan boru hatlarıyla test etmek, gecikme ve maliyet metriklerinizi izlemek ve bağımlılıkları anlamak için görsel DAG’leri değerlendirmek gibi en iyi uygulamaları hatırlayın.
Dynamic Tables her senaryoda Streams ve Tasks’in tam bir yerine geçmez; ancak kodu en aza indirip verimliliği en üst düzeye çıkaran güçlü bir seçenek sunar. Akıllıca kullanın, hayatınızı gerçekten çok daha kolaylaştırabilirsiniz. Snowflake hakkında daha fazla bilgi ve bazı SQL tazelemesi için şu kaynaklara bakın:
Snowflake Dynamic Table nedir ve bir görünümden veya materialized view’dan nasıl farklıdır?⌄
Dynamic Table, bir SQL sorgusunun sonuçlarını materialize eden ve bunları otomatik olarak taze tutan, tamamen yönetilen bir Snowflake nesnesidir. İstendiğinde sonuçları hesaplayan görünümlerden ve sınırlı dönüşüm desteğine sahip materialized view’lardan farklı olarak, Dynamic Tables karmaşık mantığı, artımsal yenilemeleri ve orkestrasyonlu bağımlılıkları destekler.
Snowflake, bir Dynamic Table’ı ne zaman yenileyeceğine nasıl karar verir?⌄
Yenilemeler, kaynak verideki değişiklikler ile Dynamic Table güncellemeleri arasındaki azami gecikmeyi belirten TARGET_LAG parametresine göre belirlenir. Snowflake, atanan sanal depoyu kullanarak bu gecikme gereksinimini karşılamak için yenilemeleri otomatik olarak tetikler.
Boru hattımda Streams ve Tasks yerine Dynamic Tables kullanabilir miyim?⌄
Çoğu durumda evet. Dynamic Tables daha basit yapılandırma ve yerleşik yenileme zamanlaması sunar; bu da onları çoğu CDC ve dönüşüm boru hattı için ideal kılar. Ancak, yüksek düzeyde özelleştirilmiş, olay odaklı veya yordam mantığı gereken durumlarda Streams ve Tasks hâlâ daha uygun olabilir.
Bir Dynamic Table’ın temel verileri sık değişirse ne olur?⌄
Snowflake, TARGET_LAGı karşılamak için sık yenilemeler planlamaya çalışacaktır. Alttaki veriler yenilemelerin yetişebileceğinden daha sık değişirse, artan hesaplama maliyetleri görebilir veya hedef gecikmeyi aşan gecikmeler yaşayabilirsiniz.
Dynamic Tables’ın en iyi çalıştığı gerçek dünya kullanım örnekleri nelerdir?⌄
Dynamic Tables şu alanlarda öne çıkar:
Sıkı tazelik SLA’larına sahip gerçek zamanlı panolar.
Streams & Tasks yerine geçen basitleştirilmiş CDC boru hatları.
Perakende, finans ve IoT kullanım durumlarında çok aşamalı ELT boru hatları.
Data Vault 2.0 modelleme ve ara dönüşüm katmanları.
Mekânsal analiz, makine öğrenimi ve veri hatları konusunda deneyime sahip bir veri bilimciyim. GCP, Hadoop, Hive, Snowflake, Airflow ve diğer veri bilimi/mühendisliği süreçleriyle çalıştım.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kar Tanesi ile uygulamalı eğitim alın! Veri mühendisleri, analistler ve iş zekası uzmanlarına yönelik bu interaktif girişte verileri sorgulamayı, modellemeyi ve yönetmeyi öğrenin.
Snowflake’in Dynamic Tables özelliği, veri mühendislerinin boru hattı araç setinde güçlü bir araçtır. Temelde, temel tablolar üzerinde dönüşüm sorguları kullanarak yeni tablolar üreten otomatik yenileme süreçleridir.
Dynamic Tables, veri tazeliğinin önemli olduğu ve SQL tabanlı karmaşık dönüşümlerin gerektiği veri orkestrasyon boru hatlarını basitleştirir. Temel tablolardaki değişikliklere göre tabloları yenilemek için gecikme (lag) esaslı zamanlama kullanırlar.
Yakın zamanda yapılan iyileştirmeler, neredeyse gerçek zamanlı veri yayılımını ve Snowflake ekosistemi içinde daha derin entegrasyonu mümkün kılarak yeteneklerini güçlendirdi (konuya hızlı bir giriş için şu tanıtım kursuna göz atın).
Bu rehber, Dynamic Tables’ın nasıl çalıştığını, nasıl etkili şekilde uygulanacağını ve performansın nasıl izlenip optimize edileceğini inceler. Sonunda, bu uygulamaları değerlendirip test ederek kuruluşunuzun veri ihtiyaçlarına uyup uymadığını görecek donanıma sahip olacaksınız.
Snowflake Dynamic Tables Nedir?
Dynamic Tables, veri boru hatlarını kolaylaştırıp otomatikleştirmeye yardımcı olan, tamamen yönetilen bir Snowflake veritabanı nesneleri sınıfıdır.
Harici orkestrasyon araçları kullanmak veya manuel yenilemeleri kaynak tablo güncellemeleriyle zamanlamaya çalışmak yerine, Dynamic Tables kaynak verideki değişikliklere ve tanımlanmış tazelik hedeflerine göre otomatik olarak güncellenir. Bu sayede veri profesyonelleri, veriler değiştikçe ihtiyaç duyulduğunda güncellenen esnek veri dönüşümleri oluşturabilir.
Sorgulama sırasında kullanıcıdan tablonun hesaplanmasını isteyen görünümlerden (view) farklı olarak, Dynamic Tables hesaplı durumda kalır ve bu da sorgu hızlarını artırır. Benzer şekilde, materialized view’lar da önbelleğe alınmış veriler sunsa da, Dynamic Tables materialized view’ların yapamadığı join, union ve iç içe görünümler gibi işlemleri kullanabilir.
Geleneksel ELT boru hatları ile olay odaklı mimariler arasındaki boşluğu kapatmak için ilk kez sunulan Dynamic Tables, Snowflake’in deklaratif ve bağımlılık farkındalığına sahip veri işleme yeteneklerini geliştirmeye devam ettiğini gösterir.
Tek yapmanız gereken, Dynamic Table’ınızı tanımlayan SQL
SELECTsorgusunu ve yenileme sıklığını belirleyen birTARGET_LAGdeğeri yazmak.Örneğin, beş dakikalık bir
TARGET_LAG, Dynamic Table’ın temel tablonun en fazla beş dakika gerisinde olduğu anlamına gelir. En iyi yanı, tüm bunların Snowflake’in dahili yenileme motoru tarafından yönetilmesi ve karmaşık boru hatları tasarlama ihtiyacından bizi kurtarmasıdır!Snowflake Dynamic Tables’ı Anlamak
Dynamic Tables’ı etkili şekilde uygulamak için, güçlü ve zayıf yönlerini anlamak adına Snowflake’in bazı temel teknik uygulamalarına değineceğiz.
Temel mimari ve işletim mekaniği
Materialized view’lara benzer şekilde, Dynamic Tables kalıcı ve otomatik veri yenileme davranışı sağlar. Ancak materialized view’lardan farklı olarak, union ve join gibi işlemlere izin vererek daha karmaşık dönüşümleri destekler.
Bu sayede, daha sonra daha büyük dinamik tablolara veri sağlayabilecek birden fazla küçük Dynamic Table oluşturabilirsiniz.
Temel bir yenilik, Snowflake’in otomatik bir bağımlılık grafiği kullanmasıdır. Ya temel tablolar güncellenirken güncellenen dinamik bir toplulaştırma tablosu oluşturabilir ya da yönlendirilmiş çevrimsiz grafikler kullanarak Dynamic Tables katmanları inşa edebilirsiniz. Bu, bir temel hazırlık tablosunun güncellenmesiyle aşağı akıştaki bir dinamik tablonun güncellenmesini tetikleyerek çalışır.
Bu ara Dynamic Table’lar güncellendikten sonra, nihai toplulaştırma Dynamic Table da güncellenir. Tüm bunlar, Snowflake’in yenileme işçilerinin veri güncellemelerini izlemesi ve kaynak tabloların güncel verilerle tazelenmesini sağlamasıyla yürütülür.
Dynamic Tables Oluşturma ile İlgili Snowflake Dokümantasyonundan
Yenileme mekanizmasının dinamikleri
Dynamic Table oluştururken kontrol edebileceğiniz temel mekanizmalar; oluşturma aşamasındaki yenileme modları, gecikme (lag) ve depo (warehouse) parametreleridir. Dynamic Tables iki yenileme modunu destekler:
Yenileme modunu elle tanımlayabilir veya dinamik tabloyu ilk oluştururken
REFRESH_MODE = AUTOkullanabilirsiniz. Yalnızca,AUTOkullanıldığında modun oluşturma anında belirlendiğini ve güncellenmediğini unutmayın. Snowflake artımsal yenilemenin verimsiz olduğuna karar verirse, tam yenilemeyi tercih edecektir.WAREHOUSEayarı, hesaplama kaynakları için kullanılacak depoyu belirler. Hesaplama ve veri depolama ihtiyaçlarınıza uygun olanı seçtiğinizden emin olun.Belki de en önemli kavram gecikmedir (lag). Gecikmeyi belirlemenin en yaygın yolu, kaynak veriler ile dinamik tablolar arasındaki kabul edilebilir gecikmeyi tanımlayan
TARGET_LAGkullanmaktır. Diğer Dynamic Table’ların başkalarına bağımlı olduğu biraz daha karmaşık bir boru hattı üzerinde çalışıyorsanız,TARGET_LAG = DOWNSTREAMayarını seçebilirsiniz.TARGET_LAGdeğeriniDOWNSTREAMolarak ayarladığınızda, zamanlama için mevcut Dynamic Table’a bağımlı olan aşağı akıştaki Dynamic Table’lara bakar.Dynamic Tables ile geleneksel tablolar, görünümler ve materialized view’lar arasındaki farkları özetleyen tablo
Kaynak Kavram
Dynamic Tables’da Devralınan Özellik
Dynamic Tables Bunu Nasıl İyileştirir
Geleneksel Tablolar
Kalıcı depolama; aşağı akışta tekrar kullanılabilirlik
Otomatik olarak yönetilir ve yenilenir; manuel veri yüklemeleri veya tetikleyiciler gerekmez
Görünümler
Deklaratif SQL mantığı; yordam koduna gerek yok
Daha iyi performans için materialize çıktı; tazelik
TARGET_LAGile yönetilirMaterialized View’lar
Otomatik yenileme; durum yönetimi
Karmaşık dönüşümleri destekler; aşamalar arasında entegre bağımlılık takibi
Bağımlılık yönetimi
Her Dynamic Table bir DAG’a katkıda bulunur ve bu da Snowflake’in birden fazla tablo arasındaki yenilemeleri koordine etmesini sağlar. Bu, özellikle çok aşamalı boru hatlarında doğruluk ve verimlilik sağlar.
Snowsight, bu DAG’ı keşfetmek için görsel bir arayüz sunar; bağımlılıkları, yenileme sürelerini ve gecikme metriklerini gösterir. Bu, hata ayıklama ve etki analizi için büyük bir avantajdır. Snowflake mimarisinin nasıl çalıştığı hakkında daha fazla bilgi için Snowflake veri boru hatları hakkındaki bu makaleyi mutlaka okuyun.
Temel Özellikler ve Karşılaştırmalı Üstünlükler
Gelin Dynamic Tables’ın diğer kilit özellikleri ve avantajlarına bakalım.
Geleneksel mimarilere göre karşılaştırmalı avantajlar
Dynamic Tables, bağımlılık takibini ve yenileme mantığını Snowflake içinde yerel olarak ele alarak harici orkestrasyon (ör. Airflow veya dbt Cloud) ihtiyacını ortadan kaldırır.
Bunun çeşitli avantajları vardır, örneğin:
Tüm bunlar, güncel ve gerçeğe yakın zamanlı verilerin gerekli olduğu durumlarda Dynamic Tables’ı öne çıkarır. Gerçek zamanlı panolar ve CDC iş akışları gibi uygulamaları düşünün. Ayrıca, çok aşamalı dönüşümler için birden fazla Dynamic Table’ı ardışık olarak zincirleyebilirsiniz.
Gerçek zamanlı veri işleme ve değişiklik verisi yakalama (CDC)
CRON işleriyle manuel yenileme zaman çizelgeleri tanımlamak yerine, Dynamic Tables kaynak tablolara karşı kontrol yapmak için
TARGET_LAGkullanır. Akış tabanlı gerçek zamanlı veri tablolarında bu, Dynamic Table belirtilen gecikme eşiğini aştığı anda otomatik olarak güncellendiği anlamına gelir.Çok benzer olsalar da, Dynamic Tables genellikle Streams ve materialized view’lara alternatif olarak kullanılır. Materialized view’lar, verinin her zaman güncel olması gerektiğinde ve tek bir temel tabloda basit mantık kullandığınızda mükemmeldir.
Streams, CDC’yi manuel olarak uygulamak ve verilerin zaman içindeki değişimini anlamak için idealdir. Dynamic Tables ise karmaşık veri dönüşüm sorgularına düzenli aralıklarla güncelleme uygulamayı kolay bir şekilde yapmak istediğinizde mükemmeldir.
Snowflake’te veriyi nasıl yapılandıracağınıza dair daha fazla değerlendirme için, Snowflake’te veri modelleme konulu bu kurs harika bir kaynaktır.
Snowflake Dynamic Tables’ın Uygulanması
Dynamic Tables’ı sözdizimi kalıpları ve en iyi uygulamaları kullanarak nasıl kuracağımızı adım adım inceleyelim. Bunları çalıştırmak nispeten kolaydır; ancak parametreleri iyice anlamak, dinamik tablolarınızdan en iyi şekilde yararlanmanızı sağlar.
Uygulama çerçevesi ve sözdizimi
İşte,
raw_salestablomuzu temel alarak bir Dynamic Table oluşturmak isteyebileceğimize dair bazı örnek kodlar. Göz atın, ardından parçalayacağız.İkinci kısım oldukça açıktır; tablodaki veriyi tanımlayan
SELECTifademizdir.SELECTifadesinden önceki ilk kısım ise tüm oluşturma parametrelerimizdir:TARGET_LAG: Yukarıda açıklandığı gibi tazelik gereksinimini belirtir. Buraya bir zaman aralığı belirleyebilir veya bu veriyi kullanan başka bir Dynamic Table varsa “DOWNSTREAM” yazabilirsiniz.WAREHOUSE: Hesaplama kaynaklarını belirler. Tabloyu maliyet etkin biçimde üretecek yeterli kaynağa sahip doğru Snowflake deposunu seçtiğinizden emin olunREFRESH_MODE: AçıkçaINCREMENTALveyaFULLolarak ayarlanabilir. Ben, en iyi yöntemi Snowflake’in belirlemesi içinAUTOyu seçtim.INITIALIZE: Tablonun ne zaman ilklendirileceğini belirler.ON_CREATE, tablonun hemen ilklendirilmesi anlamına gelir.ON_SCHEDULEolarak ayarlamak, ilk gecikme süresi dolduğunda tablonun ilklendirilmesini sağlar.Snowflake’in artımsal yenilemeleri düzgün desteklemek için değişiklik izlemesi gerektirdiğini ve bunun artımsal dinamik tablolar için otomatik olarak açıldığını unutmayın!
Bunu elle kontrol etmek isterseniz
ALTER TABLEkomutunu kullanabilirsiniz. Değişiklik izlemesinin açık olması, gerekirse tabloların geçmiş sürümlerini geri yüklemek için zaman yolculuğunu da mümkün kılar.CLONE ve ICEBERG
Dynamic Tables için iki incelik, bunların klonlanması ve harici Apache Iceberg tabanlı Snowflake Iceberg tablolarına bağlanmasıdır.
Iceberg tabloları için, kurulum sırasında hiçbir şey değişmez. Snowflake Iceberg tabloları üzerinde oluşturulan Dynamic Tables’ın temel faydası, verileri sürekli içeri aktarmaya veya çoğaltmaya gerek kalmadan harici veriyi işlemeye devam etmenize izin vermesidir.
Klonlama, Snowflake’in zaman yolculuğu sayesinde mümkündür ve aşağıdaki gibi
CLONEkomutunu kullanarak Dynamic Table’ımızın daha eski bir sürümünü kopyalayabiliriz:Buradaki çekince, klonlanan tabloların kaynak tablonun tüm meta verilerini paylaşmayabileceği ve ek depolama alanı kaplayacağıdır. Klonlama yaparken dikkatli olun ve gerçekten gerekli olduğundan emin olun.
Örnek veri kurulumu
Dinamik tabloların işlevselliğini test etmek için kurulum pratiği yapmak iyi bir fikirdir. İşte dinamik tabloları test etmeye yönelik genel bir rehber:
raw_salesadlı, zaman damgaları içeren basit bir tablo oluşturun.TARGET_LAG = '1 minute'kullanarak yenilemeleri iş başında görün.Yapabileceğiniz bir şey, periyodik olarak veri yükleyebileceğiniz bir S3 kovasını izleyen bir stream oluşturmaktır. Bu veriler değiştikçe, Dynamic Table’ınızın nasıl güncellendiğini görebilirsiniz. Snowflake veri alımını basit yollarla kurmaya dair bu eğitimleri takip edebilir ve ardından Snowflake’te tablo oluşturma hakkında daha fazla bilgi için bu eğitime bakabilirsiniz.
Dynamic Tables’ın İzlenmesi ve Yönetilmesi
Snowflake, Snowsight ve sorgulama gibi araçlarla Dynamic Tables’ı etkili şekilde izlemenize ve yönetmenize yardımcı olacak çeşitli olanaklar sunar. Bu bilgileri görebilmek için hesabınızda izleme yetkilerine sahip olduğunuzdan emin olun!
İzleme yöntemleri ve araçları
Snowsight kullanarak Dynamic Tables’ı izlemek basittir:
Snowsight, Dynamic Table’ın nasıl oluşturulduğu, DAG, yenileme geçmişi ve metrikler gibi harika bilgiler sağlayabilir.
Aynısını SQL ile yapmak için
SHOW DYNAMIC TABLESkomutunu kullanırız.Örneğin, tüm satışla ilgili dinamik tablolarımı görmek istiyorsam:
Bu, tablonun ne zaman oluşturulduğu, boyutu, hedef gecikmesi ve en son durumu gibi bilgiler sağlar.
Dinamik tabloların yönetilmesi ve değiştirilmesi
Muhtemelen dinamik tablonuzu değiştirmek veya askıya almak isteyeceğiniz bir zaman gelecektir. Neyse ki, Snowflake bunu basit hale getirir.
Tablonuzu askıya almak için
ALTER DYNAMIC TABLEveSUSPENDkullanırız:Daha sonra devam ettirmek için aynı şeyi bu kez
RESUMEile yaparız:Parametreleri değiştirmek için yine
ALTER DYNAMIC TABLEsatırını kullanabilir ve değiştirmek istediğimiz belirli parametreyiSETile ayarlayabiliriz:Bağımlılıkları yönetmenin ve operasyonel kesintileri en aza indirmenin en iyi yolu, kritik tabloları askıya almadığınızdan emin olmaktır. Gecikme miktarını değiştirmeyi planlıyorsanız, bunun aşağı akıştaki tabloların zamanlamasını nasıl etkileyebileceğini anladığınızdan emin olun.
Operasyonel Kısıtları Aşma
Dynamic Tables’ın çok faydalı olduğunu gördük, ancak yine de birkaç sınır ve dikkat edilmesi gereken nokta var.
Mimari kısıtlar ve sınırlamalar
Bazı hesap ve kaynak türü sınırlamaları vardır. Mevcut kısıtlar şunları içerir:
ACCESS_HISTORYdenetim görünümünde izlenmezDiğer dikkate alınması gerekenler klonlama, zaman yolculuğu ve erişim kontrolüdür. Zaman yolculuğu en basit olanıdır; minimum 1 gün değerine ihtiyaç duyar.
DATA_RETENTION_TIME_IN_DAYSdeğerini 0 yaparak zaman yolculuğunu kapatamazsınız.Dinamik bir tabloyu klonlarken, tüm meta verilerin kaydedilmediğinin farkında olun. Ayrıca Iceberg dinamik tablolarını klonlayamazsınız. Bir Iceberg dinamik tablosuna dayanan bir Dynamic Table’ı klonlarsanız, o Iceberg Dynamic Table yeni konuma taşınmaz.
Dynamic Tables oluşturmak ve kullanmak, üst veritabanı ve şema için
CREATE DYNAMIC TABLE,SELECTveUSAGEerişim rollerini gerektirir.Bu kısıtları hatırlarsanız, dinamik tablolarla daha az sorun yaşarsınız!
Performans optimizasyon teknikleri
Basit uygulama yöntemleri sayesinde sistemi aşırı yüklemek kolay olabilir. Yaygın bir hata, Dynamic Tables’ı gerçek zamanlı bir veri boru hattı gibi ele almaktır. Gerçek zamanlı veri kaynaklarının yerini almak için tasarlanmamıştır; bunun yerine zamanlamayı ve veri güncelliği gereksinimlerini dikkate almalıyız. Örneğin şu en iyi uygulamaları izleyebiliriz:
REFRESH_MODE = incrementalı mümkün olduğunda kullanın ki her yüklemede tüm Dynamic Table’ı yeniden oluşturmayalımTARGET_LAGdeğerini paydaşların maliyet ve veri tazeliği ihtiyaçlarını dengeleyecek şekilde ayarlayın.WAREHOUSEseçinSELECTifadelerine dayanmayan akıllı ve verimli SQL yazın.Bu basit ipuçlarını takip etmek, Dynamic Tables’ınızın sorunsuz çalışmasına yardımcı olabilir. Akıllıca kullanıldıklarında, kritik veri boru hatlarınızı minimum maliyetle gerçekten basitleştirebilirler; ancak düşüncesizce kullanılırsa ileride daha fazla sorun yaratabilirler!
Fiyatlandırma ve Maliyet Hususları
Belirttiğimiz gibi, dinamik tabloları kullanmanın depolama ve hesaplama maliyetleri vardır. Bu maliyetleri anlamaya ve Snowflake’te yönetmeye yönelik bazı stratejileri gösterebiliriz.
Maliyet bileşenleri
Dinamik tablo kullanmanın maliyetinde iki büyük parça vardır: depolama ve hesaplama. Her birinin birkaç bileşeni bulunur; gelin her birine bakalım.
Dynamic Tables ile depolama maliyetleri
Depolama maliyetleri için, her dinamik tablonun materialize edilmiş sonuçlarını depoladığınızdan ücretlendirilirsiniz. Zaman Yolculuğu (Time Travel), fail-safe depolama ve klonlama gibi unsurlar için de ek maliyetler vardır.
Tek istisna, verilerin harici olarak saklandığı dinamik iceberg tablolardır; bunlarda Snowflake depolama maliyeti oluşmaz. Bu maliyetleri, Dynamic Table’ınızı mümkün olduğunca yalın tutarak veya klonlama ve zaman yolculuğu miktarını en aza indirerek sınırlayabilirsiniz.
Dynamic Tables ile hesaplama maliyetleri
Hesaplama maliyetleri iki büyük parçadan oluşur: sanal depo (virtual warehouse) ve Cloud Services compute. Sanal depolar, tablolarınızı ilklendirmek ve yenilemek için kullanacağınız kaynaklardır; sorguyu çalıştırmanın maliyetlerini düşünün.
Cloud Services compute ise Snowflake’in sağladığı otomasyonla ilgilidir. Buna temel nesnelerdeki değişiklikleri tanımlamak ve DAG’leri sürdürmek dahildir. Dynamic Tables’ınızı çalışır durumda tutmak için Snowflake’in arka planda yaptığı tüm işleri düşünün.
Bu, tanımladığınız tablo gecikmesinin bir fonksiyonudur ve maliyet, doğrudan bu tanımlı sıklıkla ilişkilidir.
Bu maliyetlerin nasıl bir araya geldiğine dair tam bir tablo için, bileşenleri ayrıntılandıran Snowflake’in maliyet dokümantasyonuna bakın.
Maliyet İzleme ve Tasarruf
Snowflake, bu maliyetleri Snowsight kullanarak izlemeyi kolaylaştırır. Alışıldığı gibi Monitoring, ardından Dynamic Tables’a gidebilir ve dinamik tablonun sayfasındaki
Refresh Historysekmesi altında kullanılan depo kredilerini görebilirsiniz.Hesabınızın daha geniş kullanımını görmek isterseniz, şu sorguyu da kullanabilirsiniz:
Bu, hesapta çeşitli hizmetler tarafından oluşturulan maliyetleri çıktılar ve dinamik tablolarınıza bağlanabilir.
Ayrıca, dinamik tabloyla ilişkili depo maliyetlerini tam olarak anlayabilmek için özel bir depoda test yapmanızı öneririm. Maliyeti kavradıktan sonra bunları paylaşılan depolarınıza taşıyabilirsiniz.
Maliyetlerden tasarruf etmek istiyorsanız, otomatik askıya alma gibi özellikleri kullanmayı düşünün. Askıya alınmış Dynamic Tables yalnızca depolama için ücretlendirilir, yenileme kaynakları için değil.
Ayrıca, fail-safe depolama maliyeti olmayan geçici (transient) Dynamic Tables da kullanabilirsiniz. Buna ek olarak,
TARGET_LAGdeğerini doğru sıklığa optimize eder ve mümkün olduğunda artımsal yenileme kullanırsanız, önemli ölçüde hesaplama maliyeti tasarrufu sağlayabilirsiniz.Her zaman olduğu gibi, iyi SQL yazımı ve optimize edilmiş dönüşümler de hesaplama kaynağı kullanımını azaltmanın harika bir yoludur.
Snowflake Dynamic Table Kullanım Senaryoları
Dynamic Tables, karmaşık, hassas zamanlamalı yeniden yükleme ETL boru hattını, gecikme esaslı ve kendi kendini yöneten basitleştirilmiş bir boru hattıyla değiştirmek istediğiniz her yerde kullanılabilir.
Kurumsal Dağıtım Kalıpları
Belirli sektörünüz için faydalı olabilecek bazı dağıtım kullanım örnekleri şunlardır.
Finans temelli kuruluşlar için, dolandırıcılık tespiti veya chargeback gibi işlem verilerinin periyodik yenilemeleri faydalı olabilir.
Saniyesi saniyesine veri gerekmiyorsa, genel sistem sağlığı panoları için 10 dakikalık bir
TARGET_LAGisteyebiliriz. Belki bir veri bilimi modeliniz tüm dolandırıcılık uyarılarını tek bir tabloya kaydediyor ve üçüncü taraf bir chargeback izleme sistemi başka bir tabloya yazıyor olabilir.Bu ikisini, karmaşık Airflow DAG’lerine ihtiyaç duymadan basitçe tek bir toplulaştırılmış tabloda bir araya getirebilirsiniz. Bu, sorgulama performansını basitleştirip iyileştirmelidir.
Perakende analitiği için farklı bölgelerin performansıyla ilgileniyor olabiliriz. Her bölgenin kendi merkezi veritabanına sahip olması ve veriyi periyodik olarak, ancak biraz senkron dışı göndermesi mümkündür. Zamanlamayı her veritabanına göre uyarlayan ETL boru hatları oluşturmak yerine, her tablodaki gecikmelere göre ihtiyaç duyuldukça bunları bir araya getiren bir Dynamic Table oluşturabiliriz. Bu, boru hattı karmaşıklığını azaltır ve sürekli bakım ihtiyacını en aza indirir.
Diğer bazı senaryolar şunları içerebilir:
Sonuç
Snowflake Dynamic Tables, karmaşık zaman esaslı ETL boru hatlarını basitleştirmenize yardımcı olacak harika bir araçtır. Otomasyon, esneklik ve performans arasında zarif bir denge sunarlar. Yalnızca, veri yenileme davranışını anlamak için kritik olmayan boru hatlarıyla test etmek, gecikme ve maliyet metriklerinizi izlemek ve bağımlılıkları anlamak için görsel DAG’leri değerlendirmek gibi en iyi uygulamaları hatırlayın.
Dynamic Tables her senaryoda Streams ve Tasks’in tam bir yerine geçmez; ancak kodu en aza indirip verimliliği en üst düzeye çıkaran güçlü bir seçenek sunar. Akıllıca kullanın, hayatınızı gerçekten çok daha kolaylaştırabilirsiniz. Snowflake hakkında daha fazla bilgi ve bazı SQL tazelemesi için şu kaynaklara bakın: