【IT168 技術分析評論】
近日,ITPUB社區ERP板塊,一位使用ERP多年的網友李新(化名)在學習使用U9的過程中,發帖抱怨U9中使用了大量的預存程序,並質疑號稱全球第一款基於SOA架構的ERP系統U9,其SOA設計架構理念到底體現在哪些地方?
該社區的資訊化相關板塊,聚集了國內大部分ERP實施顧問,討論產品線涵蓋國內外主流的ERP產品和技術。李新的文章發布後,立刻在ITPUB社區引發了軒然大波,多達上百位從事ERP顧問和選型,及實施的技術網友參加了討論,發表自己的見解。
圖:用友U9產品SOA理念和架構遭質疑
用友ERP 存錯過程濫用?
記者調查瞭解到,整個U9產品的核心計算的確幾乎全部通過預存程序實現,包括MRP計算、ATP計算、成本計算甚至密碼的密碼編譯演算法也在預存程序實現。整個系統用了7百多個預存程序,1百多個類似於預存程序的純量涵式。
網友alone1998認為,“純粹的SOA不提倡用預存程序/函數,把資料庫只視為一個儲存資料的地點。所有的商務邏輯都不在資料庫中實現,在應用伺服器中實現商務邏輯。從這個角度講 U9肯定不是嚴格的SOA構架。但是,實際使用中,純粹的SOA構架效率存在問題,需要頻繁的讀寫資料,對硬體要求也高(我們的一個ERP,採用類似構 架,用了4台小型機做應用伺服器,oracle資料庫unix作業系統).要解決這個問題,需要打破這個模式,折中的辦法是限制預存程序的使用,別爛用。這又需要仔細的系統設計,用友是否這樣做的了不得而知。”
記者就此採訪其它技術人員時,但他們表達了相反的觀點,認為SOA的設計理念和是否大量使用預存程序沒有直接關係。
“其它的ERP產品如Oracle EBS同樣大量使用了預存程序。用這一點來指責和質疑SOA的設計理念和研發的技術實力,立足點完全錯誤!至於說,有些商務邏輯計算是否一定要放在後台,通過預存程序來實現,這一點是可以討論的。”一位從事多年ERP實施的技術顧問接受採訪時表示。
ERP系統涉及大量的商務邏輯處理和計算,將這些商務邏輯處理計算動作全部放在後台資料庫實現,的確看上去有悖分層設計架構的思想。分層開發設計的思想是,商務邏輯計算盡量封裝在商務邏輯層,而不是將其全部下壓到資料庫層面來實現。
“商務邏輯處理和計算,如果直接用預存程序實現,不利於複用,也不利於資料庫的跨平台移植(因為大部分資料庫系統的SQL標準實現是有差別的,在一個DBMS中能夠正常啟動並執行預存程序,放到另一個平台幾乎全部要重寫);我們在做項目時,如果有開發人員這麼做,被視為是偷懶的表現。”一個從事CRM系統開發的項目主管小李認為。
據記者瞭解,還有批評者認為,現在U9把中介層要做的事情都讓資料庫伺服器代勞,顯然對資料庫伺服器帶來成本的壓力。另外,安全性也是一個問題,因為系統預存程序一般都是開放的,任何人都可以隨意修改,對系統的穩定性和安全性帶來隱患。
“如果通過預存程序來實現如MRP計算,如果計算量很大的情況下勢必會造成伺服器的資源耗盡,一旦進行MRP計算,所有人都無法工作了。並且,這種計算資源消耗在前端是無法知道進度的,象死機一樣,當然也無法知道什麼時候能夠結束。大量的計算也回帶來死結,乃至癱瘓。根據我以往的經驗,並發數超過100就很困難了,不可靠了(丟資料、死機等)。要達到200,購買最好的伺服器恐怕也困難。”一位有著資料庫管理經驗的ERP技術實施顧問這樣認為。
對此,EBU平台開發部經理張勁濤的解釋認為,ERP軟體需要處理大量業務資料,核心計算通過資料庫預存程序來實現,一方面是為了減少網路資料流量,提高資料處理效率;另一方面在資料庫層面進行交易處理和控制比在應用程式中使用分散式交易更高效、佔用的資源更少;還有一個就是靈活性問題,設計良好的預存程序,當商務邏輯或規則發生變化時,可以不用修改軟體代碼,只需修改預存程序即可,這對於使用者和軟體開發商來講,可以降低維護成本和升級花費;另外,擴充開來還有一個系統健壯性和安全性問題,在非電信級商業網路環境中(比如:大多數企業區域網路),盡量減少裝置節點和層次意味著更高的可靠性,盡量減少資料在網路上暴露和傳輸的機會意味著更高的安全性。
另外,他也承認使用預存程序有可能使得系統存在缺陷。“預存程序的一個缺陷是對於非資料密集型運算其實是很低效的,可能會過多的佔用DB Server的CPU資源,而使得效能強大的Application Server的計算能力被閑置;另外,對於強調協作的分布式應用來,計算能力的過於集中在一定程度上降低了靈活性,畢竟現在早已不是大型主機的時代。”
最後他認為U9產品中大量使用預存程序是一個比較合適的做法,並無不對。“對於商業軟體來講,核心計算是否選擇預存程序實現不能一概而論,要根據具體應用的特點和效能要求綜合考慮,在此過程中可靠性和有效性往往會起很大的作用。”
本文轉載自:http://tech.sina.com.cn/s/2009-08-13/10501026131.shtml