全部产品
Search
文档中心

MaxCompute:Tabel Delta

更新时间:Nov 26, 2025

Tabel Delta 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 kunci primer dan PK Delta Table untuk tabel dengan kunci primer. Topik ini menjelaskan fitur dasar dan operasi Tabel Delta.

Ikhtisar

Tabel Delta 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 Tabel Delta 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

Tabel Delta PK

DML Dasar

Insert, Update, Delete, dan Merge Into.

Didukung

Didukung

Transaksi ACID

Read Committed/Snapshot Isolation.

Untuk informasi selengkapnya, lihat Manajemen transaksi ACID.

Didukung

Didukung

Kunci primer

Menentukan kunci primer.

Tidak didukung

Mendukung pembaruan kolom parsial

Evolusi skema

Menambahkan, 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 menggunakan alat seperti Gunakan Flink untuk menulis data ke MaxCompute, 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 Perjalanan Waktu.

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 Optimasi organisasi data Append Delta Table dan Optimasi organisasi data PK Delta Table.

Didukung

Anda tidak perlu mengonfigurasi jumlah bucket. Bucketing Dinamis secara otomatis menyesuaikan diri dengan distribusi data.

Didukung

Optimasi performa kueri

Statistik tingkat partisi dan tingkat file (seperti Min/Max), pemangkasan partisi, pemangkasan kolom, dan penurunan predikat.

Didukung

Didukung

Keamanan dan kepatuhan

Enkripsi Penyimpanan / Penyembunyian Data Dinamis / Kontrol Akses Tingkat Baris, dll.

Didukung

Didukung

Pemulihan bencana dan pencadangan

Pengenalan snapshot tabel (Pratinjau Undangan) / Backup lokal dalam mode Keranjang daur ulang / Pemulihan bencana antar-zona.

Didukung

Dukungan

Biaya

Kompresi penyimpanan kolom AliORC dan penyimpanan bertingkat.

Didukung

Didukung

Pengalaman pengguna

Pembaruan data real-time untuk layanan real-time

Tabel Delta 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 bertingkat dan optimasi sebagai berikut:

  • 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 mengatur ulang dan mengoptimalkan data inkremental ke dalam bucket yang terurut dan terkluster. Saat Anda menjalankan kueri, mesin kueri dapat secara efisien melakukan pruning pada data dasar yang terurut 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 tingkat dasar, MaxCompute menyediakan serangkaian fitur tingkat tinggi yang kaya untuk meningkatkan ketepatan waktu analitik data end-to-end. Anda dapat menggabungkan fitur-fitur canggih seperti komputasi inkremental dan Tampilan Materialisasi Dinamis (Delta Live MV) (Pratinjau Undangan) untuk membangun pipeline pemrosesan data real-time yang efisien dan mempercepat transformasi data menjadi insight 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 setiap partisi untuk 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 perubahan volume data bisnis dan mengatasi masalah seperti kesenjangan data dan fragmentasi akibat bucket yang terlalu besar atau terlalu kecil.

  2. Evolusi Skema: Tabel Delta 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 secara tidak sengaja.

  3. Mengatasi keterbatasan tabel tradisional: Satu Tabel Delta mendukung operasi seperti INSERT INTO, UPDATE, DELETE, dan MERGE INTO, serta clustering dan pengurutan. Tabel partisi tradisional, tabel terkluster, dan Transaction Table tidak 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 Tabel Delta melalui connector dan API penyimpanan terbuka.

Menyeimbangkan performa dan keandalan

  1. Tabel Delta cocok untuk mengelola volume data besar, 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: Tabel Delta menggunakan kontrol konkurensi optimistik untuk mendukung operasi konkuren dari beberapa penulis. Konflik penulisan dideteksi dan dicoba ulang untuk memastikan konsistensi data.

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

  4. Backup dan rollback: Mekanisme backup dan rollback berbasis versi yang menggunakan mode Keranjang daur ulang memastikan bahwa jika terjadi korupsi data atau penghapusan tidak sengaja, Anda dapat dengan cepat mengembalikan tabel ke kondisi sehat sebelumnya. Hal ini mengurangi risiko operasi dan maintenance (O&M) serta manajemen.

Operasi SQL

DDL

Membuat Tabel Delta Append

-- Membuat Tabel Delta Append
CREATE TABLE <nama_tabel> (
  <nama_kolom> <tipe_data> [NOT NULL] [DEFAULT <nilai_default>] [comment <komentar_kolom>], ...   
) 
[comment <komentar_tabel>]
[RANGE CLUSTERED BY (<nama_kolom> [, <nama_kolom>, ...]) ]
TBLPROPERTIES (
  "table.format.version"="2" 
  ["acid.data.retain.hours"="jam"...]
)
[LIFECYCLE <hari>];

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 untuk menyimpan status data historis yang 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 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 yang lebih dari 72 jam 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 terakhir tabel. Jika endTimestamp lebih baru daripada waktu saat ini, beberapa kueri dapat mengembalikan hasil berbeda karena data baru mungkin telah disisipkan.

Anda dapat memodifikasi nilai parameter ini untuk suatu tabel.

Membuat Tabel Delta PK

-- Membuat Tabel Delta PK
CREATE TABLE <nama_tabel> (
  <nama_kolom> <tipe_data> [NOT NULL] [DEFAULT <nilai_default>] [comment <komentar_kolom>], ...   
  PRIMARY KEY (<nama_kolom_pk>[, <nama_kolom_pk2>, ...] )
) 
[comment <komentar_tabel>]
TBLPROPERTIES (
  "table.format.version"="2" 
  [, "write.bucket.num" = "N", "acid.data.retain.hours"="jam"...]
)
[LIFECYCLE <hari>];

Parameter dijelaskan sebagai berikut:

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

    Setelah kunci primer ditetapkan, data dalam tabel dideduplikasi berdasarkan kolom kunci primer. Batasan unik berlaku dalam satu partisi atau 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 tabel non-partisi. Ini juga menunjukkan jumlah node konkuren untuk penulisan data. Anda dapat mengubah parameter ini untuk tabel partisi, dan perubahan berlaku untuk partisi baru secara default. Anda tidak dapat mengubah 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 traffic 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 untuk menyimpan status data historis yang 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 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 yang lebih dari 72 jam 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 lambat dari waktu commit terbaru tabel. Jika endTimestamp lebih lambat dari waktu saat ini, beberapa kueri dapat menghasilkan hasil berbeda karena data baru mungkin dimasukkan.

Anda dapat memodifikasi nilai parameter ini untuk suatu tabel.

acid.write.precombine.field

Tidak

Anda dapat menentukan nama salah satu kolom.

Jika nama kolom ditentukan, sistem mendeduplikasi data berdasarkan kolom kunci primer (PK) dan kolom yang ditentukan selama pemrosesan file untuk commit yang sama. Hal ini memastikan keunikan dan konsistensi data.

Catatan

Jika volume data dalam 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 Tabel Delta.

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

Catatan

Item

Tabel Delta Append

Tabel Delta PK

Tabel terkluster

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, kluster hash dibuat berdasarkan kunci primer.

CLUSTERED BY

Siklus hidup

Harus lebih besar dari atau sama dengan siklus hidup 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 Tabel Delta.

  2. PK Delta Table tidak mendukung evolusi skema untuk kolom kunci primer (PK).

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

  4. CREATE TABLE AS tidak didukung.

DML

Tabel Delta mendukung sintaks Data Manipulation Language (DML) seperti Menyisipkan atau menimpa data (INSERT INTO | INSERT OVERWRITE), Memperbarui atau menghapus data (UPDATE | DELETE), dan MERGE INTO.

DQL

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

Impor data

  • Append Delta Table mendukung impor data menggunakan unggah data batch (Upload) dan unggah data stream (Stream Upload). Karena Append Delta Table tidak memiliki kunci primer, transmisi data tidak mendukung operasi Upsert atau Delete.

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

Optimasi organisasi data

  • Append Delta Table menggunakan struktur Range Clustering di tingkat dasar untuk organisasi data. Untuk informasi selengkapnya tentang optimasi ini, lihat Optimasi organisasi data 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 PK Delta Table. Tabel ini menggunakan struktur Hash Clustering di tingkat dasar untuk memungkinkan penulisan dan pembaruan data yang efisien dengan bucketing hash pada bidang kunci primer (PK).