6

Nhóm của tôi ngày càng trở nên quan trọng hơn trong CMS trong vài năm qua. Chúng tôi cũng ngày càng được tích hợp liên tục. Hòa hợp hai đã chứng tỏ là khó khăn. Để làm cho nó thậm chí tệ hơn, chúng tôi làm các trang LAMP và .NET để các kịch bản của chúng tôi làm việc lý tưởng cho cả hai.Triển khai cơ sở dữ liệu tự động với nội dung do người dùng tạo (a la CMS)

Chúng tôi có bốn môi trường cho từng trang web địa phương, tích hợp, dàn dựng và sản xuất. Việc nhập nội dung và tải tệp lên thường xuyên xảy ra trên trang web sản xuất. Phát triển rõ ràng là bắt đầu tại địa phương và hoạt động theo cách của mình.

Một số phương pháp hoặc kỹ thuật mà tôi có thể triển khai trên máy chủ xây dựng của mình là tự động đẩy cập nhật dữ liệu và lược đồ từ môi trường phát triển vào sản xuất mà không ghi đè nội dung do người dùng tạo? Ngược lại, làm thế nào (và khi nào) tôi có thể tự động rút dữ liệu do người dùng tạo ra vào các môi trường phát triển?

Trả lời

1

Bạn sẽ có 3 loại thứ trong cơ sở dữ liệu mà bạn cần phải lo lắng.

1) Giản đồ, có thể được xác định trong DDL. 2) Dữ liệu tra cứu tĩnh hoặc có thể được xác định trong DML. 3) Dữ liệu động (hoặc người dùng) cũng có thể được định nghĩa trong DML.

Các thay đổi thông thường đối với (1) và (2) chỉ cần đi tới sản xuất với mã mà chúng dựa vào nhau. (3) không bao giờ nên đi lên, nhưng có thể được sao chép vào môi trường phát triển nếu chúng được đồng bộ với môi trường sản xuất tại thời điểm đó.

Tất nhiên điều đó phức tạp hơn nhiều. Để có được (1) có thể yêu cầu chuyển đổi lược đồ exsiting/DDL thành các câu lệnh thay đổi cụ thể và cũng có thể yêu cầu thao tác dữ liệu nếu các kiểu dữ liệu hoặc các vị trí đang thay đổi. Để có được (2) yêu cầu đồng bộ hóa với việc xây dựng mã có thể trở nên khó khăn trong các môi trường phức tạp.

Có nhiều công cụ ở đó và nếu bạn yêu cầu tự động thì bạn có thể cần lời khuyên từ người quen thuộc với họ.

Tôi sử dụng một sơ đồ rất đơn giản trong đó tất cả thay đổi lược đồ được phản ánh trong tập lệnh xây dựng SQL và cũng được thêm vào thay đổi tập lệnh SQL bao gồm tất cả SQL cần thiết để thực hiện bất kỳ biến đổi bắt buộc nào. Điều này làm việc tốt cho tôi nhưng kịch bản của tôi rất đơn giản (1 người, 1 máy chủ) và do đó không điển hình.

Tuy nhiên, chìa khóa để thành công bất kỳ là xác định công việc cần thiết cho những thay đổi tại thời điểm thay đổi được thực hiện.Phương pháp ngây thơ của việc thay đổi DB phát triển và sau đó thực hiện khắc phục tại thời điểm triển khai là một thảm họa.

0

Đối với A) điều tốt nhất là sử dụng hệ thống ưu tiên. Nội dung của bạn là "mặc định" và nội dung người dùng "ghi đè" nội dung đó. Và nội dung này ở hai nơi khác nhau. Vì vậy, bạn cập nhật nội dung của mình mà không có cơ hội phải đối phó với bất kỳ loại quá trình hợp nhất nào. Dữ liệu của bạn có thể nằm trong một thư mục khác hoặc được gắn cờ khác nhau trong DB, bất cứ điều gì. Nhược điểm của điều này là bạn không thể chỉ sử dụng cơ bản ra khỏi chức năng máy chủ hộp để máy chủ dữ liệu lên, trừ khi bạn thực hiện ánh xạ thực tế khi các liên kết được tạo ra.

tức là bạn có thể chặn /site/images/icon.png và phân phát hoặc /site/images/default/icon.png hoặc /site/images/client/icon.png hoặc khi bạn viết các trang ra khỏi bạn có thể thực hiện kiểm tra ở đó và gửi các URL thích hợp để máy chủ có thể phục vụ chúng trực tiếp.

Thứ hai, khi bạn có thể sử dụng dữ liệu khách hàng, đó là vấn đề IP hợp pháp mà bạn cần nói chuyện với khách hàng về việc liệu họ có sẵn sàng và b) thậm chí có khả năng chia sẻ hay không nội dung của họ với bạn. Sau đó, công nghệ rất đơn giản.

+0

Do tính chất của doanh nghiệp và hợp đồng với khách hàng, hầu như không có bất kỳ vấn đề pháp lý nào khi kéo nội dung xuống từ các máy chủ sản xuất. Tôi không quen với công nghệ. Bạn có phiền không? Tôi được sử dụng để sao lưu DB và khôi phục lại nó, nhưng rõ ràng là có vấn đề nếu bạn làm điều đó và có sự phát triển đang diễn ra đang diễn ra. – Jeff

Các vấn đề liên quan