大型实时系统的原始数据的记录、收集、管理、分析和解释一直是一项十分重要的内容。禁核试北京国家数据中心是我国禁核试核查相关监测数据的收集、存储、分析和交换枢纽,是我国禁核试核查监测系统的数据处理中心。国家数据中心日常性工作是处理来自国内外地展、水声、次声和核素台站的监测数据,其中地震、水声、次声数据为实时传输的时序数据。来自国际监测系统(IMS)和其他监测机构的台站数据通过国家数据中心的连续数据传输子系统接收,最终以CSS 3. 0 ( Center for SeismicStudies)的数据格式进人运行系统。CSS是原型国际数据中心(PIDC)在进行GSETT试验时创造的一种格式,由二进制的原始数据文件和数据库表wfdisc相关记录两部分组成。在CTBT研究中常用的地震波形分析软件Geotool、国际数据中心数据自动处理系统等就是使用CSS格式数据文件的,所有进入运行系统的原始数据都需进行归档存储以便科研人员使用、检索和拷贝,同时在运行文件系统和运行数据库中只保留有限天数的数据记录,以保证运行系统稳定高效地运行。本文所讨论的数据归档机制每天自动存储和归档国家数据中心所有要归档的数据,同时保证用户能有效检索已存储到磁盘阵列上的数据,在确认数据正确归档后,自动清除运行文件系统中的数据文件和运行数据库表wfdisc相关记录。数据归档机制是基于Solaris系统,数据库采用Oracle,主体程序用标准C语言和perl语言编制,通过监控数据库表interval的state属性来了解归档处理的状态。
1 总体结构及软件模块功能
国家数据中心数据归档机制管理数据文件从操作文件系统到大型存储文件介质的迁移,整个机制在确保数据的完整性的同时,需保证科研人员在以后的工作中能便利地进行数据检索。原始数据从运行文件系统拷贝到归档文件系统中,同时读出运行数据库中相应的关系数据表,更新表中反映文件位置的属性(目录路径、文件名和文件偏移量),将相关数据库记录写入到归档数据库系统中,且在对比数据无误的情况,删除运行文件系统中的数据文件,清除运行数据库中的表wfdisc和wfaux中相应的记录。我们当前定义把运行库接收到的十天之前的数据转移到归档库和文件服务器,在运行系统中保留20天的原始数据。
系统中可以归档的数据类型在数据库表arcl_data_type中定义,该机制可以被配置归档许多不同的数据类型,在系统中,可归档的数据类型为波形数据、IMS消息、放射性核素数据和阈值监控结果,目前,我们只归档了连续地震波形数据。
数据归档机制由PRIARC _ create, Archive, ManageInterval, GetData, MergeData,ReadWriteData,write_file, check_arch和del_archived程序实现其功能。其中PRIARQcre-ate,check_arch和del archived用pert语言编写,其余的程序用标准C语言编写。图1为数据归档机制的数据流图,反映了各个软件模块之间的关系,check_arch和del_archived为两个独立的程序,未在图1中显示。
图1数据归档机制数据流图
PRIARC-create为perl程序,主要功能是通过读取数据库表chan_groups表,为归档处理产生新的interval表的记录,设置interval表中的,fate属性为NEW。
Archive是整个归档机制的主程序,该程序进行初始化处理,读取参数文件,获得数据库查询。程序首先分析命令行参数,主要指获得特定的归档数据类型参数。Archive程序调用函数ManageInterval通过执行数据库查询来排队处理的时间间隔(interval), ManageInter-val更新interval表的state属性,使其从状态NEW更新到状态QUEUED。代表查询规则的数据库查询从参数文件中获得。
GetData函数循环每个状态为QUEUED的处理时间间隔,得到interval表中time和endtime属性,联合其他相关的数据库表,查询运行库中的rvfdisc表,从而可获得与待归档数据相关的数据库记录。如果GetData程序读取运行数据库失败,则程序中断,并且更新inter-vaL state属性为FAILED。该阶段的错误主要是由于参数文件中不正确的数据库查询所引起的,Archive程序调用函数GetData时,更新interval表的state属性为RUNNING,
获得待归档数据相关的数据库记录后,Archive唤醒软件模块MergeData,合并相邻的数据库记录并产生与归档数据相关的新的数据库记录。对于波形数据,可通过设置数据库表arch_data_type中的Merge_date属性来完成相应合并处理。如果同一台站同一通道的两个wfdisc记录是相邻的,则按照一定的规则合并数据库记录。
ReadWriteData写数据到归档文件系统中,并且增加与数据文件相关的数据库记录到归档数据库中。在实现过程中,ReadWriteIhta按照读出的运行数据库的相关记录,得到待归档数据的数据文件、文件偏移量和文件大小,拷贝数据文件到归档文件系统系统中,同时还将运行系统中许多小的数据文件合并成一个大的归档数据文件。在运行系统中,实时接收的台站数据由于各种原因,数据有可能中断,重新接收,故接人运行系统的数据为不规则长度的数据文件。在归档处理时,系统将波形文件归档成4个小时一个的数据文件,每个台站一天产生6个波形文件,同一天接收的不同台站的数据在同一路径下。如果在传输数据文件或在数据库写入的过程中出错,则Achive更新in-tern. state为FAILED,否则,更新为DONE。
checl_arch为perl编写的程序,它主要是比较运行系统与归档系统,确认归档系统中的数据文件和数据库记录与运行系统一致,如果成功运行,更新intern. state为VERFIED,否则更新为NO VERFIED。
de_archived程序用pert语言编写,通过查询归档库interval表,找出预设定del_days之前的已归档并确认的记录,利用该记录从wfdisc表中找出相应的记录,通过wfdisc表的字段dir和dfile找出相应的波形文件和路径,删除文件和数据库记录。程序完成后,更新运行数据库和归档数据库interval表中的记录,设置是state=' PURGED。
归档处理的每一步读更新interval表的state属性,用户图形界面WorkFlow读取interval表的state属性,并用不同的颜色表示不同的处理状态,用户可根据WorkFlow监控归档处理的状态。在归档处过程中,任何函数的失败,都将导致系统回滚到归档处理的原始状态,保证了数据的完整性。
2 数据库描述
数据库在数据中心归档机制中处于核心地位。在处理过程中,除了读待归档的数据文件相关的数据库记录,写相应的数据库记录到归档数据库外Archive还使用数据库识别、排队、跟踪数据归档处理,同时还使用数据库存储一些配置信息。
图2为归档机制所涉及到数据库表的实体关系图。如图2所示,wfdisc表中记录与数据文件相关的信息,sta和chan定义将要归档的数据。arch_data_type表中的datatype对应着interval表的class与name, interval关联多个数据库表,class和name用来识别和排队归档对象,time和endtime给出了处理时间间隔的上下限,state用于跟踪和排队处理时间间隔。chan__groups在wfdisc表的sta和than与interval的name和class之间建立联系。
图2 归档机制所涉及到数据库表的实体关系图
3 调试与建立
国家数据中心数据归档机制的建立在Solaris环境下,数据库采用Oracle8. 0,在目前的状态下,如果数据库为其他商业软件,程序报错并退出,如需应用到其他的数据库管理系统,需修改源程序,但改动不会很大。在运行中,我们使用UNIX cron后台守护程序按照时间表定期执行数据归档任务。Cron读取配置文件crontab并根据其中的内容进行工作,当前定义每天运行数据归档任务。在日常监控中,启动WorkFlow图形界面监控处理结果。如图3所示。
图3 WorkFlow图形界面
4 结束语
国家数据中心自建立数据归档机制以来,系统运行稳定。该机制归档子系统根据实际情况确定归档的时间间隔、存储介质、归档策略及日志记录,解决了原始波形数据的存储和有效检索历史数据的问题,该机制可为建立与国家中心数据处理系统类似的大规模实时信息处理系统时,解决历史数据存储和检索提供了有益的借鉴。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:一种数据归档机制的实现