小公司數據一致性問題與效率平衡的解決方案

小公司數據一致性問題與效率平衡的解決方案

客戶(遠程)計算機:203
公司計算機:1.11、1.20
數據庫:WE、PM、EL

程序開發:A同學

數據庫表結構維護和數據導入:B同學

《在203WE無客戶增刪改操作的前提下,公司內部避免203和1.11數據庫不一致問題且保持效率解決方案》
方案一:保證1.11單向覆蓋203,反之不成立;
1.11 服務器安裝 sqlserver 2017 ,與203數據庫版本保持一致。
前提1:遠程增刪改前先用1.11去覆蓋203,遠程增刪改完成後,馬上用203數據庫覆蓋1.11;(目前只有圖片關係表)
A同學操作前必須通知B同學不要對1.11進行增刪改操作,直到操作通知B同學可以增刪改,若A同學忘記通知,B同學必須尋問。
前提2:不能再用自己電腦數據庫覆蓋1.11;B同學 測試時增刪改鏈接自己電腦,測試成功後鏈接1.11增刪改;(目前只有表和數據)
注意必須保持PowerDesigner與1.11一致,也就是說,除了極少量增刪改手動修改PowerDesigner與1.11數據庫,其它都必須用PowerDesigner鏈接1.11數據庫後生成的語句去更新)
前提3:不能再用自己電腦數據庫覆蓋1.11;A同學 測試時增刪改鏈接自己電腦,測試成功後鏈接1.11增刪改;(目前只有視圖)
前提4:A同學每次在203發佈程序時,用1.11數據庫覆蓋203;

方案二: B同學全權管理數據庫並維護一致性,A同學只對數據庫進行查詢操作,不做表結構和數據的增刪改操作;

情況一:1.20沒有建立外網映射前
0 可以不用1.11,也不用1.20
1A同學本地對數據庫的修改都保存爲sql 然後給B同學;(同步任務)
2A同學在203發佈數據時,讓B同學自己電腦上的數據庫更新到203數據庫;(同步任務)
3A同學對203數據庫增刪改前,尋問B同學203數據是否是最新的,不是則B同學馬上更新;
更新後A同學對203數據庫增刪改操作,然後複製到A同學電腦;(目前只有導入圖片) (同步任務)
這是當時疫情臨時方案,但是的前端程序也是直接發佈到203上的;
讓B同學給自己一個WE數據庫,然後A同學放到自己電腦調試程序看效果;
這種方案雖然避免了兩人同時增刪改的衝突,但導致了很多的必須同步任務,溝通成本高。(由於A同學當時辦公效率低,問題還不突出)

情況二:受疫情影響在家辦公,1.20建立外網映射後(向日葵)

當時還沒有1.11計算機,只有1.20,但後來1.20沒有空間了;
B同學Excel數據先導入自己電腦,然後覆蓋到1.20;
A同學用1.20覆蓋本機;
發佈前必須A同學先把自己對數據庫表結構和數據的修改更新到1.20,然後用1.20去覆蓋203;
(這一步A同學做了,但忘記提前讓B同學馬上用自己sqlserver2008覆蓋1.20,先保證數據一致) (交叉任務)
同時讓B同學用1.20覆蓋自己電腦的sqlserver2008和2017的兩個庫;
(這一步A同學忘記提醒B同學,B同學也沒有問) (交叉任務)
這兩步導致了數據不一致,因爲存在較多交叉任務,溝通成本高,若溝通不充分容易出問題;
而方案一中只有“前提1”交叉,其它並不交叉,溝通成本低;
當時出現一個問題就是,但是由於sqlserver版本問題,最終數據出現混亂。


綜上所述,目前選擇方案一。

 

《203WE有客戶增刪改操作的前提下,只能203數據單向覆蓋1.11,反之不成立》
一、若用戶數據操作頻率非常小且數據量非常小,且我們知道客戶增刪改的時間段和表範圍;
仍然可以採用《在203WE無客戶增刪改操作的前提下,公司內部避免203和1.11數據庫不一致問題且保持效率解決方案》的方案一;
一般這種情況只存在於
1程序開發的前期,客戶沒有增刪改操作;
2這個程序對客戶是隻讀的,例如El;
(El之所以沒能保持一致性,是因爲當時本地數據庫沒有安裝sqlserver2017)
二、若用戶數據操作頻率較大或數據量較大,或增刪改的時間段和表範圍我們無法知道;
公司對203數據庫表結構和數據的所有增刪改操作都必須保存爲文檔(sql語句、程序、Excel、圖片等),然後在遠程執行;
1表結構增刪改:
若改動很小,手動修改PowerDesigner和數據庫;
若改動較大,本地測試無誤後,在遠程執行pd生成的sql語句;
2表數據增刪改
若數據量小,用sql語句;
若數據量大,在本地測試無誤後,把Excel和導入程序複製到203執行;
3圖片導入MongoDB,記錄添加到WE關係表
圖片導入:在本地測試無誤後,把圖片和導入程序複製到203執行;

注意:在遠程確實無法操作時,偷雞取巧的方法是三更半夜更新(停用程序,203複製到1.11,更新數據,覆蓋到203,恢復程序),但必須提前做好數據備份工作。
但這畢竟是小公司爲了效率投機取巧的方法,如迫不得已要不要這麼做,且大公司客觀上不存在這種操作的條件。
對數據庫進行覆蓋、批量增刪改之前一定先備份,此舉關鍵時刻可以力挽狂瀾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章