DataWorks Data Integration melakukan sinkronisasi data dari berbagai sumber data, termasuk MySQL, MaxCompute, Hologres, dan Kafka. Layanan ini menyediakan solusi untuk berbagai skenario, seperti ekstrak, transformasi, dan muat (ETL) batch T+1, sinkronisasi data real-time dengan latensi dalam hitungan detik, serta migrasi database penuh.
Solusi sinkronisasi
Jenis sinkronisasi | Granularitas sumber | Target Granularity | Ketepatan waktu | Skenario |
Batch tabel tunggal | Tabel tunggal | Tabel tunggal/Partisi | T+1 atau Periodik | Muat penuh periodik, Muat inkremental periodik |
Batch database dan tabel terbagi (sharded) | Tabel terbagi (sharded) | Tabel tunggal/Partisi | T+1 atau Periodik | Muat penuh periodik, Muat inkremental periodik |
Real-time tabel tunggal | Tabel tunggal | Tabel tunggal/Partisi | Detik hingga menit | Change Data Capture (CDC) |
Batch database penuh | Database penuh atau beberapa tabel | Beberapa tabel yang sesuai beserta Partisinya | Sekali atau Periodik | Muat penuh sekali atau periodik, muat inkremental sekali atau periodik, atau muat penuh sekali diikuti muat inkremental periodik |
Real-time database penuh | Database penuh atau beberapa tabel | Beberapa tabel yang sesuai beserta Partisinya | Detik hingga menit | Muat penuh + Change Data Capture (CDC) |
Backup penuh dan inkremental seluruh database | Database penuh atau beberapa tabel | Beberapa tabel yang sesuai beserta Partisinya | Muat penuh awal: Batch Muat inkremental berkelanjutan: T+1 | Muat penuh awal dengan muat inkremental periodik |
Solusi sinkronisasi yang direkomendasikan
Saat memilih solusi sinkronisasi data, pertimbangkan dua faktor utama:
Ketepatan waktu data: Seberapa sering bisnis Anda memerlukan sinkronisasi data? Apakah diperlukan pembaruan batch harian atau pembaruan real-time tingkat detik/menit?
Lingkup dan kompleksitas sinkronisasi: Berapa banyak tabel yang perlu disinkronkan? Apakah logika pemrosesan untuk tabel-tabel tersebut konsisten? Hal ini menentukan apakah Anda memerlukan solusi untuk tabel tunggal atau seluruh database.
Berdasarkan faktor-faktor tersebut, kami merekomendasikan dua jenis utama solusi sinkronisasi: batch dan real-time.
1. Sinkronisasi batch (T+1 atau periodik)
Solusi batch ideal untuk kasus penggunaan tanpa persyaratan ketepatan waktu data yang ketat, seperti pemrosesan batch periodik T+1.
Prasyarat: Untuk melakukan sinkronisasi batch inkremental, tabel sumber harus memiliki bidang untuk melacak inkremen, seperti timestamp gmt_modified atau ID auto-increment. Jika tidak ada bidang semacam itu, Anda hanya dapat melakukan sinkronisasi penuh periodik.
1. Batch tabel tunggal
Pendekatan ini paling cocok untuk skenario di mana Anda perlu melakukan pemrosesan detail halus pada sejumlah kecil tabel data inti yang heterogen.
Manfaat utama: Logika pemrosesan fleksibel.
Transformasi detail halus: Mendukung pemetaan bidang kompleks, penyaringan data, penugasan nilai konstan, transformasi berbasis fungsi, bahkan pemrosesan berbantuan AI.
Integrasi sumber heterogen: Ideal untuk memproses data dari sumber non-standar seperti API dan file log.
Keterbatasan utama: Biaya tinggi saat diskalakan.
Overhead konfigurasi tinggi: Mengonfigurasi dan memelihara tugas individual untuk banyak tabel memerlukan upaya signifikan.
Konsumsi resource tinggi: Setiap tugas dijadwalkan secara independen. Konsumsi resource dari 100 tugas tabel tunggal jauh lebih besar daripada satu tugas seluruh database.
Solusi yang direkomendasikan: Tugas sinkronisasi batch untuk tabel tunggal
2. Batch seluruh database
Gunakan pendekatan ini saat Anda perlu memigrasi sejumlah besar tabel homogen dari satu lokasi ke lokasi lain secara efisien.
Manfaat utama: Efisiensi operasional tinggi dan biaya rendah.
Efisiensi tinggi: Konfigurasikan ratusan tabel sekaligus dengan pencocokan objek otomatis untuk meningkatkan efisiensi pengembangan secara signifikan.
Hemat biaya: Penjadwalan resource yang dioptimalkan menghasilkan biaya sangat rendah. Misalnya, konsumsi resource satu tugas seluruh database mungkin hanya 2 CU, dibandingkan 100 CU untuk 100 tugas tabel tunggal.
Kasus penggunaan khas: Membangun lapisan ODS gudang data, melakukan backup database periodik, dan memigrasi data ke cloud.
Keterbatasan utama: Logika pemrosesan terbatas.
Dirancang terutama untuk replikasi, sehingga tidak mendukung logika transformasi kompleks yang spesifik per tabel.
Solusi yang direkomendasikan: Tugas sinkronisasi batch seluruh database.
2. Sinkronisasi real-time (tingkat detik atau menit)
Solusi real-time ideal untuk kasus penggunaan yang memerlukan penangkapan perubahan data (insert, update, dan delete) dari sumber guna mendukung analitik real-time dan respons bisnis.
Prasyarat: Sumber harus mendukung Change Data Capture (CDC) atau merupakan antrian pesan. Misalnya, database MySQL harus memiliki Binary Log diaktifkan, atau sumbernya bisa berupa instans Kafka.
Real-time tabel tunggal atau real-time seluruh database
Logika pemilihan mirip dengan solusi batch:
Real-time tabel tunggal: Ideal untuk skenario yang melibatkan pemrosesan kompleks aliran perubahan real-time dari satu tabel inti.
Real-time seluruh database: Pilihan utama untuk membangun gudang data real-time, menerapkan disaster recovery database real-time, dan membuat data lake real-time. Solusi ini juga menawarkan keunggulan signifikan dalam efisiensi dan hemat biaya.
Solusi yang direkomendasikan: Tugas sinkronisasi real-time untuk tabel tunggal, Tugas sinkronisasi real-time seluruh database
3. Kasus penggunaan khusus: CDC ke target append-only
Konteks: Data CDC yang ditangkap oleh sinkronisasi real-time mencakup tiga jenis operasi: Insert, Update, dan Delete. Untuk sistem penyimpanan append-only seperti tabel non-Delta MaxCompute yang tidak mendukung operasi fisik Update atau Delete, menulis aliran CDC secara langsung dapat menyebabkan inkonsistensi data. Misalnya, operasi delete tidak akan tercermin di tabel target.
Solusi DataWorks: Pola Base + Log
Solusi ini diimplementasikan sebagai tugas database penuh dan inkremental (near real-time). Solusi ini bekerja dengan membuat tabel
Base(Snapshot Penuh) dan tabelLog(log inkremental) di target.Cara kerja: Aliran data CDC ditulis ke tabel
Logsecara real-time. Kemudian, setiap hari (T+1), sistem secara otomatis menjadwalkan tugas untuk merge perubahan dari tabelLogke tabelBase, menghasilkan Snapshot Penuh yang diperbarui. Pendekatan ini menulis data ke tabel inkremental dengan latensi tingkat menit. Status konsisten akhir terlihat setelah proses merge T+1. Pendekatan ini menyeimbangkan penangkapan data real-time dengan Eventual Consistency yang dibutuhkan untuk gudang data batch.
Solusi yang direkomendasikan: Tugas database penuh dan inkremental.
Kemampuan sumber data
Sumber data | Batch Satu-Tabel | Real-time tabel tunggal | Batch seluruh database | Real-time seluruh database | Database penuh dan inkremental |
Baca | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | Tulis | Baca | Tulis | - | |
Baca/Tulis | - | Baca | - | - | |
Baca/Tulis | - | - | Baca | Baca | |
Baca | - | - | - | - | |
Baca | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca | - | - | - | - | |
Baca | - | - | - | - | |
Baca/Tulis | Baca/Tulis | - | Tulis | - | |
Baca/Tulis | Tulis | Tulis | Tulis | - | |
Baca/Tulis | - | Baca | - | - | |
Baca/Tulis | Tulis | Baca | - | - | |
Baca/Tulis | - | Baca | - | - | |
Baca/Tulis | - | Baca | - | - | |
Elasticsearch | Baca/Tulis | Tulis | Tulis | Tulis | - |
Baca/Tulis | - | - | - | - | |
GBase8a | Baca/Tulis | - | - | - | - |
HBase | HBase: Baca/Tulis HBase 2.x SQL: Read HBase 1.1.x SQL: Write | - | - | - | - |
Baca/Tulis | - | - | - | - | |
Hive | Baca/Tulis | - | Baca/Tulis | - | - |
Baca/Tulis | Baca/Tulis | Baca/Tulis | Tulis | - | |
Baca | - | - | - | - | |
Baca/Tulis | Baca/Tulis | - | Tulis | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | Tulis | - | Tulis | - | |
Baca/Tulis | Baca | - | - | - | |
Baca/Tulis | Tulis | Tulis | Tulis | Tulis | |
Baca/Tulis | - | - | - | - | |
Tulis | - | - | - | - | |
Tulis | - | - | - | - | |
Baca | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | - | - | Baca | - | |
Baca/Tulis | Baca | Baca | Baca | Baca | |
Tulis | - | - | - | - | |
Baca/Tulis | Baca | Baca | Baca | Baca | |
Baca/Tulis | - | Tulis | Tulis | - | |
Baca/Tulis | - | Tulis | Tulis | - | |
Baca/Tulis | Baca | Baca | Baca | Baca | |
Baca/Tulis | - | Baca | Baca | - | |
Baca/Tulis | - | Baca | Baca | - | |
Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | Tulis | Tulis | Tulis | - | |
Baca/Tulis | - | Baca | - | - | |
Baca/Tulis | Tulis | - | - | - | |
Baca/Tulis | - | - | - | - | |
Baca/Tulis | - | - | - | - | |
Tulis | - | - | - | - | |
Vertica | Baca/Tulis | - | - | - | - |
Baca | - | - | - | - |
Kasus penggunaan
Referensi
Gunakan artikel-artikel berikut untuk memulai Data Integration.
Untuk konfigurasi sumber data, lihat Manajemen Sumber Data.
Untuk konfigurasi tugas sinkronisasi, lihat artikel-artikel berikut:
Untuk pertanyaan umum tentang sinkronisasi data, lihat FAQ Data Integration.