Kompatibilitas dan protokol fitur Delta Lake

Artikel ini menyediakan gambaran umum protokol Delta Lake, fitur tabel, dan kompatibilitas dengan klien Delta Lake untuk baca dan tulis.

Log transaksi untuk tabel Delta berisi informasi penerapan versi protokol. Lihat Meninjau detail tabel dengan menjelaskan detailnya.

Bagaimana protokol tabel menentukan kompatibilitas baca dan tulis?

Setiap tabel Delta memiliki spesifikasi protokol yang menunjukkan serangkaian kemampuan yang diperlukan untuk membaca dan menulis ke tabel. Spesifikasi protokol digunakan oleh aplikasi yang membaca dari atau menulis ke tabel untuk menentukan apakah mereka dapat menangani semua fitur yang didukung tabel. Jika aplikasi tidak tahu cara menangani fitur yang terdaftar sebagai didukung dalam protokol tabel, aplikasi tersebut tidak dapat membaca atau menulis tabel tersebut.

Sebagian besar kemampuan dan fungsionalitas baru yang ditambahkan ke Delta Lake memerlukan peningkatan protokol tabel.

Tabel berikut ini menyediakan gambaran umum istilah kunci yang digunakan untuk menjelaskan protokol Delta Lake:

Istilah Deskripsi
Klien Delta Lake Sistem apa pun yang membaca atau menulis ke tabel Delta.
Baca protokol Menentukan dukungan yang diperlukan klien Delta Lake untuk membaca tabel.
Menulis sebuah protokol Menentukan dukungan yang diperlukan klien Delta Lake untuk menulis ke tabel.
minReaderVersion Komponen protokol alat baca. Nilai yang valid adalah 1, 2, atau 3.
minWriterVersion Komponen protokol penulisan. Nilai yang valid adalah bilangan bulat 2 hingga 7.
Fitur tabel Alternatif terperinci untuk versi protokol. Fitur-fitur tabel dipetakan ke fitur-fitur Delta Lake yang dapat diaktifkan secara opsional.
Fitur penulis Fitur tabel yang terikat dengan protokol penulisan.
Fitur pembaca Fitur tabel yang terkait dengan protokol baca.

Protokol tulis dan fitur penulis hanya memengaruhi kompatibilitas dengan klien penulis, yang berarti bahwa akses baca-saja ke tabel dari beban kerja warisan masih didukung. Protokol baca dan fitur pembaca memengaruhi kompatibilitas baca dan tulis.

Tidak semua fitur Delta Lake kompatibel satu sama lain.

Beberapa fitur tabel tidak dapat dihilangkan setelah diaktifkan. Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel.

Fitur tabel untuk kompatibilitas protokol

Di Databricks Runtime 12.2 LTS ke atas, Databricks menggunakan fitur tabel untuk menunjukkan dukungan untuk fitur dan kompatibilitas dengan pembaca dan penulis. Fitur tabel menggunakan bendera terperinci untuk menentukan fitur mana yang didukung oleh tabel tertentu. Fitur tabel menggantikan skema penerapan versi protokol lama dengan memperkenalkan fitur baru ke protokol Delta Lake.

Fitur penulis tabel menunjukkan fitur yang memengaruhi cara data ditulis. Fitur penulis tabel memerlukan minWriterVersion == 7. Fitur yang diimplementasikan sebagai fitur penulis tidak memblokir klien pembaca.

Fitur pembaca tabel menunjukkan fitur yang memengaruhi cara data dibaca. Semua fitur pembaca tabel juga merupakan fitur penulis tabel. Fitur pembaca tabel memerlukan minReaderVersion == 3 dan minWriterVersion == 7. Klien tidak dapat menulis ke tabel yang tidak dapat dibacanya.

Saat fitur tabel diaktifkan, semua fitur yang didukung oleh protokol untuk tabel muncul dalam daftar masing-masing sebagai readerFeatures atau writerFeatures. Saat menghapus fitur dari tabel, tabel Anda mungkin menghilangkan perilaku ini untuk beralih ke protokol serendah mungkin. Lihat Protokol terendah yang mungkin.

Versi protokol berbasis bilangan bulat dan kompatibilitas warisan

Semua tabel menyertakan versi protokol berbasis bilangan bulat yang diwakili oleh minReaderVersion dan minWriterVersion. Fungsionalitas yang diterapkan menggunakan fitur tabel dibangun berdasarkan versi protokol ini, tetapi banyak klien pembaca dan penulis warisan terus menggunakan versi protokol untuk mengelola kompatibilitas. Delta Lake mencoba menyelesaikan protokol tabel ke versi serendah mungkin untuk mempertahankan kompatibilitas maksimum dengan klien Delta modern dan lama. Lihat Protokol terendah yang mungkin.

Dalam skema penerapan versi protokol berbasis bilangan bulat, setiap nomor versi menggabungkan beberapa fitur, dan fitur di seluruh nomor versi bersifat kumulatif. Ini berarti bahwa untuk mematuhi protokol Delta, klien harus menerapkan dukungan untuk semua fitur pembaca atau penulis yang ada dalam versi tertentu termasuk semua fitur yang dirilis sebelumnya.

Catatan

Databricks menyediakan dukungan parsial yang tidak mengganggu untuk fitur tabel dalam semua versi Runtime Databricks yang didukung. Klien OSS Delta memilih cara menerapkan dukungan untuk fitur tertentu.

Kapan protokol tabel berubah?

Protokol untuk tabel berubah dalam kondisi berikut:

  • Jika fitur baru diaktifkan, protokol akan ditingkatkan.
  • Jika fitur tabel dihilangkan, protokol diturunkan.

Menonaktifkan fitur tabel tidak mengakibatkan penurunan protokol. Anda harus menghilangkan fitur untuk menghapusnya sepenuhnya dari protokol tabel. Tidak semua fitur tabel dapat dihilangkan. Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel.

Semua operasi perubahan protokol berkonflik dengan semua penulisan secara bersamaan.

Pembacaan streaming gagal ketika menemukan commit yang mengubah metadata tabel. Jika Anda ingin aliran berlanjut, Anda harus memulai ulang. Untuk metode yang direkomendasikan, lihat Pertimbangan produksi untuk Streaming Terstruktur.

Peringatan

Kebanyakan peningkatan versi protokol bersifat permanen, dan peningkatan versi protokol mungkin merusak pembaca atau penulis tabel Delta Lake yang ada, atau keduanya. Databricks merekomendasikan Anda meningkatkan tabel tertentu hanya jika diperlukan, seperti ikut serta ke fitur baru di Delta Lake. Anda juga harus memeriksa untuk memastikan bahwa semua alat produksi Anda saat ini dan yang akan datang mendukung tabel Delta Lake dengan versi protokol baru.

Penurunan protokol tersedia untuk beberapa fitur. Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel.

Kapan protokol tabel ditingkatkan?

Saat Anda mengaktifkan fitur pada tabel, protokol tabel akan dimutakhirkan secara otomatis. Beberapa fitur diaktifkan secara otomatis berdasarkan sintaks yang digunakan dalam CREATE pernyataan tabel atau ALTER , sementara fitur lain memerlukan pengaktifan eksplisit melalui pengaturan properti tabel. Terkadang Anda harus secara eksplisit mengaktifkan beberapa fitur tabel untuk mendukung fungsionalitas yang diinginkan. Dalam kasus lain, mengaktifkan fungsionalitas mungkin secara otomatis mengaktifkan fitur tabel lainnya. Lihat dokumentasi Azure Databricks untuk fungsionalitas dan sintaks yang Anda gunakan untuk menentukan fitur tabel mana yang diperlukan.

Fitur pembaca memerlukan peningkatan protokol baca dan protokol tulis. Fitur penulisan hanya memerlukan peningkatan protokol penulisan.

Sebagai contoh, fitur penulis adalah dukungan untuk CHECK batasan: hanya aplikasi penulisan yang perlu mengetahui tentang CHECK batasan dan menerapkannya.

Sebaliknya, pemetaan kolom memerlukan peningkatan protokol baca dan tulis. Karena data disimpan secara berbeda dalam tabel, aplikasi pembaca harus memahami pemetaan kolom sehingga mereka dapat membaca data dengan benar.

Catatan

Databricks merekomendasikan untuk tidak mengubah properti tabel minReaderVersion dan minWriterVersion. Mengubah properti tabel ini tidak mencegah pemutakhiran protokol. Mengatur nilai-nilai ini ke nilai yang lebih rendah tidak menurunkan tabel. Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel.

Protokol semurah mungkin

Secara default, Delta Lake mencoba menggunakan protokol terendah yang mungkin untuk mewakili semua fitur yang ditandai sebagai didukung oleh tabel.

Perilaku ini hanya dapat mengakibatkan turunnya protokol tabel, yang berarti bahwa minReaderVersion atau minWriterVersion mungkin berubah menjadi nilai yang lebih rendah untuk tabel.

Anda harus menjalankan DROP FEATURE perintah untuk menghapus fitur tabel dari daftar fitur yang didukung dalam protokol tabel. Fitur tabel tidak pernah dihilangkan secara otomatis.

Jika semua fitur Delta Lake yang ada dalam tabel didukung penuh dalam versi protokol yang lebih rendah, tabel mungkin kembali ke versi protokol yang tidak menggunakan fitur tabel untuk menunjukkan kompatibilitas pembaca dan penulis. Ketika protokol ini mengalami penurunan tingkat, tabel mungkin menghilangkan readerFeatures atau readerFeatures maupun writerFeatures dari protokol tabel. Ini tidak mengakibatkan fitur Delta Lake dinonaktifkan dan hanya terjadi ketika fitur tabel tidak diperlukan dalam protokol tabel.

Semua perubahan yang menurunkan protokol tabel meningkatkan kompatibilitas dengan klien pembaca dan penulis. Ini karena klien pembaca dan penulis harus menghormati versi protokol yang lebih rendah bahkan jika mereka mendukung versi protokol yang lebih tinggi.

Apakah fitur tabel mengubah bagaimana fitur Delta Lake diaktifkan?

Jika Anda hanya berinteraksi dengan tabel Delta melalui Azure Databricks, Anda dapat terus melacak dukungan untuk fitur Delta Lake menggunakan persyaratan Databricks Runtime minimum. Azure Databricks mendukung pembacaan tabel Delta yang telah ditingkatkan ke fitur tabel di semua rilis LTS Runtime Databricks, selama semua fitur yang digunakan oleh tabel didukung oleh rilis tersebut.

Jika Anda membaca dan menulis dari tabel Delta menggunakan sistem lain, Anda mungkin perlu mempertimbangkan bagaimana fitur tabel memengaruhi kompatibilitas, karena ada risiko bahwa sistem tidak dapat memahami versi protokol yang ditingkatkan.

Penting

Fitur tabel diperkenalkan ke format Delta Lake untuk penulis versi 7 dan pembaca versi 3. Azure Databricks memiliki kode backport ke semua versi LTS Runtime Databricks yang didukung untuk menambahkan dukungan untuk fitur tabel, tetapi sekali untuk fitur-fitur yang sudah didukung dalam Databricks Runtime. Ini berarti bahwa meskipun Anda dapat memilih untuk menggunakan fitur tabel untuk mengaktifkan kolom yang dihasilkan dan masih bekerja dengan tabel ini di Databricks Runtime 9.1 LTS, tabel dengan kolom identitas diaktifkan (yang memerlukan Databricks Runtime 10.4 LTS) masih tidak didukung di Databricks Runtime tersebut.

Cara Azure Databricks mengelola kompatibilitas fitur Delta Lake?

Databricks memperkenalkan dukungan untuk fitur dan pengoptimalan Delta Lake baru yang dibangun di atas Delta Lake dalam rilis Databricks Runtime. Azure Databricks pengoptimalan yang memanfaatkan fitur Delta Lake menghormati protokol yang digunakan di OSS Delta Lake untuk kompatibilitas. Banyak pengoptimalan Azure Databricks memerlukan pengaktifan fitur Delta Lake pada tabel, dan beberapa produk Azure Databricks seperti Lakeflow Spark Declarative Pipelines bergantung pada banyak fitur tabel.

  • Semua tabel yang ditulis oleh versi Databricks Runtime yang lebih rendah memiliki dukungan baca dan tulis penuh dalam versi Databricks Runtime yang lebih tinggi.
  • Tabel yang ditulis oleh versi Databricks Runtime yang lebih tinggi mungkin menggunakan fitur tabel yang tidak didukung dalam versi Databricks Runtime yang lebih rendah.
    • Beberapa fitur mungkin memungkinkan penulisan dari versi Runtime Databricks yang lebih rendah tanpa sepenuhnya menerapkan semua pengoptimalan yang terkait dengan fitur tabel yang diaktifkan.

Saat bekerja dengan fitur tabel yang memiliki dukungan backport ke versi Databricks Runtime yang lebih rendah, beberapa operasi yang berfungsi pada versi Databricks Runtime tertentu mungkin tidak berfungsi pada versi OSS Delta yang sesuai. Jika siklus pengembangan atau arsitektur data Anda menyertakan OSS Delta Lake, Anda harus selalu menguji kompatibilitas di klien OSS Delta sebelum mengaktifkan fitur tabel pada tabel produksi.

Fitur Delta Lake dan versi Runtime Databricks yang diperlukan

Fitur diaktifkan berdasarkan tabel demi tabel. Tabel berikut mencantumkan versi Databricks Runtime terendah dengan dukungan penuh untuk fitur yang ditunjukkan. Dukungan penuh berarti bahwa semua fungsionalitas yang tersedia secara umum untuk baca dan tulis didukung.

Fitur Memerlukan versi Databricks Runtime atau yang lebih baru Dokumentasi
CHECK batasan Semua versi Databricks Runtime yang didukung Set batasan CHECK dalam Azure Databricks
Mengubah umpan data Semua versi Databricks Runtime yang didukung Gunakan Delta Lake mengubah umpan data pada Azure Databricks
Kolom yang dihasilkan Semua versi Databricks Runtime yang didukung kolom yang diciptakan oleh Delta Lake
Pemetaan kolom Semua versi Databricks Runtime yang didukung Ganti nama dan hapus kolom dengan pemetaan kolom Delta Lake
Kolom identitas Semua versi Databricks Runtime yang didukung Gunakan kolom identitas di Delta Lake
Fitur-fitur pada tabel Databricks Runtime 12.2 LTS Fitur tabel untuk kompatibilitas protokol
Vektor penghapusan Databricks Runtime 12.2 LTS Vektor Penghapusan pada Databricks
Penanda waktu NTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ tipe
Seragam Databricks Runtime 13.3 LTS Membaca tabel Delta dengan klien Iceberg
Pengklusteran cairan Databricks Runtime 13.3 LTS Menggunakan pengklusteran cairan untuk tabel
Pelacakan baris Databricks Runtime 14.3 LTS Pelacakan baris di Databricks
Pelebaran tipe Databricks Runtime 15.4 LTS Perluasan tipe
Varian Databricks Runtime 15.4 LTS Dukungan jenis varian
Kolasi Databricks Runtime 16.1 Dukungan Kolasi untuk Delta Lake
Titik pemeriksaan terproteksi Databricks Runtime 16.3 Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel
Penerapan katalog Waktu Operasi Databricks 16.4 LTS Penerapan katalog

Lihat catatan rilis versi dan kompatibilitas Databricks Runtime.

Catatan

Alur Deklaratif Lakeflow Spark dan Databricks SQL secara otomatis meningkatkan lingkungan runtime dengan rilis reguler untuk mendukung fitur baru. Lihat Catatan rilis Lakeflow Spark Declarative Pipelines dan proses peningkatan rilis dan catatan rilis Databricks SQL.

Fitur menurut versi protokol

Tabel berikut mencantumkan persyaratan versi protokol untuk fitur tabel Delta Lake dan Apache Iceberg. Jenis fitur menunjukkan apakah fitur harus dihormati untuk penulisan saja atau untuk baca dan tulis.

Delta Lake menggunakan nilai minReaderVersion dan minWriterVersion yang terpisah untuk menentukan kemampuan protokol. Protokol open source Delta Lake telah distandarkan pada fitur tabel, tetapi beberapa klien masih menggunakan penerapan versi protokol warisan. Beberapa klien mungkin tidak mendukung semua fitur, jadi lihat dokumentasi klien Anda dan uji kompatibilitas sebelum mengaktifkan fitur baru pada tabel produksi.

Apache Iceberg menggunakan satu format-version dan bukan versi pembaca dan penulis terpisah. Versi format Iceberg menunjukkan fitur mana yang tersedia tetapi tidak mengamanatkan penggunaannya. Fitur bersifat opsional, kecuali untuk pelacakan baris yang wajib dalam format versi 3. Saat sebuah fitur menunjukkan "N/A" di kolom Iceberg, itu berarti fitur tersebut khusus untuk Delta dan tidak memiliki padanan langsung di Iceberg.

Catatan

Jika Anda hanya peduli dengan kompatibilitas Databricks Runtime, lihat Cara Azure Databricks mengelola kompatibilitas fitur Delta Lake?.

Fitur Delta minWriterVersion Delta minReaderVersion Iceberg format-version Jenis fitur
Fungsionalitas dasar 2 1 1 Penulis
CHECK Batasan 3 1 N/A Penulis
Mengubah umpan data 4 1 N/A Penulis
Kolom yang dihasilkan 4 1 N/A Penulis
Pemetaan kolom 5 2 N/A Pembaca dan penulis
Kolom identitas 6 1 N/A Penulis
Pelacakan baris 7 1 3 Penulis
Vektor penghapusan 7 3 3 Pembaca dan penulis
Tanda waktuNTZ 7 3 1 Pembaca dan penulis
Pengklusteran cairan 7 3 1 Pembaca dan penulis (1)
Pembaca Iceberg (UniForm) 7 2 N/A Penulis (2)
Perluasan tipe 7 3 N/A Pembaca dan penulis
Varian 7 3 3 Pembaca dan penulis
Penghancutan varian 7 3 3 Pembaca dan penulis
Kolasi 7 3 N/A Pembaca dan penulis
Titik pemeriksaan terproteksi 7 1 N/A Penulis
Penerapan katalog 7 3 N/A Pembaca dan penulis

(1): Pengklusteran cairan mengimplementasikan partisi tersembunyi.

(2): Mengharuskan pemetaan kolom diaktifkan.