Delta Lake özellik uyumluluğu ve protokolleri

Bu makalede, Delta Lake protokollerine, tablo özelliklerine ve okuma ve yazma işlemleri için Delta Lake istemcileriyle uyumluluğa genel bir bakış sağlanmaktadır.

Delta tablosunun işlem günlüğü, protokol sürüm oluşturma bilgilerini içerir. Review tablosu ayrıntılarını detaylarla açıklayın bölümüne bakın.

Tablo protokolü okuma ve yazma uyumluluğunu nasıl belirtir?

Her Delta tablosunun, tabloyu okumak ve tabloya yazmak için gereken yetenek kümesini gösteren bir protokol belirtimi vardır. Protokol belirtimi, tablonun desteklediği tüm özellikleri işleyebileceklerini belirlemek için tablodan okuyan veya tabloya yazan uygulamalar tarafından kullanılır. Bir uygulama, tablonun protokolünde desteklenen olarak listelenen bir özelliğin nasıl işleneceğini bilmiyorsa, bu uygulama bu tabloyu okuyamaz veya yazamaz.

Delta Lake'e eklenen yeni özelliklerin ve işlevlerin çoğu için tablo protokollerinin yükseltilmesi gerekir.

Aşağıdaki tabloda Delta Lake protokollerini açıklamak için kullanılan temel terimlere genel bir bakış sağlanmaktadır:

Süre Açıklama
Delta Lake istemcisi Delta tablosunu okuyan veya bu tabloya yazan herhangi bir sistem.
Protokolü okuma Delta Lake istemcisinin tabloyu okuması için gereken desteği belirtir.
Yazma protokolü Delta Lake istemcisinin tabloya yazması için gereken desteği belirtir.
minReaderVersion Okuyucu protokolünün bileşeni. Geçerli değerler 1, 2veya 3.
minWriterVersion Yazıcı protokolünün bileşeni. Geçerli değerler 2 ile 7 arasında tamsayılardır.
Tablo özelliği Protokol sürümlerine detaylı bir alternatif. Tablo özellikleri isteğe bağlı etkinleştirilebilen Delta Lake özellikleriyle eşleşir.
Yazar özelliği Yazma protokolüne bağlı bir tablo özelliği.
Okuyucu özelliği Okuma protokolüne bağlı bir tablo özelliği.

Yazma protokolleri ve yazıcı özellikleri yalnızca yazıcı istemcileriyle uyumluluğu etkiler; başka bir deyişle eski iş yüklerinden tabloya salt okunur erişim hala desteklenmektedir. Okuma protokolleri ve okuyucu özellikleri hem okuma hem de yazma uyumluluğunu etkiler.

Delta Lake özelliklerinin tümü birbiriyle uyumlu değildir.

Bazı tablo özellikleri etkinleştirildikten sonra bırakılamaz. Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.

Protokol uyumluluğu için tablo özellikleri

Databricks Runtime 12.2 LTS ve üzerinde Databricks, özelliklere yönelik desteği ve okuyucularla yazıcılarla uyumluluğu belirtmek için tablo özelliklerini kullanır. Tablo özellikleri, belirli bir tablo tarafından hangi özelliklerin destekleneceğini belirtmek için ayrıntılı bayraklar kullanır. Tablo özellikleri, Delta Lake protokolüne yeni özellikler ekleyerek eski protokol sürüm oluşturma düzeninin yerini alır.

Tablo yazıcı özellikleri , verilerin yazılma şeklini etkileyen özellikleri gösterir. Tablo yazıcı özellikleri, minWriterVersion == 7 olması şartıyla çalışır. Yazıcı özellikleri olarak uygulanan özellikler okuyucu istemcilerini engellemez.

Tablo okuyucu özellikleri , verilerin okunma şeklini etkileyen özellikleri gösterir. Tüm tablo okuyucu özellikleri aynı zamanda tablo yazıcı özellikleridir. Tablo okuyucu özellikleri minReaderVersion == 3 ve minWriterVersion == 7 olduğunda gerekir. İstemci, okuyamadığı bir tabloya yazamaz.

Tablo özellikleri etkinleştirildiğinde, tablonun protokolü tarafından desteklenen tüm özellikler, ilgili listelerde readerFeatures veya writerFeatures olarak görünür. Tablodaki özellikleri bırakırken, tablonuz mümkün olan en düşük protokolü çözümlemek için bu davranışı kaldırabilir. Bkz. Mümkün olan en düşük protokol.

Tamsayı tabanlı protokol sürümleri ve eski sistemlerle uyumluluk

Tüm tablolar, minReaderVersion ve minWriterVersion ile temsil edilen tamsayı tabanlı bir protokol sürümünü içerir. Tablo özellikleri kullanılarak uygulanan işlevsellik bu protokol sürümlerine dayandırılır, ancak birçok eski okuyucu ve yazıcı istemcisi uyumluluğu yönetmek için protokol sürümlerini kullanmaya devam eder. Delta Lake, modern ve eski Delta istemcileriyle en yüksek uyumluluğu sağlamak için tablo protokollerini mümkün olan en düşük sürüme çözümlemeye çalışır. Bkz. Mümkün olan en düşük protokol.

Tamsayı tabanlı protokol sürüm oluşturma düzeninde, her sürüm numarası birden çok özellik paketler ve sürüm numaraları arasında özellikler birikmeli olur. Bu, Delta protokolüyle uyumlu olması için istemcilerin daha önce yayımlanan tüm özellikler de dahil olmak üzere belirli bir sürümde bulunan tüm okuyucu veya yazıcı özellikleri için destek uygulaması gerektiği anlamına gelir.

Not

Databricks, desteklenen tüm Databricks Runtime sürümlerinde tablo özellikleri için kesintisiz kısmi destek içerir. OSS Delta istemcileri, belirli özellikler için desteğin nasıl uygulaneceğini seçer.

Tablo protokolü ne zaman değişir?

Bir tablonun protokolü aşağıdaki koşullar altında değişir:

  • Yeni bir özellik etkinleştirilirse protokol yükseltilir.
  • Bir tablo özelliği bırakılırsa protokol düşürülmüş olur.

Tablo özelliğinin devre dışı bırakılması protokolün düşürülmesiyle sonuçlanmaz . Özelliği tablo protokolünden tamamen kaldırmak için bırakmanız gerekir. Tüm tablo özellikleri bırakılamaz. Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.

Tüm protokol değiştirme işlemleri tüm eşzamanlı yazma işlemleriyle çakışıyor.

Akış okumaları, tablo meta verilerini değiştiren bir işlemeyle karşılaştıklarında başarısız olur. Akışın devam etmesi için akışı yeniden başlatmanız gerekir. Önerilen yöntemler için bkz Yapılandırılmış Akış için Üretimde Dikkat Edilmesi Gerekenler.

Uyarı

Çoğu protokol sürüm yükseltmesi geri döndürülemez ve protokol sürümünü yükseltmek mevcut Delta Lake tablo okuyucularını, yazarlarını veya her ikisini birden etkileyebilir. Databricks, delta Lake'teki yeni özelliklere katılma gibi belirli tabloları yalnızca gerektiğinde yükseltmenizi önerir. Ayrıca tüm geçerli ve gelecekteki üretim araçlarınızın yeni protokol sürümüyle Delta Lake tablolarını desteklediğinden emin olmanız gerekir.

Bazı özellikler için protokol seviyelerini düşürme kullanılabilir. Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.

Tablo protokolü ne zaman yükseltilir?

Tabloda bir özelliği etkinleştirdiğinizde, tablo protokolü otomatik olarak yükseltilir. Bazı özellikler, CREATE veya ALTER tablo deyimlerinde kullanılan söz dizimine göre otomatik olarak etkinleştirilirken, diğer özelliklerin açıkça etkinleştirilmesi için tablo özelliklerinin ayarlanması gerekir. Bazen istenen işlevselliği desteklemek için birden çok tablo özelliğini açıkça etkinleştirmeniz gerekir. Diğer durumlarda, işlevselliğin etkinleştirilmesi diğer tablo özelliklerini otomatik olarak etkinleştirebilir. Hangi tablo özelliklerinin gerekli olduğunu belirlemek için kullandığınız işlevsellik ve söz dizimi için Azure Databricks belgelerine bakın.

Okuyucu özellikleri hem okuma protokollerini hem de yazma protokollerini yükseltmeyi gerektirir. Yazıcı özellikleri yalnızca yazma protokollerini yükseltmeyi gerektirir.

Örneğin, kısıtlamalara yönelik CHECK destek bir yazma uygulaması özelliğidir: Yalnızca yazma uygulamalarının CHECK kısıtlamalar hakkında bilgi sahibi olması ve bunları uygulaması gerekir.

Buna karşılık, sütun eşlemesi hem okuma hem de yazma protokollerini yükseltmeyi gerektirir. Veriler tabloda farklı depolandığından, okuyucu uygulamalarının verileri doğru okuyabilmeleri için sütun eşlemesini anlaması gerekir.

Not

Databricks, minReaderVersion ve minWriterVersion tablo özelliklerinin değiştirilmesini önermemektedir. Bu tablo özelliklerinin değiştirilmesi protokol yükseltmesini engellemez. Bu değerlerin daha düşük bir değere ayarlanması tabloyu düşürmez. Bkz . Delta Lake tablosu özelliğini bırakma ve tablo protokolünü düşürme.

Mümkün olan en düşük protokol

Varsayılan olarak Delta Lake, tablo tarafından desteklenen olarak işaretlenmiş tüm özellikleri temsil etmek için mümkün olan en düşük protokolü kullanmayı dener.

Bu davranış yalnızca tablo protokollerinin indirilmesine neden olabilir, yani minReaderVersion veya minWriterVersion bir tablo için daha düşük değerlere dönüşebilir.

Tablo protokolünün DROP FEATURE desteklenen özellik listesinden tablo özelliğini kaldırmak için komutunu çalıştırmanız gerekir. Tablo özellikleri hiçbir zaman otomatik olarak bırakılmaz.

Tabloda bulunan tüm Delta Lake özellikleri daha düşük bir protokol sürümünde tam olarak destekleniyorsa, tablo okuyucu ve yazıcı uyumluluğunu göstermek için tablo özelliklerini kullanmayan bir protokol sürümüne geri dönebilir. Bu protokol sürüm düşürmesi gerçekleştiğinde, tabloda ya readerFeatures ya da hem readerFeatures hem de writerFeatures protokolünden çıkarılabilir. Bu, Delta Lake özelliklerinin devre dışı bırakılmasına neden olmaz ve yalnızca tablo protokolünde tablo özellikleri gerekli olmadığında gerçekleşir.

Tablo protokolünü düşüren tüm değişiklikler okuyucu ve yazıcı istemcileriyle uyumluluğu artırır. Bunun nedeni, okuyucu ve yazıcı istemcilerinin daha yüksek protokol sürümlerini desteklese bile daha düşük protokol sürümlerine saygı duyması gerekir.

Tablo özellikleri Delta Lake özelliklerinin etkinleştirilme şeklini değiştirir mi?

Delta tablolarıyla yalnızca Azure Databricks aracılığıyla etkileşimde bulunuyorsanız, en düşük Databricks Runtime gereksinimlerini kullanarak Delta Lake özellikleri desteğini izlemeye devam edebilirsiniz. Azure Databricks, tablo tarafından kullanılan tüm özellikler bu sürüm tarafından desteklendiği sürece tüm Databricks Runtime LTS sürümlerinde tablo özelliklerine yükseltilmiş Delta tablolarının okunmasını destekler.

Diğer sistemleri kullanarak Delta tablolarını okur ve yazarsanız, sistemin yükseltilen protokol sürümlerini anlamama riski olduğundan tablo özelliklerinin uyumluluğu nasıl etkilediğini düşünmeniz gerekebilir.

Önemli

Tablo özellikleri, yazar sürüm 7 ve okuyucu sürüm 3 için Delta Lake biçimine sunulmuştur. Azure Databricks, tablo özellikleri için destek eklemek için desteklenen tüm Databricks Runtime LTS sürümlerine kod geri aktarmıştır, ancak bu Databricks Runtime'da zaten desteklenen özellikler için onca. Bu, oluşturulan sütunları etkinleştirmek ve Databricks Runtime 9.1 LTS'de bu tablolarla çalışmaya devam etmek için tablo özelliklerini kullanmayı tercih edebilirsiniz ancak kimlik sütunları etkinleştirilmiş (Databricks Runtime 10.4 LTS gerektirir) tabloların bu Databricks Runtime'da hala desteklenmediği anlamına gelir.

Delta Lake özellik uyumluluğunu Azure Databricks nasıl yönetir?

Databricks, Databricks Runtime sürümlerinde Delta Lake'i temel alarak geliştirilen yeni Delta Lake özellikleri ve iyileştirmeleri için destek sunar. Delta Lake özelliklerinden yararlanan Azure Databricks iyileştirmeleri, uyumluluk için OSS Delta Lake'te kullanılan protokollere uygundur. Birçok Azure Databricks iyileştirmesi için bir tabloda Delta Lake özelliklerinin etkinleştirilmesi gerekir ve Lakeflow Spark Bildirimli İşlem Hatları gibi bazı Azure Databricks ürünleri birçok tablo özelliğine bağlıdır.

  • Düşük Databricks Runtime sürümleri tarafından yazılan tüm tablolar, daha yüksek Databricks Runtime sürümlerinde tam okuma ve yazma desteğine sahiptir.
  • Daha yüksek Databricks Runtime sürümleri tarafından yazılan tablolar, düşük Databricks Runtime sürümlerinde desteklenmeyen tablo özelliklerini kullanabilir.
    • Bazı özellikler, etkin tablo özellikleriyle ilgili tüm iyileştirmeleri tam olarak uygulamadan düşük Databricks Runtime sürümlerinden yazma işlemlerine izin verebilir.

Daha eski Databricks Runtime sürümlerine geri taşınmış destekle tablo özellikleriyle çalışırken, belirli bir Databricks Runtime sürümünde çalışan bazı işlemler, karşılık gelen OSS Delta sürümünde çalışmayabilir. Geliştirme döngünüz veya veri mimariniz OSS Delta Lake içeriyorsa, üretim tablolarında tablo özelliklerini etkinleştirmeden önce her zaman OSS Delta istemcilerinde uyumluluğu test etmelisiniz.

Delta Lake özellikleri ve gerekli Databricks Runtime sürümleri

Özellikler tablo bazında etkinleştirilir. Aşağıdaki tabloda, belirtilen özellik için tam destek içeren en düşük Databricks Runtime sürümü listelanmaktadır. Tam destek, hem okuma hem de yazma işlemleri için genel olarak kullanılabilen tüm işlevlerin desteklendiği anlamına gelir.

Özellik Databricks Runtime sürümünü veya daha yenisini gerektirir. Belgeler
CHECK Kısıtlar Desteklenen tüm Databricks Runtime sürümleri Azure Databricks kısıtlaması ayarla>
Veri akışını değiştirme Desteklenen tüm Databricks Runtime sürümleri Delta Lake değişiklik veri akışını Azure Databricks
Oluşturulan sütunlar Desteklenen tüm Databricks Runtime sürümleri Delta Lake tarafından oluşturulan sütunlar
Sütun eşleştirme Desteklenen tüm Databricks Runtime sürümleri Delta Lake sütun eşlemesi ile sütunları yeniden adlandırma ve silme
Kimlik sütunları Desteklenen tüm Databricks Runtime sürümleri Delta Lake'te kimlik sütunlarını kullanma
Tablo özellikleri Databricks Runtime 12.2 LTS Protokol uyumluluğu için tablo özellikleri
Silme vektörleri Databricks Runtime 12.2 LTS Databricks'te silme vektörleri
Zaman DamgasıNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ tür
Tekdüze Databricks Runtime 13.3 LTS Iceberg istemcileriyle Delta tablolarını okuma
Sıvı kümeleme Databricks Runtime 13.3 LTS Tablolar için sıvı kümeleme kullanma
Satır izleme Databricks Runtime 14.3 LTS sürümü Databricks'te satır izleme
Tür genişletme Databricks Runtime 15.4 LTS Tür genişletme
Varyant Databricks Runtime 15.4 LTS Değişken türü desteği
Sıralamalar Databricks Çalışma Zamanı 16.1 Delta Lake için Sıralama desteği
Korumalı denetim noktaları Databricks Runtime 16.3 Delta Lake tablo özelliğini bırakma ve tablo protokolünü düşürme
Katalog işlemeleri Databricks Runtime 16.4 LTS Katalog işlemeleri

Bkz Databricks Runtime sürüm notları, sürümler ve uyumluluk.

Not

Lakeflow Spark Bildirimli İşlem Hatları ve Databricks SQL, yeni özellikleri desteklemek için çalışma zamanı ortamlarını normal sürümlerle otomatik olarak yükseltir. Bkz. Lakeflow Spark Bildirimli İşlem Hatları sürüm notları ve sürüm yükseltme işlemi ile Databricks SQL sürüm notları.

Protokol sürümüne göre özellikler

Aşağıdaki tabloda Delta Lake ve Apache Iceberg tablo özellikleri için protokol sürümü gereksinimleri listelenmiştir. Özellik türü, bir özelliğin yalnızca yazma işlemleri için mi yoksa hem okuma hem de yazma işlemleri için mi dikkate alınması gerektiğini gösterir.

Delta Lake, protokol özelliklerini belirtmek için ayrı minReaderVersion ve minWriterVersion değerleri kullanır. open source Delta Lake protokolü tablo özelliklerinde standartlaştırılmıştır, ancak bazı istemciler eski protokol sürümünü kullanmaya devam eder. Bazı istemciler tüm özellikleri desteklemeyebilir, bu nedenle üretim tablolarında yeni özellikleri etkinleştirmeden önce istemci belgelerinize başvurun ve uyumluluğu test edin.

Apache Iceberg, ayrı okuyucu ve yazar sürümleri yerine tek format-version bir sürüm kullanır. Iceberg biçimli sürüm, hangi özelliklerin kullanılabilir olduğunu gösterir ancak bunların kullanılmasını zorunlu yapmaz. Sürüm 3'te zorunlu olan satır izleme dışında, özellikler isteğe bağlıdır. Bir özellik Iceberg sütununda "YOK" değerini gösterdiğinde, doğrudan Iceberg eşdeğeri olmayan Delta'ya özgü bir özelliktir.

Not

Yalnızca Databricks Runtime uyumluluğuyla ilgileniyorsanız bkz. Delta Lake özellik uyumluluğunu nasıl Azure Databricks yönetir?.

Özellik Delta minWriterVersion Delta minReaderVersion Buzdağı format-version Özellik türü
Temel işlevsellik 2 1 1 Yazar
CHECK Kısıtlamalar 3 1 N/A Yazar
Veri akışını değiştirme 4 1 N/A Yazar
Oluşturulan sütunlar 4 1 N/A Yazar
Sütun haritalama 5 2 N/A Okuyucu ve yazar
Kimlik sütunları 6 1 N/A Yazar
Satır izleme 7 1 3 Yazar
Silme vektörleri 7 3 3 Okuyucu ve yazar
Zaman DamgasıNTZ 7 3 1 Okuyucu ve yazar
Sıvı kümeleme 7 3 1 Okuyucu ve yazar (1)
İceberg okuyucuları (UniForm) 7 2 N/A Yazar (2)
Tür genişletme 7 3 N/A Okuyucu ve yazar
Varyant 7 3 3 Okuyucu ve yazar
Değişken parçalama 7 3 3 Okuyucu ve yazar
Sıralamalar 7 3 N/A Okuyucu ve yazar
Korumalı denetim noktaları 7 1 N/A Yazar
Katalog işlemeleri 7 3 N/A Okuyucu ve yazar

(1): Sıvı kümeleme gizli bölümleme uygular.

(2): Sütun eşlemenin etkinleştirilmesini gerektirir.