it-swarm-vi.com

Là nó xấu để phát triển chống lại dữ liệu sản xuất?

Tôi luôn nghe nói rằng việc phát triển dựa trên dữ liệu sản xuất là điều không tốt và hiện đang trong quá trình chuyển sang mô hình Dev> Giai đoạn> Sản xuất , chủ yếu vì tôi có một nhân viên mới với các kỹ năng tối thiểu và Tôi không muốn anh ta làm việc trực tiếp với dữ liệu sản xuất.

Nhưng trong một thời gian dài, tôi đã làm việc trực tiếp với dữ liệu sản xuất với những cơn đau đầu tối thiểu, ngoại trừ có thể có một vài lỗi xuất hiện ở đây hoặc ở đó, những vấn đề như chính tả, văn bản thay thế xấu, liên kết chỉ đến vị trí sai. Điều này dường như là do thiếu đánh giá ngang hàng về phía tôi chứ không phải vì làm việc với dữ liệu trực tiếp.

Vậy tại sao phát triển trên trang web trực tiếp thực hành xấu như vậy?

10
plntxt

Nếu trong quá trình phát triển, bạn đang chạy các lệnh SQL bao gồm INSERT hoặc UPDATE trên các bảng cơ sở dữ liệu hiện tại, thì bạn đang gặp rủi ro trong phạm vi các bảng cơ sở dữ liệu đó là nhiệm vụ quan trọng.

Một số nơi đồng bộ hóa dữ liệu sản xuất vào cơ sở dữ liệu phát triển tại một số khoảng thời gian, giả sử, mỗi tuần một lần hoặc theo yêu cầu của nhà phát triển để bạn có dữ liệu mới để phát triển.

Nhưng nếu dữ liệu sản xuất của bạn không gặp rủi ro từ những gì bạn đang làm, ví dụ, nếu bạn chỉ đơn giản là phát triển một cái nhìn về một số dữ liệu, thường thì đó không phải là vấn đề lớn. Bây giờ, nếu bạn đang chạy các báo cáo thực hiện quét bảng, thì bạn có khả năng khóa bảng, sau đó người dùng hiện tại của bạn sẽ bị ảnh hưởng.

Tôi sẽ trì hoãn Quản trị viên Cơ sở dữ liệu của mình trong các trường hợp như thế này, nếu không có DBA "chính thức", tôi sẽ cảnh giác. Nó đủ đơn giản để tạo ra một cơ sở dữ liệu phát triển, ngay cả đối với bản thân tôi. Trong một đội, nó rất quan trọng. Không thành công, nếu bạn khăng khăng chỉ thuê một cơ sở dữ liệu, bạn có thể đặt tiền tố cho các bảng cơ sở dữ liệu phát triển của mình bằng DEV_ và cảm thấy tốt hơn một chút. Đúng, điều đó đòi hỏi một số thay đổi mã, nhưng trong quá trình phát triển thêm một số biến trong quá trình phát triển $debug = true, v.v., thường đáng để nỗ lực.

Rất nhiều cách để tiếp cận điều này. Nó rất phụ thuộc vào tình huống của bạn.

17
artlung

Bạn KHÔNG muốn phát triển dựa trên dữ liệu sản xuất trên máy chủ sản xuất của mình. Có một vài lý do rất lớn.

  1. Phát triển làm chậm hộp sản xuất của bạn và tạo lỗ hổng. Điều gì xảy ra nếu bạn để máy tính của bạn mở khóa và bỏ đi?
  2. Nếu bạn mắc lỗi mọi người ghé thăm trang web của bạn có thể thấy nó.
  3. Nếu bạn thực hiện bất kỳ loại cập nhật dữ liệu nào bên trong Giao dịch trong cơ sở dữ liệu của mình và bạn không cam kết ngay lập tức hoặc giao dịch mất một lúc để hoàn tất, bạn sẽ khóa trên tất cả các bảng có liên quan và bạn có thể khiến thời gian chờ xảy ra .
  4. Một số hệ thống cơ sở dữ liệu, cụ thể là SQL Server sẽ thực hiện khóa bảng tại các câu lệnh CHỌN! Điều đó có nghĩa là bạn có thể vô tình cung cấp cho mọi người thời gian chờ hoặc trang lỗi trên trang web của bạn.

Tôi sẽ không bao giờ làm công việc phát triển trên một hộp sống nếu có thể. Đặt cược tốt nhất của bạn là tạo một bản sao lưu của Cơ sở dữ liệu và các trang và làm việc với bản sao và sau đó Đẩy các bản cập nhật của bạn. Một công cụ đã giúp tôi rất nhiều là SyncToy của Msft.

11
Ben Hoffman

Vâng, bạn thực sự có thể làm hỏng nó dữ liệu. Hãy tưởng tượng rời khỏi một mệnh đề where. Ngay cả khi bạn có bản sao lưu hàng giờ, đó sẽ là một nỗi đau để khắc phục.

7
Echo

Nếu bạn có sẵn dữ liệu sản xuất, việc sử dụng chúng để kiểm tra là hợp lý, nhưng sử dụng cơ sở dữ liệu kiểm tra riêng với bản sao của dữ liệu đó. Nếu không, nhiều thứ sẽ hoạt động cho một vài hồ sơ thử nghiệm "blabla" của bạn nhưng không phải cho một kịch bản thực sự.

Và để phát triển dữ liệu sản xuất trực tiếp - hãy nhớ luật của Murphy "Bất cứ điều gì có thể sai sẽ trở thành sai.", Và thật dễ dàng để phạm một lỗi nhỏ với hậu quả xấu lớn.

3
devmake

Nếu bạn không lái xe mà không thắt dây an toàn, đừng phát triển dữ liệu sản xuất. Chỉ là một vấn đề an toàn.

3
MrChrister