Quản lý phiên bản database với LiquiBase

Việc quản lý phiên bản đối với code đã xuất hiện từ rất lâu và đã có rất nhiều các phần mềm dành cho nó. Theo mình biết và đã từng sử dụng đó là

  • SVN (tiếp cận khá nhiều, coi như đầu tiên, khá cũ và có một số nhược điểm nhưng dễ dùng, phù hợp với các dự án về C#)
  • GIT (cái này khá tiên tiến, mạnh mẽ, càng ngày càng nhiều người dùng, Gitlab, GitHub…)
  • Source Safe (Visual Source Safe) được mua và tiếp tục phát triển bới Microsoft. Cái này mình mới nghe qua chứ chưa dùng bao giờ.

Đó là với code, thế với database thì như thế nào? Trước đây đúng là thuộc dạng 5 mức ngu dốt luôn. Đồng nghiệp hỏi làm mình đứng hình vì còn chưa bao giờ nghĩ đến nó cơ. Tìm hiểu thêm thì biết đúng là nó có tồn tại nhưng còn rất sơ khai. Mặc dù rất quan trọng nhưng lại rất sơ khai do tính đặc thù và khó khăn của nó.

Đại loại là trong quá trình phát triển phần mềm, nhiều phiên bản được nâng cấp và cải thiện, những thay đổi nhỏ thì chỉ cần sửa code nhưng với những thay đổi lớn thì có thể phải sửa cả việc thiết kế cơ sở dữ liệu. Để quản lý việc sửa đổi này thì ta cũng phải có công cụ tương đương như việc quản lý version của code.

Trước đây công ty cũ mình mua phần mềm nước ngoài thì khi nâng cấp nó sẽ gửi cho mình bản code nó đã build. Còn về phần mềm nó sẽ vứt do một loại các kettel Pentaho để chạy theo tuần tự để nâng cấp version cho Database, gọi với cái tên mỹ miều là Migrate dữ liệu.

Tìm hiểu qua thì mình thấy 3 cái tên được nhắc đến nhiều là:

  • SQL Server Data Tools: Cái này của Microsoft, mới nghe qua tên thôi, chắc chỉ support cho SQL Server
  • Flyway: Mới nghe đến tên
  • Liquibase: Thằng này hiện công ty mình đang dùng và được nghe nói đến nhiều nhất. Đang dùng nó để thay đổi với Oracle đi kèm là code ứng dụng bằng Java.

Đối với mình thì hiện tại chưa phải dùng đến nó nhưng chắc chắc sẽ tìm hiểu kỹ hơn về vấn đề này. Đặc biệt là đối với Liquibase để xem cách sử dụng với các trường hợp sử dụng nó như thế nào.

Hiện tại đối với mình quản lý thủ công bằng SVN hoặc GIT đó là viết ra các script thay đổi về DB để lưu trữ lại thôi. Phức tạp và cả team, nhiều team dùng thì chưa nghĩ đến.