Một số đồng nghiệp và tôi đã tham gia vào một cuộc tranh luận về cách tốt nhất để lưu trữ dữ liệu lịch sử. Hiện tại, đối với một số hệ thống, tôi sử dụng một bảng riêng để lưu trữ dữ liệu lịch sử và tôi giữ một bảng gốc cho bản ghi hiện tại, đang hoạt động. Vì vậy, giả sử tôi có bảng FOO. Theo hệ thống của tôi, tất cả các bản ghi hoạt động sẽ đi vào FOO, và tất cả các bản ghi lịch sử sẽ đi vào FOO_Hist. Nhiều lĩnh vực khác nhau trong FOO có thể được cập nhật bởi người dùng, vì vậy tôi muốn giữ một tài khoản chính xác về mọi thứ được cập nhật. FOO_Hist giữ các trường giống hệt như FOO ngoại trừ một HIST_ID tăng tự động. Mỗi lần FOO được cập nhật, tôi thực hiện một câu lệnh chèn vào FOO_Hist tương tự như: insert into FOO_HIST select * from FOO where id = @id
.Cách lưu trữ dữ liệu lịch sử
Đồng nghiệp của tôi nói rằng đây là thiết kế tồi vì tôi không nên sao chép chính xác một bảng vì lý do lịch sử và chỉ nên chèn một bản ghi khác vào bảng đang hoạt động với cờ cho biết đó là mục đích lịch sử.
Có tiêu chuẩn để xử lý lưu trữ dữ liệu lịch sử không? Dường như với tôi rằng tôi không muốn làm lộn xộn hồ sơ tích cực của mình với tất cả hồ sơ lịch sử của tôi trong cùng một bảng cho rằng nó có thể là hơn một triệu hồ sơ (tôi đang suy nghĩ lâu dài).
Bạn hoặc công ty của bạn xử lý việc này như thế nào?
Tôi đang sử dụng MS SQL Server 2008, nhưng tôi muốn giữ câu trả lời chung chung và tùy ý của bất kỳ DBMS nào.
Tôi nghĩ rằng tôi thấy những gì bạn đang nói. Vì vậy, những gì tôi đã làm với bảng FOO_Hist của tôi đã thực sự tạo ra một bảng kiểm toán. Thay vì sử dụng trình kích hoạt để chèn vào bảng kiểm tra khi cập nhật, tôi chỉ chạy một câu lệnh trong chương trình. Đúng không? – Aaron
Khá nhiều. Tuy nhiên, tốt hơn nên thực hiện việc ghi nhật ký kiểm tra này bằng trình kích hoạt; trình kích hoạt đảm bảo rằng mọi thay đổi (bao gồm sửa lỗi dữ liệu thủ công) đều được ghi lại trong nhật ký kiểm tra. Nếu bạn có nhiều hơn 10-20 bảng để kiểm tra thì có lẽ nhanh hơn tất cả để xây dựng công cụ trình tạo trình kích hoạt. Nếu lưu lượng đĩa cho các nhật ký kiểm tra là một vấn đề bạn có thể đặt các bảng nhật ký kiểm tra trên một bộ đĩa riêng biệt. – ConcernedOfTunbridgeWells
Có, tôi 100% đồng ý với điều đó. Cảm ơn bạn. – Aaron