10個決定 決定程式函數寫在DB資料庫或程式函數庫裡

 

ERP 程式裡一定有計算函數,但這函數要寫在DB資料庫裡還是在ERP程式裡?相信讀者在碰到此問題時,常會有疑惑到底這函數要寫在DB資料庫裡或在程式函式庫中?在決定此問題之前先說2個故事。

 

故事1

早期我是負責公司在大陸的人事薪資系統,我任職的這家集團公司在大陸有多家子公司,集團總人數達到8千多人,這些子公司全部用我維護(非我原創,我來時已上線了)的人事薪資系統計算每月薪資。

 

初期為了加快計算速度我是將薪資計算函數寫在DB資料庫裡(因有的子公司人數達上千人,為加快計算速度所以寫在DB),有要更新程式時再一個一個連線進去子公司主機資料庫裡去更新DB裡的計算函數(計算函數有數十個),每變動一下函數程式,整個程序要再來一次,非常麻煩。

 

一天21(大陸是20日發薪)早上接到某子公司會計來信,說我薪資計算錯誤,少給薪,這家子公司的員工已暫停發送薪資條了,要我趕快改。我問了其他家公司的會計,回覆說薪資計算無誤。怪了,查看一下這家子公司的計算函數版本,果然這家子公司沒有更新到。我急將函數重新更新後,再計算就OK了。但一個月後,又換另一家子公司的薪資計算有問題(因要配合現況,所以,程式一直在修改中),查這家也是的DB裡的函數沒有更新到,一個問題同樣發生二次,這時老板臉色有點變了。

 

為避免再犯同樣的錯誤,痛定思痛,DB裡的函數全部作廢,把所有計算函數全部改寫在程式中,這樣更新程式只要一個執行檔傳過去即可。從此再也沒有發生同樣的問題了。

 

故事2

大陸子公司買進一套大陸流行的ERP程式,號稱可同時支援Oracle MS SQL ,我很好奇,這家ERP是怎麼弄的。就從DB後台進去看它們的DB架構。看完DB架構後發覺DB裡沒有任何函數或預儲存程式 ,也就是說這家ERP廠商他們的函數全部寫在程式中,程式中會判斷後台是用何牌資料庫,才執行該牌SQL,所以,才能同時支援Oracle MS SQL(也有可能只跑符合ANSI SQL)。回台灣換工作後維護一套本土大型ERP,這家ERPDB資料庫裡也是沒有任何一個函數存在,函數應也都是寫在程式中。

 

筆者相信這些ERP的程式設計師應該也有和我同樣的想法,因客戶多,如要更新程式或版本時,無法保證面面俱到,還是寫在程式裡比較保險一點,避免某個函數遺落沒有更新。有了以上這些經驗,筆者現在程式都寫在程式函數庫中,除非是跑很慢的程式,為加快計算速度才寫在DB(MRP 計算)

 

結論:計算函數還是寫在程式中,方便更新程式,也比較不會出錯。當然,這沒有強迫規定,如讀者為了加快計算速度將函數寫要寫在DB裡也可以,只是要自負一些意外的結果。

文章標籤
全站熱搜
創作者介紹
創作者 Wilson643089 的頭像
Wilson643089

如何自己設計一套ERP

Wilson643089 發表在 痞客邦 留言(0) 人氣(52)