在我目前正在維護的金融系統中,我們依靠數據庫的回滾機制來模擬運行一些大批量作業的結果 - 回滾事務或在結束,取決於我們是否正在進行測試運行。在日照場景中依賴db事務回滾
我真的不能決定我的意見是什麼。在某種程度上,我認爲這很好,因爲那時模擬和實況運行沒有什麼區別 - 另一方面,它只是感覺很噁心,取決於拋出異常來執行業務邏輯的代碼。
對於依靠數據庫事務來執行業務邏輯,您有何看法?
例
請考慮在數據庫中1000個按揭契約的管理系統。現在,用戶想要運行一項批量作業,該批作業使用一些高級搜索條件來確定要開具哪些契據,從而爲每個契據創建下一個期限發票。
她實際上在此之前,她做了試運行(通過執行actualy運行,但在一個事務回滾結束實施),建立在其上的事蹟將開具發票的報告。如果看起來令人滿意,她可以選擇執行實際運行,這將以事務提交結束。
每張發票都會加上一個批號,以便我們稍後在需要時恢復更改,因此批次運行並不「危險」。用戶只是覺得首先能夠模擬結果是更好的UX。
澄清
這是不是測試。我們確實有測試和分期環境。這是關於使用我們的系統的普通用戶想要模擬大型操作的結果,即使不是「無法控制」或「不可逆轉」,也可能看起來「不可控制」或「不可逆轉」。
結論
似乎並不像其他人有對我們的解決方案真正好的理由。與往常一樣,上下文意味着一切,因此在超出性能要求的複雜功能需求的情況下,使用數據庫回滾來實現批量作業模擬似乎是一個可行的解決方案。
由於這個問題沒有真正的答案,所以我沒有選擇一個答案 - 而是我提出了實際提出論點的那些人。
這是http://stackoverflow.com/questions/1237363/relying-on-db-transaction-rollback-in-sunshine-scenario的副本,所以我建議在那裏回答問題! – Fenton 2009-08-06 07:15:19
但這裏有一個更好的標籤... – Thilo 2009-08-06 07:20:11
@mookid:請刪除其中的一個。 – Thilo 2009-08-06 07:21:31