2009-09-17 28 views
6

Giải pháp doanh nghiệp hiện tại của chúng tôi là một ứng dụng ASP.NET MVC do Entity Framework điều khiển. Có một vài liên kết về cách móc vào các sự kiện thay đổi để kiểm tra. Tôi không thực sự quan tâm đến điều này.Kiểm tra dữ liệu doanh nghiệp

Tôi quan tâm đến kiến ​​trúc kiểm toán cấp doanh nghiệp. Những người bạn với những vết thương chiến đấu cấp độ doanh nghiệp, những giải pháp kiểm toán của bạn là gì? Bạn có sắp xếp các đối tượng trong cơ sở dữ liệu trong một khung công tác hay không. Bạn có đang thiết lập trình kích hoạt cơ sở dữ liệu để kiểm tra bảng không? Bạn có sử dụng một cơ sở dữ liệu riêng biệt với nhau để tăng trưởng kiểm toán của bạn không ảnh hưởng đến cơ sở dữ liệu ứng dụng của bạn? Tôi quan tâm đến các giải pháp đã thử và thực sự ở đây. Tôi biết có những lựa chọn trong lựa chọn công nghệ của chúng tôi (EF) nhưng tôi quan tâm đến nền tảng đầu tiên.

Liên kết sẽ rất được đánh giá cao.

+0

Hãy để tôi cũng lưu ý quan trọng khác. Chúng tôi rất đam mê về việc có thể quay lại và xem dữ liệu cũ trong ứng dụng. Đây là nơi chúng tôi cảm thấy rằng các đối tượng serialized bền bỉ là hữu ích (không chỉ ghi lại các vùng đồng bằng). – RailRhoad

+2

Sự khác biệt giữa một cơ sở dữ liệu và nhiều cơ sở dữ liệu có phần nhân tạo. Cơ sở dữ liệu có thể có nhiều nhóm tệp và các bảng có thể có nhiều phân vùng. Bạn có thể xử lý một cơ sở dữ liệu đơn giản như thể nó có nhiều cơ sở dữ liệu, và một bảng đơn như thể nó là nhiều bảng. –

Trả lời

1

Tôi đã nhìn thấy một số giải pháp, nhưng một trong những yêu thích của tôi là đơn giản bản thân:

  • Tạo bảng kiểm toán phản ánh mỗi bảng nguồn, thêm một vài cột phụ để theo dõi ngày và loại thay đổi (chèn, cập nhật hoặc xóa nếu bạn hỗ trợ) và người dùng thực hiện thay đổi. Xóa tất cả các ràng buộc và chỉ mục (trừ khi bạn mong đợi sẽ thực hiện nhiều tìm kiếm).

  • Bên trong logic cập nhật bảng (chúng tôi đã sử dụng quy trình, nhưng không có lý do gì không thể thực hiện với lớp OR/M hoặc lớp kiên trì khác, cho móc thích hợp), ghi vào cả bảng nguồn và bảng kiểm toán.

Điều này có nhiều lợi ích, nhưng ý kiến ​​lớn nhất (theo ý kiến ​​của tôi) không phải lo lắng hoặc viết tất cả mã để quản lý tính toàn vẹn giao dịch của các thao tác ghi ghép nối trong ứng dụng khách.

+0

Không có procs được lưu trữ ở đây với quyết định EF mặc dù chúng tôi có thể móc vào các thay đổi có nghĩa là chúng tôi có thể thực hiện điều này. Vì vậy, về cơ bản đây là một tấm gương của các bảng ứng dụng trong một db riêng biệt? – RailRhoad

+0

Đúng vậy, ngoại trừ trong cùng một db, sao cho bạn có các bảng như "Employee" và "EmployeeHistory" cùng với nhau. (Mặc dù Craig Stuntz 'bình luận ở trên liên quan ở đây.) Nhìn lại, không có lý do gì để tôi nói nó giả định các thủ tục được lưu trữ, vì vậy tôi đã chỉnh sửa văn bản đó đi. –

+0

Điều đó có nghĩa là một cơ sở dữ liệu phải viết mọi thứ hai lần? Bạn có nhận thấy bất kỳ tác động nào đến thông lượng từ việc này không? – glenatron

2

Tôi không có bất kỳ liên kết nào, nhưng trong hệ thống tôi có niềm vui duy trì ở đây vào công việc ban ngày. Chúng tôi có một bảng kiểm toán duy nhất, về cơ bản lưu trữ các thông tin sau.

TableName, PrimaryKeyValue, ModifiedColumn, OldValue, NewValue, ChangeUser, Thay đổi ngày

Bây giờ, làm việc này rất tốt cho tốc độ kiểm toán, trong mã của chúng tôi, chúng tôi có một giao diện phổ biến để tự động thực hiện khai thác gỗ kiểm toán, nhưng từ một quan điểm "xem xét", nó không phải là cách "nhanh nhất" để lấy lại thông tin. (Cấp, chúng tôi đã không thực sự làm bất cứ điều gì để cần phải nhìn vào các bản ghi kiểm toán ...)

+0

Vì vậy, về cơ bản một bảng đang phát triển, là điều này trong cùng một DB? – RailRhoad

+0

Vâng, đó là chính xác, chúng tôi cũng không có bất kỳ chỉ mục nào trên bảng vào lúc này. Nó nằm trong cùng một DB cho một số, nhưng có một phiên bản khác thêm cột "Cơ sở dữ liệu" và được lưu trữ bên ngoài. –

+0

Bạn xử lý các thay đổi đối với các mối quan hệ như thế nào? – camainc

2

Gần đây chúng tôi đã phải giải quyết vấn đề tương tự này trong doanh nghiệp của chúng tôi. Chúng tôi cũng được yêu cầu có thể hoàn nguyên về các phiên bản trước.

Chúng tôi đã kết thúc kiểm tra các thực thể kinh doanh thay vì các bảng trong sql. Chúng tôi về cơ bản tuần tự hóa các bản ghi trong DB và theo dõi các thay đổi được thực hiện từ một phiên bản sang phiên bản tiếp theo. Cách tiếp cận này cho phép chúng tôi truy xuất các phiên bản trước đó vào các thực thể nghiệp vụ và sau đó trở lại bằng cách gọi các hoạt động lưu giống nhau. Chức năng này để hoàn nguyên sẽ được chuyển về trách nhiệm ứng dụng vì nó phải được giải quyết ở đây nếu không dịch vụ của chúng tôi có thể cần biết về quá nhiều chi tiết về các ứng dụng tham gia. Hoạt động Serivce để lấy các bản ghi theo phiên bản, theo ngày, lịch sử xem, và tất nhiên để kiểm toán các thay đổi được cung cấp. Cách tiếp cận chọn tham gia của nó cho các nhóm ứng dụng khác nhau và các thực thể khác nhau bên trong (không phải mọi thứ trong DB cần phải được kiểm tra để giải thích tại sao).

Sau đó, chúng tôi xây dựng một trang web nhẹ nói chuyện với dịch vụ và có thể hiển thị tất cả các phiên bản.Chúng tôi xây dựng một cơ chế để hiển thị các bổ sung/cập nhật/xóa để so sánh giữa các phiên bản (biểu diễn ui thực sự thú vị) cho phép người dùng xem ai đã thay đổi cái gì và khi nào. Dịch vụ có thể gửi lại liên kết tới url để xem phiên bản của một thực thể. Điều này cho phép các ứng dụng webaps + winform/wpf của chúng tôi khởi chạy trình duyệt để người dùng có thể thấy các thay đổi.

Có lẽ tôi có thể gói này và cung cấp nếu có ai quan tâm ....

+0

Vì vậy, bạn đang dùng các đối tượng EF và serialising những người sau đó lưu trữ chúng trong một bảng kiểm toán/cơ sở dữ liệu của riêng mình? Làm thế nào để bạn xử lý các mối quan hệ cha-con? – glenatron

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