Phương pháp kiểm soát phiên bản nào giúp nhóm người theo dõi thay đổi lược đồ cơ sở dữ liệu?
Phương pháp kiểm soát phiên bản nào giúp nhóm người theo dõi thay đổi lược đồ cơ sở dữ liệu?
Câu trả lời:
chỉ vài phút trước tôi đã kiểm tra điều này: Một bảng nên tồn tại trong tất cả các dự án có cơ sở dữ liệu , có vẻ đủ đơn giản để đưa vào thực tế, hãy kiểm tra xem:
Nó được gọi là lược đồ_version (hoặc di chuyển, hoặc bất cứ điều gì phù hợp với bạn) và mục đích của nó là để theo dõi các thay đổi cấu trúc hoặc dữ liệu cho cơ sở dữ liệu. Một cấu trúc có thể (ví dụ trong MySQL) là:
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
chèn vào các giá trị lược đồ_version (
key
,extra
) ('001', 'phiên bản lược đồ');Cho dù bạn thêm bảng này từ việc năn nỉ dự án hay ngay sau khi bạn triển khai phiên bản đầu tiên cho máy chủ dàn dựng hay sản xuất là tùy thuộc vào bạn.
Bất cứ khi nào bạn cần thực thi một tập lệnh SQL để thay đổi cấu trúc cơ sở dữ liệu hoặc thực hiện di chuyển dữ liệu, bạn cũng nên thêm một hàng trong bảng đó. Và thực hiện điều đó thông qua một câu lệnh chèn ở đầu hoặc cuối của tập lệnh đó (được cam kết với kho lưu trữ mã của dự án).
Giáo dục
Tôi nghĩ phương pháp tốt nhất là tạo cơ sở dữ liệu như một phần của quá trình xây dựng của bạn . Giữ tất cả các tập lệnh trong kiểm soát nguồn với phần còn lại của mã và mọi người chịu trách nhiệm cho môi trường của riêng họ.
Không thành công, RedGate có một công cụ để tích hợp kiểm soát nguồn vào SSMS và SQL So sánh rất hữu ích để so sánh / đồng bộ hóa các lược đồ MS SQL Server. Visual Studio Database Edition cũng có một công cụ so sánh lược đồ tích hợp .
Một câu hỏi SO khác dẫn tôi đến Migrator Dot Net mà tôi sẽ bắt đầu điều tra trong thời gian rảnh rỗi. Nó có vẻ là một phương pháp tốt, nhưng nó có thể là một khoản đầu tư nhiều thời gian / chi phí hơn là bạn sẵn sàng thực hiện.
eiefai đã đề cập Một bảng nên tồn tại trong tất cả các dự án có cơ sở dữ liệu . Đây là một bài đăng blog tuyệt vời, nhưng IMO nó chỉ là một phần của giải pháp làm việc để kiểm soát sửa đổi cơ sở dữ liệu. Tôi nghĩ rằng bất kỳ nỗ lực nào để "trả lời" câu hỏi này trong thế giới thực cần phải xem xét một số thông tin khác về VCS và cơ sở dữ liệu:
Có một vài góc độ khác nhau để tiếp cận câu hỏi này, tôi nghĩ vậy. Góc "công cụ đầu tiên", tôi tin rằng, sẽ thay đổi dựa trên nền tảng và sở thích cá nhân. Tình huống cụ thể: Tôi đang sử dụng Dự án cơ sở dữ liệu trong MS Visual Studio, nhưng tôi không chắc chắn rằng đây là một giải pháp tuyệt vời cho MySQL. Tôi cũng biết những người được bán khá nhiều trên các công cụ yêu thích của họ từ Redgate, Erwin, Embarcadero, v.v.
Ngoài ra còn có một góc "đầu tiên" cho câu hỏi này, hy vọng sẽ được xem xét lại trên trang web này trong các câu hỏi tiếp theo. Các tổ hợp phím trong quy trình này đang đưa lược đồ của bạn dưới sự kiểm soát nguồn và quản lý các thay đổi để bạn có thể áp dụng các thay đổi lược đồ từ phiên bản "x" sang phiên bản "y" theo yêu cầu.
Một câu trả lời dứt khoát cho chủ đề này cuối cùng sẽ trông giống như một cuốn sách, vì vậy có lẽ nên bắt đầu bằng cách tham khảo một: Redgate gần đây đã xuất bản một cuốn sách điện tử miễn phí có tên " Hướng dẫn phát triển dựa trên nhóm máy chủ SQL ", và trong khi có Có rất nhiều điều để tranh luận, đó là một nơi khá tốt để bắt đầu tranh luận, IMO. Trái với tên, phần lớn tài liệu trong cuốn sách này đủ chung để áp dụng cho bất kỳ DB nào (không chỉ SQL Server) và bất kỳ bộ công cụ nào (không chỉ Redgate). Nếu bạn chưa thấy điều này, thì ít nhất nó cũng đáng để đọc lướt qua.
Cuối cùng, có lẽ đáng để liên kết trong "câu trả lời kế thừa" từ stackoverflow .
SchemaCrawler là công cụ của tôi để tạo một tệp văn bản với tất cả các đối tượng lược đồ cơ sở dữ liệu. Tôi đã thiết kế đầu ra văn bản này để có thể đọc được cả con người, cũng như có thể chống lại đầu ra tương tự từ một máy chủ khác.
Trong thực tế, những gì tôi đã tìm thấy là việc xuất ra một tệp văn bản của lược đồ cơ sở dữ liệu là hữu ích, khi được thực hiện như một phần của bản dựng. Bằng cách này, bạn có thể kiểm tra tệp văn bản vào hệ thống kiểm soát mã nguồn của mình và có lịch sử phiên bản về cách lược đồ của bạn đã phát triển theo thời gian. SchemaCrawler được thiết kế để tự động hóa điều này, từ dòng lệnh.