船舶管理系统船岸数据同步机制分析
2015-10-21肖金赫邓义斌
肖金赫,邓义斌
(1.中国船级社武汉分社,武汉430022;2.武汉理工大学能源与动力工程学院,武汉430063)
船舶管理系统船岸数据同步机制分析
肖金赫1,邓义斌2
(1.中国船级社武汉分社,武汉430022;2.武汉理工大学能源与动力工程学院,武汉430063)
针对船舶管理系统网络特点及其独特的分布式数据库同步需求,分析船岸数据同步更新机制,以数据同步组件方式,从数据采集、网络数据交互模型、数据缓存、数据同步流程等方面设计和实现船岸数据同步。通过软件技术解决数据同步的可靠性问题,为船舶管理系统的数据同步提出可行的解决方案。
船舶管理系统;分布式数据库;数据同步;触发器
现代船舶电气自动化程度越来越高,已从单一设备、子系统向全船综合自动化发展[1],部分设备和船舶的整体状况已能够通过网络实现岸基自动管理。船舶岸基自动化管理有助于航行安全,包括船队的管理协调、船舶事故原因分析、船舶设备状态监控[2]、船舶的维修保养指导,以及行政主管部门的监管等;有助于提高航运企业的经营效率,降低生产成本。由于水运的特殊性,其通信不像岸上通信方便、稳定和同步,并且船舶具有的分散性、流动性及船岸分离等特点,使多数船舶管理系统采用分布式数据库的架构。
构建一个数据库首先要确定该船的主要功能和主要技术参数[3],每一艘船舶都是分布式数据库系统中具有个性的独立的数据库。而分布式数据库的同步是一项复杂的系统工程,在数据的采集、打包、传输、解包及更新等步骤中面临着一致性、安全性、高效性等特殊要求[4-5]。一些商业数据库厂商提出较为通用的数据库复制方案,如基于电子邮件的同步方式、基于FTP的数据同步方式及数据同步组件方式,等[6],但仍无法满足用户的多样性需求[7]。目前,分布式数据库通信方式以移动载体数据库和无线网络应用为主。薛明刚等[8]将基于电子邮件的船岸数据同步方式用于船舶燃料监测系统,但是存在邮件丢失和邮件的发送和接收顺序不一致的情况,使数据同步变得非常复杂。因此需要针对船舶管理系统较为独特的船岸同步需求,设计灵活方便的数据同步组件,使船舶管理系统从岸基版扩展到船舶版,实现完整的船岸一体化船舶管理系统。
1 需求概述
1.1 分布式数据库系统网络架构
大多数船舶管理系统采用分布式数据库系统网络架构,见图1。
图1 分布式数据库系统网络架构
总库数据服务器是岸基版船舶管理系统的数据中心,汇集整个系统的数据。各分库布置在相应的船舶上,只管理与本船相关的数据信息。不管是船舶版还是岸基版的船舶管理系统,只对本地数据库进行操作,通过总库与各分库的数据同步来完成系统的数据更新。这种架构优点突出[9]。
1.2 船舶管理系统数据库的技术特点
1)为方便进行船岸数据交换,保持船端和岸端数据库结构的一致性,并且把船岸业务数据在数据表层面上分离,把船舶版的管理数据与岸基版的管理数据分别设计在不同的数据表中。
2)为保持数据一致性同时减小数据传输量,在数据交换时,船舶分库的变更数据全部更新至岸基总数据库,而仅把总库中与该船相关的数据更新至相应的分库。
1.3 数据库之间的网络状况特点
总库所在网络有固定IP影射到外网。分库所在网络为动态分配IP,无固定IP,环境不稳定,但都可以保证有连接机会。
1.4 数据同步功能要求和特点
1)记录分库的数据变更,定时同步分库变更数据到总库。
2)记录总库的数据变更,将总库变更数据同步到相应的分库。总库并不是把全部变更数据同步到分库,而是把与该分库有关的变更数据进行同步。
3)各分库之间不需要进行数据同步。
4)鉴于船岸网络连接的不稳定,必须采用一种可靠的工作机制,保证同步数据的正确性。
1.5 设计程序框架
根据数据库部署的网络结构,采用C/S程序架构,在总库所在网络的外网服务器部署总库同步服务端,在分库所在的网络部署分库同步服务端。为了方便开发和维护,把数据同步程序集成在一起开发,形成一个同步服务程序,通过配置文件来决定该同步服务程序是分库还是主库,方便更新和维护。
1)数据库自动同步配置工具。同步服务配置程序,负责定制同步任务和网络通信的基础参数。
2)数据同步服务程序。负责查询本地数据库,将变更数据发送到远端同步程序,同时负责把远端发来的数据写入数据库。
3)上传数据任务。分库上传到总库的查询任务,任务在分库配置程序定义。
4)接受数据任务。分库接收总库数据的查询任务,任务在分库配置程序定义,通过网络发送到总库服务端,总库服务端将会依据这个查询任务来查询要同步的数据,发送给分库服务程序。
5)分库数据时间戳。分库只会从总库下载这个时间以后的数据。
6)同步服务网络配置参数。
7)本地修改缓存。从网络端传来的数据,不会直接写入数据库,先存入本地修改缓存,只有全部网络数据交互完毕才会把本地修改缓存数据写入数据库。
8)本地删除缓存。分库把数据传到网络的同时,会把这些数据写入本地删除缓存,待全部同步数据交互完毕才会执行对数据库的删除。
9)注册启动数据同步服务。
10)停止反注册数据同步服务。
11)异常日志。
2 数据同步方案
2.1 数据采集
采用差异同步法得到最小数据变动集,进行数据同步可以减小传输数据量[10]。利用数据库自身的数据触发器功能来实现数据库的变更记录,对每张表建立一个变更记录表,变更记录表比原表多两个字段。
1)字段一,标识本次数据操作是Insert还是Delete,对于数据库记录的上传数据操作,数据库实际上是先执行Delete,然后执行一次Insert,因此,一条记录的上传数据操作,将会产生2条记录到变更记录表。
2)字段二,数据类型为datetime,记录数据的变更时间。
对原表进行的所有数据操作将会记录到相应的变更记录表中。
2.2 数据交互模型
鉴于网络传输数据的不稳定性,分库与主库通过网络交互数据时,并不直接写入数据库,而是存入本地缓存文件,当网络数据交互完毕,对数据库的操作无异常发生时,才是一次有效的同步。主库与分库的网络交互模型见图2。
图2 主库与分库之间的数据同步模型
2.3 数据库写入缓存设计
数据缓存分为2类,分别为修改缓存和删除缓存,两者结构完全相同,其作用如下。
1)从远端网络发来的同步数据记录,这些记录将会写入本地数据库的原始表中,因此把这些数据写入本地的修改缓存文件。
2)本地备份表的变更记录,在发送到远端服务器成功后,需要写入删除缓存文件。
2.4 数据同步流程设计
总库同步服务程序启动后,就启动网络监听线程,等待分库发起同步连接。总库同步工作流程见图3,有3类线程。
1)等候网络连接线程。等待分库的服务程序接入。
2)接收和发送同步数据线程。与分库同步线程进行交互,传递和接收同步数据,同时把数据写入本地缓存文件。
3)枚举缓存线程。枚举本地数据缓存文件,写入数据库,支持断点写入。
图3 总库同步服务工作流程图
分库同步工作流程见图4。
分库同步服务程序启动后,分库同步申请线程将定时发起,定时时间间隔由用户设置。线程首先枚举修改缓存和删除缓存,写入数据到数据库;然后向服务器发起连接,连接成功后查询本分库的数据变更集,发到服务器端,在收到服务器端写入缓存完毕的反馈后,将本地数据变更集删除。至此,分库数据向总库更新传输过程已完成,将数据更新到总库服务器的工作由服务器端的枚举缓存线程完成。此后分库同步服务将向总库服务器申请将总库有关本分库的数据更新同步到本分库中。首先将该分库的数据同步配置文件中下载任务列表发送到总库服务器。对于一些所有分库都需要的公共基础数据,可以不指定查询条件;而对于本船相关的数据,可以在下载任务列表中将船舶作为查询条件,由总库服务器从数据库中查询出相关数据形成数据包,发送到相应的分库,由分库同步服务线程写入数据库,从而完成主库与分库之间的同步数据传输。
图4 分库同步服务程序工作流程
由于各分库数据同步时间不一致,而且总库上一些公共数据变更,每个分库都需要进行同步,所以不能对服务器端的变更记录表进行删除操作,因此引入上次下载时间戳,每次同步后,在分库保留一个时间戳,这个时间戳记录该分库取得服务器变更数据的最后时间,当下次同步查询数据时,把上次时间戳反馈给总库服务端,总库服务根据分库的时间戳,过滤出该时间以后的变更数据进行同步。
3 数据同步的可靠性论证
1)数据传输。构建本地缓存能有效避免由于网络不稳定造成数据丢失引发的数据不一致问题。通过网络交互逻辑来保证正确有效的缓存才是一次完整的同步数据传输操作,从而解决网络不稳定可能引发的问题。
2)缓存数据写入数据库。从缓存向数据库写入数据时,记录写入的断点。一旦数据库服务器断电或应用程序异常崩溃,下次程序启动时,可以接续断点向数据库写入数据,从而保证数据库的数据完备性。
3)数据冲突。由于船岸数据表分离,业务流程产生的船岸数据不会发生冲突;对于一些公共基础数据,全都由总库在负责管理,同步到各分库也不会发生冲突,而各分库的专用数据都有船舶编码作为主键,也保证不会发生数据冲突。
4 结束语
该数据同步更新机制的实时性受制于网络环境,但只要有可用网络,数据同步就会自动进行,并且能保证数据的一致性和完备性,这非常适用于实时性要求不那么严格的船舶管理等相关业务,从而为实现完整的船岸一体化船舶管理系统奠定基础。
目前该技术已在长江上航行的某些船舶上成功应用,其数据同步效果良好。
[1]刘沿阳,邵 旻.舰船综合自动化系统的现状与发展趋势[J].船舶工程,2006,28(2):63-66.
[2]吴志东,杨士喜.基于3G无线通信网络的船舶远程监控系统研究[J].船海工程,2011(5):16-19.
[3]张茴栋,何炎平.基于EXCELL的ACCESS起重船数据库的实现[J].船海工程,2010(3):5-9.
[4]IQBAL H,MUHAMMAD M A.SQL query based data synchronization in heterogeneous database environment[C]∥2012 International Conterence on Computer Communication and Informatics(ICCCI2012),Jan,10-12, 2012,Coimbatore,INDIA,2012:1-5.
[5]ZHANG Y H,KANG P.The data synchronization server design based on middleware technology[C]∥2010 2nd International Conference on Computer Engineering and Technology,2010(3):462-466.
[6]姜亦学.分布式数据库系统同步技术研究[D].长春:长春理工大学,2008.
[7]LOU X A,CHEN J,YUAN P.The design and implementation of data synchronization mechanism in the food tracing system[C]∥Advances in Computer Science,Environment,Ecoinformatics,and Education-International Conference 2011,Part V,Communications in Computer and Information Science,2011:175-179.
[8]薛明刚,徐承飞,赵卫丽,等.船岸一体化数据同步的实现[J].中国修船,2011,24(1):21-24.
[9]闵 媛,熊前兴.移动数据库数据同步技术研究[J].武汉理工大学学报:交通科学与工程版,2008,32 (2):156-159.
[10]孙广雨,山 岚.数据同步中差异数据捕获的设计与实现[J].北京化工大学学报:自然科版,2011,38 (3):125-128.
Data Synchronization Mechanism for Ship Management System
XIAO Jin-he1,DENG Yi-bin2
(1Wuhan Branch of China Classification Society,Wuhan 430000,China; 2 School of Energy and Power Engineering,Wuhan University of Technology,Wuhan 430063,China)
According to network architecture features of ship management system and its unique requirements of distributed database synchronization,the ship-to-shore data synchronization updatemechanism is researched.Bymeans of data synchronization components,the ship-to-shore data synchronization is designed and realized in aspects of the data acquisition,network data interactionmodel,data caching and data synchronization process.The reliability of data synchronization is ensured by software technology,offering feasible solutions to the data synchronization of ship management system.
ship management system;distributed database;data synchronization;trigger
10.3963/j.issn.1671-7953.2015.03.030
U692
A
1671-7953(2015)03-0128-04
2015-02-09
修回日期:2015-03-10
交通运输部科技项目(2012lg0122)
肖金赫(1977-),男,硕士,工程师
研究方向:船舶电气系统检验
E-mail:jhxiao@ccs.org.cn