全部产品
Search
文档中心

MaxCompute:Semantik ACID

更新时间:Jun 19, 2025

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 OVERWRITE yang 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.
  • 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

Selain semantik ACID untuk pekerjaan penulisan bersamaan, MaxCompute mendukung semantik ACID berikut 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 PekerjaanPekerjaan INSERT OVERWRITE atau TRUNCATE yang Selesai KemudianPekerjaan INSERT INTO yang Selesai KemudianPekerjaan UPDATE atau DELETE yang Selesai KemudianPekerjaan Penggabungan File Kecil yang Selesai Kemudian
Pekerjaan INSERT OVERWRITE atau TRUNCATE yang Selesai Lebih Awal
  • Kedua pekerjaan berhasil.
  • Data dari pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai kemudian menimpa data dari pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai lebih awal.
  • Kedua pekerjaan berhasil.
  • Pekerjaan INSERT INTO yang selesai kemudian menambahkan datanya ke data dari pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai lebih awal.
  • Pekerjaan UPDATE atau DELETE yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan UPDATE atau DELETE yang selesai kemudian dilakukan.
  • Pekerjaan penggabungan file kecil yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan penggabungan file kecil yang selesai kemudian dilakukan.
INSERT INTO job yang berakhir lebih awal
  • Kedua pekerjaan berhasil.
  • Data dari pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai kemudian menimpa data dari pekerjaan INSERT INTO yang selesai lebih awal.
  • Kedua pekerjaan berhasil.
  • Pekerjaan INSERT INTO yang selesai kemudian menambahkan datanya ke data dari pekerjaan INSERT INTO yang selesai lebih awal.
  • Pekerjaan UPDATE atau DELETE yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan INSERT INTO yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan UPDATE atau DELETE yang selesai kemudian dilakukan.
  • Pekerjaan penggabungan file kecil yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan INSERT INTO yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan penggabungan file kecil yang selesai kemudian dilakukan.
Pekerjaan UPDATE atau DELETE yang Selesai Lebih Awal
  • Kedua pekerjaan berhasil.
  • Data dari pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai kemudian menimpa data dari pekerjaan UPDATE atau DELETE yang selesai lebih awal.
  • Kedua pekerjaan berhasil.
  • Pekerjaan INSERT INTO yang selesai kemudian menambahkan datanya ke data dari pekerjaan UPDATE atau DELETE yang selesai lebih awal.
  • Pekerjaan UPDATE atau DELETE yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan UPDATE atau DELETE yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan UPDATE atau DELETE yang selesai kemudian dilakukan.
  • Pekerjaan penggabungan file kecil yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan INSERT INTO yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan penggabungan file kecil yang selesai kemudian dilakukan.
Pekerjaan Penggabungan File Kecil yang Selesai Lebih Awal
  • Kedua pekerjaan berhasil.
  • Data dari pekerjaan INSERT OVERWRITE atau TRUNCATE yang selesai kemudian menimpa data dari pekerjaan penggabungan file kecil yang selesai lebih awal.
  • Kedua pekerjaan berhasil.
  • Pekerjaan INSERT INTO yang selesai kemudian menambahkan datanya ke data dari pekerjaan penggabungan file kecil yang selesai lebih awal.
  • Pekerjaan UPDATE atau DELETE yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan penggabungan file kecil yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan UPDATE atau DELETE yang selesai kemudian dilakukan.
  • Pekerjaan penggabungan file kecil yang selesai kemudian melaporkan kesalahan.
  • Pekerjaan penggabungan file kecil yang selesai lebih awal memodifikasi data dari tabel non-partisi atau partisi tempat pekerjaan penggabungan file kecil yang selesai kemudian dilakukan.
Kesimpulannya, pekerjaan yang bertentangan berhasil atau melaporkan kesalahan berdasarkan aturan berikut:
  • 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.
null Dalam kasus ekstrem, jika beberapa pekerjaan dilakukan secara bersamaan ketika metadata sedang diperbarui, pekerjaan tersebut mungkin melaporkan kesalahan karena konflik yang disebabkan oleh perubahan metadata.