我遇到過一個非常具體的實例,在用戶驗收測試期間,網頁中的數(shù)據(jù)被不同計算機上的兩個管理員修改。管理員#2 無意中覆蓋了數(shù)據(jù)。您如何保證數(shù)據(jù)始終準確地反映在所有使用此數(shù)據(jù)的網絡瀏覽器中?例如:管理員 #1 在上午 8:00 登錄到一個網頁,該網頁有一個帶有 CRUD(創(chuàng)建、讀取、更新、刪除)功能的表格。管理員 #2 在上午 8:01 登錄到同一個網頁并提取相同的數(shù)據(jù)。此時兩個網頁都顯示了正確的數(shù)據(jù),因為在最后一分鐘沒有修改任何數(shù)據(jù)。假設在上午 8 點 03 分,管理員 #1 使用 CRUD 操作修改了一條記錄。此時,Admin #2 在網頁中的數(shù)據(jù)已過時。上午 8 點 05 分,管理員 #2 修改了相同的記錄,但這會用舊數(shù)據(jù)覆蓋管理員 #1 的更改。由于網頁中有舊數(shù)據(jù),因此發(fā)送了包含該行所有數(shù)據(jù)的發(fā)布請求,并且整行都使用“舊數(shù)據(jù)”進行了更新。此時,數(shù)據(jù)庫將僅顯示 Admin #2 的特定更改。如您所見,如果我有數(shù)百名管理員都在修改數(shù)據(jù)庫中的數(shù)據(jù),則這種情況可能會經常發(fā)生。是否存在我可以“提醒”管理員 #2 并告訴他數(shù)據(jù)已過時的技術?如果有 30 位管理員登錄并看到此數(shù)據(jù)怎么辦?我可以提醒他們所有人這些數(shù)據(jù)不再準確反映了嗎?在我編寫申請時,我可以預見這將成為未來的一個問題。有許多管理員將使用此網頁,我希望能夠向他們保證數(shù)據(jù)始終準確無誤。這些數(shù)據(jù)對企業(yè)來說非常重要。它必須始終準確,但對于不懂 SQL 的最終用戶來說可以輕松修改。我在后端/前端使用 Spring Boot 和 VueJS。我們的應用程序將使用 OpenShift 和 Microsoft Azure DevOps 進行部署。我們的數(shù)據(jù)庫使用的是 Oracle。你們以前有沒有遇到過這個問題?你是如何解決這個問題的?
2 回答

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
不確定你的數(shù)據(jù)有多可行,但我想你可以在你想做你的 POST 時添加一個檢查(比方說更新一個字段)檢查已經加載的值和現(xiàn)在數(shù)據(jù)庫中的值,如果不同,要么刷新頁面以反映新數(shù)據(jù),要么提醒管理員告訴他您的數(shù)據(jù)已過時。我想到的另一個想法是在另一個管理員更新字段時鎖定該字段,但如果有很多數(shù)據(jù)可以由很多管理員更新,這可能行不通。

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
為每個條目添加一個修訂計數(shù)(或者你想給它的任何名稱)。當管理員檢索數(shù)據(jù)時,將當前修訂計數(shù)傳遞給管理員。當數(shù)據(jù)應該被更新時發(fā)送回recision 計數(shù)。將修訂計數(shù)與數(shù)據(jù)庫中的計數(shù)進行比較,如果不匹配,通知管理員,否則更新并增加計數(shù)。確保檢查和更新是原子的。
添加回答
舉報
0/150
提交
取消