2009-01-15 21 views
11

Tôi đang cố gắng xác định cách lưu trữ dữ liệu giao dịch lịch sử.Cách xử lý tốt nhất việc lưu trữ dữ liệu lịch sử?

Tôi có nên lưu trữ nó trong một bảng duy nhất mà hồ sơ chỉ được lắp lại bằng dấu thời gian mới mỗi lần không?

Tôi có nên chia nhỏ dữ liệu lịch sử thành một bảng 'lịch sử' riêng biệt và chỉ giữ dữ liệu hiện tại trong bảng 'đang hoạt động' hay không.

Nếu có, làm cách nào để tôi làm điều đó tốt nhất? Với trình kích hoạt tự động sao chép dữ liệu vào bảng lịch sử? Hoặc với logic trong ứng dụng của tôi?

Cập nhật mỗi comment Welbog của:

Sẽ có một lượng lớn dữ liệu lịch sử (hàng trăm ngàn hàng - cuối cùng có khả năng triệu)

Chủ yếu tìm kiếm và hoạt động báo cáo sẽ được chạy trên các dữ liệu lịch sử .

Hiệu suất là mối quan tâm. Các tìm kiếm không cần phải chạy cả đêm để tạo ra kết quả.

+0

Điều này thực sự phụ thuộc vào lượng dữ liệu bạn đang nói đến. Loại giao dịch nào? Những hoạt động nào sẽ được chạy trên dữ liệu lịch sử phổ biến nhất? Hiệu suất quan trọng như thế nào? – Welbog

Trả lời

8

Nếu yêu cầu chỉ dành cho báo cáo, hãy cân nhắc xây dựng kho dữ liệu riêng biệt. Điều này cho phép bạn sử dụng các cấu trúc dữ liệu như các thứ nguyên thay đổi từ từ tốt hơn nhiều cho báo cáo lịch sử nhưng không hoạt động tốt trong hệ thống giao dịch. Sự kết hợp kết quả cũng di chuyển báo cáo lịch sử ra khỏi cơ sở dữ liệu sản xuất của bạn mà sẽ là một chiến thắng hiệu suất và bảo trì.

Nếu bạn cần lịch sử này có sẵn trong ứng dụng thì bạn nên triển khai một số tính năng xóa phiên bản hoặc xóa logic hoặc làm cho mọi thứ hoàn toàn tương phản và nghỉ ngơi (tức là các giao dịch không bao giờ bị xóa, chỉ bị đảo ngược và khôi phục). Hãy suy nghĩ rất cẩn thận về việc liệu bạn có thực sự cần điều này vì nó sẽ thêm rất nhiều phức tạp. Làm cho một ứng dụng giao dịch có thể xây dựng lại trạng thái lịch sử một cách chính xác là khó hơn đáng kể so với giao diện. Phần mềm tài chính (ví dụ: sytems bảo hiểm bảo hiểm) không làm được điều này nhiều hơn bạn nghĩ.

Nếu bạn cần lịch sử chỉ để ghi nhật ký kiểm tra, hãy tạo bảng bóng và trình kích hoạt ghi nhật ký kiểm tra. Điều này đơn giản hơn và mạnh mẽ hơn việc cố gắng thực hiện một cách chính xác và toàn diện việc ghi nhật ký kiểm tra trong ứng dụng. Trình kích hoạt cũng sẽ nhận các thay đổi đối với cơ sở dữ liệu từ các nguồn bên ngoài ứng dụng.

2

Câu hỏi này đi dọc theo dòng Logic nghiệp vụ. Biết yêu cầu kinh doanh của bạn trước rồi bắt đầu từ đó. Kho dữ liệu là giải pháp tốt cho loại tình huống này. ETL sẽ cung cấp cho bạn rất nhiều tùy chọn để xử lý các luồng dữ liệu. Khái niệm cơ bản về 'Lịch sử' của bạn so với 'Hoạt động' là khá chính xác. Dữ liệu lịch sử của bạn sẽ hiệu quả và linh hoạt hơn nếu được lưu trữ trong kho dữ liệu với tất cả các thứ nguyên và bảng thực tế của chúng.

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