Azure Databricks ACID garantileri nelerdir?

Azure Databricks Delta Lake'i varsayılan olarak tüm okuma ve yazma işlemleri için kullanır ve open source Delta Lake protokolü tarafından sağlanan ACID garantilerini kullanır. ACID, bölünmezlik, tutarlılık, yalıtım ve dayanıklılık anlamına gelir.

  • Bölünmezlik , tüm işlemlerin başarılı veya tamamen başarısız olduğu anlamına gelir.
  • Tutarlılık garantileri, verilerin belirli bir durumunun eşzamanlı işlemler tarafından nasıl gözlemlendiğiyle ilgilidir.
  • Yalıtım , eşzamanlı işlemlerin birbiriyle çakışma olasılığını ifade eder.
  • Dayanıklılık , taahhüt edilen değişikliklerin kalıcı olduğu anlamına gelir.

Birçok veri işleme ve ambarlama teknolojisi ACID işlemlerine sahip olmayı tanımlasa da, belirli garantiler sisteme göre değişir ve Azure Databricks üzerindeki işlemler çalıştığınız diğer sistemlerden farklı olabilir.

Not

Bu sayfada Delta Lake tarafından desteklenen tablolar için garantiler açıklanmaktadır. Diğer veri biçimleri ve tümleşik sistemler okuma ve yazma işlemleri için işlem garantileri sağlamayabilir.

Bulut nesne depolamasına yazılan tüm Azure Databricks işlem işlemelerini kullanır. Bu işlem, veri dosyalarının yanı sıra _started_<id> ve _committed_<id> ile başlayan meta veri dosyaları oluşturur. Azure Databricks eski işleme meta veri dosyalarını düzenli olarak temizlediğinden, bu dosyalarla etkileşim kurmanız gerekmez.

Azure Databricks'te işlemler nasıl kapsamlandırılır?

Varsayılan olarak, her SQL deyimi tek bir tabloda kendi atomik işlemi olarak yürütülür. Birden fazla tablo boyunca birden çok ifadeyi tek bir atomik işlemde gruplandırmak için BEGIN ATOMIC ... END; dizimini kullanabilirsiniz. Değişikliklerin tümü ya birlikte başarılı olur ya da birlikte geri alınır. Birden çok tabloya yayılan işlemler, katılan tablolarda katalog işlemelerinin etkinleştirilmesini gerektirir. Bkz. İşlemler.

eşzamanlı işlemleri yönetmek için Azure Databricks iyimser eşzamanlılık denetimi kullanır. Bu, bir tabloya yönelik okuma veya yazma işlemlerinde kilitlerin bulunmadığı ve kilitlenme ihtimalinin mevcut olmadığı anlamına gelir.

Varsayılan olarak, Azure Databricks okumalarda anlık görüntü yalıtımı desteği ve yazmalarda write-serializable yalıtımı sağlar. Yazma-serileştirilebilir yalıtım anlık görüntü yalıtımından daha güçlü garantiler sağlarken, bu korumalar yalnızca yazma işlemleri için geçerlidir.

Birden çok tabloya başvuran okuma işlemleri, erişim sırasında her tablonun geçerli sürümünü döndürür, ancak başvuruda bulunan tabloları değiştirebilecek eşzamanlı işlemleri kesintiye uğratmaz.

Azure Databricks bölünmezliği nasıl uygular?

İşlem günlüğü, taahhüt atomikliğini kontrol eder. Bir işlem sırasında veri dosyaları, tablonun desteklendiği dosya dizinine yazılır. İşlem tamamlandığında, işlem sırasında yazılan tüm dosyaların yollarını içeren işlem günlüğüne yeni bir giriş işlenir. Her işleme tablo sürümünü artırır ve yeni veri dosyalarını okuma işlemlerine görünür hale getirir. Tablonun geçerli durumu, işlem günlüklerinde geçerli olarak işaretlenmiş tüm veri dosyalarını içerir.

İşlem günlüğü yeni bir sürüm kaydetmediği sürece veri dosyaları izlenmez. Bir tabloya veri dosyaları yazdıktan sonra işlem başarısız olursa, bu veri dosyaları tablo durumunu bozmaz, ancak dosyalar tablonun bir parçası olmaz. İşlem, VACUUM başarısız işlemlerden kalan kaydedilmemiş dosyalar da dahil olmak üzere bir tablo dizinindeki tüm izlenmeyen veri dosyalarını siler.

Azure Databricks dayanıklılığı nasıl uygular?

Azure Databricks tüm veri dosyalarını ve işlem günlüklerini depolamak için bulut nesne depolamayı kullanır. Bulut nesne depolaması yüksek kullanılabilirliğe ve dayanıklılığa sahiptir. İşlemler tamamen başarılı veya başarısız olduğundan ve işlem günlüğü bulut nesne depolamadaki veri dosyalarıyla birlikte bulunduğundan, Azure Databricks üzerindeki tablolar, depolandıkları bulut nesne depolama alanının dayanıklılık garantilerini devralır.

Azure Databricks tutarlılığı nasıl uygular?

Delta Lake, yazma işlemleri arasında işlem garantileri sağlamak için iyimser eşzamanlılık denetimi kullanır. Bu mekanizma altında yazma işlemleri üç aşamada işler:

  1. Okuma: Hangi dosyaların değiştirilmesi gerektiğini (yani yeniden yazılmasını) belirlemek için tablonun kullanılabilir en son sürümünü okur (gerekirse).
    • Yalnızca ekleme olan yazma işlemleri, yazmadan önce geçerli tablo durumunu okumaz. Şema doğrulaması, işlem günlüğündeki meta verilerden yararlanıyor.
  2. Yazma: Veri dosyalarını tabloyu tanımlamak için kullanılan dizine yazar.
  3. Doğrulama ve işleme:
    • Önerilen değişikliklerin, okunan anlık görüntüden sonra eşzamanlı olarak kaydedilmiş olabilecek diğer değişikliklerle çakışıp çakışmadığını denetler.
    • Çakışma yoksa, hazırlanan tüm değişiklikler yeni bir sürümlü anlık görüntü olarak işlenir ve yazma işlemi başarıyla tamamlanır.
    • Çakışmalar varsa, yazma işlemi eşzamanlı değişiklik özel durumuyla başarısız olur. Bu hata verilerin bozulmasını önler.

İyimser eşzamanlılık, verilerinizdeki çoğu eşzamanlı işlemin birbiriyle çakışamadığını, ancak çakışmalar olabileceğini varsayar. Bkz Yalıtım seviyeleri ve yazma çakışmaları.

Azure Databricks, yalıtımı nasıl uygular?

Azure Databricks tüm tablo yazma işlemleri ve güncelleştirmeleri için varsayılan olarak seri hale getirilebilir yazma yalıtımı kullanır. Anlık görüntü yalıtımı tüm tablo okumaları için kullanılır.

Yazma süreçlerinin seri hale getirilebilirliği ve iyimser eşzamanlılık denetimi, birlikte çalışarak yazma işlemleri için yüksek aktarım hızı sağlar. Bir tablonun geçerli durumu her zaman kullanılabilir ve herhangi bir zamanda bir tabloda yazma başlatılabilir. Eşzamanlı okuma işlemleri yalnızca meta veri deposu ve bulut kaynaklarının aktarım hızıyla sınırlıdır.

Bkz Yalıtım seviyeleri ve yazma çakışmaları.

Delta Lake çok tablolu işlemleri destekliyor mu?

Önemli

Unity Kataloğu yönetilen Delta tablolarına yazan işlemler Genel Önizleme aşamasındadır.

Unity Kataloğu tarafından yönetilen Iceberg tablolarına yazılan işlemler Özel Önizleme aşamasındadır. Bu önizlemeye katılmak için yönetilen Iceberg tabloları önizleme kayıt formunu gönderin.

Evet. Katalog işlemelerinin etkinleştirildiği tablolar, birden çok deyime ve birden çok tabloya yayılan işlemlere katılabilir. Bkz. İşlemler.

Azure Databricks üzerindeki birincil anahtar ve yabancı anahtar ilişkileri bilgilendirme amaçlıdır ve uygulanmaz. Bkz. Birincil anahtar ve yabancı anahtar ilişkilerini bildirme.

Delta Lake'in çok kümeli yazmaları desteklemesi ne anlama gelir?

Delta Lake, birden çok küme aynı tabloya eşzamanlı olarak yazdığında veri bozulmasını önler. Bazı yazma işlemleri eşzamanlı yürütme sırasında çakışabilir, ancak tabloyu bozmaz. Bkz Yalıtım seviyeleri ve yazma çakışmaları.

Bir Delta tablosunu değişik çalışma alanlarından değiştirebilir miyim?

Evet, aynı Delta tablosunu farklı çalışma alanlarından eşzamanlı olarak değiştirebilirsiniz. Ayrıca, bir işlem çalışma alanından yazıyorsa, diğer çalışma alanlarındaki okuyucular tutarlı bir görünüm görür.