我們正在研究在我們的應用程序中實施審計日誌,我們不確定如何正確執行。
我知道django-reversion的工作原理和運行良好,但是使用它的成本很高。
保存記錄時,即使保存在同一事務中,Web服務器也必須向數據庫創建兩個往返行爲,因爲至少在postgres中將更改寫入數據庫並對事務進行命令以使更改可見。
因此,如果我們不使用當前情況下的異步I/O,那麼這將阻止Web服務器,直到將修訂保存到數據庫。即使我們使用異步I/O生成修訂版的數據也需要CPU時間,這又會阻止Web服務器處理其他請求。我應該使用數據庫觸發器還是使用django-reversion來實現修訂?
我們可以使用數據庫觸發器來代替,但是我們的DBA聲稱將這類工作卸載到數據庫將使用用於處理更多事務的資源。 正在使用數據庫觸發器這種工作是一個壞主意?
我們可以使用負載均衡器和使用讀/寫副本的數據庫來擴展Web服務器。
我們在這裏找不到任何折衷?
什麼可以幫助我們決定?
我們的REST API確實有更高的讀取率,然後寫入,但我們的後端服務卻相反。他們至少寫出90%的時間。我們的後端服務之一不斷寫入數據,數據應該修改,這就是爲什麼我擔心性能。 –
好吧,那麼我猜觸發器可能在數據庫方面效率更高一點,因爲它們將不需要通過客戶端連接發送額外的查詢就可以運行 – Anentropic
數據庫觸發器會比django-reversion更好地擴展嗎?爲什麼? –