黄德龙
(云南华电金沙江中游水电开发有限公司梨园发电分公司,云南 丽江 674100)
水电厂的工作内容较为繁琐,不仅要监测自动化系统的运行情况,同时还需要考虑环保等多个方面的因素,因此管理起来具有一定的难度。而数据同步系统的运用则有效解决了这些问题,其能够使水电厂的运行更加高效,目前该系统的应用范围也在逐步扩大。
数据同步系统是基于XML的异种数据库交换系统。通过XML结构实现字段名与数据的描述和映射,根据映射关系组织源数据,进而实现数据交换。该系统使用C/S架构,支持Oracle、SQL Server、Mysql及达梦数据库,具有强大的兼容性,执行效率极高,并且可针对数据同步的可靠性系统实施多种应急方案,融入手动补传功能,在出现停电等不可抗逆因素的状况下,不会出现漏电同步及同步错的现象,进而有效保障了同步数据的完整性和准确性。
数据同步系统主要包括3种关键技术,分别是数据库连接技术、XML技术和作业调度技术。首先是数据库连接技术。它是Java与SQL的结合体,但该技术的编程接口完全独立,可编写完整的数据库应用程序,并且数据保存在多种不同的数据库管理系统中,不受数据存储格式的限制。其次是XML技术。该技术是一种简单灵活的文本格式的可扩展标记语言,能够在Web或其它多种数据源间快速完成数据的交换。另外,该技术的结构性较为突出,可定义多种不同类型的数据,并且在应用该技术时用户的自主性较强,可根据自身的需求定义不同的语言,并且XML可提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。最后是作业调度技术。该技术是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单强大的机制。该技术中设定了明确的时间间隔,开发人员可以此为依据来完成调度作业,并且还能将作业与各种不同类型的触发器进行连接,进而形成多种关系。另外,整合了作业调度技术的应用程序,不仅可以重新使用来自不同事件的作业,还可为一个事件组合多个作业。
数据同步系统是针对局域网内关系数据库之间数据同步和交换需求而开发的通用数据同步平台,源数据库和目标数据库的表结构无关,能够支持复杂的数据同步逻辑,如多表对多表的数据同步、字段转移同步及需要公式计算得出数据的同步,并且系统可支持条件过滤,能够自动过滤掉不需要同步的数据。另外,系统还支持直接的SQL语法关系的解析。
库表配置指初始阶段数据源及不同表格之间关系的配置,下面就对这2种不同类型的配置进行详细介绍。
(1)数据源配置。数据源配置用于管理数据库的基本信息,包括源数据库以及目标数据库的名称、IP地址、用户名、登录口令等,同时还可完成对数据内容的新增、删除与修改。另外,在增加新的内容或对原数据信息进行修改后,首先需要进行检查,确保其中不存在任何问题,进而在此基础上进行连接测试,如果连接时显示成功,才能加以确认。如果存在问题则需要继续进行修改,只有这样才能实现有效连接,并且能够完成信息的缓存,之后在处理类似的关系配置时就可直接引用。另外,如果数据库中的数据源被某一关系引用,则不能随意进行删除或修改处理,否则就会使交换过程中数据库连接的完整性受到影响。
(2)关系配置。关系配置用于配置某1张源表至1张或多张目标表的映射关系,即源表字段至目标表字段之间对应的转换规则,在具体配置的过程中,可新增关系,同时也可进行删除与修改,如果存在映射关系的2个表格的类型相同,则无需逐一进行配置。另外,针对字段配置关系可采用4种不同类型的插入方式:第一是直接插入。是指可直接将源表信息进行转换,并录入目标表格中。第二是序列插入。如果目标表格在序列方面有明确的要求,则需要以此为依据完成插入操作。第三是随机数插入。是指在插入过程中需要按照系统所生成的字符为依据,通常情况下,系统中包括32位字符。第四是主键关系插入。即依据不同字段间的映射关系,并按照相应的次序逐步进行处理。如果已经完成配置,则可直接导入,否则可能出现重复的问题。以上所提到的插入类型主要针对的是以字段为主键的情况,如果在实际操作过程中,字段以非主键的形式呈现,除了运用直接插入方法外,还可选择特殊关系插入与自定义插入,特殊关系插入是指主键插入;自定义插入支持固定值插入,主要填入需要插入的固定值就能够避免目标字段产生变化。字段配置关系中提供条件配置功能,只要为原源字段添加同步条件,不符合条件的数据记录就不会同步至目标表中。系统支持添加1个或多个过滤条件,但需要选择连接符AND或OR。
关系配置中必须选择数据交换的类型。具体来说,主要包括3种同步类型,分别是实时同步、定时同步与手动同步。实时同步是指根据数据表的映射关系,在源表上自动建立触发器,进而保证新增、删除及修改的数据都能够实时且准确地同步到目标表中。定时同步是指对于不能破坏数据库结构及源表,即不能建立触发器的情况提供实时同步功能。手动同步针对的是一些较为特殊的情况,即可以手动筛选源库中的某张数据表,并根据需要将部分数据同步至目标表中。这3种不同的数据类型均能够实现如下操作,即如果某条数据记录的同步操作为INSERT,而目标表中已经包含该记录主键值的数据,那么实际操作将为UPDATE类型。
(1)实时同步。如果同步类型为实时同步,系统则会自动建立触发器,在此过程中主要依据的是关系配置中的内容。如果源表数据产生变化,在任务表格中则会记录改变后的内容,之后系统可自动完成扫描处理,进而在此基础上筛选与拼接数据,最终以SQL语句的形式呈现,这时就可直接在目标表格中进行处理。另外,如果在操作过程中所选择的插入类型为随机数或序列,目标表格则会自动搜索主键值,这样之后在修改数据时就会更加便利。
(2)定时同步。定时同步的特点在于无需建立触发器,其只要完成字段的选择,并设置好间隔时间即可。在任务执行过程中,需要以启动时间作为基本依据,进而在此基础上进行时间的追溯,进而确保相应时间段内的数据信息能够完成同步处理。在任务结束后,可保存数据处理的过程和结果。如果在处理过程中存在符合要求的条件,可直接生成SQL语句,并在目标表格中进行处理,这样便可省去许多的操作环节。另外,该类型的同步方式在启动过程中需要进行手动操作,但之后的环节就可由系统自动完成。
(3)手动同步。如果同步类型为手动同步,首先需要完成过滤条件的设定,如果条件较多则需要运用连接符,拼接完成的SQL查询语句会直接显示,这时就可复制粘贴至数据库中执行,并检验查询结果。另外,可在左下表的列表中,观察到需要同步的数据;触发同步后,可将筛选出的数据记录,根据关系配置生成SQL语句,并在目标表中执行。手动同步是一次性的触发操作,只能对目标表格进行INSERT或UPDATE操作。
在查询日志的过程中,需要根据同步类型加以选择。如果所要查看的是实时同步日志,需要从临时任务表中获取信息,并展示实时任务的操作类型、源表以及目标表、完成时间及状态等,并且需要满足修改、添加及删除等查询功能。另外,还应确保系统能够根据源表名或目标表名、执行状态进行查询。同时还需要对显示记录的条数进行一定程度的限制,并且确保在执行任务失败时,可保存为日志,便于日后查看。此外,还可手动删除已经执行的任务记录,如果主键关系表中存在随机数或序列插入的主键对应关系,可填入需要删除的天数,即设置删除那段时间间隔内插入的主键关系并手动进行删除。如果所要查看的是其它2种同步类型的日志,则由系统根据配置条件自动查找需要同步的原表数据,而不需要任务表存储相关的数据去变更记录,因此可实时显示相关的过程信息。例如本次同步符合条件的数据记录数、实时同步的记录数等,便于用户查看实时记录或历史同步记录。
总之,随着数据同步系统在水电厂自动化及其他领域的逐步应用,使得异种数据库的异种数据的平滑流动变得更加简单,进而实现了跨数据库的数据同步。因此,目前数据同步系统的实用价值也越来越高,但在应用数据同步系统的过程中,还必须了解系统的同步类型,进而以此为依据,查看相对应的日志。
参考文献:
[1]刘千,纪菁,向南.浅谈数据同步系统在水电厂自动化中的具体应用[J].水电厂自动化,2017,38(2):16-18.
[2]饶婷.智能水电厂数据交互平台的设计与实现[D].电子科技大学,2013.