2009-05-04 55 views
16

我正在研究一個新的Web應用程序,我需要將任何數據庫更改存儲到審計表中。這樣的審計表的目的是在稍後的實際物理審計中,我們可以確定在某種情況下發生了什麼事,誰編輯了什麼以及什麼時候db的狀態。一個複雜的計算。 所以主要是審計表將被寫入,而不是讀取。有時可能會生成報告。django AuditTrail vs Reversion

我已經看過了可用的解決方案

  1. AuditTrail - 簡單,這就是爲什麼我朝它傾斜,我能理解單個文件的代碼。
  2. Reversion - 看起來很簡單,但使用起來很簡單,但不知道如果需要修改它會有多容易。
  3. rcsField似乎是非常複雜的,太多了我的需求

我沒有嘗試過的這些人,所以我想知道一些真正的經驗,我應該使用哪一個。例如哪一個更快,佔用空間更少,易於擴展和維護?

+2

'AuditTrail'和'HistoricalRecords'方法的最新和支持的實現是['django-simple-history'](https://github.com/treyhunner/django-simple-history)。 – 2013-09-03 22:03:48

回答

1

正如我在我的問題所述rcField似乎是爲了我的需要,這很簡單,我想存儲任何更改我的表,並可能稍後再回到這些更改以生成一些報告。

所以我測試了AuditTrail和Reversion Reversion似乎是一個更好的全功能應用程序,它具有很多功能(我不需要),還據我所知它將數據保存在XML或YAML格式的單個表中,我認爲

  1. 將在一個表
  2. 產生太多的數據來讀取數據我可能無法使用已經存在數據庫工具。

跟蹤線索勝在這方面,對於每個表它產生相應的審計表,並因此變化可以很容易地跟蹤,每表中的數據是以下,可以容易地控制和用戶生成報告。

所以我打算使用AuditTrail。

+0

你看到這個類FullHistory:http://www.djangosnippets。 org/snippets/1234 /?我開始觀察你的問題,並沒有找到最佳解決方案。 AuditTrail有任何問題嗎? – ramusus 2009-06-04 15:06:15

+0

我還沒有看過FullHistory,但如果它的工作原理將是非常簡單的解決方案,現在我沒有在生產上使用auditTrail,但初始測試似乎表明它可以正常工作 – 2009-06-08 16:12:09

3

我不能給你任何人的真實經驗,但想做一個觀察。

我認爲AuditTrail的意思是AuditTrail on the Django wiki。如果是這樣,我想你會想看看HistoricalRecords,由同一作者(Marty Alchin aka @gulopine)在他的書Pro Django中開發。它應該更好地使用Django 1.x.

這是我將在即將到來的項目中使用的方法,並不是因爲它從技術角度出發必須擊敗其他項目,而是因爲它符合該應用程序審覈跟蹤的「真實世界」預期。

+0

是的AudtiTrail我的意思是Django wiki上的AuditTrail, 因此對於HistoricalRecords,我必須購買書籍或代碼嗎? – 2009-05-04 11:56:30

+0

他的其他一些項目在線,但我無法在http://prodjango.com/上找到特定的代碼。 – 2009-05-04 12:06:42

+5

如果其他人發現這個問題,我應該注意的是,HistoricalRecords已經得到了Marty Alchin的許可,現在可以作爲django-simple-history使用:https://bitbucket.org/q/django-簡單的歷史 – 2011-02-11 22:35:51

4

就我個人而言,我更喜歡在數據庫中創建審計表並通過觸發器進行填充,以便存儲任何更改(即使是來自查詢窗口的即席查詢)。我永遠不會考慮不是基於數據庫本身的審計解決方案。這一點很重要,因爲那些正在對數據庫進行惡意更改或進行欺詐的人不可能通過Web界面執行此操作,而是直接在後端執行操作。更多的這些東西來自於不滿或者有害的員工,而不是外部的黑客。如果您已經使用ORM,則您的數據處於風險之中,因爲權限位於表級而不是其所屬的sp級別。因此,更重要的是捕獲對dat的任何可能更改,而不僅僅是來自GUI的內容。我們有一個動態的proc來創建審計表,每當將新表添加到數據庫時都會運行這些表。由於我們的審計表只填充更改而不填寫整個記錄,因此每次添加字段時都不需要更改它們。

此外,在評估可能的解決方案時,請確保考慮恢復數據以恢復特定更改的難度。一旦你有了審計表,你會發現這是你需要從他們那裏做的最重要的事情之一。還要考慮在數據庫模式更改時保存信息的難度。

選擇一個解決方案,因爲它似乎是最容易理解,通常不是一個好主意。這應該是你的選擇標準滿足要求,安全等後的最低

+3

我選擇了軟件解決方案與數據庫之一(所以現在我正在尋找一個maintanable解決方案) B解決方案無法迎合應用程序狀態(很容易), 關於安全性,我認爲如果一個人有權訪問數據庫,做欺詐是什麼讓你認爲他不會刪除這樣的數據庫審計觸發器或 不會更改審計表itsels,除非他們被存儲在第三個物理位置與沉重的sec – 2009-05-06 09:51:19

相關問題