Tôi đã làm việc chủ yếu trong phát triển ứng dụng kinh doanh và quản lý cấu hình. Câu hỏi của bạn là đại diện cho những thách thức trong một môi trường như vậy; chẳng hạn như khi bạn nâng cấp Microsoft Word, bạn không cần phải thay đổi tất cả các tài liệu ngay lập tức từ doc sang docx. Và các tài liệu thậm chí có cấu trúc đơn giản hơn một cơ sở dữ liệu quan hệ đầy đủ.
Không phải như vậy đối với các ứng dụng kinh doanh; người dùng bỏ qua các bản phát hành, thực hiện các thay đổi trái phép đối với mô hình dữ liệu và hệ thống cần tiếp tục chạy và cung cấp các con số chính xác ...
Chúng tôi sử dụng cho các ứng dụng của riêng mình (lớn nhất là 600 bảng) một công cụ CASE tự phát triển bao gồm phân nhánh / hợp nhất, nhưng phương pháp này cũng có thể được thực hiện theo cách thủ công.
Datamodel tạo phiên bản
Mô hình dữ liệu có thể được viết ra theo cách có cấu trúc. Ví dụ:dưới dạng nội dung bảng (CSV sẽ được tải trong bảng với dữ liệu meta) hoặc dưới dạng mã phát hiện phiên bản đang sử dụng và thêm cột và bảng khi bị thiếu, bao gồm cả các di chuyển không đáng kể.
Điều này thậm chí còn cho phép nhiều người dùng cùng lúc thay đổi mô hình dữ liệu.
Khi bạn sử dụng tính năng tự động phát hiện (ví dụ:chúng tôi sử dụng lệnh gọi có tên "verify_column" thay vì "add_column"), điều này thậm chí còn cho phép di chuyển suôn sẻ độc lập với số phát hành mà khách hàng đang bắt đầu nâng cấp. Quy trình như vậy sẽ phân tích bảng được thay đổi và đưa ra DDL chính xác, chẳng hạn như alter table t1 add col1 number not null
khi thiếu một cột hoặc alter table t1 modify col1 not null
khi cột đã có nhưng không thể sử dụng được.
Đối với Oracle và SQL Server, tôi có thể cung cấp cho bạn một vài thủ tục mẫu. Trong MySQL, tôi sẽ viết mã này bằng ngôn ngữ phía máy khách, tốt hơn là độc lập với hệ điều hành để cho phép cài đặt chạy trên Windows và Linux. Có thể sử dụng Apache Ant khi bạn có kinh nghiệm với điều đó.
Dữ liệu phiên bản
Chúng tôi chia các bảng thành bốn loại:
- R:dữ liệu tham chiếu; dữ liệu mà trang ứng dụng phải cung cấp trước khi anh ta thực sự sử dụng hệ thống. Ví dụ:mã tài khoản sổ cái chung. Dữ liệu tham chiếu hiếm khi thay đổi sau khi xuất bản và không liên tục tăng kích thước. Nội dung phản ánh mô hình kinh doanh của trang web nơi ứng dụng được sử dụng.
- T:dữ liệu giao dịch; dữ liệu trang web đăng ký, thay đổi và loại bỏ trong quá trình sử dụng ứng dụng. Ví dụ, các mục sổ cái chung. Dữ liệu giao dịch bắt đầu từ 0 và tăng liên tục. Khi doanh thu của công ty tăng gấp đôi, dữ liệu giao dịch cũng tăng gấp đôi.
- S:dữ liệu được gieo; dữ liệu KHÔNG được duy trì bởi người dùng tại trang web mà được cung cấp và duy trì bởi bên phát triển. Về cơ bản đây là mã được chuyển thành dữ liệu. Ví dụ, 'F' là viết tắt của 'Female'. Các lỗi trong dữ liệu được chọn lọc có thể dẫn đến lỗi hệ thống.
- O:phần còn lại (lý tưởng là không cần thiết, vì chúng thuộc về kỹ thuật, nhưng một số hệ thống yêu cầu bảng tạm thời A hoặc bảng đầu B).
Nội dung của các bảng thuộc danh mục 'S' (dữ liệu được gieo hạt) được đặt dưới sự kiểm soát của phiên bản. Chúng tôi thường đăng ký chúng dưới dạng siêu dữ liệu trong công cụ tình huống của chúng tôi, sau đó được đặt tên là 'bộ dữ liệu', nhưng bạn cũng có thể sử dụng ví dụ như Microsoft Excel hoặc thậm chí mã.
Ví dụ, trong Excel, bạn sẽ có một danh sách các hàng dữ liệu được gieo hạt. Trong cột A, bạn có thể nhập một hàm Excel như =B..&"|"&C..& "|" & ...
kết hợp mọi thứ và làm cho nó phù hợp để tải bằng công cụ trình tải.
Ví dụ trong mã, bạn có thể có một cuộc gọi như:
verifySeed('TABLE_A', 'CODE', 'VALUE')
Excel hơi khó để kiểm soát phiên bản cho phép nhiều người dùng thay đổi nội dung cùng một lúc. Cách tiếp cận với mã rất đơn giản.
Hãy nhớ cũng thêm các tính năng để loại bỏ dữ liệu hạt giống bị che khuất. Ví dụ:bằng cách liệt kê một cách rõ ràng dữ liệu được tạo hạt giống đã được xóa hoặc bằng cách tự động xóa tất cả dữ liệu được hạt giống có trong các bảng nhưng không được chạm vào trong lần cài đặt cuối cùng.