2009-05-04 14 views
16

Tôi đang làm việc trên một ứng dụng web mới, tôi cần phải lưu trữ bất kỳ thay đổi nào trong cơ sở dữ liệu để kiểm tra (các) bảng. Mục đích của các bảng kiểm toán như vậy là sau này trong một kiểm toán thực tế, chúng tôi có thể xác định những gì đã xảy ra trong một tình huống, những người đã chỉnh sửa những gì và trạng thái của db tại thời điểm nào, ví dụ: một phép tính phức tạp. Vì vậy, hầu hết bảng kiểm toán sẽ được viết và không đọc. Báo cáo có thể được tạo ra mặc dù đôi khi.django AuditTrail vs Reversion

Tôi đã tìm kiếm giải pháp có sẵn

  1. AuditTrail - đơn giản và đó là lý do tại sao tôi đang nghiêng về phía nó, tôi có thể hiểu được nó mã tập tin duy nhất.
  2. Reversion - có vẻ đơn giản, đủ để sử dụng nhưng không chắc chắn sẽ dễ dàng sửa đổi nếu cần.
  3. rcsField có vẻ là rất phức tạp và quá nhiều cho nhu cầu của tôi

tôi đã không cố gắng bất cứ ai trong số này, vì vậy tôi muốn biết một số kinh nghiệm thực tế và cái nào tôi nên sử dụng. ví dụ. cái nào nhanh hơn sử dụng ít không gian hơn, dễ mở rộng và duy trì?

+2

Cách triển khai 'AuditTrail' và' HistoricalRecords' gần đây nhất và được hỗ trợ là ['django-simple-history'] (https://github.com/treyhunner/django-simple-history). –

Trả lời

1

Như tôi đã nói trong câu hỏi của tôi. và có thể quay lại sau để những thay đổi đó tạo ra một số báo cáo.

Vì vậy, tôi đã kiểm tra AuditTrail và Reversion Đảo ngược có vẻ là một ứng dụng đầy đủ hơn với nhiều tính năng (mà tôi không cần), Ngoài ra như tôi biết nó lưu dữ liệu trong một bảng ở định dạng XML hoặc YAML, mà tôi nghĩ

  1. sẽ tạo ra quá nhiều dữ liệu trong một bảng duy nhất
  2. để đọc dữ liệu tôi có thể không có khả năng sử dụng các công cụ đã db hiện tại.

AuditTrail thắng liên quan đến mỗi bảng tạo bảng kiểm tra tương ứng và do đó thay đổi có thể được theo dõi dễ dàng, trên mỗi bảng dữ liệu ít hơn và có thể dễ dàng thao tác và sử dụng để tạo báo cáo.

Vì vậy, tôi đang đi với AuditTrail.

+0

Bạn có thấy lớp FullHistory: http: //www.djangosnippets không. org/đoạn mã/1234 /? Tôi bắt đầu quan sát vấn đề của bạn, và chưa tìm được giải pháp tốt nhất. Bạn có vấn đề gì với AuditTrail không? – ramusus

+0

Tôi đã không xem xét FullHistory nhưng nếu nó hoạt động nó sẽ được thực sự giải pháp đơn giản, bây giờ tôi đã không sử dụng auditTrail về sản xuất nhưng thử nghiệm ban đầu dường như đề nghị nó sẽ làm việc ok –

3

Tôi không thể cung cấp cho bạn trải nghiệm thực tế với bất kỳ ai trong số họ nhưng muốn thực hiện quan sát.

Tôi giả định bởi AuditTrail nghĩa là AuditTrail on the Django wiki. Nếu vậy, tôi nghĩ bạn sẽ muốn thay vào đó xem HistoricalRecords được phát triển bởi cùng một tác giả (Marty Alchin aka @gulopine) trong cuốn sách Pro Django của mình. Nó sẽ hoạt động tốt hơn với Django 1.x.

Đây là cách tiếp cận tôi sẽ sử dụng trong một dự án sắp tới, không phải vì nó nhất thiết phải đánh bại những người khác từ quan điểm kỹ thuật, nhưng vì nó phù hợp với kỳ vọng "thực tế" của đường mòn kiểm toán cho ứng dụng đó.

+0

Có bởi AudtiTrail Tôi có nghĩa là AuditTrail trên wiki Django, vì vậy đối với HistoricalRecords tôi có phải mua sách hoặc mã không? –

+0

Một số dự án khác của anh ấy đang trực tuyến, nhưng tôi không thể tìm thấy mã cụ thể đó ngay cả tại http://prodjango.com/. –

+5

Trong trường hợp bất cứ ai khác tìm thấy câu hỏi này như tôi đã làm, cần lưu ý rằng HistoricalRecords đã được mở rộng với sự cho phép của Marty Alchin và hiện có sẵn như là django-simple-history: https://bitbucket.org/q/django- lịch sử đơn giản –

4

Cá nhân tôi muốn tạo bảng kiểm tra trong cơ sở dữ liệu và điền thông qua trình kích hoạt để mọi thay đổi ngay cả truy vấn đặc biệt từ cửa sổ truy vấn được lưu trữ. Tôi sẽ không bao giờ xem xét một giải pháp kiểm toán không dựa trên cơ sở dữ liệu. Điều này quan trọng bởi vì những người đang thực hiện những thay đổi độc hại đối với cơ sở dữ liệu hoặc lừa đảo không có khả năng làm như vậy thông qua giao diện web nhưng trực tiếp trên chương trình phụ trợ. Xa hơn về những thứ này xảy ra từ nhân viên bất mãn hoặc larcenous hơn so với tin tặc bên ngoài. Nếu bạn đang sử dụng ORM, dữ liệu của bạn có nguy cơ vì các quyền ở cấp bảng chứ không phải cấp độ sp nơi chúng thuộc về. Do đó, điều quan trọng hơn là bạn phải nắm bắt bất kỳ thay đổi nào có thể xảy ra đối với dat không chỉ là những gì từ GUI. Chúng tôi có một proc động để tạo ra các bảng kiểm toán được chạy bất cứ khi nào các bảng mới được thêm vào cơ sở dữ liệu. Vì các bảng kiểm toán của chúng tôi chỉ có các thay đổi chứ không phải toàn bộ hồ sơ, chúng tôi không cần phải thay đổi chúng mỗi khi một trường được thêm vào.

Ngoài ra khi đánh giá các giải pháp khả thi, hãy đảm bảo bạn xem xét mức độ khó khăn của việc hoàn nguyên dữ liệu để hoàn tác một thay đổi cụ thể. Một khi bạn có bảng kiểm toán, bạn sẽ thấy rằng đây là một trong những điều quan trọng nhất bạn cần làm từ chúng. Cũng nên xem xét việc sẽ bảo trì thông tin như thế nào khi các lược đồ cơ sở dữ liệu thay đổi.

Chọn giải pháp vì nó có vẻ dễ hiểu nhất, thường không phải là một ý tưởng hay. Điều đó sẽ thấp nhất trong các tiêu chuẩn lựa chọn của bạn sau khi đáp ứng các yêu cầu, bảo mật, v.v.

+3

Tôi đã chọn giải pháp mềm vs DB (vì vậy bây giờ tôi đang tìm giải pháp có thể bảo trì) Giải pháp B không thể phục vụ trạng thái ứng dụng (dễ dàng), Về an ninh tôi nghĩ rằng nếu một người có quyền truy cập vào DB và địa ngục bị cong lừa đảo những gì khiến bạn nghĩ rằng anh ta sẽ không xóa trình kích hoạt kiểm toán db như vậy hoặc không thay đổi các bảng kiểm toán, trừ khi chúng được lưu trữ ở vị trí vật lý thứ 3 với giây nặng –