Topik ini menjelaskan semantik atomicity, consistency, isolation, dan durability (ACID) untuk pekerjaan bersamaan di MaxCompute, serta semantik ACID untuk tabel transaksional.
Istilah
- Operasi: Pekerjaan tunggal yang dikirimkan di MaxCompute.
- Objek data: Objek yang menyimpan data, seperti tabel non-partisi atau partisi.
- Pekerjaan INTO: Pekerjaan SQL yang mengandung kata kunci INTO, seperti INSERT INTO atau DYNAMIC INSERT INTO.
- Pekerjaan OVERWRITE: Pekerjaan SQL yang mengandung kata kunci OVERWRITE, seperti INSERT OVERWRITE atau DYNAMIC INSERT OVERWRITE.
- Pengunggahan data menggunakan Tunnel: Pekerjaan INTO atau OVERWRITE.
Deskripsi semantik ACID
- Atomicity: Operasi sepenuhnya selesai atau tidak dilakukan sama sekali. Artinya, operasi tidak dilakukan sebagian.
- Consistency: Integritas objek data dipertahankan selama operasi berlangsung.
- Isolation: Operasi dapat dilakukan secara independen dari operasi bersamaan lainnya.
- Durability: Setelah operasi selesai, data yang dimodifikasi tetap valid secara permanen dan tidak hilang meskipun terjadi kegagalan sistem.
Semantik ACID untuk pekerjaan penulisan bersamaan di MaxCompute
- Atomicity
- Jika beberapa pekerjaan bertentangan satu sama lain, MaxCompute memastikan hanya satu pekerjaan yang berhasil.
- Atomicity dari operasi CREATE, OVERWRITE, dan DROP pada satu tabel atau partisi dapat dipastikan.
- Atomicity dari operasi lintas-tabel seperti MULTI-INSERT tidak dapat dipastikan.
- Dalam kasus ekstrem, operasi berikut mungkin tidak bersifat atomik:
- Operasi
DYNAMIC INSERT OVERWRITEyang dilakukan pada lebih dari 10.000 partisi. - Operasi INTO. Atomicity dari operasi INTO tidak dapat dipastikan karena pembersihan data gagal selama rollback transaksi. Namun, kegagalan pembersihan data tidak menyebabkan hilangnya data asli.
- Operasi
- Consistency
- Consistency dapat dipastikan untuk pekerjaan OVERWRITE.
- Jika pekerjaan INTO gagal karena konflik, data dari pekerjaan yang gagal mungkin tetap ada.
- Isolation
- Untuk operasi non-INTO, MaxCompute memastikan bahwa operasi baca dikirimkan.
- Untuk operasi INTO, beberapa operasi baca mungkin tidak dikirimkan.
- Durability
- MaxCompute memastikan daya tahan data.
Semantik ACID untuk tabel transaksional
- Untuk operasi INTO, MaxCompute memastikan bahwa operasi baca dikirimkan. Jika pekerjaan INTO gagal karena konflik, data dari pekerjaan yang gagal tidak tersisa.
- Atomicity dari operasi UPDATE, DELETE, dan penggabungan file kecil pada tabel non-partisi atau partisi dapat dipastikan.
Sebagai contoh, jika dua operasi UPDATE dilakukan pada partisi yang sama secara bersamaan, hanya satu operasi UPDATE yang berhasil. Kasus-kasus berikut tidak ada: 1. Operasi UPDATE dilakukan sebagian. 2. Kedua operasi UPDATE berhasil.
Konflik Operasi Bersamaan
Ketika pekerjaan dilakukan secara bersamaan pada tabel tujuan yang sama, konflik mungkin terjadi. Dalam hal terjadi konflik, pekerjaan yang selesai lebih awal berhasil, dan pekerjaan yang selesai kemudian mungkin gagal karena konflik.
Tabel berikut menjelaskan hasil dari pekerjaan yang dikirimkan pada saat yang sama pada tabel non-partisi atau partisi.
| Jenis Pekerjaan | Pekerjaan INSERT OVERWRITE atau TRUNCATE yang Selesai Kemudian | Pekerjaan INSERT INTO yang Selesai Kemudian | Pekerjaan UPDATE atau DELETE yang Selesai Kemudian | Pekerjaan Penggabungan File Kecil yang Selesai Kemudian |
| Pekerjaan INSERT OVERWRITE atau TRUNCATE yang Selesai Lebih Awal |
|
|
|
|
| INSERT INTO job yang berakhir lebih awal |
|
|
|
|
| Pekerjaan UPDATE atau DELETE yang Selesai Lebih Awal |
|
|
|
|
| Pekerjaan Penggabungan File Kecil yang Selesai Lebih Awal |
|
|
|
|
- Operasi INSERT tidak melaporkan kesalahan karena konflik ketika data berubah.
- Operasi UPDATE, DELETE, dan penggabungan file kecil melaporkan kesalahan karena konflik ketika data dalam tabel non-partisi atau partisi tujuan berubah.