Đã có một số cuộc thảo luận trên wiki cộng đồng SO về việc liệu các đối tượng cơ sở dữ liệu có nên được kiểm soát phiên bản hay không. Tuy nhiên, tôi chưa thấy thảo luận nhiều về các phương pháp hay nhất để tạo quá trình tự động hóa xây dựng cho các đối tượng cơ sở dữ liệu.
Đây là một điểm thảo luận gây tranh cãi đối với nhóm của tôi - đặc biệt vì các nhà phát triển và DBA thường có các mục tiêu, cách tiếp cận và mối quan tâm khác nhau khi đánh giá lợi ích và rủi ro của cách tiếp cận tự động hóa để triển khai cơ sở dữ liệu.
Tôi muốn nghe một số ý kiến từ cộng đồng SO về những phương pháp thực hành đã hiệu quả trong thế giới thực.
Tôi nhận ra rằng việc thực hành nào thực sự tốt nhất là hơi chủ quan, nhưng tôi nghĩ rằng một cuộc đối thoại tốt về những công việc có thể hữu ích cho nhiều người.
Dưới đây là một số câu hỏi mở đầu của tôi về các lĩnh vực quan tâm trong chủ đề này. Đây không phải là một danh sách chắc chắn - mà là một điểm khởi đầu để mọi người giúp hiểu những gì tôi đang tìm kiếm.
- Có nên xây dựng cả môi trường thử nghiệm và sản xuất từ kiểm soát nguồn không?
- Cả hai nên được xây dựng bằng cách sử dụng tự động hóa - hay nên sản xuất bằng cách xây dựng bằng cách sao chép các đối tượng từ một môi trường thử nghiệm ổn định, đã hoàn thiện?
- Làm thế nào để bạn đối phó với sự khác biệt tiềm ẩn giữa môi trường thử nghiệm và sản xuất trong các kịch bản triển khai?
- Làm thế nào để bạn kiểm tra xem các tập lệnh triển khai sẽ hoạt động hiệu quả chống lại quá trình sản xuất như khi chúng làm trong thử nghiệm?
- Những loại đối tượng nào nên được kiểm soát phiên bản?
- Chỉ cần mã (thủ tục, gói, trình kích hoạt, java, v.v.)?
- Các chỉ số?
- Những hạn chế?
- Định nghĩa bảng?
- Tập lệnh thay đổi bảng? (ví dụ: tập lệnh ALTER)
- Mọi điều?
- Những loại đối tượng nào không nên được kiểm soát phiên bản?
- Trình tự?
- Trợ cấp?
- Tài khoản người dùng?
- Các đối tượng cơ sở dữ liệu nên được tổ chức như thế nào trong kho SCM của bạn?
- Làm thế nào để bạn đối phó với những thứ một lần như tập lệnh chuyển đổi hoặc tập lệnh ALTER?
- Bạn xử lý như thế nào khi gỡ bỏ các đối tượng khỏi cơ sở dữ liệu?
- Ai sẽ chịu trách nhiệm thúc đẩy các đối tượng từ cấp độ phát triển đến cấp độ thử nghiệm?
- Làm thế nào để bạn điều phối các thay đổi từ nhiều nhà phát triển?
- Làm thế nào để bạn đối phó với việc phân nhánh cho các đối tượng cơ sở dữ liệu được sử dụng bởi nhiều hệ thống?
- Những ngoại lệ nào, nếu có, có thể hợp lý cho quá trình này?
- Vấn đề an ninh?
- Dữ liệu có mối quan tâm về xác định danh tính?
- Tập lệnh không thể hoàn toàn tự động?
- Làm thế nào bạn có thể làm cho quy trình trở nên linh hoạt và khả thi?
- Lỗi của nhà phát triển?
- Đối với các vấn đề môi trường không mong muốn?
- Để khắc phục thảm họa?
- Làm thế nào để bạn thuyết phục những người ra quyết định rằng lợi ích của DB-SCM thực sự phù hợp với chi phí?
- Bằng chứng giai thoại?
- Nghiên cứu ngành?
- Khuyến nghị thực tiễn tốt nhất trong ngành?
- Kháng cáo lên các cơ quan chức năng được công nhận?
- Phân tích lợi ích chi phí?
- Ai nên "sở hữu" các đối tượng cơ sở dữ liệu trong mô hình này?
- Các nhà phát triển?
- DBA?
- Nhà phân tích dữ liệu?
- Nhiều hơn một?