Điều gì là tốt hơn cho nhóm làm việc trên DB? Có phải bản sao cơ sở dữ liệu cục bộ cho từng nhà phát triển hoặc cơ sở dữ liệu được chia sẻ không?Nhóm thực hành tốt nhất làm việc với cơ sở dữ liệu
Trả lời
Theo kinh nghiệm của tôi, một nhóm phải có (ít nhất) một cơ sở dữ liệu được chia sẻ cho tích hợp.
Trong quá trình phát triển, mỗi thành viên trong nhóm phải có cơ sở dữ liệu riêng biệt, nếu không, các thay đổi của giản đồ cơ sở dữ liệu có thể cản trở các thành viên khác trong nhóm. Những trường hợp này cũng có thể nằm trên một máy chủ tập trung.
Từ kinh nghiệm, cơ sở dữ liệu được chia sẻ tốt hơn. Mã của chúng tôi được sử dụng để phá vỡ tất cả thời gian vì ai đó đã thêm một cột trên cơ sở dữ liệu cục bộ của họ, sau đó tải mã nguồn mới của họ lên SVN. Việc triển khai của mọi người khác sau đó sẽ bị phá vỡ cho đến khi họ tìm ra những gì đã thay đổi trong cơ sở dữ liệu.
Tôi sẽ có cơ sở dữ liệu được chia sẻ để phát triển. Chúng tôi cũng có một hoặc hai cơ sở dữ liệu dev để thử nghiệm linh tinh.
Trong trường hợp khác nếu ai đó thay đổi loại cột trong cơ sở dữ liệu và không tải lên lược đồ ORM? – k0stya
Chúng tôi đã xử lý mã ứng dụng và mã DB (các procs được lưu trữ, thay đổi lược đồ) theo cách tương tự. Chúng tôi đã thường xuyên cập nhật DB bị lãng quên nhưng dev nhanh chóng biết rằng họ không muốn có trứng trên khuôn mặt của họ khi chúng tôi xác định mã vi phạm, điều này không quá khó với việc tích hợp và thử nghiệm liên tục. Chúng tôi đã có một quy tắc mà bạn cần phải viết kịch bản nâng cấp trước khi kiểm tra và viết các bài kiểm tra tự động chạy ngược lại DB. – aqwert
Tôi chỉ có thể nói về cách các đội bóng tôi đang ở hiện đang làm việc, mà phù hợp với nhu cầu của chúng tôi cũng đủ:
Chúng tôi có một kịch bản mô hình dữ liệu trung tâm mà cập nhật bất kỳ cơ sở dữ liệu tự động lên phiên bản giản đồ mới nhất. Các nhà phát triển kiểm tra các thay đổi đối với tập lệnh này cùng với các thay đổi đối với mã nguồn (cam kết đơn lẻ trên cùng một kho lưu trữ). Bản cập nhật hàng đêm cập nhật một bản sao cơ sở dữ liệu trung tâm, tiếp theo là một loạt các bài kiểm tra tự động trên cơ sở dữ liệu đó và nhóm QA của con người cũng sử dụng cùng cơ sở dữ liệu này vào ngày hôm sau cho tất cả các thử nghiệm của họ.
Chúng tôi không cho phép thay đổi giản đồ trên cá thể cơ sở dữ liệu trung tâm theo bất kỳ cách nào khác ngoài cách xây dựng tích hợp. Để phát triển kịch bản thay đổi lược đồ, các thay đổi được phát triển trên một cá thể cơ sở dữ liệu riêng biệt, hoặc trên máy chủ trung tâm, hoặc cục bộ (tùy thuộc vào sở thích cá nhân).
Tôi không nghĩ điều đó phụ thuộc chút nào. Mỗi môi trường nên có cá thể cơ sở dữ liệu riêng của nó. Cá nhân, tôi sẽ không bao giờ đề nghị mọi người trong nhóm làm việc trên cùng một bản sao của nguồn, và tôi xem mã cơ sở dữ liệu và cá thể giống như vậy.
Nếu bạn đang gặp vấn đề với những thay đổi cơ sở dữ liệu bị thiếu, đây là một triệu chứng của một vấn đề quy trình phát triển khác. Nó sẽ là analagous để quên thêm một tập tin mã để kiểm soát nguồn.
phát triểnJeff Atwood has a pretty good article on source controlling database code.
khác nhau được cho là làm việc về các vấn đề khác nhau - làm thế nào để bạn tránh giẫm lên ngón chân của người khác trong khi kiểm tra đơn vị?
Tôi hoàn toàn sẽ ủng hộ môi trường tích hợp/kiểm tra, được cập nhật qua Continuous Integration process. Môi trường này thường phục vụ như là một bài kiểm tra litmus cho thủ tục triển khai của bạn.
Tại Redgate, chúng tôi khuyên mỗi nhà phát triển nên có ví dụ riêng của họ, vì hộp cát đảm bảo rằng các nhà phát triển không theo dõi các ngón chân của nhau. Tuy nhiên, có những ưu và khuyết điểm với cả hai mô hình.
Trong kinh nghiệm của chúng tôi nói chuyện với các nhà phát triển cơ sở dữ liệu, khoảng một nửa phát triển cơ sở dữ liệu được thực hiện trên môi trường chia sẻ và một nửa trên môi trường dành cho mỗi nhà phát triển.
Có trường hợp cơ sở dữ liệu riêng biệt cho nhà phát triển giúp họ làm việc riêng biệt tuy nhiên nếu chúng tôi là một nhóm lớn và làm việc nhiều thứ vào thời điểm đó thì tốt hơn là bạn nên có một môi trường chung để mọi thay đổi cần phải giao cùng một lúc không phá vỡ lẫn nhau và phụ thuộc của họ cũng có thể được tìm ra một cách chính xác. Điều này cũng giúp xác định nơi bất kỳ ứng dụng nào có thể bị hỏng do thay đổi. Vì vậy, tốt hơn là nên có một môi trường chung cùng với một số bản sao enviornment enviornment enviornment phát triển chỉ trong trường hợp chúng tôi có thể muốn thử nghiệm một cái gì đó lớn và phức tạp đó là rất quan trọng và cần phải làm việc dù sao đi nữa.
Nhưng vấn đề duy nhất là giữ nhiều môi trường đồng bộ với nhau vì bất kỳ thay đổi còn thiếu nào có thể gây tử vong.
Có, có cơ sở dữ liệu riêng biệt * và * môi trường chia sẻ để kiểm tra 'tích hợp' rõ ràng là lý tưởng, và nếu bạn nghĩ về nó thì đây là những gì mà tích hợp liên tục cung cấp. Các nhà phát triển nên phát triển trên các hộp cát riêng lẻ, cam kết các thay đổi của họ đối với kiểm soát nguồn, điều này kích hoạt tích hợp liên tục, xây dựng và kiểm tra cơ sở dữ liệu bao gồm tất cả các thay đổi. –
Tôi biết mọi người ở đây đang nói về trải nghiệm quá khứ của họ nhưng đây không phải là một câu hỏi dễ dàng để trả lời phổ biến. Có những ưu và khuyết điểm đối với mỗi cách tiếp cận và cần được giải quyết dựa trên loại ứng dụng và nhóm mà bạn đang làm việc.
Nếu bạn không biết nên đi đường nào .. Tôi khuyên bạn nên sử dụng cơ sở dữ liệu phát triển được chia sẻ trước để xem bạn có gặp phải bất kỳ sự cố nào không. Nếu giải pháp này hoạt động, nó phải là phương pháp ưu tiên vì nó loại bỏ bước "tích hợp". Tuy nhiên, tùy thuộc vào loại nhu cầu của nhóm và môi trường, bạn có thể cần phải thích nghi.
- 1. Cơ sở dữ liệu Upserts - Thực hành tốt hay xấu?
- 2. Thực hành tốt cơ sở dữ liệu dàn dựng
- 3. Thiết kế cơ sở dữ liệu Thực tiễn tốt nhất
- 4. Cơ sở dữ liệu mnesia phù hợp với erlang. Thực hành tốt nhất bất cứ ai?
- 5. Cách thực hành tốt nhất để khởi tạo diễn viên từ cơ sở dữ liệu
- 6. Thực hành tốt nhất cho cấu trúc cơ sở dữ liệu bình chọn bỏ phiếu
- 7. Thực tiễn tốt nhất về cơ sở dữ liệu
- 8. Cơ sở dữ liệu lớn sao lưu thực hành tốt nhất
- 9. Thực hành tốt nhất về triển khai cơ sở dữ liệu
- 10. Thực tiễn tốt nhất: quy ước đặt tên cơ sở dữ liệu tốt nhất cho JPA?
- 11. Sử dụng cơ sở dữ liệu quan hệ cho dữ liệu Schemaless - Thực tiễn tốt nhất
- 12. Cơ sở dữ liệu PHP/SQL truy vấn thực hành tốt và bảo mật
- 13. Cơ sở dữ liệu "tốt nhất" để nhúng là gì?
- 14. Thực hành tốt nhất để lưu trữ địa chỉ nhất quán và toàn diện trong cơ sở dữ liệu
- 15. Loại trường cơ sở dữ liệu tốt nhất cho URL
- 16. Ứng dụng web PHP: câu hỏi thực hành tốt nhất về thiết kế cơ sở dữ liệu mysql
- 17. Thực hành tốt nhất để tạo (theo yêu cầu) Cơ sở dữ liệu SQL Server 2008 Express trong C#?
- 18. Thực hành tốt nhất cho cơ sở dữ liệu trang web viết trong khi sao lưu lạnh?
- 19. mongoose thực hành tốt nhất với lớp dữ liệu trong ứng dụng nút
- 20. neo4j - đồ thị cơ sở dữ liệu cùng với một cơ sở dữ liệu quan hệ?
- 21. Thực tiễn tốt nhất để xử lý lỗi từ cơ sở dữ liệu trong CodeIgniter
- 22. Thực hành tốt nhất cho việc so sánh mật khẩu nên được thực hiện
- 23. Cách tốt nhất để lập chỉ mục dữ liệu bảng cơ sở dữ liệu trong Solr?
- 24. Thực tiễn tốt nhất để tải tệp lên cơ sở dữ liệu
- 25. Cách tốt nhất để chuyển đổi cơ sở dữ liệu mysql thành cơ sở dữ liệu sqlite là gì?
- 26. Thực tiễn tốt nhất để lưu trữ mật khẩu cơ sở dữ liệu
- 27. Cách tốt nhất để xử lý cơ sở dữ liệu trong các khối với Django QuerySet?
- 28. Cơ sở dữ liệu tốt với thư viện C?
- 29. Cơ sở dữ liệu hợp nhất Rails
- 30. Cơ sở dữ liệu tốt nhất để lưu trữ số liệu thống kê từ Erlang
Phụ thuộc vào cách lược đồ cơ sở dữ liệu được thiết kế (nếu được thiết kế), dữ liệu thử nghiệm phức tạp như thế nào, lược đồ cơ sở dữ liệu và nội dung ổn định như thế nào. Nó có thể thay đổi khi tiến trình phát triển. – pascal
BD là gì? Đó có phải là lỗi đánh máy của DB hay một số sản phẩm mà tôi chưa từng nghe đến? –
Tôi tìm thấy bài viết này: http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx Nhưng tôi đồng ý với "pascal" Nó phụ thuộc vào cơ sở dữ liệu kích thước, giản đồ và các đặc điểm khác. – k0stya