All Products
Search
Document Center

DataWorks:Sinkronisasi berkinerja tinggi dengan format penyimpanan kolom Arrow

Last Updated:Aug 25, 2026

DataWorks Data Integration mendukung sinkronisasi data berkinerja tinggi di berbagai sumber data menggunakan format penyimpanan kolom Apache Arrow. Solusi ini memanfaatkan teknologi passthrough dalam memori dan zero-copy untuk mengubah transfer data dari berbasis baris menjadi berbasis kolom, sehingga meningkatkan throughput sinkronisasi pada volume data besar. Dalam skenario pengujian, kinerja dapat meningkat hampir 10 kali lipat.

Kasus penggunaan

Saat memproses data dalam jumlah sangat besar, solusi sinkronisasi data berbasis row-store sering mengalami bottleneck kinerja akibat serialisasi, deserialisasi, dan konversi tipe data yang terlalu sering. Hal ini terutama terjadi selama migrasi gudang data—misalnya dari Hive ke MaxCompute—atau saat membangun arsitektur danau data terpadu (data lakehouse). Waktu sinkronisasi yang lama untuk data berskala terabyte dapat memengaruhi peluncuran layanan dan efisiensi analisis data. Solusi ini mengatasi ketidakefisienan penerusan data antar sumber data berbasis penyimpanan kolom berskala besar dan mampu mengurangi waktu sinkronisasi dari hitungan jam menjadi menit.

Skenario 1: Migrasi big data

Masalah: Migrasi ratusan terabyte data dari Hive ke MaxCompute memakan waktu lama dan mengganggu peluncuran layanan.
Solusi: Aktifkan sinkronisasi Arrow untuk transfer langsung berbasis penyimpanan kolom guna menghindari konversi format.
Hasil: Waktu migrasi berkurang dari hitungan jam menjadi menit, meningkatkan efisiensi sebesar lebih dari 10 kali.

Skenario 2: Integrasi sumber data yang berbeda dan arsitektur danau data terpadu

Data mengalir secara bebas dan efisien antara data lake (seperti ekosistem Hive) dan gudang data (Hologres/MaxCompute). Nilai utamanya adalah penggunaan satu salinan data untuk berbagai tujuan serta pemanfaatan sinergi antara danau data dan gudang data.

Arsitektur solusi

DataWorks Data Integration mengadopsi standar in-memory berbasis kolom Apache Arrow dan merefaktor metode transfer data antara Reader dan Writer, mengubah proses dari pemrosesan berbasis baris menjadi passthrough langsung berbasis kolom.

Arsitektur sinkronisasi tradisional berbasis row-store

Dalam arsitektur tradisional, data diproses baris demi baris. Bahkan jika sumber dan tujuan sama-sama menggunakan format penyimpanan kolom seperti Parquet atau ORC, data tetap dikonversi menjadi objek Record berbasis baris generik di dalam mesin sinkronisasi. Format ini dirancang untuk penyimpanan per baris, di mana setiap objek Record mendefinisikan beberapa Columns, dan setiap Column berisi Value untuk kolom tersebut pada baris saat ini. Sebagai contoh, pertimbangkan sinkronisasi data berbasis kolom dari MaxCompute (ODPS) ke MaxCompute (ODPS):

Proses ini mencakup langkah-langkah berikut dan menimbulkan overhead kinerja:

  1. Decoding oleh Reader: Reader membaca data berbasis kolom dari sumber, seperti MaxCompute, lalu mendekode dan mengonversinya baris demi baris menjadi objek Record internal framework.

  2. Transfer framework: Framework mentransfer sejumlah besar objek Record melalui antrian memori.

  3. Encoding oleh Writer: Writer mengambil objek Record dari framework, mengencode-nya ke dalam format penyimpanan kolom yang dibutuhkan tujuan, lalu menuliskan data tersebut.

Proses ini melibatkan banyak konversi format data, serialisasi/deserialisasi, serta pembuatan objek yang berulang, sehingga menyebabkan konsumsi CPU dan memori yang tinggi, garbage collection (GC) yang sering, serta throughput keseluruhan yang terbatas.

Arsitektur sinkronisasi berbasis penyimpanan kolom Arrow

Arsitektur baru berbasis Arrow menerapkan aliran data berbasis kolom end-to-end, di mana data mempertahankan format penyimpanan kolomnya sepanjang pipeline sinkronisasi, sehingga menghindari overhead konversi berbasis baris.

Dengan memperkenalkan struktur data ArrowTabularRecord, proses sinkronisasi dioptimalkan sebagai berikut:

  1. Pembacaan langsung oleh Reader: Reader menggunakan MaxCompute Tunnel Arrow API untuk membaca langsung data berbasis kolom dari sumber, lalu mengemasnya ke dalam objek ArrowTabularRecord dan mengirimkannya ke framework secara batch.

  2. Transfer framework: Framework langsung meneruskan objek ArrowTabularRecord yang berisi data biner berbasis kolom.

  3. Penulisan langsung oleh Writer: Writer menggunakan Tunnel Arrow API untuk mengambil data biner berformat Arrow langsung dari ArrowTabularRecord dan memanfaatkan teknologi zero-copy untuk mentransfernya ke tujuan, seperti Tunnel Server, tanpa re-serialisasi.

Arsitektur ini menyediakan dukungan native untuk Arrow dan menghilangkan langkah konversi berbasis baris antara, sehingga mencapai "sinkronisasi short-circuit" end-to-end untuk penyimpanan kolom, yang secara signifikan meningkatkan throughput dan mengurangi latensi.

Langkah implementasi

Anda dapat menambahkan parameter tertentu ke tugas integrasi data DataWorks untuk mengaktifkan sinkronisasi Arrow berkinerja tinggi. Fitur ini saat ini didukung untuk tugas sinkronisasi offline database penuh dan tabel tunggal dengan sumber dan tujuan berupa MaxCompute, Hologres, atau Hive/OSS/Hadoop Distributed File System (HDFS) (Parquet/ORC).

Metode 1: Sinkronisasi offline database penuh

Gunakan fitur tugas sinkronisasi offline database penuh integrasi data. Misalnya, untuk sinkronisasi offline dari Hive ke MaxCompute, sistem secara otomatis mendeteksi tipe field tabel sumber dan tujuan serta mengaktifkan sinkronisasi Arrow berkinerja tinggi tanpa konfigurasi manual. Anda dapat melihat pengaturan ini di Advanced Configuration > Advanced Parameters > Runtime Config di pojok kanan atas editor tugas.

Di Runtime Config, temukan parameter Enable Arrow short-circuit transfer. Opsi yang tersedia adalah Auto (default), Force enable, dan Force disable.

Metode 2: Sinkronisasi offline tabel tunggal

Saat mengonfigurasi tugas sinkronisasi offline tabel tunggal, Anda dapat mengaktifkan fitur ini secara manual di editor kode. Untuk melakukannya, tambahkan "useArrow": true ke konfigurasi parameter baik Reader maupun Writer.

Prasyarat: Untuk mengaktifkan fitur ini, definisi tipe kolom tabel sumber dan tujuan harus identik karena mode ini melewati langkah konversi tipe dan mentransfer data langsung di memori.

Berikut adalah contoh konfigurasi untuk sinkronisasi data dari Hive (Reader) ke MaxCompute (Writer):

{
  "type": "job",
  "steps": [
    {
      "stepType": "hive",
      "parameter": {
        "useArrow": true,  
        "datasource": "my_datasource",
        "column": [
          "col1",
          "col2"
        ],
        "readMode": "hdfs",
        "table": "table"
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "odps",
      "parameter": {
        "useArrow": true,  
        "truncate": false,
        "datasource": "odps_test",
        "column": [
          "col1",
          "col2"
        ],
        "table": "table"
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "speed": {
      "concurrent": 3
    }
  }
}

Validasi kinerja

Bagian berikut menunjukkan peningkatan kinerja untuk beberapa kombinasi sumber data. Kondisi pengujian untuk validasi kinerja adalah sebagai berikut:

  • Kondisi uji stres: Spesifikasi server: 64 core, memori 256 GB. Kartu antarmuka jaringan: 25 Gbit/s.

  • Volume data uji: 42.045.700 catatan.

Sumber Data

Fitur yang Didukung

Peningkatan Kinerja Replikasi

MaxCompute

Membaca langsung data berbasis kolom melalui Tunnel Arrow API

Kinerja replikasi meningkat sebesar 200%

Hologres

Mendukung ekspor format Arrow untuk menghindari bottleneck berbasis baris Java Database Connectivity (JDBC)

Kinerja replikasi meningkat sebesar 95%

Hive, OSS, HDFS, dan sistem file terdistribusi lainnya

Membaca langsung data format Arrow dasar dari Parquet/ORC

Kinerja sinkronisasi PARQUET meningkat sebesar 5,55 kali. Kinerja sinkronisasi ORC meningkat sebesar 9,85 kali.

Skenario 1: Sinkronisasi short-circuit berbasis kolom MaxCompute (Arrow → Arrow)

Konkurensi

Row Store Tradisional

Penyimpanan Kolom Arrow

Peningkatan Kinerja

1

67,8 MB/s

3740 R/s

212,6 MB/s

11462 R/s

+206,5%

3

185,6 MB/s

10226 R/s

569,9 MB/s

30728 R/s

+200,5%

8

462,1 MB/s

25467 R/s

1321,0 MB/s

71143 R/s

+197,4%

Skenario 2: Sinkronisasi Hologres → MaxCompute

Konkurensi

Sinkronisasi Tradisional

Sinkronisasi Panah

Peningkatan Kinerja

4

439,1 MB/s

216480 R/s

906,1 MB/s

404270 R/s

+87%

8

773,3 MB/s

381300 R/s

1669,1 MB/s

745654 R/s

+95%

Skenario 3: Sinkronisasi Parquet/ORC → MaxCompute

Format Penyimpanan Kolom

Sinkronisasi Tradisional

Arrow Synchronization

Peningkatan Kinerja

Parquet

26,1 MB/s

35631 R/s

1198,1 MB/s

233587 R/s

5,55 kali

ORC

21,4 MB/s

27661 R/s

3256,3 MB/s

300326 R/s

9,85 kali

Parquet dan ORC adalah format penyimpanan kolom yang digunakan dalam sistem file terdistribusi seperti HDFS dan OSS.