All Products
Search
Document Center

MaxCompute:Delta Table

Last Updated:Jun 04, 2026

Tabel Delta MaxCompute adalah format tabel berkinerja tinggi untuk set data analitik skala besar, tersedia dalam dua bentuk: Append Delta Tables (tanpa primary key) dan PK Delta Tables (dengan primary key).

Ikhtisar

Delta Table adalah format tabel berkinerja tinggi di Alibaba Cloud MaxCompute yang mendukung transaksi ACID, kueri inkremental, time travel, bucketing kluster dinamis, pembaruan data real-time, dan evolusi skema. Dengan kemampuan native data lakehouse dan komputasi near-real-time di MaxCompute, Anda dapat menggunakan SQL standar untuk membuat, memperbarui, dan mengkueri Delta Table tanpa perlu mengelola penyimpanan atau metadata dasar. MaxCompute secara otomatis memelihara dan mengoptimalkan tabel tersebut guna menyeimbangkan kemudahan penggunaan dan efisiensi biaya.

Fitur

Kategori

Fitur

Append Delta Table

PK Delta Table

DML Dasar

Insert, Update, Delete, dan Merge Into.

Didukung

Didukung

Transaksi ACID

Read Committed/Snapshot Isolation.

Manajemen transaksi ACID.

Didukung

Didukung

Primary key

Menentukan primary key.

Tidak didukung

Mendukung pembaruan kolom parsial

Evolusi skema

Menambah, menghapus, mengganti nama, mengatur ulang urutan, dan mengubah tipe data kolom.

ALTER TABLE.

Didukung

Didukung

Impor data

  • Penulisan streaming untuk impor data inkremental berkonkurensi tinggi menggunakan Tulis data ke MaxCompute dengan Flink, integrasi data DataWorks, dan DataHub.

  • Penulisan batch inkremental dan penuh.

Unggah Stream/Batch

Data langsung terlihat setelah unggahan stream.

Upsert

Time travel

Kueri snapshot historis berdasarkan titik waktu atau nomor versi untuk reproduksi hasil atau analisis audit.

Time Travel.

Didukung

Didukung

Komputasi inkremental

Delta Live Materialized View (MV) dan Incremental Read.

Komputasi inkremental dan Kueri inkremental.

Didukung

(Dukungan materialized view inkremental sedang dalam pengembangan.)

Didukung

Optimasi organisasi data

Secara otomatis memelihara file data inkremental melalui penggabungan file kecil, COMPACTION multi-level, dan pengurutan data.

Optimasi organisasi data untuk Append Delta Tables dan Optimasi organisasi data untuk tabel PK Delta.

Didukung

Tidak perlu konfigurasi bucket. Dynamic Bucketing menyesuaikan diri secara otomatis dengan distribusi data.

Didukung

Optimasi performa kueri

Statistik tingkat partisi dan tingkat file (seperti Min/Max), partition pruning, column pruning, dan predicate pushdown.

Didukung

Didukung

Keamanan dan kepatuhan

Enkripsi penyimpanan / Penyembunyian data dinamis / Kontrol akses tingkat baris.

Didukung

Didukung

Pemulihan bencana dan backup

Snapshot tabel / Backup lokal / Pemulihan bencana redundansi zona.

Didukung

Didukung

Biaya

Kompresi kolom AliORC dan penyimpanan bertingkat.

Didukung

Didukung

Pengalaman pengguna

Pembaruan data real-time untuk layanan real-time

Delta Table mendukung penulisan real-time dan upsert melalui Stream Upload. Data langsung terlihat. MaxCompute menyeimbangkan latensi penulisan dengan performa kueri melalui strategi penyimpanan bertingkat:

  • Memastikan penulisan real-time: Data baru ditulis ke bucket non-clustered tanpa pengurutan, sehingga menjamin latensi rendah dan throughput tinggi.

  • Meningkatkan performa kueri SQL: Layanan Incremental Reclustering latar belakang secara asinkron mengatur ulang data inkremental ke dalam bucket yang diurutkan dan dikelompokkan. Mesin kueri melakukan pruning pada data dasar yang diurutkan dan hanya memindai sejumlah kecil data inkremental, sehingga menyeimbangkan kesegaran data dengan efisiensi.

Pemrosesan dan analisis data inkremental yang efisien

MaxCompute menyediakan fitur pemrosesan inkremental lanjutan. Gabungkan Komputasi inkremental dan Delta Live Materialized Views (preview) untuk membangun pipeline pemrosesan data real-time.

Beradaptasi dengan pertumbuhan bisnis dan mengatasi batasan format tabel sebelumnya

  1. Alokasi bucket dinamis: Append Delta Tables mengalokasikan bucket secara dinamis tanpa memerlukan spesifikasi DDL. Seiring volume data bertambah, layanan Dynamic Bucketing secara otomatis membagi atau membuat bucket baru, beradaptasi dengan perubahan serta mencegah skew dan fragmentasi.

  2. Evolusi skema: Delta Table mendukung penambahan, penghapusan, modifikasi, dan penggantian nama kolom dengan kompatibilitas mundur penuh untuk mencegah kehilangan data secara tidak sengaja.

  3. Kemampuan tabel terpadu: Satu Delta Table mendukung INSERT INTO, UPDATE, DELETE, dan MERGE INTO dengan penyimpanan clustering terurut — menggabungkan kemampuan yang sebelumnya memerlukan tabel partisi, clustered, dan transaksional terpisah.

  4. Dukungan multi-engine: Akses Delta Table dari MaxCompute SQL, MaxFrame, Spark on MaxCompute, dan engine open-source (Flink, Spark, StarRocks) melalui Spark Connector dan API penyimpanan terbuka.

Menyeimbangkan performa dan keandalan

  1. Delta Table menangani volume data dari terabyte hingga petabyte dengan operasi metadata cepat. Kueri memanfaatkan partition pruning, column pruning, dan predicate pushdown untuk meminimalkan pemindaian data.

  2. Transaksi ACID: Delta Table menggunakan kontrol konkurensi optimistik untuk menangani konkurensi multi-penulis. Konflik penulisan terdeteksi dan dicoba ulang secara otomatis.

  3. Keamanan dan kepatuhan: Delta Table mendukung enkripsi penyimpanan, ACL tingkat tabel dan kolom, izin tingkat baris, serta penyembunyian data dinamis.

  4. Backup dan rollback: Mekanisme recycle bin berbasis versi memungkinkan Anda mengembalikan tabel ke kondisi sehat sebelumnya setelah terjadi korupsi data atau penghapusan tidak disengaja.

Operasi SQL

DDL

Buat Tabel Delta Append

-- Membuat Append Delta Table
CREATE TABLE <table_name> (
  <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
) 
[comment <table_comment>]
[RANGE CLUSTERED BY (<col_name> [, <col_name>, ...]) ]
TBLPROPERTIES (
  "table.format.version"="2" 
  ["acid.data.retain.hours"="hours"...]
)
[LIFECYCLE <days>];

Parameter TBLPROPERTIES:

Parameter

Wajib

Deskripsi

Catatan

"table.format.version"="2"

Ya

Mendeklarasikan format tabel sebagai Delta Table.

acid.data.retain.hours

Tidak

Nilai default adalah 24. Rentang nilai adalah [24, 168].

Rentang waktu dalam jam yang menentukan seberapa jauh ke belakang data historis dapat dikueri menggunakan Time Travel.

  • Nilai 0 menunjukkan bahwa status data historis tidak disimpan, dan kueri Time Travel tidak didukung.

  • Jika status data historis ada lebih lama dari nilai parameter ini, data tersebut dapat dihapus atau dikompaksi.

  • Jika kueri Time Travel menentukan waktu yang lebih awal dari rentang nilai parameter ini, akan muncul error. Misalnya, jika parameter ini diatur ke 72 jam, error akan muncul jika Anda mencoba mengkueri status data historis dari lebih dari 72 jam yang lalu.

acid.incremental.query.out.of.time.range.enabled

Tidak

Nilai default adalah false.

Jika diatur ke true, endTimestamp yang ditentukan dalam kueri inkremental dapat lebih baru daripada waktu commit terbaru tabel. Jika endTimestamp lebih baru daripada waktu saat ini, beberapa kueri dapat mengembalikan hasil yang berbeda karena data baru mungkin telah disisipkan.

Anda dapat mengubah nilai parameter ini untuk suatu tabel.

Membuat PK Delta Table

-- Membuat PK Delta Table
CREATE TABLE <table_name> (
  <col_name <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...   
  PRIMARY KEY (<pk_col_name>[, <pk_col_name2>, ...] )
) 
[comment <table_comment>]
TBLPROPERTIES (
  "table.format.version"="2" 
  [, "write.bucket.num" = "N", "acid.data.retain.hours"="hours"...]
)
[LIFECYCLE <days>];

Parameter:

  • PRIMARY KEY (PK): Wajib untuk PK Delta Table. Mendukung satu atau beberapa kolom dengan kombinasi nilai unik. Mengikuti sintaks primary key SQL standar. Kolom primary key harus NOT NULL dan tidak dapat dimodifikasi.

    Setelah primary key ditetapkan, data dideduplikasi berdasarkan kolom tersebut. Batasan unik berlaku dalam satu partisi atau seluruh tabel non-partisi.

  • Parameter TBLPROPERTIES:

Parameter

Wajib

Deskripsi

Catatan

"table.format.version"="2"

Ya

Mendeklarasikan format tabel sebagai Delta Table.

  • Sebelumnya, PK Delta Table dideklarasikan dengan mengatur "transactional"="true" dan menentukan PRIMARY KEY.

  • Sekarang, Anda dapat mendeklarasikannya dengan mengatur "table.format.version"="2" dan menentukan PRIMARY KEY.

write.bucket.num

Tidak

Nilai default adalah 16. Rentang nilai adalah (0, 4096].

Jumlah bucket per partisi atau tabel non-partisi, yang juga menentukan konkurensi penulisan. Dapat dimodifikasi untuk tabel partisi (berlaku untuk partisi baru); tidak dapat dimodifikasi untuk tabel non-partisi. Panduan:

  • Untuk impor Tunnel, ini menentukan jumlah node Tunnel konkuren, dibatasi oleh batas konkurensi Tunnel.

  • Untuk penulisan SQL, ini menentukan paralelisme Reducer, dibatasi oleh jumlah maksimum node Reducer konkuren.

  • Target ~500 MB per bucket. Misalnya, partisi 500 GB membutuhkan ~1.000 bucket. Untuk tabel yang sangat besar, 2–3 GB per bucket dapat diterima.

acid.data.retain.hours

Tidak

Nilai default adalah 24. Rentang nilai adalah [24, 168].

Rentang waktu (dalam jam) selama data historis dapat dikueri menggunakan Time Travel.

  • Nilai 0 menunjukkan bahwa status data historis tidak disimpan, dan kueri Time Travel tidak didukung.

  • Jika status data historis ada lebih lama dari nilai parameter ini, data tersebut dapat dihapus atau dikompaksi.

  • Jika kueri Time Travel menentukan waktu yang lebih awal dari rentang nilai parameter ini, akan muncul error. Misalnya, jika parameter ini diatur ke 72 jam, error akan muncul jika Anda mencoba mengkueri status data historis dari lebih dari 72 jam yang lalu.

acid.incremental.query.out.of.time.range.enabled

Tidak

Nilai default adalah false.

Jika diatur ke true, endTimestamp yang ditentukan dalam kueri inkremental dapat lebih baru daripada waktu commit terbaru tabel. Jika endTimestamp lebih baru daripada waktu saat ini, beberapa kueri dapat mengembalikan hasil yang berbeda karena data baru mungkin telah disisipkan.

Anda dapat mengubah nilai parameter ini untuk suatu tabel.

acid.write.precombine.field

Tidak

Anda dapat menentukan nama satu kolom.

Jika nama kolom ditentukan, sistem mendeduplikasi data berdasarkan kolom primary key (PK) dan kolom yang ditentukan selama pemrosesan file untuk commit yang sama. Ini memastikan keunikan dan konsistensi data.

Catatan

Jika volume data dari satu commit melebihi 128 MB, beberapa file akan dihasilkan. Parameter ini tidak berlaku untuk beberapa file.

acid.partial.fields.update.enable

Tidak

Jika diatur ke true, Anda dapat menggunakan SQL atau Tunnel untuk melakukan pembaruan kolom parsial pada Delta Table.

Tetapkan parameter ini saat membuat tabel. Anda tidak dapat mengubahnya setelah tabel dibuat.

Catatan

Item

Append Delta Table

PK Delta Table

Clustered Table

Jumlah bucket

Tidak perlu menentukan write.bucket.num. Bucket diskalakan secara dinamis sesuai volume data.

Tentukan jumlah bucket dalam DDL. Default: 16.

/

Kebijakan organisasi data

Hanya RANGE CLUSTERED BY (CLUSTERED BY tidak didukung). Tidak perlu SORT BY — data diurutkan berdasarkan field RANGE CLUSTERED BY secara default.

CLUSTERED BY tidak diizinkan. Kluster hash dibuat otomatis berdasarkan primary key.

CLUSTERED BY

Lifecycle

Harus memenuhi lifecycle >= acid.data.retain.hours / 24. Divalidasi saat pembuatan tabel.

/

/

  1. Anda tidak dapat mengonversi langsung tabel standar yang sudah ada menjadi Delta Table.

  2. PK Delta Table tidak mendukung evolusi skema untuk kolom primary key (PK).

  3. PK Delta Table saat ini tidak mendukung tipe data JSON.

  4. CREATE TABLE AS tidak didukung.

DML

Delta Table mendukung operasi DML: Insert atau overwrite data (INSERT INTO | INSERT OVERWRITE), UPDATE | DELETE, dan MERGE INTO.

DQL

Delta Table mendukung analisis kueri tujuan umum melalui operasi DQL (SELECT).

Impor data

  • Append Delta Table mendukung unggah batch dan unggah stream. Tanpa primary key, operasi Upsert dan Delete tidak didukung.

  • PK Delta Table mendukung API Tunnel Upsert/Delete. Upsert menyisipkan baris jika primary key tidak ada, atau memperbarui field non-primary-key jika sudah ada.

Optimasi organisasi data