Blog AWS Indonesia
Modernisasi Data Warehouse ke Amazon Redshift – Tahap Perencanaan dan Persiapan
Di era yang dipengaruhi oleh pergerakan data saat ini, berbagai organisasi terus mencari cara untuk memodernisasi data warehouse demi performa, skalabilitas, dan efisiensi biaya yang lebih baik. Namun saat pengguna ingin melakukan migrasi / modernisasi data warehouse, seringkali muncul beberapa tantangan teknis yang harus diatasi untuk memastikan proses berjalan lancar, seperti ketidaksesuaian skema antara lingkungan source dan target, tantangan migrasi dengan dataset besar dengan limitasi waktu, dan juga pemilihan target layanan data warehouse yang handal. Modernisasi platform data warehouse ke Amazon Redshift menawarkan keuntungan dan solusi yang dapat diandalkan. Dengan arsitektur berbasis cloud, Amazon Redshift memberikan performa tinggi, elastisitas, dan kemampuan untuk terintegrasi secara mulus dengan layanan AWS lainnya.
Pada blog ini, saya akan menjelaskan langkah dan strategi dalam proses perencanaan beserta migrasi workload data warehouse ke Amazon Redshift dengan fokus pada best practices dan tools yang dapat Anda implementasikan secara langsung. Dengan memahami tahap persiapan berikut, Anda akan memperlancar proses migrasi, mendapatkan performa optimal, dan biaya yang efisien untuk modernisasi data warehouse Anda ke Amazon Redshift. Saya akan fokus pada 2 tahap awal, yaitu tahap perencanaan dan tahap persiapan data. Tahap fase selanjutnya akan saya jelaskan pada bagian blog selanjutnya.
Tantangan dan Solusi
Berikut adalah tantangan utama yang biasa dihadapi saat organisasi ingin melakukan modernisasi data warehouse:
- Ketidaksesuaian skema dan penyesuaian manual yang rumit antara jenis data warehouse pada source dan target – Beberapa elemen dalam skema mungkin tidak langsung didukung atau memerlukan penyesuaian manual yang kompleks sehingga memperlambat proses migrasi.
- Migrasi dataset yang besar dalam jangka waktu yang singkat – Migrasi dataset yang besar dalam waktu yang terbatas juga bisa menjadi tantangan, terutama untuk organisasi dengan volume data yang sangat besar. Proses transfer yang lambat dapat menyebabkan downtime yang mengganggu operasional bisnis.
- Pemilihan layanan data warehouse yang tepat – pengguna data warehouse sering kali kesulitan dengan kemampuan skalabilitas dan pemeliharaan dalam menghadapi keperluan analitik modern.
Untuk mengatasi masalah ketidaksesuaian skema, AWS menyediakan layanan AWS Schema Conversion Tool (SCT) yang menghasilkan script untuk membantu mengubah skema secara otomatis ke format yang cocok dengan Amazon Redshift. Selain itu, AWS SCT juga bisa melakukan pre-migration testing untuk mengidentifikasi dan menyelesaikan potensi masalah sebelum data dimigrasikan.
Lalu untuk mengatasi tantangan migrasi dataset yang besar dalam waktu yang singkat, gunakan fitur parallelism dalam layanan AWS Database Migration Service (DMS) untuk memindahkan data secara paralel, sehingga kecepatan transfer meningkat. Selain itu, terapkan kompresi data (data compression) selama proses transfer untuk efisiensi volume data yang dipindahkan, sehingga durasi migrasi dapat dipersingkat tanpa mengorbankan integritas data.
Dengan menggunakan Amazon Redshift, Anda mendapatkan layanan dengan kemampuan scaling secara serverless dan on-demand, menawarkan layanan modern yang mendukung workload analitik real-time dan machine learning. Transisi ke Amazon Redshift tidak hanya meningkatkan performa tetapi juga secara signifikan mengurangi biaya operasional dengan menghilangkan ketergantungan hardware.
Tahap Modernisasi Data Warehouse
Memodernisasi atau melakukan migrasi data warehouse ke Amazon Redshift dari sistem legacy memerlukan langkah-langkah terstruktur untuk memastikan transisi berjalan lancar dengan gangguan minimal. Proses ini dibagi dalam beberapa tahap berikut:
- Perencanaan dan persiapan
- Konversi skema dan persiapan data
- Migrasi data
- Optimisasi performa dan biaya
- Monitoring & continuous improvement
Tahap 1: Perencanaan dan Penilaian
Pada tahap ini, tim harus benar-benar memahami seluruh aspek sistem yang ada, termasuk struktur data, pola penggunaan, dan kebutuhan bisnis yang harus dipenuhi oleh solusi baru. Proses ini bertujuan untuk mengidentifikasi potensi tantangan dan menentukan pendekatan terbaik. Dengan melakukan perencanaan yang cermat, Anda dapat meminimalkan risiko yang mungkin muncul selama migrasi. Langkah ini juga memberikan gambaran mengenai kebutuhan resources, waktu, serta prioritas aktivitas.
Lakukan review penilaian secara menyeluruh terhadap komponen utama dalam lingkup source data warehouse Anda, seperti:
- Ukuran data:
- Tentukan total volume data yang dikelola, baik untuk data aktif maupun arsip.
- Pahami pola pertumbuhan ukuran data untuk menentukan kebutuhan scaling di Amazon Redshift.
- Struktur & kompleksitas skema data:
- Analisis skema database, termasuk jumlah tabel, hubungan antar tabel, dan kompleksitas struktur seperti struktur joins, nested queries, indexing.
- Identifikasi elemen skema yang mungkin memerlukan penyesuaian, seperti primary keys, foreign keys, dan constraints yang tidak didukung langsung di Amazon Redshift.
- Pola query:
- Evaluasi jenis dan frekuensi query yang biasanya dijalankan. Contoh: reporting analytic, ad-hoc queries, proses batch.
- Pahami pola akses data. Contoh: data yang sering diakses dan data yang jarang digunakan.
- Jumlah beban, durasi, dan frekuensi jobs / workload:
- Analisa workload harian, mingguan, atau berkala untuk menentukan kebutuhan kapasitas dan scaling pada Amazon Redshift.
- Tentukan apakah workload bersifat OLAP (Online Analytical Processing), di mana pattern tersebut cocok untuk Amazon Redshift.
- Identifikasi ketergantungan (dependencies)
Tinjau pula bagaimana data warehouse saat ini terhubung dengan komponen lain dalam ekosistem data Anda:- ETL pipelines: lakukan proses Extract, Transform, Load (ETL) yang digunakan untuk memindahkan data antar layanan data warehouse. Pahami bagaimana ETL pipelines akan beradaptasi dengan arsitektur cloud-native di AWS.
- Tools untuk laporan / reporting: tentukan Business Intelligence (BI) tools (Amazon QuickSight, Tableau, Power BI) yang terintegrasi dengan data warehouse Anda. Pastikan tools ini dapat dihubungkan dengan Amazon Redshift tanpa mengubah laporan yang ada perubahan secara signifikan.
- Sistem downstream: identifikasi sistem atau aplikasi lain yang mengambil data (consume / pull) dari data warehouse, seperti aplikasi bisnis atau pipeline machine learning. Pastikan alur data ke sistem downstream tetap terjaga setelah migrasi.
Dengan analisa yang memadai, migrasi dapat berjalan baik dengan dampak operasional minimal serta menghasilkan solusi data warehouse yang lebih modern, efisien, dan andal.
Tahap 2: Konversi skema dan persiapan data
Konversi Skema
Konversi Skema adalah langkah penting dalam migrasi database dari sistem legacy ke Amazon Redshift. Proses ini memastikan struktur database legacy cocok dengan Amazon Redshift, sehingga data dapat dimigrasikan dan digunakan secara efisien. Pada fase ini, fokusnya adalah konversi skema, cleansing data, dan mengoptimalkan persiapan data untuk performa terbaik di target Amazon Redshift.
Tahap ini dilakukan untuk mengatasi ketidaksesuaian skema yang mungkin terjadi antara source dan target, terutama bila mencakup 2 engine yang berbeda. Untuk mengatasi kondisi ini, Anda dapat menggunakan layanan AWS Schema Conversion Tool (SCT). Langkah konversi skema dapat Anda baca detail lebih lanjut pada dokumentasi AWS SCT.
Berikut adalah ilustrasi laporan assessment AWS SCT:
Penyesuaian Manual
Untuk fitur atau objek yang tidak didukung langsung oleh Amazon Redshift (misalnya, index tertentu atau fungsi database spesifik), lakukan penyesuaian manual. Hal ini memastikan bahwa fitur yang tidak didukung langsung oleh Amazon Redshift tetap dapat diimplementasikan dengan cara yang sesuai dengan arsitektur cloud-native. Mari kita lihat penyesuaian manual apa saja yang mungkin perlu Anda terapkan untuk mempersiapkan migrasi ke Amazon Redshift.
Special partitioning di Amazon Redshift
Beberapa database legacy menggunakan skema table partition untuk meningkatkan performa query. Pada Amazon Redshift, optimisasi performa menggunakan pendekatan yang berbeda, yaitu menggunakan distribution keys dan sort keys. Untuk penjelasan lebih lanjut tentang distribution key dapat dibaca pada dokumentasi DISTKEY. Dengan sort key, maka row data dalam table akan diurutkan berdasarkan value dari kolom yang menjadi sort key. Ketika melakukan query, hanya storage block yang berisi data yang menjadi range filter query yang akan diakses, sehingga akses data akan menjadi sangat efisien dan meningkatkan performa. Baca detail lebih lanjut pada dokumentasi Sort keys. Berikut contoh optimisasi table partition di Amazon Redshift untuk berbagai scenario:
Gunakan sort keys di Amazon Redshift sebagai alternatif dari index.
Jika database legacy Anda menggunakan index pada kolom order_date
, maka gunakan kolom tersebut sebagai sort key di Amazon Redshift untuk mempercepat query, misalnya dengan klausa WHERE order_date = '2024-12-01'
Contoh pada sistem legacy:
Penyesuaian manual di Amazon Redshift:
Contoh lain pada sistem legacy:
Penyesuaian manual di Amazon Redshift:
Penyesuaian constraints pada Amazon Redshift
Bagi pengguna yang ingin memiliki table partitioning, bisa mempertimbangkan konsep time-series table, di mana ini merupakan view UNION dari multiple tables. Bila Anda memiliki data untuk periode berjalannya waktu (rolling time period), gunakanlah satu series table di mana data tersebut merupakan data berjalan dengan format data yg sama yang akan ter-update seiring berjalannya waktu berdasarkan kwartal tahunan, dengan ilustrasi sebagai berikut:
Langkah secara umumnya adalah dengan membuat 1 table baru setiap kali Anda menambahkan 1 set data, lalu delete table yang terlama di dalam series tersebut. Dengan ini, Anda akan mendapatkan keuntungan sebagai berikut:
- Menghindari biaya tambahan dari menghapus (delete) rows, karena sebuah operasi DROP TABLE adalah lebih efisien dibandingkan operasi DELETE massal.
- Bila table disortir berdasarkan timestamp, tidak perlu ada operasi vacuum. Bila setiap table memiliki data untuk 1 bulan, satu operasi vacuum akan memerlukan operasi rewrite terhadap data 1 bulan tersebut, walaupun table tidak disortir berdasarkan timestamp.
Untuk informasi lebih lanjut, cek dokumentasi Minimizing vacuum times.
Penyesuaian constraints pada Amazon Redshift
Lakukan proses validasi data pada tingkat aplikasi atau ETL. Amazon Redshift dapat mendefinisikan primary key dan foreign key di dalam schema table. Informasi ini akan digunakan untuk query planning dan optimization, namun Amazon Redshift tidak akan melaksanakan constraint tersebut. Hal ini karena Amazon Redshift sebagai sebuah data warehouse berorientasi kepada performa analytics secara bulk.
Contoh pada sistem legacy:
Contoh penyesuaian manual yang ditambahkan pada saat ingestion data dengan pipeline ETL:
Dengan proses tersebut, Anda akan memastikan bahwa data yang dimuat ke Amazon Redshift telah divalidasi sebelumnya.
Penyesuaian stored procedures atau triggers kompleks di AWS
Fitur stored procedures dan triggers seringkali digunakan pada legacy database untuk melakukan business logic yang kompleks. Sebagai best practices, implementasikan fitur ini dengan menggunakan layanan AWS dengan kombinasi ke Redshift Data API.
Contoh pada sistem legacy:
Sebuah trigger digunakan untuk mengirim notifikasi setiap kali ada record baru yang ditambahkan ke tabel orders. Trigger memastikan bahwa customer terkait menerima email konfirmasi.
Contoh penyesuaian di AWS:
Migrasikan logic stored procedures ke AWS Lambda untuk menjalankan proses serupa di luar Amazon Redshift. Anda dapat mencapai fungsionalitas ini dengan menggabungkan integrasi layanan servis berikut di AWS:
- AWS Lambda: untuk eksekusi logika pengiriman notifikasi, misalnya pengiriman email dengan Amazon Simple Email Service (Amazon SES).
- Amazon EventBridge: untuk pemantauan dan trigger eksekusi fungsi Lambda, misalnya ketika ada file baru yang di-upload ke bucket Amazon Simple Storage Service (Amazon S3).
Berikut contoh ilustrasi integrasi antara fungsi AWS Lambda dengan kode Phyton terhadap Amazon SES untuk melakukan logic pengiriman email:
Dengan penyesuaian ini, Anda akan mendapatkan keuntungan dari aspek skalabilitas, di mana Amazon Redshift fokus pada proses query, sementara logika bisnis ditangani oleh AWS Lambda, sehingga mengurangi overhead di Amazon Redshift. Anda juga mendapat keuntungan dari sisi fleksibilitas, di mana logika dapat diperbarui tanpa mengubah skema database yang sudah berjalan. Penerapan ini juga akan memudahkan integrasi dengan layanan AWS lainnya seperti Amazon SES, Amazon S3, AWS Glue, atau Amazon EventBridge. Dengan merancang ulang stored procedures dan triggers untuk memanfaatkan solusi serverless dan event-driven dari AWS, Anda memastikan sistem optimal dari aspek skalabilitas, dan memiliki design yang flexible dan handal berbasis cloud di AWS.
Pembersihan Data dan Transformasi
Setelah konversi skema, Anda dapat melanjutkan ke tahap persiapan data. Tahap ini memastikan bahwa data yang dimigrasikan bersih, relevan, dan dioptimalkan untuk kebutuhan analitik. Tahap ini juga bertujuan untuk memastikan bahwa hanya data yang relevan dan optimal yang akan dimigrasikan ke Amazon Redshift. Berikut adalah contoh implementasi nyata dari langkah-langkah utama pada tahap ini.
Pembersihan Data
Dalam tahap ini, kita ingin melakukan identifikasi terhadap data yang tidak relevan, jarang digunakan, atau redundant, kemudian menghapus data tersebut secara aman untuk meminimalkan ukuran transfer saat melakukan aktivitas migrasi data. Data yang jarang digunakan dapat dipindahkan ke Amazon S3 dan diakses dengan Redshift Spectrum untuk efisiensi biaya.
Contoh skenario: sebuah organisasi memiliki database legacy dengan tabel besar bernama user_logs
, yang menyimpan data log aktivitas pengguna selama 10 tahun. Data dari 8 tahun terakhir jarang digunakan dan hanya diperlukan untuk audit sesekali.
Analisa: Berdasarkan analisis pola penggunaan data dan identifikasi, dapat kita simpulkan bahwa hanya log dari 2 tahun terakhir yang sering diakses untuk analitik. Data dari 8 tahun terakhir adalah data yang jarang digunakan.
Solusi pembersihan data:
- Pindahkan data historis dari 8 tahun terakhir – data dapat disimpan ke Amazon S3 dengan tipe kompresi, seperti BZIP2, GZIP, LZOP, atau ZSTD. Untuk lebih detail dapat Anda baca pada dokumentasi kompresi file. Selain itu gunakan data lake framework seperti Apache Iceberg untuk memudahkan maintenance. Data yang paling jarang diakses, juga dapat ditransisi ke Amazon S3 Glacier storage class. Semua ini dapat dilakukan untuk efisiensi biaya.
- Optimalkan ukuran data untuk migrasi – misalnya hanya memindahkan data dari 2 tahun terakhir ke Redshift untuk mempercepat proses migrasi dan mengurangi penggunaan kapasitas storage.
- Gunakan Redshift Spectrum untuk melakukan query data di S3 jika diperlukan.
Contoh SQL untuk query dengan Redshift Spectrum:
Transformasi Data
Normalisasi data dapat membantu mengurangi redundansi dan membuat skema lebih sederhana. Sebaliknya, proses denormalisasi dapat digunakan untuk mempercepat query tertentu dengan menyimpan data dalam bentuk yang sudah diringkas (aggregated). Denormalisasi mempercepat query pada dataset yang sering digunakan untuk reporting. Pastikan transformasi ini dilakukan dengan mempertimbangkan pola query dan kebutuhan pengguna akhir. Penerapan langkah-langkah tersebut akan memastikan modernisasi ke Amazon Redshift berjalan efisien dan menghasilkan data yang siap mendukung kebutuhan analitik dengan performa optimal.
Contoh skenario denormalisasi data adalah ketika table SALES
digunakan untuk menghasilkan laporan mingguan, misalnya total penjualan per produk.
Analisa terkait skenario ini adalah query untuk menghitung total penjualan setiap kali laporan yang diterbitkan akan memakan waktu yang lama.
Solusi denormalisasi data:
- Buat table denormalisasi yang menyimpan data yang sudah di-aggregasi / summarize:
Tablesales_summary
- Proses transformasi dapat dilakukan di pipeline ETL sebelum data dimigrasikan ke Redshift:
Dengan tabel yang sudah diterapkan denormalisasi, laporan mingguan dapat dihasilkan lebih cepat tanpa perlu menghitung ulang raw data.
Meningkatkan performa Amazon Redshift dengan Distribution Keys dan Sort Keys
Konfigurasi distribusi dan penyortiran data sangat penting untuk memastikan kinerja optimal di Amazon Redshift. Konfigurasi ini dilakukan melalui Distribution Keys dan Sort Keys, yang membantu meminimalkan data movement dan mempercepat akses data. Dengan pengaturan Distribution Key dan Sort Key yang tepat, Anda akan dapat memanfaatkan arsitektur paralel dan kolumnar Amazon Redshift untuk kebutuhan analytic skala besar dengan performa yang baik.
Namun, apabila anda tidak ingin menentukan sortkey dan distkey, Amazon Redshift memiliki kemampuan Automatic Table Optimization (ATO) yang akan melakukan optimisasi table design secara otomatis dengan memilih sort / distkey tanpa intervensi manual.
Kombinasi distribution key dan sort key
Dalam beberapa skenario, Anda dapat mengombinasikan distribution key dan sort key untuk mengoptimalkan performa lebih mendalam. Contoh skenario untuk kondisi ini misalnya tabel transactions
sering di-JOIN
dengan tabel lain berdasarkan user_id
yang merupakan distribution key, dan query biasanya melakukan filter data berdasarkan transaction_date
yang merupakan sort key.
Dengan kombinasi ini, Anda akan mendapatkan dua manfaat. Pertama: penerapan distribution key terhadap data yang sering di-JOIN
akan menyebabkan data tersebut disimpan di node yang sama sehingga mengurangi pergerakan data. Kedua: penerapan sort key terhadap data yang disortir berdasarkan tanggal akan mempercepat akses data untuk query berdasarkan rentang tanggal tertentu.
Kesimpulan: landasan untuk migrasi sukses ke Amazon Redshift
Melakukan migrasi dan optimisasi ke Amazon Redshift adalah langkah strategis yang signifikan untuk memodernisasi data warehouse Anda. Migrasi data warehouse ke Amazon Redshift memerlukan perencanaan yang matang dan persiapan yang teliti untuk memastikan proses berjalan lancar dan hasilnya optimal.
Pada artikel ini, saya sudah membahas tahap-tahap yang diperlukan untuk persiapan migrasi. Tahap pertama adalah perencanaan dan penilaian, di mana Anda melakukan evaluasi menyeluruh terhadap untuk memahami ukuran, kompleksitas, dan pola penggunaan data. Tahap berikutnya adalah konversi skema dan persiapan data, di mana Anda mengkonversi skema database yang ada agar sesuai dengan Amazon Redshift, membersihkan data yang tidak relevan, melakukan denormalisasi tabel, dan mengatur distribution keys serta sort keys untuk optimasi query. Dengan kedua langkah ini, landasan untuk migrasi yang sukses ke Amazon Redshift akan terbentuk.
Jelajahi Amazon Redshift sekarang dan mulailah transformasi platform analitik Anda!