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