RSS Amplifier

Hasbullah Abu Bakar · Oct 12, 2024

Database Deployment: State-Based atau Migration-Based

0
Sign in to vote or save

Hasbullah Abu Bakar · Hasbullah Abu Bakar

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 :

  1. Migration-based Deployment

  2. 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.

Flyway

Liquidbase

SSDT

Selamat menbaca

Share Hasbullah Abu Bakar

Ssss

No posts

Read the original on hasbullahabubakar.substack.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.