All Products
Search
Document Center

MaxCompute:Delta Table

Last Updated:Aug 22, 2026

Delta Table adalah format tabel berkinerja tinggi di MaxCompute yang dirancang untuk set data analitik berskala besar. Format ini mencakup dua jenis: Append Delta Table untuk tabel tanpa primary key dan PK Delta Table untuk tabel dengan primary key. Topik ini menjelaskan fitur dasar dan operasi Delta Table.

Ikhtisar

Delta Table adalah format tabel berkinerja tinggi di Alibaba Cloud MaxCompute. Format ini mendukung fitur seperti transaksi atomicity, consistency, isolation, dan durability (ACID), kueri inkremental, time travel, dynamic cluster bucketing, pembaruan data real-time, serta evolusi skema. Kemampuan native data lakehouse dan komputasi near-real-time di MaxCompute memungkinkan Anda menggunakan SQL standar untuk membuat, memperbarui, dan mengkueri Delta Table tanpa perlu mengelola penyimpanan dan metadata dasar yang kompleks. MaxCompute secara otomatis memelihara dan mengoptimalkannya guna memberikan keseimbangan antara kemudahan penggunaan dan efisiensi biaya.

Fitur

Kategori

Fitur

Append Delta Table

PK Delta Table

DML Dasar

Insert, Update, Delete, dan Merge Into.

Didukung

Dukungan

Transaksi ACID

Read Committed/Snapshot Isolation.

Untuk informasi selengkapnya, lihat 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.

Untuk informasi selengkapnya, lihat ALTER TABLE.

Didukung

Didukung

Impor data

  • Mendukung penulisan streaming untuk impor data inkremental berskala tinggi dan konkuren tinggi menggunakan alat seperti Menulis data ke MaxCompute dengan Flink, integrasi data DataWorks, dan DataHub.

  • Mendukung penulisan batch inkremental dan penuh.

Unggah Stream/Batch

Data langsung terlihat setelah unggah stream.

Upsert

Time travel

Mendukung pengkuerian snapshot historis berdasarkan titik waktu atau nomor versi untuk mereproduksi hasil atau melakukan analisis audit.

Untuk informasi selengkapnya, lihat Time Travel.

Didukung

Didukung

Komputasi inkremental

Delta Live Materialized View (MV) dan Incremental Read.

Untuk informasi selengkapnya, lihat Komputasi inkremental dan Kueri inkremental.

Didukung

(Tampilan materialisasi inkremental sedang dalam adaptasi.)

Didukung

Optimasi organisasi data

Secara otomatis memelihara file data inkremental, termasuk optimasi seperti penggabungan file kecil, COMPACTION multi-level, dan pengurutan data, sehingga penyimpanan dan komputasi data tetap stabil dan efisien.

Untuk informasi selengkapnya, lihat Mengoptimalkan organisasi data untuk Append Delta Table dan Optimasi organisasi data untuk tabel PK Delta.

Didukung

Anda tidak perlu mengonfigurasi jumlah bucket. Dynamic Bucketing secara otomatis menyesuaikan diri 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 / Dynamic data masking / Kontrol akses tingkat baris.

Didukung

Didukung

Pemulihan bencana dan backup

Snapshot tabel / Backup dan restorasi / Pemulihan bencana zonal.

Dukungan

Dukungan

Biaya

Kompresi penyimpanan kolom AliORC dan penyimpanan bertingkat.

Didukung

Dukungan

Pengalaman pengguna

Pembaruan data real-time untuk layanan real-time

Delta Table mendukung penulisan dan pembaruan data real-time (upsert) melalui Stream Upload. Data langsung terlihat setelah ditulis. Untuk menyeimbangkan performa penulisan data real-time dengan performa kueri, MaxCompute menerapkan strategi penyimpanan dan optimasi bertingkat:

  • Memastikan penulisan real-time: Data baru pertama kali ditulis dengan cepat ke bucket non-clustered tanpa pengurutan. Proses ini memastikan latensi rendah dan throughput tinggi untuk penulisan data.

  • Meningkatkan performa kueri SQL: Layanan Incremental Reclustering di latar belakang secara asinkron mengorganisasi ulang dan mengoptimalkan data inkremental ke dalam bucket yang diurutkan dan dikelompokkan. Saat Anda menjalankan kueri, mesin kueri dapat secara efisien memangkas data dasar yang telah diurutkan dan hanya memindai sejumlah kecil data inkremental. Pendekatan ini menyeimbangkan kesegaran data dengan efisiensi kueri.

Pemrosesan dan analisis data inkremental yang efisien

Berdasarkan kemampuan baca-tulis data inkremental di lapisan dasarnya, MaxCompute menyediakan serangkaian fitur tingkat lanjut untuk meningkatkan ketepatan waktu analitik data end-to-end. Anda dapat menggabungkan fitur-fitur canggih seperti Komputasi inkremental dan Delta Live Materialized View (Delta Live MV) (Pratinjau Undangan) guna membangun pipeline pemrosesan data real-time yang efisien dan mempercepat transformasi data menjadi wawasan bisnis.

Menyesuaikan pertumbuhan bisnis dan mengatasi batasan format tabel sebelumnya

  1. Alokasi bucket dinamis: Append Delta Table mendukung alokasi bucket dinamis. Anda tidak perlu menentukan jumlah bucket dalam pernyataan Data Definition Language (DDL) atau memperkirakan volume data masa depan untuk setiap partisi guna menentukan jumlah bucket yang sesuai. Seiring penambahan data, layanan Dynamic Bucketing secara otomatis membagi bucket yang ada atau membuat bucket baru. Fitur ini secara dinamis menyesuaikan diri dengan perubahan volume data bisnis dan mengatasi masalah seperti kesenjangan data dan fragmentasi akibat bucket yang terlalu besar atau terlalu kecil.

  2. Evolusi Skema: Delta Table mendukung evolusi skema untuk memenuhi kebutuhan bisnis yang terus berkembang dalam menyesuaikan bidang data dan meningkatkan presisi data. Fitur ini mendukung penambahan, penghapusan, modifikasi, dan penggantian nama kolom, menyediakan kompatibilitas mundur penuh, serta mencegah penghapusan atau kehilangan data yang tidak disengaja.

  3. Mengatasi keterbatasan tabel tradisional: Satu Delta Table mendukung operasi seperti INSERT INTO, UPDATE, DELETE, dan MERGE INTO, serta penyimpanan clustered dan terurut dalam satu tabel. Tabel partisi tradisional, tabel clustered, dan Transaction Table tidak dapat mendukung semua kemampuan ini secara bersamaan.

  4. Mendukung komputasi multi-engine, termasuk MaxCompute SQL, MaxFrame, dan Spark on MaxCompute. Engine open-source seperti Flink, Spark, dan StarRocks juga dapat mengakses Delta Table melalui Spark Connector dan API penyimpanan terbuka.

Menyeimbangkan performa dan keandalan

  1. Delta Table cocok untuk mengelola volume data besar, mulai dari terabyte hingga petabyte. Bahkan dengan volume data yang sangat besar, operasi metadata tetap cepat. Kueri mendukung fitur seperti partition pruning, column pruning, dan predicate pushdown untuk menghindari pemindaian data yang tidak perlu.

  2. Manajemen transaksi ACID: Delta Table menggunakan optimistic concurrency control untuk mendukung operasi konkuren dari beberapa penulis. Konflik penulisan terdeteksi dan dicoba ulang untuk memastikan konsistensi data.

  3. Keamanan dan kepatuhan: Delta Table memenuhi persyaratan keamanan dan kepatuhan data. Format ini mendukung enkripsi penyimpanan, daftar kontrol akses (ACL) tingkat tabel dan kolom, izin tingkat baris, serta dynamic data masking.

  4. Backup dan rollback: Mekanisme backup dan rollback berbasis versi, yang menggunakan mode recycle bin, memastikan bahwa jika terjadi korupsi data atau penghapusan tidak disengaja, Anda dapat segera mengembalikan tabel ke kondisi sehat sebelumnya. Hal ini mengurangi risiko operasi dan pemeliharaan (O&M) serta manajemen.

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>];

Tabel berikut menjelaskan 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 menyatakan berapa lama status 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, status tersebut dapat dihapus atau dikompaksi.

  • Jika kueri Time Travel menentukan waktu yang lebih awal dari 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 menghasilkan respons 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 dijelaskan sebagai berikut:

  • PRIMARY KEY (PK): Wajib. Anda harus menentukan parameter ini saat membuat PK Delta Table. Primary key dapat terdiri dari satu atau beberapa kolom, dan kombinasi nilai dalam kolom-kolom tersebut harus unik dalam tabel. Sintaks mengikuti sintaks primary key SQL standar. Kolom primary key harus diatur sebagai NOT NULL dan tidak dapat dimodifikasi.

    Setelah Anda menetapkan primary key, data dalam tabel dideduplikasi berdasarkan kolom primary key. Kendala unik berlaku dalam satu partisi atau untuk seluruh tabel non-partisi.

  • Tabel berikut menjelaskan 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 untuk setiap partisi atau untuk tabel non-partisi. Ini juga menunjukkan jumlah node konkuren untuk penulisan data. Anda dapat memodifikasi parameter ini untuk tabel partisi, dan perubahan berlaku untuk partisi baru secara default. Anda tidak dapat memodifikasi parameter ini untuk tabel non-partisi. Pertimbangkan saran berikut saat menggunakan parameter ini:

  • Jika Anda mengimpor data menggunakan Tunnel, parameter ini menentukan jumlah node Tunnel konkuren. Pengaturan ini memengaruhi trafik impor dan dibatasi oleh jumlah maksimum node Tunnel konkuren.

  • Jika Anda menulis data menggunakan SQL, parameter ini menentukan tingkat paralelisme Reducer yang menulis data. Parameter ini dibatasi oleh jumlah maksimum node Reducer konkuren.

  • Kami menyarankan ukuran data yang ditulis ke setiap bucket sekitar 500 MB. Misalnya, jika perkiraan ukuran partisi adalah 500 GB, jumlah bucket harus diatur sekitar 1.000. Hal ini membuat ukuran rata-rata setiap bucket sekitar 500 MB. Untuk tabel yang sangat besar, batas 500 MB dapat dilampaui. Ukuran bucket sekitar 2 GB hingga 3 GB lebih tepat.

acid.data.retain.hours

Tidak

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

Rentang waktu dalam jam yang menyatakan berapa lama status 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, status tersebut dapat dihapus atau dikompaksi.

  • Jika kueri Time Travel menentukan waktu yang lebih awal dari 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 mungkin 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. Hal 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 memodifikasinya setelah tabel dibuat.

Catatan

Item

Append Delta Table

PK Delta Table

Clustered Table

Jumlah bucket

Anda tidak perlu menentukan write.bucket.num. Jumlah bucket berubah secara dinamis berdasarkan volume data aktual.

Anda harus menentukan jumlah bucket dalam pernyataan DDL. Nilai default adalah 16.

/

Kebijakan organisasi data

RANGE CLUSTERED BY. CLUSTERED BY tidak didukung. Anda tidak perlu menentukan bidang SORT BY. Data dalam bucket secara default diurutkan berdasarkan bidang yang ditentukan dalam RANGE CLUSTERED BY.

Anda tidak dapat mengatur CLUSTERED BY. Secara default, cluster hash dibuat berdasarkan primary key.

CLUSTERED BY

Lifecycle

Harus lebih besar dari atau sama dengan lifecycle kueri Time Travel. Artinya, lifecycle >= acid.data.retain.hours / 24. Hal ini diperiksa saat tabel dibuat. Error akan muncul jika kondisi tidak terpenuhi.

/

/

  1. Anda tidak dapat langsung mengonversi 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 sintaks Data Manipulation Language (DML) seperti Menyisipkan atau menimpa data (INSERT INTO | INSERT OVERWRITE), UPDATE | DELETE, dan MERGE INTO.

DQL

Delta Table mendukung analisis kueri tujuan umum. Untuk informasi selengkapnya, lihat Operasi DQL (SELECT).

Impor data

  • Karena Append Delta Table tidak memiliki primary key, format ini tidak mendukung operasi upsert atau delete selama impor data. Format ini mendukung impor data menggunakan unggahan data batch (Upload) dan unggahan data stream (Stream Upload).

  • PK Delta Table mendukung penulisan data menggunakan API Tunnel Upsert/Delete. Jika primary key tidak ada, operasi upsert akan menyisipkan baris baru. Jika sudah ada, operasi upsert akan memperbarui bidang non-primary key.

Optimasi organisasi data

  • Append Delta Table menggunakan struktur Range Clustering di lapisan dasar untuk organisasi data. Untuk informasi selengkapnya tentang optimasi ini, lihat Mengoptimalkan organisasi data untuk Append Delta Table. Secara default, Row_ID digunakan sebagai kunci clustering, dan jumlah bucket dialokasikan secara dinamis seiring pertumbuhan volume data. Setelah Anda menentukan Cluster Key, pekerjaan clustering di latar belakang melakukan reclustering inkremental pada data untuk mempertahankan urutan keseluruhan.

  • Untuk informasi tentang struktur organisasi data PK Delta Table, lihat Optimasi organisasi data untuk tabel PK Delta. Tabel ini menggunakan struktur Hash Clustering di lapisan dasar untuk memungkinkan penulisan dan pembaruan data yang efisien dengan bucketing hash pada bidang primary key (PK).