Database Deployment: State-Based atau Migration-Based
Bagaimana anda membuat deployment database?
Automasi dalam application deployment sudah menjadi lumrah (rujuk CI/CD). Namun jika perkara yang sama untuk database adalah satu kejanggalan. Mungkin kerana tiada istilah rollback dalam database. Setiap data yang direkodkan dalam database adalah sesuatu yang kekal. Ia menjadikan deployment database menjadi mimpi ngeri orang-orang data. Kebanyakkan dilakukan dengan manual deployment
Ini tidak Bermakna ia mustahil untuk dilakukan, Cuma cara melakukannya agak berbeza.
Untuk membuat automasi database deployment, kita perlu mengenai past jenis deployment yang ingin kita lakukan dan ia bergantung kepada perilaku projek database anda. Terdapat 2 jenis database deployment :
Migration-based Deployment
State-based Deployment
Migration-based Deployment
Deployment kategori ini menunggukan konsep di mana anda menentukan perubahan yang berlaku pada database melalui arahan skrip (contoh ALTER TABLE). Cara ini memberikan kelebihan kepada anda untuk fine tune deployment script.
Anda dapat menentukan aturan script yang akan jalankan. Jadi anda boleh trace back apa yang telah dideployed.
State-Based Deployment
Cara ini anda tidak fokus kepada modikasi objek dalam database seperti Migration-based deployment , tetapi anda lebih fokus kepada end-state database objek anda . Perisian deployment anda yang akan membandingkan state yang telah diubah dengan state yang berada dalam database. JIka terdapat perbezaan anda keduanya. Perisian ini memjana script modifikasi untuk membawa state yang berada dalam database kepada state yang telah diubah.
Masih tidak dapat? (Saya faham perasaan anda, saya pun mula-mula keliru)
Sebagai contoh anda ingin menambah satu column baru seperti department dalam table employees:
Cara Migration-based Deployment
Table dalam Database
Create table Employees
( EmpID varchar2(100),
EmpName varchar2(245)
)
Script untuk deployment
ALTER table Employees add EmpDept varchar2(10)
Manakala untuk State-based
Table dalam Database
Create table Employees
( EmpID varchar2(100),
EmpName varchar2(245)
)
Script untuk deployment
Create table Employees
( EmpID varchar2(100),
EmpName varchar2(245),
EmpDept varchar2(10)
)
Dapat melihat perbezaannya? Untuk Migration-based Deployment, anda memberikan skrip arahan yang jelas kepada database dengan menggunakan keyword ALTER
Namun untuk State-Based Deployment, anda hanya perlu memberikan state akhir table tersebut
Terdapat pelbagai tools yang boleh digunakan untuk membuatkan proses deployment menjadi lebih mudah, contohnya: Liquidbase, Flyway dan SSDT.
Selamat menbaca
Ssss