Apa itu jaminan ACID pada Azure Databricks?

Azure Databricks menggunakan Delta Lake secara default untuk semua bacaan dan tulis dan bangun berdasarkan jaminan ACID yang disediakan oleh protokol Delta Lake sumber terbuka. ACID adalah singkatan dari atomitas, konsistensi, isolasi, dan durabilitas.

  • Atomitas berarti bahwa semua transaksi berhasil atau gagal sepenuhnya.
  • Konsistensi menjamin terkait dengan bagaimana status data tertentu diamati oleh operasi simultan.
  • Isolasi mengacu pada bagaimana operasi simultan berpotensi bertentangan satu sama lain.
  • Durabilitas berarti bahwa perubahan yang diterapkan bersifat permanen.

Meskipun banyak teknologi pemrosesan dan pergudangan data yang menjelaskan memiliki transaksi ACID, jaminan khusus bervariasi menurut sistem, dan transaksi di Azure Databricks mungkin berbeda dari sistem lain yang telah Anda kerjakan.

Catatan

Halaman ini menjelaskan jaminan untuk tabel yang didukung oleh Delta Lake. Format data lain dan sistem terintegrasi mungkin tidak memberikan jaminan transaksi untuk baca dan tulis.

Semua azure Databricks menulis ke penyimpanan objek cloud menggunakan penerapan transaksi, yang membuat file metadata yang dimulai dengan _started_<id> dan _committed_<id> bersama file data. Anda tidak perlu berinteraksi dengan file-file ini, karena Azure Databricks secara rutin membersihkan file metadata penerapan kedaluarsa.

Bagaimana transaksi dilingkup di Azure Databricks?

Azure Databricks mengelola transaksi di tingkat tabel. Transaksi selalu berlaku untuk satu tabel pada satu waktu. Untuk mengelola transaksi bersamaan, Azure Databricks menggunakan kontrol konkurensi optimis. Ini berarti bahwa tidak ada kunci pada membaca atau menulis terhadap tabel, dan kebuntuan bukanlah kemungkinan.

Secara default, Azure Databricks menyediakan isolasi rekam jepret pada isolasi baca dan tulis yang dapat diserialisasikan pada penulisan. Isolasi yang dapat diserialisasikan tulis memberikan jaminan yang lebih kuat daripada isolasi rekam jepret, tetapi menerapkan isolasi yang lebih kuat hanya untuk penulisan.

Operasi baca yang mereferensikan beberapa tabel mengembalikan versi saat ini dari setiap tabel pada saat akses, tetapi jangan mengganggu transaksi bersamaan yang mungkin mengubah tabel yang dirujuk.

Azure Databricks tidak memiliki BEGIN/END konstruksi yang memungkinkan beberapa operasi dikelompokkan bersama sebagai satu transaksi. Aplikasi yang memodifikasi beberapa tabel menerapkan transaksi ke setiap tabel secara serial. Anda dapat menggabungkan sisipan, pembaruan, dan penghapusan terhadap tabel ke dalam satu transaksi tulis menggunakan MERGE INTO.

Bagaimana Azure Databricks menerapkan atomitas?

Log transaksi mengontrol penerapan atomitas. Selama transaksi, file data ditulis ke direktori file yang mendukung tabel. Ketika transaksi selesai, entri baru diterapkan ke log transaksi yang mencakup jalur ke semua file yang ditulis selama transaksi. Setiap penerapan menaikkan versi tabel dan membuat file data baru terlihat oleh operasi baca. Status tabel saat ini terdiri dari semua file data yang ditandai valid dalam log transaksi.

File data tidak dilacak kecuali log transaksi merekam versi baru. Jika transaksi gagal setelah menulis file data ke tabel, file data ini tidak akan merusak status tabel, tetapi file tidak akan menjadi bagian dari tabel. Operasi menghapus VACUUM semua file data yang tidak terlacak dalam direktori tabel, termasuk file yang tidak dikomit yang tersisa dari transaksi yang gagal.

Bagaimana Azure Databricks menerapkan durabilitas?

Azure Databricks menggunakan penyimpanan objek cloud untuk menyimpan semua file data dan log transaksi. Penyimpanan objek cloud memiliki ketersediaan dan durabilitas tinggi. Karena transaksi berhasil atau gagal sepenuhnya dan log transaksi berada bersama file data di penyimpanan objek cloud, tabel di Azure Databricks mewarisi jaminan durabilitas penyimpanan objek cloud tempat mereka disimpan.

Bagaimana Azure Databricks menerapkan konsistensi?

Delta Lake menggunakan kontrol konkurensi optimis untuk memberikan jaminan transaksional antara tulisan. Di bawah mekanisme ini, menulis beroperasi dalam tiga tahap:

  1. Baca: Membaca (jika diperlukan) versi tabel terbaru yang tersedia untuk mengidentifikasi file mana yang perlu dimodifikasi (yaitu, ditulis ulang).
    • Tulisan yang hanya ditambahkan tidak membaca status tabel saat ini sebelum menulis. Validasi skema memanfaatkan metadata dari log transaksi.
  2. Tulis: Menulis file data ke direktori yang digunakan untuk menentukan tabel.
  3. Validasi dan terapkan:
    • Memeriksa apakah perubahan yang diusulkan bertentangan dengan perubahan lain yang mungkin telah diterapkan secara bersamaan sejak rekam jepret yang dibacakan.
    • Jika tidak ada konflik, semua perubahan bertahap dilakukan sebagai snapshot versi baru, dan operasi tulis berhasil.
    • Jika ada konflik, operasi tulis gagal dengan pengecualian modifikasi bersamaan. Kegagalan ini mencegah kerusakan data.

Konkurensi optimis mengasumsikan bahwa sebagian besar transaksi bersamaan pada data Anda tidak dapat bertentangan satu sama lain, tetapi konflik dapat terjadi. Lihat Tingkat isolasi dan tulis konflik di Azure Databricks.

Bagaimana Azure Databricks menerapkan isolasi?

Azure Databricks menggunakan isolasi tulis yang dapat diserialisasikan secara default untuk semua penulisan dan pembaruan tabel. Isolasi rekam jepret digunakan untuk semua pembacaan tabel.

Tulis serializability dan kontrol konkurensi optimis bekerja sama untuk menyediakan throughput tinggi untuk penulisan. Status tabel yang valid saat ini selalu tersedia, dan penulisan dapat dimulai terhadap tabel kapan saja. Bacaan bersamaan hanya dibatasi oleh throughput sumber daya metastore dan cloud.

Lihat Tingkat isolasi dan tulis konflik di Azure Databricks.

Apakah Delta Lake mendukung transaksi multi-tabel?

Delta Lake tidak mendukung transaksi multi-tabel. Delta Lake mendukung transaksi di tingkat tabel.

Kunci primer dan hubungan kunci asing di Azure Databricks bersifat informasi dan tidak diberlakukan. Lihat Mendeklarasikan kunci primer dan hubungan kunci asing.

Apa artinya Delta Lake mendukung penulisan multi-cluster?

Delta Lake mencegah kerusakan data saat beberapa kluster menulis ke tabel yang sama secara bersamaan. Beberapa operasi tulis dapat bertentangan selama eksekusi simultan, tetapi tidak merusak tabel. Lihat Tingkat isolasi dan tulis konflik di Azure Databricks.

Bisakah saya memodifikasi tabel Delta dari ruang kerja yang berbeda?

Ya, Anda dapat secara bersamaan memodifikasi tabel Delta yang sama dari ruang kerja yang berbeda. Selain itu, jika satu proses menulis dari ruang kerja, pembaca di ruang kerja lain akan melihat tampilan yang konsisten.