賈成軍 孫昌風和 金 惠
(江南造船(集團)有限責任公司 上海201913)
有次序地改變船舶中某些參數(shù)而構成的組系船舶,稱之為系列船。系列船設計數(shù)據(jù)在某些設計軟件(如Tribon、AvevaMarine)中以文件數(shù)據(jù)庫形式存儲,可指定任意設計數(shù)據(jù)進行實時備份和恢復;而在三維體驗平臺中,設計數(shù)據(jù)的存儲方式是Oracle數(shù)據(jù)庫和文件服務器,屬性類數(shù)據(jù)保存在Oracle數(shù)據(jù)庫,三維模型類數(shù)據(jù)保存在文件服務器中。該存儲方式與其他設計軟件的不同之處在于所有系列船設計數(shù)據(jù)都是混合存儲,這種存儲方式導致設計數(shù)據(jù)量不斷增加,每型系列船的設計數(shù)據(jù)量基本在300 GB左右。
以本公司之前的三維體驗平臺R2016x版本為例,其現(xiàn)已完成1.5型系列船設計工作,設計數(shù)據(jù)達430 GB,文件數(shù)量為300萬個。隨著設計數(shù)據(jù)量的快速增長,如果后續(xù)在此服務器上繼續(xù)開展2~3型系列船設計工作,整個數(shù)據(jù)量將達到1 TB,從而給正常設計工作帶來嚴重的影響。首先,客戶端訪問性能將不斷降低;其次,從每天凌晨12點開始備份,每次備份需7~8 h,可能會影響第2天設計工作的正常開展;再者,如果平臺一旦崩潰需要還原,則至少需要1天以上才能恢復,勢必嚴重影響正常的設計工作;最后,該系列船服務器數(shù)據(jù)存儲空間將滿,設計數(shù)據(jù)若無法按需及時遷移至其他服務器,便需要重復開展設計工作,導致工作效率低下。
基于上述問題,迫切需要開展基于三維體驗平臺的系列船設計數(shù)據(jù)備份方案技術研究,突破數(shù)據(jù)備份的關鍵技術,實現(xiàn)系列船按需備份,提升訪問性能,重復利用原有設計數(shù)據(jù),從而提升系列船的設計效率。
三維體驗平臺主要采用C/S+B/S的混合系統(tǒng)架構,C/S模式采用標準的TCP/IP協(xié)議,用于設計、開發(fā)、仿真流程及制造生產(chǎn)等;B/S模式采用標準的HTTP協(xié)議,能夠更好地同其他系統(tǒng)進行信息交互,主要用于建立工程、用戶、分配權限等。整個系統(tǒng)由以下多個服務器組成:MCS應用服務器、數(shù)據(jù)庫服務器(DB)、分布式文件服務器(FCS)、全文搜索服務器(FTS)、許可服務器等,參見圖1。各服務器之間相互獨立,便于擴展,并能分散系統(tǒng)運行壓力,提高多用戶同時在線操作的效率。
圖1 三維體驗平臺系統(tǒng)架構
三維體驗平臺數(shù)據(jù)訪問流程是先訪問應用服務器(MCS),由應用服務器訪問3D數(shù)據(jù)檢索服務器(3DX)或者全文檢索服務器(FTS)。其中前者用于加載輕量化模型(對應客戶端的“瀏覽”功能),后者用于加載完整的模型(對應客戶端的“打開”功能)。之后,3DX或者FTS訪問數(shù)據(jù)庫服務器(DB)和文件服務器(FCS)以獲得需要的數(shù)據(jù)來向用戶顯示模型。三維體驗平臺整個數(shù)據(jù)訪問流程如下頁圖2所示。
圖2 三維體驗平臺數(shù)據(jù)訪問流程
整個三維體驗平臺的數(shù)據(jù)類型主要由基于產(chǎn)品生命周期管理(Product Lifecycle Management,PLM)的 PLM關鍵參考(PLM Core Reference)、PLM關鍵實例(PLM Core Instance)、PLM關鍵表現(xiàn)參考 (PLM Core Rep Reference)、PLM關鍵表現(xiàn)實 例(PLM Core Rep Instance)、PLM端 口(PLM Port)、PLM連接(PLM Connection)6種類型和集成(Aggregation)、實例化(is Instance of)、指向(Points to)等3種關系組成。這6種類型和3種關系信息全部存儲在數(shù)據(jù)庫服務器(DB)中,三維模型信息則以二進制流信息(Stream)的方式存儲在FCS服務器對應的存儲空間(Store)中,其中兩者以指向關系(Points to)關聯(lián)。
整個三維體驗平臺的DB數(shù)據(jù)庫中,系統(tǒng)默認有6個卷(Vault),用于儲存不同對象的數(shù)據(jù),可以用list命令顯示所有的卷,包括vplm、vplm_archive、SIXW、eService Administration、eService Sample、eService Production。其中名字為vplm的卷應用最廣,主要用于存儲胖客戶端三維模型等對象數(shù)據(jù),名字為eService Administration的卷主要用于存儲平臺自帶的系統(tǒng)類型、規(guī)則等對象數(shù)據(jù)。用戶可以創(chuàng)建自己的卷來管理不同的設計數(shù)據(jù)。
這6個卷在數(shù)據(jù)庫表空間中對應6個表,其中630CF2B3就是對應的vplm。此外,在整個三維體驗平臺的DB數(shù)據(jù)庫中,所有對象的屬性存儲信息都是以字符型(Bool)、文本型(String)、數(shù)字型(Int)、字節(jié)型(Binary)等變量表組成,因此字節(jié)型的變量對應的有6個表,如圖3所示。在CATIA端,文本型、數(shù)字型等屬性變量是我們經(jīng)常接觸到的,如:零件名字(Name)屬性就是存儲在對應的文本型表,零件重量(Weight)屬性就存儲在對應的數(shù)字型表中,我們后續(xù)操作及驗證主要就是針對這些表。
圖3 數(shù)據(jù)庫表
整個三維體驗平臺FCS文件數(shù)據(jù)庫中,系統(tǒng)默認有3個存儲空間(Store),用于儲存不同零件對象的三維外形尺寸(3DShape)數(shù)據(jù),可以用list命令顯示所有的存儲空間,分別為Image Store、STORE、plmx。其中名字為plmx的存儲空間應用最廣,主要用于存儲胖客戶端三維模型的文件,用戶也可以創(chuàng)建自己的存儲空間。對應在實際服務器上,每個存儲空間對應一個文件夾。每個存儲空間下包含很多子文件夾,這些文件夾根據(jù)一定的規(guī)則組進行文件存儲。
通過平臺上述原理可知,三維體驗平臺的設計數(shù)據(jù)的主要有兩部分組成:一部分是FCS文件服務器,用于存儲零件的三維外形尺寸信息;另外一部分是DB數(shù)據(jù)庫,用于存儲對象屬性信息。兩者通過數(shù)據(jù)庫表中指定字段進行關聯(lián)。
依據(jù)上文分析可知,目前三維體驗平臺無法按照不同系列船來配置不同的文件存儲位置和數(shù)據(jù)庫表,所有系列船設計數(shù)據(jù)都是混合存儲,也無法選擇某個指定工程號進行有選擇性的備份。因此本文根據(jù)三維體驗平臺的系統(tǒng)框架及設計原理,確定系列船設計數(shù)據(jù)備份方案為:先全盤備份所有系列船設計數(shù)據(jù),然后刪除其他無用的系列船設計數(shù)據(jù),只保留需要備份系列船的設計數(shù)據(jù)及STD標準庫設計數(shù)據(jù)。這需要滿足一個前提條件,即需要備份的系列船設計數(shù)據(jù)跟其他系列船工程無關聯(lián)關系。假設某正式服務器中有多個系列船工程號(包括2600、2601等系列船工程號和標準庫工程號STD),如需要備份2600船設計數(shù)據(jù),則需將所有FCS文件服務器中的數(shù)據(jù)和DB數(shù)據(jù)庫先備份,然后根據(jù)需要刪除2601等系列船的設計數(shù)據(jù),最終只保留2600、STD等工程設計數(shù)據(jù)。根據(jù)上述方案,我們從以下兩個層面實施。
每型系列船必須要有1套備份服務器相匹配,如果按照正式的生產(chǎn)環(huán)境來部署,每套環(huán)境起碼需要3臺物理服務器。這個硬件成本過高,企業(yè)難以承擔。因此根據(jù)備份服務器使用人數(shù)少且使用不頻繁等特點,按照三維體驗平臺系統(tǒng)架構要求,將MCS應用服務器、DB數(shù)據(jù)庫服務器、FCS文件服務器等所有服務器全安裝于1臺服務器上,我們稱之為All-In-One服務器,而且該服務器還可以使用虛擬機來部署(見圖4)。其優(yōu)點是數(shù)據(jù)維護工作量小,備份還原操作簡便,又不占用太多物理服務器硬件資源。如果企業(yè)后續(xù)再次獲得該系列船的設計訂單,則可快速搭建一套正式的生產(chǎn)環(huán)境,把All-In-One服務器中工程數(shù)據(jù)全部拷貝至新環(huán)境,就能滿足實際設計需求。
圖4 All-In-One服務器
若要刪除某系列船的所有設計數(shù)據(jù),需要通過以下2個步驟進行:
(1)刪除3DShape對象
以管理員角色登錄平臺MCS服務器,其后臺管理工具提供手工刪除對象功能,選中對象,點擊“刪除”菜單,即可刪除所選對象。然而,實際系列船工程下面的3DShape數(shù)量比較多,甚至可能多達幾十萬個,手工選擇刪除操作相對耗時。此時,可通過編寫MQL命令中tcl程序來實現(xiàn),程序會自動刪除滿足條件(如系列船工程號為2601) 的所有3DShape。該MQL命令可以BAT批處理方式運行,并可在MCS服務器設置為定時自動運行。
(2)刪除其他對象
同刪除3Dshape對象相同,可通過臺管理工具手工刪除其他,也可編寫MQL命令來刪除對象,其核心代碼為“delete bus * * * where project=='2601' && vault==’vplm’;”。此處,以“*”號代替具體類型,表示刪除卷vplm下所有工程號為2601的對象。該MQL命令同樣可以BAT批處理方式在MCS服務器端運行。
為了測試驗證結果的準確性,系統(tǒng)管理員在測試服務器上搭建1套與正式服務器完全相同的應用環(huán)境,其中FCS文件服務器和數(shù)據(jù)庫DB在初始狀態(tài)下也保持相同。
首先,在測試服務器上按上一節(jié)進行3DShape對象刪除以及其他對象刪除這2步操作:
(1)執(zhí)行3DShape對象刪除后,數(shù)據(jù)庫中文件表行數(shù)從2 905 658個減少至2 333 813個,減少了57萬多個文件;另外Store文件夾中的數(shù)據(jù)量從427 G減少到324 GB,減少103 GB。
(2)執(zhí)行其他對象刪除,以數(shù)據(jù)庫表LXSTRING_630CF 2B3為例說明,執(zhí)行此步操作前,該表有記錄149 856 280條,執(zhí)行對象刪除及重新整理數(shù)據(jù)庫表記錄命令后,該表的記錄減少至104 732 544條,共計減少4 500多萬條記錄。
其次,用戶以領導角色進入2601工程,搜索2601工程的所有對象,查詢結果為空,說明2601工程所有的設計數(shù)據(jù)已經(jīng)全部刪除。
最后,用戶以領導角色進入2600工程,選擇搜索2600工程的設計數(shù)據(jù)。該設計數(shù)據(jù)正常存在,設計模型能夠正常打開并正確顯示,圖5所示為2600工程部分船體模型。經(jīng)實際測試,2600工程三維模型數(shù)量未缺失,并能正常使用。
圖5 2600工程部分船體模型
經(jīng)過上述步驟的測試驗證,可以得出結論:該系列船設計數(shù)據(jù)備份方案可行,可在實際環(huán)境中部署應用。
此備份方案還可以應用于STD基礎庫分拆、多系列船多服務器并行以及三維體驗平臺大版本升級(如從2016x升級至2019x)等多個方面,擴展性較好、應用范圍廣,為解決三維體驗平臺硬件資源問題提供良好補充,也為原有設計數(shù)據(jù)重復利用,進一步提升系列船的設計效率提供技術支撐。