Database versioning hoặc Database migration

Database versioning hoặc Database migration

Trong quá trình làm việc tại đơn vị mới mình có tiếp cận với một khái niệm mới về việc quản trị DB đó là quản lý version Database. Nôm na thì ta đã quen thuộc với GIT, SVN… dành cho Code rồi, nhưng với Database thì nếu như phát triển phần mềm theo mô hình thác nước thì DB phải được tạo đầu tiên và không được thay đổi. Nhưng nếu phải thay đổi thì sao? Hoặc là phát triển phần mềm theo mô hình Scrum thì việc quản trị DB sẽ như thế nào?

Việc quản lý version database được ứng dụng trong các trường hợp sau:
– Database versioning: Mô hình phát triển phần mềm theo mô hình Scrum, đối với mỗi phiên bản sẽ có code và database là khác nhau…
– Database migration: Trong mô hình thác nước, việc thay đổi phần mềm là tất yếu khi muốn nâng cấp tính năng mới. Dữ liệu sẽ được thay đổi theo việc code hoặc đơn giản là chuyển đổi sang hệ quản trị cơ sở dữ liệu mới như từ MSSQL sang Oracle…

Ý tưởng chính của việc quản lý version là lưu từng bước thay đổi về mặt DB vào các cấu hình theo từng file ứng với mỗi version. Từ đó khi tiến hành cập nhật thì chạy đúng theo cấu hình.
Ví dụ:
Từ version 1.0 -> 1.1: Tiến hành thêm mới 2 table
Từ version 1.1 -> 1.2: Tiến hành sử cấu trúc 1 table
Từ version 1.2 -> 1.3: Tiến hành thêm mới 1 table và thay đổi lại quan hệ giữa các bảng

Như vậy khi cập nhật phiên bản mới thì phải chạy đúng lần lượt từng bước để việc thay đổi này phù hợp với phần mềm.
Việc thay đổi này không đơn giản là chỉ thay đổi về mặt cấu trúc của Database mà có thể phải thay đổi cả dữ liệu trong các bảng hoặc quan hệ giữa các bảng.

Nổi bật phần mềm liên quan đến lĩnh vực này là: Liquibase, Flyway…