Azure Databricks'te ACID garantileri nelerdir?

Azure Databricks, Delta Lake protokolünü açık kaynak tarafından sağlanan ACID garantilerini kullanarak tüm okuma ve yazma işlemleri için varsayılan olarak Delta Lake 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 depolama teknolojisi ACID işlemlerine sahip olmayı tanımlasa da, belirli garantiler sisteme göre değişir ve Azure Databricks'te yapılan 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 depolama alanına yazılan tüm Azure Databricks işlemsel işlemeleri kullanır ve _committed_<id> veri dosyalarıyla _started_<id> birlikte 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şlemlerin kapsamı nasıl belirlenmiştir?

Azure Databricks, işlemleri tablo düzeyinde yönetir. İşlemler her zaman bir kerede bir tabloya uygulanır. Azure Databricks eşzamanlı işlemleri yönetmek için iyimser eşzamanlılık denetimi kullanır. Bu, bir tabloya karşı okuma veya yazma kilitleri olmadığı ve kilitlenme olasılığının olmadığı anlamına gelir.

Varsayılan olarak, Azure Databricks okumalarda anlık görüntü yalıtımı ve yazmalarda seri hale getirilebilir yalıtım sağlar. Yazma serileştirilebilir yalıtım, anlık görüntü yalıtımına göre daha güçlü garantiler sağlar, ancak bu daha güçlü yalıtımı yalnızca yazma işlemleri için uygular.

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'in BEGIN/END birden çok işlemin tek bir işlem olarak gruplanması için izin veren yapıları yoktur. Birden çok tabloyu değiştiren uygulamalar, işlemleri her tabloya seri bir şekilde işler. kullanarak MERGE INTObir tablodaki eklemeleri, güncelleştirmeleri ve silmeleri tek bir yazma işleminde birleştirebilirsiniz.

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

İşlem günlüğü, işleme bölünmezliğini denetler. Bir işlem sırasında veri dosyaları, tablonun desteklenmesiyle 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'teki 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 anlık görüntü sürümü olarak işlenir ve yazma işlemi başarılı olur.
    • Ç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. Azure Databricks'te yalıtım düzeyleri 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 seri hale getirilebilirlik 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. Azure Databricks'te yalıtım düzeyleri ve yazma çakışmaları.

Delta Lake çok tablolu işlemleri destekler mi?

Delta Lake çok tablolu işlemleri desteklemez. Delta Lake, tablo düzeyindeki işlemleri destekler.

Azure Databricks'te 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. Azure Databricks'te yalıtım düzeyleri 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.