馬江林,鄧樂富
(中國航發南方工業有限公司信息工程部,湖南株洲 412000)
產品數據管理(Product Data Management,PDM)是一種用于管理所有與產品相關信息的技術。該技術可以有效、實時且完整地管理從規劃到報廢處理整個產品生命周期中的各種數字化信息。具體包括零件信息、配置、文檔、計算機輔助設計(Computer Aided Design,CAD)文件、結構及權限信息等。PDM技術的出現大幅提升了產品的生產效率,故其被廣泛應用于機械制造業,尤其是航空發動機制造領域。在航空發動機研發的過程中,為了縮短周期,需要保證設計與制造部門之間的生產信息交流和實時共享,以便于及時獲取反饋信息來更改設計制造方案,從而進一步降低成本。
在航空發動機制造領域,PDM 系統能為管理、研發、設計和制造等部門建立并行化的便捷開發協作環境,涵蓋了航空發動機制造鏈的各個環節,并通過PDM 數據信息化的管理來提升生產制造效率。隨著產品信息的積累及型號的不斷更迭,存儲在PDM 中的數據量劇增,給傳統的數據存儲結構帶來了巨大的挑戰。當前航空發動機制造PDM 系統均采用關系型數據庫作為底層結構支撐,其無法對非結構和半結構化數據進行高效處理,且在處理大量數據流的高并發讀寫、高擴展性及高可用性等方面也存在諸多不足[1]。因此,有必要對PDM 數據存儲結構加以優化。
為了更高效、有序地處理產品數據信息,在已有的PDM 存儲結構基礎上,文中提出了一種新型非關系型數據庫(Not Only SQL,NoSQL)分布式數據存儲方案。
數據存儲是PDM 系統的重要核心,主要包括對工程數據與工程元數據的存儲。其中,工程數據指的是以文檔、工程、模型文件和音視頻等多種格式存在的非結構化數據;而工程元數據則是指對該產品工程資料的描述,如文件名、文件長度、文件類型、創建日期、版本及負責人信息和源代碼等具體數據[2]。該次分別從數據存儲結構優化以及數據查詢技術優化兩個方面來設計新型PDM 系統的數據存儲結構。
現階段PDM 系統均以產品結構樹為基礎來實現數據的信息管理,通過關系數據庫(Relational Database,RDB)和文件系統集成的方式完成圖文檔存儲。但由于RDB 未將文檔、圖片和工程信息加以區分就進行融合存儲,導致后續的讀寫難度增大,從而降低了工程效率。同時多種不同格式的數據整合后還占用了大量存儲空間,使得PDM 系統的效率也受到影響。
文中采用NoSQL 數據庫搭配Ceph 分布式文件處理模塊作為文檔數據存儲的結構。NoSQL 數據庫具有分類存儲、分布式應用和并行計算等優點,搭配PDM 系統可實現高擴展性及高可靠性的產品數據信息處理任務[3-6]。此外,在數據量規模較大的情況下,該數據庫的并發讀寫性能也較優。
Ceph 分布式文件處理模塊將產品圖文檔的元數據與其他數據分離并進行歸類[7-10],再通過結構化數據復制工具OGG(Oracle Golden Gate)將前者存儲在NoSQL 數據庫中,而后者及元數據的備份則存儲至企業的私有云中。數據存儲框圖如圖1 所示。

圖1 PDM數據存儲框圖
由于產品圖文檔的數據類型多樣、數據量龐大且無存儲規律,因此一般的數據庫難以滿足系統的實際需求。而所設計的存儲結構將Ceph 和OGG 技術相結合并運用到NoSQL 數據庫中。同時OGG 還可實現數據庫與私有云的實時同步,便于后續的數據抽取。
該技術方案既能完成PDM 系統的高效率存儲,又可以實現數據快速響應的高吞吐量讀取。NoSQL設置的地址數據庫存儲空間較大,能夠滿足海量存儲的需求。當文件較大時,還可以通過OGG 將存儲地址映射至私有云存儲,并將文件類型和地址數據存儲至NoSQL 數據庫中。當用戶需要調取歷史產品數據時,需要首先訪問NoSQL 數據庫,從中查找文件類型和云端尋址地址,然后通過OGG 獲取目標數據。該分布式存儲結構能夠有效優化存儲空間,精確分區存儲,從而提高數據庫的讀寫效率。
計算引擎Spark 是一種通用的可擴展大數據分析工具[11-13],其集批處理、實時流處理、交互式查詢與流計算于一體,避免了多種運算場景下需要部署不同集群所造成的資源浪費。通過Spark Streaming 算法實現分布式實時流式計算,該算法結合引擎核心(Spark Core)可實現數據的高速吞吐與實時抽取處理[14-16]。該次在采用NoSQL 數據庫存儲工程數據的基礎上,提出一種基于Spark 的分步查詢處理方法,通過分析并結合Spark 并行計算框架以及迭代思想,設計了算法的步驟與具體實現過程。
假設某產品的相關數據信息均已存儲至NoSQL數據庫中,包括航空發動機的編號(ID)和名稱(name)、文件種類(type)、尋址地址(address)等類型數據。選取上述信息作為查詢節點數據,設置信息數據集合A={ID、name、type、address},再通過OGG 將其從數據庫中提取出來并緩存至Spark Core 中。基于Spark Streaming 設計分步查詢Map 函數和Search函數。
1)Map 函數執行:對兩組產品數據進行Map 運算。通過該函數解析并提取數據,該算法流程框圖如圖2 所示。

圖2 基于Spark的Map函數流程框圖
通過Map 函數得到{Code、valuedata}。Code 表示數據的類型,位數為2 B。設置1X 為產品編號數據,2X 為產品名稱,3X 為文件類型,4X 為數據尋址地址。部分Code 數據類型的分配表,如表1 所示。

表1 部分Code數據類型分配表
2)Search 函數執行:對兩組產品數據進行Search運算。通過該函數尋址提取數據并實現數據重構。Search 函數輸入{Code、valuedata},解析該數組,移除標志位且抽取valuedata;同時抽取元數據地址并進行尋址;然后將數據重新整合重構,再將數據打包發送到OGG 中,進而傳輸給用戶。該函數算法流程如圖3 所示。

圖3 基于Spark的Search函數流程框圖
基于Spark 分步查詢處理技術和NoSQL 產品數據庫的PDM 系統,通過MapSearch 算法能夠快速地在大規模產品中實現高效率的選址、數據抽取和重構。為了驗證PDM 系統數據存儲新結構的可靠性,文中設置了實驗來進行驗證。
該次結合基礎環境設施搭建了實驗平臺,設置四組服務器和存儲磁盤。服務器的規格均為24 核、128 線程及128 GB 內存,型號為NF8480M6;且磁盤陣列有500 GB 容量,型號為DS200-N10。在服務器上,構建了NoSQL、Ceph 和Spark 的數據環境,其中Ceph 包含產品的編號節點、名稱節點、四個數據節點(文檔、CAD、pdf、工程)和元數據尋址地址。NoSQL 則由一個路由進程、兩個配置服務器與七個數據分存節點構成。
文中以CAD 視圖文件為例,首先通過實驗A 獲取不同航空發動機CAD 視圖文件在NoSQL 的分類處理時間、寫存時間及數據傳輸速度;然后通過實驗B 獲取CAD 視圖文件在RDB 的存儲和讀取時間,并將其與實驗A 的數據進行對比。
兩組實驗選取的CAD 視圖文件長度分別為300 kB、656 kB、1.08 MB、1.23 MB、2.33 MB、3.88 MB、4.89 MB、5.53 MB、6.03 MB、7.53 MB、9.68 MB、12.2 MB、14.4 MB、23.5 MB、30.2 MB、35.5 MB、38.8 MB、48.5 MB、54.4 MB 和60.0 MB。重復進行測試并統計分類處理的時間、對比二者的寫存時間和數據傳輸速度,結果如圖4-6 所示。

圖4 視圖文件分類處理時間

圖5 視圖文件寫存時間對比

圖6 視圖文件數據傳輸速度對比
從圖中可以看出,基于NoSQL 的分布式數據存儲結構更適合面向航空發動機的PDM 系統存儲,該結構的存儲效率和數據吞吐量遠高于基于RDB 的存儲結構。
同時設置實驗C,通過文中設計的基于Spark 的MapSearch 函數讀取上述存儲數據,并設置對照實驗D,采用文獻[1]中所述指標基于Hatoop 的數據查詢函數得到與實驗C 相同的存儲數據,進而獲得兩組實驗的讀取時間和信息重構完整性。通過對比所得的結果來評估二者的可靠性,具體如圖7-8 所示。

圖7 不同算法下數據讀取時間對比

圖8 不同算法下的數據重構完整性對比
由上述實驗結果可知,文中所提技術方案可以實現對產品數據存取的快速響應以及高吞吐量傳輸。相較于傳統的RDB 數據庫,其的平均寫存時間減少了約20%,數據的平均傳輸速度提升了約70%。此外,相比于文獻[1]所述方法的讀取時間也降低了41.6%,而數據重構完整性的平均值則為92%,由此可見該系統的性能較優。針對航空發動機制造中的工程數據存儲,所提方案能夠有效實現對海量數據的高效率存儲與實時高吞吐量讀取。
針對基于RDB 的PDM 系統已無法滿足產品大數據量存儲需求的問題,文中提出了一種新型的面向航空發動機制造PDM 系統的非關系型數據庫(NoSQL)分布式數據存儲技術方案,該方案可實現讀取數據的快速響應及高效存儲。通過實驗測試并結合文獻[1]所述的指標驗證了該方案的可靠性,因此可以將其運用到PDM 系統中作為存儲單元來協助航空發動機制造。