Tại sao và khi nào Liquibase?


98

Tôi đã cố gắng tìm kiếm câu hỏi này trên ngăn xếp tràn nhưng không thể tìm thấy bất kỳ câu hỏi nào cho điều này.
Tôi là người mới Liquibasevà muốn biết

  • Tại sao Liquibase?
  • Khi nào chính xác một người nên sử dụng Liquibasetrong dự án?

Tôi biết rằng điều này là để giữ tất cả các thay đổi cơ sở dữ liệu ở một nơi nhưng điều tương tự có thể được thực hiện bằng cách tạo một SQLtệp đơn giản trong một số hệ thống kho lưu trữ và liên tục cập nhật nó theo thời gian.

Câu trả lời:


69

Điểm khác biệt chính giữa tệp tạo lược đồ tự quản lý và Liquibase (hoặc các công cụ di chuyển lược đồ khác ) là cái sau cung cấp một thay đổi lược đồ. Đây là bản ghi về những thay đổi của lược đồ theo thời gian. Nó cho phép nhà thiết kế cơ sở dữ liệu chỉ định các thay đổi trong lược đồ và cho phép nâng cấp hoặc hạ cấp lược đồ theo lập trình theo yêu cầu.

Có những lợi ích khác, chẳng hạn như:

  • Tính độc lập của nhà cung cấp cơ sở dữ liệu (điều này có vấn đề, nhưng họ cố gắng)
  • tài liệu tự động
  • lược đồ cơ sở dữ liệu khác nhau

Một công cụ thay thế là đường bay .

Bạn sẽ chọn sử dụng công cụ di chuyển giản đồ khi bạn muốn hoặc cần tự động quản lý các bản cập nhật giản đồ mà không làm mất dữ liệu. Có nghĩa là, bạn mong đợi lược đồ thay đổi sau khi hệ thống của bạn đã được triển khai đến một môi trường tồn tại lâu dài như trang web của khách hàng hoặc môi trường thử nghiệm ổn định.


1
Nhưng giả sử chúng ta tạo một tệp và viết tập lệnh đầu tiên của mình vào đó và cam kết nó với tên git. Bây giờ, theo thời gian, lược đồ sẽ được cập nhật và chúng ta có thể quay lại bất kỳ khoảng thời gian nào và cũng thay đổi lại lược đồ, phải không?
Shakeel Shahzad

1
Với cách tiếp cận đó, bạn có thể tạo lại lược đồ, nhưng bạn không thể hạ cấp / nâng cấp. Sự khác biệt là mất dữ liệu.
Synesso

1
Nhưng phần khác, dùng khi nào thì thiếu?
Shakeel Shahzad

1
Synesso Tôi vẫn chưa biết cách bạn có thể tự động hạ cấp cơ sở dữ liệu sản xuất sau khi nó được sử dụng một thời gian và các quyết định đã được đưa ra đối với dữ liệu bằng cách sử dụng các cột mới được thêm vào. Bạn không thể chỉ cần bỏ chúng bây giờ nhất thiết. Ngoài ra, tôi không hiểu tại sao điều này lại tốt hơn chỉ là một loạt các tập lệnh SQL có phiên bản được lưu giữ trong điều khiển nguồn, bao gồm một phần chèn đơn giản vào bảng phiên bản ở đầu và bản cập nhật cho nó ở cuối để theo dõi những gì đã được áp dụng.
Khorkrak

18

Tôi đã thấy liquibase tạo ra kỷ luật giữa các nhà phát triển khi nói đến việc sửa đổi lược đồ. Bạn chỉ không thể ghi đè thay đổi của nhà phát triển khác và thực thi. Thay vào đó, bạn tạo tập thay đổi của riêng mình và thêm tập hợp đó vào cuối chuỗi thay đổi sẽ được thực thi. Điều này cũng mang lại sự rõ ràng về sự thay đổi đã đến khi nào và ai đã mang đến nó.

Một cách tiếp cận rất "có phiên bản" để bảo trì lược đồ.

Đối với những người mới bắt đầu, nó thực sự tạo ấn tượng về "công việc không cần thiết".


4
Đó là tôi (Nó mang lại cho tôi ấn tượng chính xác mà bạn đề cập: P) +1 cho rằng quyết định rất quan trọng
Ismail Sahin

bạn nói đúng, chúng tôi có thể theo dõi tất cả những thay đổi ai đã thực hiện những thay đổi mới nhất và khi nào. nếu chúng ta định nghĩa để rool trở lại một liquibase điểm cụ thể sẽ rất hữu ích
Anoop PS

7

Khi bạn có nhiều trường hợp cơ sở dữ liệu trong dev, qa, production và bạn muốn có một công cụ để tự động theo dõi lịch sử thay đổi và áp dụng các thay đổi một cách thông minh (áp dụng sự khác biệt của giản đồ hiện tại và giản đồ cuối cùng), các công cụ như liquibase hoặc flyway sẽ rất hữu ích .


3

Tôi tin rằng Liquibase là tuyệt vời khi triết lý của bạn là cơ sở dữ liệu là một suy nghĩ sau. Triết lý này đã gây ra phần lớn các cơ sở dữ liệu xấu trong quá trình sản xuất - và hầu hết chúng đều xấu. Một cơ sở dữ liệu nên được thiết kế với cái nhìn đầy đủ về toàn bộ hệ thống kinh doanh, chứ không phải do các nhà phát triển ứng dụng chắp vá, mỗi người làm việc trong silo riêng của họ. Phương pháp thứ hai dẫn đến giải pháp thay thế, dữ liệu không chuẩn hóa, mối quan hệ kém giữa các bảng, trùng lặp các khu vực kinh doanh và một hệ thống tổng thể lộn xộn, chi phí bảo trì cao mà khách hàng sẽ ghét ngay sau khi triển khai do các vấn đề mà nó gây ra. Nếu một cơ sở dữ liệu được thiết kế để phản ánh CHÍNH XÁC các mối quan hệ kinh doanh, tuổi thọ của nó sẽ dài gấp 5 lần và sẽ phục vụ mục đích của nó tốt hơn gấp 5 lần so với một cơ sở dữ liệu được thiết kế theo kiểu chắp vá như hầu hết.

Bản thân Liquibase không phải là một vấn đề nhưng nó cho phép các nhà phát triển ứng dụng thiết kế cơ sở dữ liệu. Đó là vấn đề.


19
Thông số kỹ thuật thay đổi, các tính năng mới được thêm vào, các lỗi được sửa. Ngay cả khi giả sử "cơ sở dữ liệu được thiết kế để phản ánh CHÍNH XÁC các mối quan hệ kinh doanh", thì việc bạn cần thực hiện các thay đổi đối với DB theo thời gian là điều hoàn toàn bình thường và vì các doanh nghiệp và các mối quan hệ kinh doanh thay đổi theo thời gian. Liquibase chỉ giúp bạn quản lý những thay đổi đó. Đó là nó.
Steven Byks

Theo kinh nghiệm của tôi, rất ít DBA và toàn bộ các nhà phát triển sử dụng Liquibase - tôi nghĩ @ bob-barry phù hợp với phần lớn kết quả cuối cùng. Mặc dù vậy, các DBA sử dụng các công cụ như Liquibase (hoặc chỉ là git cũ đơn thuần cho lịch sử thay đổi) sẽ thấy hữu ích.
PhillipHolmes

Các thực hành DB tiến hóa và nhanh nhẹn nói chung, khuyến khích và cho phép đánh giá ngang hàng. Đối với một DB có nhu cầu về hiệu suất, DBA vẫn làm việc với các nhóm ứng dụng để thay đổi DB. Các công cụ như Liquibase cho phép tái cấu trúc dễ dàng hơn, đi ngược lại đối số không chuẩn hóa của bạn. 10 năm trước, tôi đã làm việc cho một sản phẩm được cài đặt cho hơn 20 khách hàng, mỗi khách hàng đều có các chu kỳ nâng cấp và vá lỗi của riêng họ. Sau 2 năm ác mộng và cố gắng viết công cụ như vậy bằng tay, chúng tôi đã chuyển sang liquibase ngay khi biết về nó. Và chúng tôi có các bảng với 200 M bản ghi, cũng không phải là lớn vào thời điểm đó, nhưng cần có DBA.
dùng6317694

3
Tôi hy vọng sẽ gặp bạn ở đó trên thiên đường vào một ngày nào đó. Chắc chắn âm thanh tốt.
Bijan,

3

Tôi nghĩ Tại sao liquibase có thể được giải đáp nếu bạn xem qua bài viết dưới đây http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html

Nếu bạn đọc kỹ, khả năng hạ cấp xuống phiên bản thấp hơn từ phiên bản cao hơn với sự trợ giúp của các lệnh mvn hoặc CLI đơn giản là rất hữu ích mà bạn sẽ không nhận được nếu bạn thực hiện phương pháp chuyển tệp sql của mình vào GIT vì khi đó bạn phải chạy các tập lệnh đó theo cách thủ công và bạn cũng không có bộ thay đổi như: - ai đã thay đổi tác giả, v.v.


0

Là DevOps Person trong nhóm của tôi, tôi muốn có tất cả các tệp SQL của mình ở một nơi, tức là Trong SCM của tôi (Quản lý mã nguồn)

Cũng trong thời gian CI giai đoạn / CD, Nếu lược đồ DB được tạo cùng với nó, nó sẽ tiết kiệm rất nhiều thời gian và tài nguyên. Bạn sẽ không cần phải có người khác quản lý cơ sở dữ liệu của mình cho khách hàng đó.

ORM như Flyway, Liquibase, EF, v.v. giúp Đạt được điều này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.