Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri mühendislerinin, analitik, raporlama ve makine öğrenimi için, Oracle, Postgres ve SQL Server gibi ilişkisel veritabanları da dahil olmak üzere Azure Databricks’in yukarı akışındaki kaynaklardan gelen verileri çoğu zaman Azure Databricks’e çoğaltmaları gerekir. İşletim sistemleri değiştikçe analiz tablolarının bu değişikliklerle eşitlenmiş durumda kalması gerekir.
Bazı ekiplerin raporlama ve analiz için işletimsel veritabanlarının geçerli durumunu yansıtması gerekir. Diğerlerinin denetlenebilirlik, mevzuat gereksinimleri veya müşteri analizi için değişikliklerin tam geçmişini koruması gerekir.
Değişiklik veri yakalama (CDC), veritabanını tam bir statik veritabanı yerine bir dizi değişiklik olarak ele alır. Aşağıdaki diyagramda, çalışan verilerini içeren bir kaynak tablodaki bir satır güncelleştirildiğinde, CDC akışında yalnızca değişiklikleri içeren yeni bir satır kümesi oluşturduğu gösterilmektedir. CDC akışının her satırı genellikle, UPDATE gibi bir işlem ve sıra dışı güncelleştirmeleri yönetebilmeniz için CDC akışındaki her satırın belirlenimci olarak sıralanmasını sağlayacak bir sütun içeren ek meta veriler içerir. Örneğin, sequenceNum aşağıdaki diyagramdaki sütun CDC akışındaki satır sırasını belirler:
CDC, veritabanını aşağı akış sisteminde güncelleştirirken daha basit işlemler için verilerde yapılan değişiklikleri görüntülemenizi sağlar. Ayrıca, gerekliyse veritabanının geçmişini görmenizi de sağlayabilir.
Sorun, kaynak sistemlerin verileri farklı biçimlerde sağlamasıdır. Bazıları tek tek değişiklikleri (eklemeler, güncelleştirmeler, silmeler) yakalayan değişiklik akışları yayar. Diğerleri yalnızca tablonun tamamının düzenli anlık görüntülerini sağlar. Her biçim, aşağı akış tablolarını doğru ve güncel tutmak için farklı işleme yaklaşımları gerektirir.
Geçmişte ekipler, ister değişiklik akışlarından ister anlık görüntüleri karşılaştırarak olsun, bu değişiklikleri uygulamak için özel MERGE INTO mantığına güvenmiştir. Bu yaklaşım karmaşıktır ve hata yapmaya eğilimlidir; işlem hatları geliştikçe aşamalı tablolar, pencere işlevleri ve mantığını anlamak ve bakımını gerçekleştirmek zor olan sıralama varsayımlarını gerektirir.
CDC'nin avantajları
Değişiklik verileri yakalama, iş yüklerinizde çeşitli avantajlar sağlar.
- Değişiklik verileri genellikle tam veri kümesinden daha küçüktür ve değişiklikler aşağı akış sorguları tarafından verilerde artımlı güncelleştirmeler olarak işlenebilir.
- Değişiklik verileri kayıtları belirli bir zamanda olduğu gibi yeniden oluşturmanıza olanak tanıyacak şekilde depolanabilir ve bu sayede denetim, belirli bir noktaya raporlama veya eğilim analizi için tam bir geçmişe sahip olursunuz.
- Değişiklik verileri, zaman içinde kararlı vekil anahtarlara olanak tanır.
Değişikliklerin uygulanması: Geçerli durum veya değişikliklerin tam geçmişi
Yavaş Değişen Boyutlar (SCD), yukarı akış değişikliklerinin analiz tablolarına girdikten sonra nasıl uygulanacağını ve modellendiğini tanımlar. Kuruluşlar veri gereksinimlerine göre farklı yaklaşımlar kullanabilir. SCD Tür 1, veri kümesinin yalnızca geçerli durumunu kaydetmenizi sağlar. SCD Tür 2, veri kümesindeki değişikliklerin tam geçmişini kaydeder. Bu bölümde bunlar daha ayrıntılı olarak açıklanmaktadır.
SCD Tür 1: Yalnızca geçerli durum
SCD Tür 1, değişiklikler olduğunda eski verilerin üzerine yeni veriler yazar ve her kaydın yalnızca en son sürümünü tutar. Geçmiş korunmaz.
Aşağıdaki durumlarda SCD Tür 1'i kullanın:
- Yalnızca verilerin geçerli durumuna ihtiyacınız vardır.
- Alt akış malzemeleştirilmiş görünümlerin tamamen yeniden derlenmesi yerine artımlı olarak yenilenmesini tercih ediyorsunuz.
- Birleşimler için kararlı vekil anahtarlara ihtiyacınız vardır.
SCD1'de verilerin yalnızca en son sürümü kullanılabilir. Bu, yalnızca son tabloyu depolamak olarak düşünebileceğiniz basit bir yaklaşımdır. Bir kayıt Owner'den Manager,'e değişirse, tabloda yalnızca Manager kalır.
SCD Tür 2: Geçmiş izleme
SCD Tür 2, verilerin zaman içinde birden çok sürümünü oluşturarak tam bir geçmiş kaydı tutar ve her biri meta verilerle damgalanır.
__START_AT ve __END_AT sütunları, kaydın her sürümü için geçerlilik süresini tanımlar. Etkin kayıtlar __END_AT = NULL içerir. Veri kümesinin durumunu herhangi bir zamanda olduğu gibi görüntüleyebilirsiniz.
Aşağıdaki durumlarda SCD Tür 2 kullanın:
- Denetlenebilirlik veya mevzuat gereksinimleri geçmiş izleme gerektirir.
- Müşteri analizi, varlıkların zaman içinde nasıl geliştiğini anlamanızı gerektirir.
- İş mantığı belirli bir noktaya raporlama gerektirir.
- Eğilimleri analiz etmeniz veya geçmiş durumları karşılaştırmanız gerekir.
SCD Tür 2 işleme, veri değişikliklerinin geçmiş kaydını tutar. Örneğin, bir kaydın rol alanı şu anda Manager olarak ayarlanmışsa, rol alanının önceden Owner olarak ayarlandığını da görebilirsiniz. Aşağıdaki görüntüde, Chris kaydına tam olarak aynı şey oldu. Geçerli kaydı, null alanında end_at değeri olduğundan anlayabilirsiniz.
CDC akışı nedir?
Değişiklik Veri Yakalama (CDC), bir kaynak sistemdeki verilerde yapılan değişiklikleri yakalayan bir veri tümleştirme düzenidir: eklemeler, güncelleştirmeler ve silmeler. CDC, veri kümelerinin tamamını işlemek yerine yalnızca değiştirilen kayıtları içeren akışlar oluşturur.
Örneğin, Oracle'da 50 satırlı bir çalışan tablonuz varsa ve bir çalışanın iş unvanı değişirse, CDC akışı bu çalışan için tek UPDATE bir kayıt içerir. Bu, Azure Databricks'in her çalıştırmada kaynak tablonun tamamını okumak yerine yalnızca değiştirilen kayıtları işlemesine olanak tanır.
Kaynak veritabanındaki her CDC kaydı şunları içerir:
- İşlem türü (
INSERT,UPDATE,DELETE) - Kayda ait veri değerleri
- Belirleyici sıralama için sıra numarası veya zaman damgası
Sıra numarası, geç veya sipariş dışı gelenlerin doğru şekilde uygulanmasını sağlar. SQL Server, MySQL ve Oracle gibi işlem veritabanları CDC akışlarını yerel olarak oluşturur. Delta tabloları ayrıca Değişiklik Veri Akışı (CDF) olarak bilinen kendi CDC akışlarını da oluşturur ve delta kaynaklarından yapılan değişiklikleri işlemeyi de kolaylaştırır.
Anlık görüntü nedir?
Anlık görüntü, tablonun belirli bir zaman noktasındaki tam durumunu temsil eder. Yalnızca değişiklikleri yakalayan CDC akışlarından farklı olarak, anlık görüntüler kaynak tablodaki her satırı içerir.
Ekipler, çeşitli nedenlerle işletimsel veritabanlarında CDC akışlarını her zaman etkinleştirmez:
- Maliyet (CDC, üretim veritabanlarındaki yükü artırabilir)
- Kaynak veritabanında performansla ilgili endişeler
- CDC'yi desteklemeyen eski sistemler
- Kuruluş kısıtlamaları (alımı yöneten takımlar yukarı akış veritabanlarına sahip değildir)
Değişiklik akışı kullanılamadığında tek seçenek anlık görüntü tabanlı almadır. Anlık görüntüler şu kaynaklardan gelebilir:
- İlişkisel veritabanlarından düzenli aralıklarla dışarı aktarmalar (Oracle, Postgres, SQL Server)
- Yukarı akış sistemlerinden bulut depolama dosyası dökümleri
- Delta tabloları (her tablo sürümü gerçekte bir anlık görüntüdür)
- Yukarı akış kiracılarından OpenSharing
Anlık görüntüler kayıt düzeyindeki değişiklikleri yakalamadığından, nelerin değiştiğini belirlemek için eklemeler, güncelleştirmeler ve silmeler çıkarabilmek için kayıtların anlık görüntüler arasında karşılaştırılması gerekir.
CDC akışlarını otomatik olarak işleme
Azure Databricks, Lakeflow işlem hatları içindeki AUTO CDC API aracılığıyla CDC işlemeyi basitleştirir. Bu API, kaynak veritabanlarındaki CDC akışlarından veya Değişiklik Veri Akışı'nın etkinleştirildiği Delta tablolarında yapılan değişiklikleri işlemek için tasarlanmıştır.
SQL ve Python kod örnekleri için bkz. AUTO CDC örnekleri.
Bunlardan herhangi biri doğru olduğunda kullanın AUTO CDC :
- Kaynak sisteminiz Bir Değişiklik Veri Akışı (CDF) oluşturur
- Veri Akışını Değiştir özelliğinin etkin olduğu bir Delta tablosundan okuyorsunuz
- İlişkisel veritabanından CDC beslemeniz var (Debezium ve Oracle GoldenGate gibi araçlar aracılığıyla)
AUTO CDC sıralama sütunu tarafından tanımlanan sıraya göre olayları işleyerek sırası karışık kayıtları otomatik olarak işler. Sıralama sütunu doğru olay sırasının monoton olarak artan bir gösterimi olmalı ve her sıralama değerinde anahtar başına ayrı bir güncelleştirme olmalıdır.
NULL sıralama değerleri desteklenmez. SCD Tür 2 için işlem hattı, sıralama değerlerini hedef tablonun __START_AT ve __END_AT sütunlarına aktarır.
İlk hidrasyon: Mevcut bir işletimsel veritabanı tablosunu Azure Databricks'e çoğaltırken, devam eden değişiklikleri işlemeden önce önce tüm geçmiş verileri yüklemeniz gerekir.
AUTO CDC kullanılabilir tüm verileri bir kez işleyip ardından sonlandıran "bir defalık akışlar" modu aracılığıyla bunu destekler. İlk yükleme tamamlandıktan sonra, devam eden CDC işlemesi için tetiklenen veya sürekli mod akışını kullanın. Bu, hem toplu hem de artımlı yükler için tutarlı mantık sağlar.
Anlık görüntüleri otomatik olarak işleme
CDC akışları kullanılamadığında Azure Databricks AUTO CDC FROM SNAPSHOT API'sini sağlar. Bu API anlık görüntü tabanlı alım için tasarlanmıştır; ardışık anlık görüntüleri karşılaştırır, yapay bir değişiklik akışı oluşturur ve SCD Tür 1 veya Tür 2 mantığını hedef tabloya uygular. Hedef tablo, aşağı akış sorguları için SCD Tür 1 veya Tür 2 olan bir CDC akışı (Delta tablolarında değişiklik veri akışı (CDF) olarak adlandırılır) sağlayabilir.
Python kod örnekleri için bkz. AUTO CDC FROM SNAPSHOT örnekleri.
AUTO CDC FROM SNAPSHOT yalnızca Python işlem hattı arabiriminde desteklenir. Anlık görüntüler sürüme göre artan sırada işlenmelidir; sıra dışı bir anlık görüntü algılanırsa, yoksayılır. Bir veri kümesinin çıkışını sorgulayan gerçekleştirilmiş bir AUTO CDC FROM SNAPSHOT görünüm gibi sonraki işlem, kademelendirme ve değişmez vekil anahtarlar gibi CDC'nin avantajlarından yararlanır.
Note
AUTO CDC FROM SNAPSHOT yalnızca ilk yükler için değildir. Anlık görüntüler tek kullanılabilir biçiminiz olduğunda devam eden işlemler için tasarlanmıştır. Her yeni anlık görüntü geldiğinde, API değişiklikleri ve değişiklik veri akışını türetmek için bunu önceki anlık görüntüyle karşılaştırır.
Şu durumlarda kullanın AUTO CDC FROM SNAPSHOT :
- CDC kaynak veritabanında etkin değil
- Yalnızca düzenli anlık görüntülere erişiminiz var (tam tablo dökümleri)
- Artımlı işleme için CDC'nin avantajlarından yararlanmak veya değişikliklerin tam geçmişine sahip olmak istiyorsunuz.
AUTO CDC FROM SNAPSHOT aşağıdakileri otomatik olarak işler:
- Eklenen, güncelleştirilen ve silinen kayıtları belirlemek için ardışık anlık görüntüleri karşılaştırır.
- Anlık görüntüler arasındaki farklara göre yapay bir değişiklik akışı oluşturur.
- Aynı SCD mantığını
AUTO CDCile, SCD Tür 1 veya Tür 2 hesaplamak için uygular.
Note
AUTO CDC FROM SNAPSHOT yalnızca bir anlık görüntüden sonrakine kadar olan değişikliklerden haberdardır ve aradaki değişiklikleri almaz. Örneğin, günlük anlık görüntüler alıyorsanız ve bir kullanıcı adresini bir gün içinde iki kez değiştirirse (ilk olarak A'dan B'e, ardından B'den C'e), yalnızca bu zamanlar için anlık görüntüler aldığınızdan dolayı değişiklik akışınız doğrudan A'den C'e gidebilir.
Anlık görüntü işleme desenleri
AUTO CDC FROM SNAPSHOT anlık görüntü sürümlerini belirlemek için iki deseni destekler.
İşlem hattının alım zamanını kullanarak anlık görüntü işleme
Anlık görüntü, işlem hattı çalıştırması sırasında okunur ve alma süresi anlık görüntü sürümü olarak kullanılır. Her işlem hattı güncelleştirmesi ile yeni bir anlık görüntü alınmaktadır. Bir işlem hattı sürekli modda çalıştığında, akışın tetikleyici aralığı ayarına bağlı olarak birden çok anlık görüntü alınmaktadır.
Anlık görüntüler düzenli ve sırayla geldiğinde bu düzeni kullanın ve sürüm oluşturma için işlem hattı çalıştırma zaman damgasını kullanabilirsiniz.
Sürüm işlevlerini kullanarak anlık görüntü işleme
İşlem hattı çalıştırıldığında hangi anlık görüntü sürümünün işleneceğini belirten bir işlev sağlıyorsunuz. İşlev bir tuple döndürür: (DataFrame, version_number). API, anlık görüntüleri sürüm numaraları tarafından tanımlanan sırayla işler. Sıra dışı bir anlık görüntü algılanırsa, anlık görüntü yoksayılır.
Bu düzeni aşağıdaki durumlarda kullanın:
- Aynı anda birden çok anlık görüntü gelebilir ve sıralı işleme gerekir.
- Anlık görüntüler sırayla gelmeyebilir.
- Anlık görüntü sıralama üzerinde açık denetime ihtiyacınız vardır.
Ekstra CDC özellikleri
AUTO CDC hedeflerindeki değişiklik işlemleri
Standart akış tablolarından farklı olarak, Unity Kataloğu tabloları, AUTO CDC hedefleri olduklarında, işlem hattı çalışırken bile INSERT, UPDATE ve DELETE deyimlerini destekler MERGE. Ayrıntılar ve sınırlamalar için bkz. Hedef akış tablosunda veri ekleme, değiştirme veya silme.
AUTO CDC hedeflerinden değişiklik veri akışlarını okuma
AUTO CDC hedef akış tabloları kendi Değişiklik Veri Akışını (CDF) yayarak aşağı yöndeki işlem hatlarının AUTO CDC çıktısındaki değişiklikleri kullanmasına olanak tanır. Ayrıntılar için bkz. AUTO CDC hedef tablosundan değişiklik veri akışını okuma.
Ölçümler ve izleme
AUTO CDC her işlem hattı çalıştırmasında num_upserted_rows ve num_deleted_rows metrikleri otomatik olarak yakalar. Ayrıntılar için bkz . Gelişmiş AUTO CDC konuları.
SCD Tür 2 için sütun alt kümelerini izleme
Varsayılan olarak, HERHANGI bir sütun değeri değiştiğinde SCD Tür 2 yeni bir sürüm oluşturur.
AUTO CDC , hangi sütunların tarihçe için takip edileceğini belirtmenize olanak tanır, böylece izlenmeyen sütunlardaki değişiklikler yeni bir geçmiş kaydı oluşturmadan mevcut sürümü yerinde güncelleyebilir. Bu, kritik öznitelikler için geçmişi korurken depolama maliyetlerini ve sorgu karmaşıklığını azaltır. Örnek için bkz. SCD Tür 2 ile sütun alt kümesini izleme.
Recommendations
Değişiklik veri yakalamayı (CDC), verilerinizdeki değişikliklerle çalışmak istediğiniz durumlar için, örneğin aşağı akıştaki maddileştirilmiş görünümlerin artımlı olarak güncellenmesini sağlamak amacıyla kullanın. Ayrıca, örneğin belirli bir zaman noktasında kimin hangi role sahip olduğunu öğrenmek için, verilerinizde yapılan değişikliklerin geçmişini korumak istediğinizde CDC'yi kullanın.
Yukarı akış verilerini Azure Databricks'e çoğaltmanız ve kaynak değişikliklerle eşitlenmiş durumda tutmanız gerektiğinde AUTO CDC API'lerini kullanın. Doğru API, kaynak sisteminizin değişiklikleri nasıl kullanıma sunma şekline bağlıdır:
-
Kaynağınız bir değişiklik akışı yayıyorsa
AUTO CDCkullanın; örneğin, CDC etkinleştirilmiş bir ilişkisel veritabanı (Debezium veya Oracle GoldenGate gibi araçlar aracılığıyla), Change Data Feed etkinleştirilmiş bir Delta tablosu ya da sıralama sütunu içeren ekleme, güncelleme ve silme işlemlerinden oluşan bir akış üreten herhangi bir kaynak. -
Kullanın
AUTO CDC FROM SNAPSHOTkaynağınız CDC'yi desteklemediğinde ve yalnızca düzenli aralıklarla tam tablo dökümleri sağladığında. Bu API, ardışık anlık görüntüleri karşılaştırarak değişiklikleri çıkarsar ve yapay bir değişiklik akışı oluşturur, böylece yerel CDC akışı olmadan bile aynı SCD işleme avantajlarını elde edersiniz.
Her iki durumda da, yalnızca her kaydın geçerli durumuna ihtiyacınız varsa SCD Tür 1'i veya denetim, belirli bir noktaya raporlama veya eğilim analizi için değişikliklerin tam geçmişini korumanız gerekiyorsa SCD Tür 2'yi seçin.
Ek kaynaklar
-
AUTO CDC API'leri: Veri değişikliklerini iş hatları ile yakalamayı kolaylaştırın:
AUTO CDCveAUTO CDC FROM SNAPSHOTAPI'leri ile CDC'yi nasıl uygulayacağınızı öğrenin. - Gelişmiş AUTO CDC konuları: DML işlemlerini kullanma, değişiklik veri akışlarını okuma ve ölçümleri izleme gibi gelişmiş CDC konuları hakkında bilgi edinin.