本文本來是寫到Word文檔里的個人總結,后來想想從06年接觸博客園至今,基本每天都要上來學習一下的,卻從來沒寫過什么東東,就貼一篇。
新項目馬上要開始,本文先從技術角度對上一MES項目簡單總結一下。
1、程序
主要程序列表:MES產品框架、客制化生產系統、客制化查詢系統、測試設備(2種)集成程序、數據采集設備(2種)集成程序、報表數據統計Job框架、報表系統、異常報警信息查詢系統、SAP接口、其它程序
1.1、MES產品框架:使用WCF進行通信,使用NHibernate 2.2進行持久化,使用AppDomain動態加載/卸載程序集dll並緩存的方式及以Key-Value的屬性方式提供客制化處理方案;
1.2、測試設備集成程序:處理測試設備輸出的數據(主要格式:txt、Excel、Access);
1.3、數據采集設備集成程序:Socket通信、結合PLC進行串口通信等;
1.4、報表數據統計Job框架:Quartz,動態加載Job dll;
1.5、報表系統:SQL Server自帶的報表系統;
如圖:
應用程序架構圖示
2、數據庫
使用的數據庫產品是Microsoft SQL Server 2008 R2英文版
系統數據庫主要設計為:生產數據庫(Production Database)、歷史數據庫(History Database)、報表數據庫(Report Database)、集成平台數據庫(Integration Database)、異常報警信息數據庫(Exception Alarm Database)、SAP接口數據庫;
2.1、生產數據庫(Production Database)
1)生產數據庫正常情況每周增長量為15G(Data File + Log File + Index File),保存6~12個月內數據;每天Log備份,每周增量全備份(全備之后Log File會截斷) ;
2)生產數據庫主要給生產系統和產線生產數據查詢系統使用;
3)生產數據庫中的業務數據定期做歸檔,主要有2種方式:Purge和Archive,Purge是數據可逆方案,主要對象是計算機:刪除原始數據前按業務單元把數據以Insert Sql的形式保存到txt文件中,需要恢復時執行相應Insert Sql;Archive是數據不可逆方案,主要對象是人:按業務單元把數據以Key-Value的形式保存到txt或xml文件中;
2.2、歷史數據庫(History Database)
歷史數據庫數據由生產數據庫數據同步過來,3種方案同時使用:SQL Server的發布/訂閱復制(Replication)方案、SQL Server Job方案、SSIS(SQL Server Integration Service)方案;3種方案同時使用的原因:發布/訂閱的復制方案會因為各種原因中斷,微軟支持人員給出的答案:有些原因在方案重啟后可以從中斷點繼續復制,有些原因必須重新做復制,從頭復制(問題就在這里:1是復制需要一定的時間,會影響生產;2是有些數據在生產數據庫已經被Purge掉了,無法找到原始數據),所以歷史數據庫就被拆分成幾個小數據庫:基礎數據或變動比較小的數據采用SQL Server的發布/訂閱復制方案,問題發生時就算重新做復制也會比較快恢復;一些邏輯性強的采用SQL Server Job的方式進行復制,可以設置起始點及回退;SSIS不太了解,屬於學習和嘗試階段;
2.3、報表數據庫(Report Database)
基於報表邏輯的復雜性以及客戶對效率要求(所有常規報表在30秒內),通過Job將報表數據從歷史數據庫中統計出來保存到報表數據庫來實現。
其它數據不做介紹了。
如圖:
數據庫架構圖示
3、服務器
根據以上程序及數據庫設計,規划以下服務器,實際實施時有合並使用。
MES產品框架應用程序服務器(Framework Application Server)、客制化系統應用程序服務器(Custom Application Server)、集成平台應用程序服務器(Integration Application Server)、緩存服務器(Cache Server)、報表查詢服務器(Report Query Server)、生產數據庫服務器(Production Database Server)、歷史數據庫服務器(History Database Server)、報表數據庫服務器(Report Database Server)、文件服務器(File Server)
如圖:
服務器架構圖示
Application Server一共2台,在服務器群集(Cluster)基礎上結合緩存服務器(Cache Server,主要是架設了NCache,保存Session和Viewstate)建立網絡負載平衡(NLB,Network Load Balancing),主要運行程序:MES產品框架、客制化生產系統、客制化查詢系統;
Integration Server主要運行程序:測試設備(2種)集成程序服務器端、數據采集設備(2種)集成程序服務器端;
4、主要問題
技術上主要的問題在於數據庫的同步方面,各種方案都有優點和缺點,搞得很疲憊,不知道是SQL Server太弱還是我們的設計方案有問題(使用SQL Server主要是項目開始之前,客戶方已經購買了SQL Server,不願意再換Oracle)。