贾成军 孙昌风和 金 惠
(江南造船(集团)有限责任公司 上海201913)
有次序地改变船舶中某些参数而构成的组系船舶,称之为系列船。系列船设计数据在某些设计软件(如Tribon、AvevaMarine)中以文件数据库形式存储,可指定任意设计数据进行实时备份和恢复;而在三维体验平台中,设计数据的存储方式是Oracle数据库和文件服务器,属性类数据保存在Oracle数据库,三维模型类数据保存在文件服务器中。该存储方式与其他设计软件的不同之处在于所有系列船设计数据都是混合存储,这种存储方式导致设计数据量不断增加,每型系列船的设计数据量基本在300 GB左右。
以本公司之前的三维体验平台R2016x版本为例,其现已完成1.5型系列船设计工作,设计数据达430 GB,文件数量为300万个。随着设计数据量的快速增长,如果后续在此服务器上继续开展2~3型系列船设计工作,整个数据量将达到1 TB,从而给正常设计工作带来严重的影响。首先,客户端访问性能将不断降低;其次,从每天凌晨12点开始备份,每次备份需7~8 h,可能会影响第2天设计工作的正常开展;再者,如果平台一旦崩溃需要还原,则至少需要1天以上才能恢复,势必严重影响正常的设计工作;最后,该系列船服务器数据存储空间将满,设计数据若无法按需及时迁移至其他服务器,便需要重复开展设计工作,导致工作效率低下。
基于上述问题,迫切需要开展基于三维体验平台的系列船设计数据备份方案技术研究,突破数据备份的关键技术,实现系列船按需备份,提升访问性能,重复利用原有设计数据,从而提升系列船的设计效率。
三维体验平台主要采用C/S+B/S的混合系统架构,C/S模式采用标准的TCP/IP协议,用于设计、开发、仿真流程及制造生产等;B/S模式采用标准的HTTP协议,能够更好地同其他系统进行信息交互,主要用于建立工程、用户、分配权限等。整个系统由以下多个服务器组成:MCS应用服务器、数据库服务器(DB)、分布式文件服务器(FCS)、全文搜索服务器(FTS)、许可服务器等,参见图1。各服务器之间相互独立,便于扩展,并能分散系统运行压力,提高多用户同时在线操作的效率。
图1 三维体验平台系统架构
三维体验平台数据访问流程是先访问应用服务器(MCS),由应用服务器访问3D数据检索服务器(3DX)或者全文检索服务器(FTS)。其中前者用于加载轻量化模型(对应客户端的“浏览”功能),后者用于加载完整的模型(对应客户端的“打开”功能)。之后,3DX或者FTS访问数据库服务器(DB)和文件服务器(FCS)以获得需要的数据来向用户显示模型。三维体验平台整个数据访问流程如下页图2所示。
图2 三维体验平台数据访问流程
整个三维体验平台的数据类型主要由基于产品生命周期管理(Product Lifecycle Management,PLM)的 PLM关键参考(PLM Core Reference)、PLM关键实例(PLM Core Instance)、PLM关键表现参考 (PLM Core Rep Reference)、PLM关键表现实 例(PLM Core Rep Instance)、PLM端 口(PLM Port)、PLM连接(PLM Connection)6种类型和集成(Aggregation)、实例化(is Instance of)、指向(Points to)等3种关系组成。这6种类型和3种关系信息全部存储在数据库服务器(DB)中,三维模型信息则以二进制流信息(Stream)的方式存储在FCS服务器对应的存储空间(Store)中,其中两者以指向关系(Points to)关联。
整个三维体验平台的DB数据库中,系统默认有6个卷(Vault),用于储存不同对象的数据,可以用list命令显示所有的卷,包括vplm、vplm_archive、SIXW、eService Administration、eService Sample、eService Production。其中名字为vplm的卷应用最广,主要用于存储胖客户端三维模型等对象数据,名字为eService Administration的卷主要用于存储平台自带的系统类型、规则等对象数据。用户可以创建自己的卷来管理不同的设计数据。
这6个卷在数据库表空间中对应6个表,其中630CF2B3就是对应的vplm。此外,在整个三维体验平台的DB数据库中,所有对象的属性存储信息都是以字符型(Bool)、文本型(String)、数字型(Int)、字节型(Binary)等变量表组成,因此字节型的变量对应的有6个表,如图3所示。在CATIA端,文本型、数字型等属性变量是我们经常接触到的,如:零件名字(Name)属性就是存储在对应的文本型表,零件重量(Weight)属性就存储在对应的数字型表中,我们后续操作及验证主要就是针对这些表。
图3 数据库表
整个三维体验平台FCS文件数据库中,系统默认有3个存储空间(Store),用于储存不同零件对象的三维外形尺寸(3DShape)数据,可以用list命令显示所有的存储空间,分别为Image Store、STORE、plmx。其中名字为plmx的存储空间应用最广,主要用于存储胖客户端三维模型的文件,用户也可以创建自己的存储空间。对应在实际服务器上,每个存储空间对应一个文件夹。每个存储空间下包含很多子文件夹,这些文件夹根据一定的规则组进行文件存储。
通过平台上述原理可知,三维体验平台的设计数据的主要有两部分组成:一部分是FCS文件服务器,用于存储零件的三维外形尺寸信息;另外一部分是DB数据库,用于存储对象属性信息。两者通过数据库表中指定字段进行关联。
依据上文分析可知,目前三维体验平台无法按照不同系列船来配置不同的文件存储位置和数据库表,所有系列船设计数据都是混合存储,也无法选择某个指定工程号进行有选择性的备份。因此本文根据三维体验平台的系统框架及设计原理,确定系列船设计数据备份方案为:先全盘备份所有系列船设计数据,然后删除其他无用的系列船设计数据,只保留需要备份系列船的设计数据及STD标准库设计数据。这需要满足一个前提条件,即需要备份的系列船设计数据跟其他系列船工程无关联关系。假设某正式服务器中有多个系列船工程号(包括2600、2601等系列船工程号和标准库工程号STD),如需要备份2600船设计数据,则需将所有FCS文件服务器中的数据和DB数据库先备份,然后根据需要删除2601等系列船的设计数据,最终只保留2600、STD等工程设计数据。根据上述方案,我们从以下两个层面实施。
每型系列船必须要有1套备份服务器相匹配,如果按照正式的生产环境来部署,每套环境起码需要3台物理服务器。这个硬件成本过高,企业难以承担。因此根据备份服务器使用人数少且使用不频繁等特点,按照三维体验平台系统架构要求,将MCS应用服务器、DB数据库服务器、FCS文件服务器等所有服务器全安装于1台服务器上,我们称之为All-In-One服务器,而且该服务器还可以使用虚拟机来部署(见图4)。其优点是数据维护工作量小,备份还原操作简便,又不占用太多物理服务器硬件资源。如果企业后续再次获得该系列船的设计订单,则可快速搭建一套正式的生产环境,把All-In-One服务器中工程数据全部拷贝至新环境,就能满足实际设计需求。
图4 All-In-One服务器
若要删除某系列船的所有设计数据,需要通过以下2个步骤进行:
(1)删除3DShape对象
以管理员角色登录平台MCS服务器,其后台管理工具提供手工删除对象功能,选中对象,点击“删除”菜单,即可删除所选对象。然而,实际系列船工程下面的3DShape数量比较多,甚至可能多达几十万个,手工选择删除操作相对耗时。此时,可通过编写MQL命令中tcl程序来实现,程序会自动删除满足条件(如系列船工程号为2601) 的所有3DShape。该MQL命令可以BAT批处理方式运行,并可在MCS服务器设置为定时自动运行。
(2)删除其他对象
同删除3Dshape对象相同,可通过台管理工具手工删除其他,也可编写MQL命令来删除对象,其核心代码为“delete bus * * * where project=='2601' && vault==’vplm’;”。此处,以“*”号代替具体类型,表示删除卷vplm下所有工程号为2601的对象。该MQL命令同样可以BAT批处理方式在MCS服务器端运行。
为了测试验证结果的准确性,系统管理员在测试服务器上搭建1套与正式服务器完全相同的应用环境,其中FCS文件服务器和数据库DB在初始状态下也保持相同。
首先,在测试服务器上按上一节进行3DShape对象删除以及其他对象删除这2步操作:
(1)执行3DShape对象删除后,数据库中文件表行数从2 905 658个减少至2 333 813个,减少了57万多个文件;另外Store文件夹中的数据量从427 G减少到324 GB,减少103 GB。
(2)执行其他对象删除,以数据库表LXSTRING_630CF 2B3为例说明,执行此步操作前,该表有记录149 856 280条,执行对象删除及重新整理数据库表记录命令后,该表的记录减少至104 732 544条,共计减少4 500多万条记录。
其次,用户以领导角色进入2601工程,搜索2601工程的所有对象,查询结果为空,说明2601工程所有的设计数据已经全部删除。
最后,用户以领导角色进入2600工程,选择搜索2600工程的设计数据。该设计数据正常存在,设计模型能够正常打开并正确显示,图5所示为2600工程部分船体模型。经实际测试,2600工程三维模型数量未缺失,并能正常使用。
图5 2600工程部分船体模型
经过上述步骤的测试验证,可以得出结论:该系列船设计数据备份方案可行,可在实际环境中部署应用。
此备份方案还可以应用于STD基础库分拆、多系列船多服务器并行以及三维体验平台大版本升级(如从2016x升级至2019x)等多个方面,扩展性较好、应用范围广,为解决三维体验平台硬件资源问题提供良好补充,也为原有设计数据重复利用,进一步提升系列船的设计效率提供技术支撑。