基于触发器的数据采集方法
【专利摘要】本发明提供了一种基于触发器的数据采集方法,该基于触发器的数据采集方法包括:在数据采集的目标服务器上建立指向数据采集服务器的链接;获取该目标服务器中待采集信息的数据表;在该目标服务器上建立该数据表对应的触发器;当该数据表中新增数据时,该触发器触发数据采集行为,并通过该链接将该数据表中该新增的数据发送至该数据采集服务器。本发明通过触发器对数据进行采集,避开了从传输通道中取数据的繁琐与麻烦,具有处理简单、采集到的信息完整、信息类型易识别等优点。
【专利说明】基于触发器的数据采集方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种基于触发器的数据采集方法。
【背景技术】
[0002]针对一个分布式信息系统,该系统为一“黑盒”系统,内部的运行机制未公开,但管理人员还想通过获取系统中各结点间信息传递的概要信息,如信息源、信息目的地、信息内容、传递时间等,来分析系统间的交互行为,监控网络信息流向与动态情况。那么如何获取这些信息,即此处“数据采集方法”要关注的内容。
[0003]要想获得网络系统中所传输的数据,首先要看这些数据的传输手段是怎样的。据分析,数据的存储可能为文件,也可能为数据库记录。对应地,数据在传输时,可能暂存为文件,也可能暂存为数据库记录,那么,要想获得这些数据流信息,则可以考虑从数据传输通道中采集,或者从数据库记录中采集。
[0004]由于信息可能是分步传输的,数据的传输手段可能是多样的,经过同一传输通道的信息种类也可能是多样的,如果在传输层采集数据,会带来信息重新组合和识别的困难。
【发明内容】
[0005](一)要解决的技术问题
[0006]本发明要解决的技术问题是提供一种基于触发器的数据采集方法,以克服现有的数据采集方法实现较为复杂的缺陷。
[0007](二)技术方案
[0008]为解决上述技术问题,本发明的技术方案提供了一种基于触发器的数据采集方法,包括:
[0009]在数据采集的目标服务器上建立指向数据采集服务器的链接;
[0010]获取所述目标服务器中待采集信息的数据表;
[0011]在所述目标服务器上建立所述数据表对应的触发器;
[0012]当所述数据表中新增数据时,所述触发器触发数据采集行为,并通过所述链接将所述数据表中所述新增的数据发送至所述数据采集服务器。
[0013]进一步地,在数据采集的目标服务器上建立指向所述数据采集服务器的远程连接之前还包括:
[0014]在所述数据库采集服务器上建立数据采集表,所述数据采集表用于存储所述数据库采集服务器从所述目标服务器接收的数据。
[0015]进一步地,获取所述目标服务器中待采集信息的数据表包括:
[0016]获取所述待采集信息的数据项;
[0017]在所述目标服务器中的数据库中查找包含所述数据项的数据表,得到所述待采集信息的数据表。
[0018]进一步地,所述数据库为Oracle或者Sql Server。[0019]进一步地,将所述数据表中所述新增的数据发送至所述数据采集服务器之后还包括:
[0020]记录所述新增的数据已经采集完成。
[0021](三)有益效果
[0022]本发明通过触发器对数据进行采集,避开了从传输通道中取数据的繁琐与麻烦,具有处理简单、采集到的信息完整、信息类型易识别等优点。
【专利附图】
【附图说明】
[0023]图1是本发明实施方式提供的一种基于触发器的数据采集方法的流程图;
[0024]图2是本发明实施方式提供的一种邮件系统的示意图。
【具体实施方式】
[0025]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0026]图1是本发明实施方式提供的一种基于触发器的数据采集方法的流程图,包括:
[0027]步骤S1:在数据采集的目标服务器上建立指向数据采集服务器的链接;
[0028]步骤S2:获取所述目标服务器中待采集信息的数据表;
[0029]步骤S3:在所述目标服务器上建立所述数据表对应的触发器;
[0030]步骤S4:当所述数据表中新增数据时,所述触发器触发数据采集行为,并通过所述链接将所述数据表中所述新增的数据发送至所述数据采集服务器。
[0031]优选地,在数据采集的目标服务器上建立指向所述数据采集服务器的远程连接之前还包括:
[0032]在所述数据库采集服务器上建立数据采集表,所述数据采集表用于存储所述数据库采集服务器从所述目标服务器接收的数据。
[0033]优选地,获取所述目标服务器中待采集信息的数据表包括:
[0034]获取所述待采集信息的数据项;
[0035]在所述目标服务器中的数据库中查找包含所述数据项的数据表,得到所述待采集信息的数据表。
[0036]其中,所述数据库为Oracle或者Sql Server。
[0037]优选地,将所述数据表中所述新增的数据发送至所述数据采集服务器之后还包括:
[0038]记录所述新增的数据已经采集完成。例如,可以在触发器里为每一个新增的数据设置状态标志,当状态标志为“-1”时表示数据正处于写状态,当该数据采集完成后,则将设置该数据的状态标志设置为“0”,表示数据已经采集完成,以确保数据采集的完整性。
[0039]本发明实施方式提供的基于触发器的数据采集方法可以包括:
[0040]采集数据项分析,在明确了采集需求,清楚了要采集的信息后,需要进一步分析这些信息来源于哪个数据库的哪些数据表的哪些数据项,以及这些数据是以什么顺序被原信息系统插入到数据表中的,还要区分一次数据采集行为的开始与结束标志,以便为相应的数据表设计触发器。具体地,首先为每一张涉及采集数据项的表建立一个“插入后触发器”,即,此触发器代码功能只是为了记录当前表执行过一次插入行为,可以将记录的日志信息存入一个日志表中,当所有的记录都执行完后,日志中记录的表插入行为顺序即为采集项将被采集的顺序。记录下哪一张表是首先执行插入行为,这标志着数据采集的开始,哪一张表是最后执行插入行为,则标志着此表数据被采集后一次采集行为的结束。
[0041]建立数据采集触发器,根据采集数据项分析结果,为每一张需要取信息的数据表设计采集触发器,采集触发器的设计同普通的触发器设计一样,但为了保证采集数据项的完整,需要区分一次采集行为的开始与结束。在首先被执行的触发器里,标识出新一轮采集的开始,即采集到的数据是新增的数据,而其它表上触发器采集到的数据为更新记录项。最后一个数据项被采集后,触发器需标识出一次数据采集行为的结束,这样处理,有利于其它使用此采集数据的系统进行读取操作。
[0042]对于上述触发器的调试,普通的存储过程可以通过设置断点进行调试,单步执行或断点执行,但数据库触发器却不能用同样的方法。由于需要执行特定的行为才能触发触发器的执行,这给触发器的调试、查错工作带来了困难。可以采用以下两种方法来达到调试触发器的目的:
[0043]异常日志法,通过运行原有系统功能来触发触发器工作,在触发器的异常处理部分加入捕获错误日志的代码,根据日志的提示信息,分析出错的地方与原因,从而对错误进行纠正。
[0044]模拟插入法,利用数据库管理工具提供的测试功能,添加插入数据记录的SQL语句,模拟原信息系统处理业务过程,按顺序执行插入操作,促使各表采集触发器工作,进行调试或错误跟踪。
[0045]如图2所示,图2是本发明实施方式提供的一种邮件系统的示意图,该邮件系统采用0racle8i来存储邮件,为分布式信息系统,拥有多级邮件服务器。其中,SA、SB和SC分别是三个不同级别的邮件服务器,域名可以分别为SA.edu、SB.edu与SC.edu,对应的IP地址可以分别为102.04.23.157、102.04.23.158与102.04.23.159。每一个服务器里都存放有所有的通信客户邮箱地址,Al与A2为注册在邮件服务器SA的客户端、BI与B2为注册在邮件服务器SB的客户端、Cl与C2为注册在邮件服务器SC的客户端,邮件的传递方式有两种形式:(1)内部通信,即在同一个邮件服务器上注册的不同客户端之间的通信,如Al与A2之间进行通信;(2)外部通信,即在不同邮件服务器上注册的客户端之间的通信,如Al与BI之间的通信。其中,不管哪种通信方式,发送邮件的一方需要先将有关信息存在所注册服务器的数据库发件箱里,而接收方一端会将邮件信息存入在所注册服务器的数据库收件箱中,收件箱和发件箱分别由一组表组成。客户端软件通过读取所对应服务器上发件箱与收件箱里与自己身份有关的邮件信息,从而达到通信的目的。
[0046]邮件数据采集的任务是采集所有可能的收发邮件的概要信息,如信息源、信息目的地、信息内容、传递时间等。并将采集到的信息存入图2中数据采集服务器Sjcj里,并通过采集监控Monitor进行监控,数据采集服务器的数据库可以为OraclelOg,。
[0047]对于该邮件系统,基于触发器的数据采集方法包括:
[0048]步骤21:在数据采集服务器上建立相应的数据采集表,用于存入采集到的信息,例如,邮件发送信息表为sjcj_yjfsxx、邮件接收信息表sjcj_yjjsxx,分别用于存放邮件发送时的采集信息和接收时的采集信息;[0049]步骤22:在邮件服务器SA、SB和SC上分别建立指向数据采集服务器的远程链接;
[0050]步骤23:在邮件服务器SA、SB和SC上分别建立关于发件箱与收件箱相关表的触发器(多个);
[0051]步骤24:当邮件服务器上有发送或接收的信息时,触发数据采集行为,收集新产生的信息,并通过远程链接传递给远程的相应数据采集表。
[0052]如此反复执行步骤24,即可实现对邮件信息的实时数据采集功能。
[0053]对邮件收发概要信息采集包括发邮件与接邮件两个过程的信息采集,此处以发邮件过程信息采集为说明涉及的关键技术与方法。收邮件的信息采集与发邮件过程类似,该发邮件过程信息采集主要包括:
[0054](I)数据采集项分析,具体地,首先确定邮件过程中所要采集的数据项,例如,可以包括发送信件的基本信息如“报文标识”、“发送方信息”、“接收方信息”、“发送时间”、“报文长度”、“标题”、“附件个数”等内容。各数据项可以来源于同一数据库的不同表,
[0055](2)建立数据表触发器,根据数据采集项分析结果,在每一张取信息的数据表上设计建立触发器,当数据被插入后,触发器过程执行,实现普通信息地采集。当触发第一张表数据采集时,新增一条采集记录,其它表数据采集时则为修改记录。在相应的表中设计建立触发器,则可以实现较大邮件数据的采集。
[0056](3)触发器调试方法
[0057]普通的存储过程可以直接设置断点进行单步调试,但数据库触发器的调试需要一定的行为才能触发触发器工作,这给查错带来了困难,可以采用以下两种方法可达到调试的目的:
[0058]异常日志法,即通过运行原有系统功能来触发触发器工作,在所有采集触发器的异常处理部分加入捕获异常日志的代码,根据记录的日志信息,即可容易地分析出出错的原因及代码,对错误进行纠正后,重试直到触发器功能正确为止。
[0059]模拟插入法,即利用PL/SQL的测试窗口功能,为每张表添加插入语句,执行插入动作,促使触发器执行工作,跟踪日志信息进行调试。
[0060]通过上述方法,可以在相关表中设计触发器,当有发送邮件的行为发生时,触发这组触发器的执行,就可以采集到邮件发送的简要信息了。可以用同样的方法分析收邮件的行为,设计收件箱相关的触发器,这样所有的触发器配合工作,就可以采集到完整的收发邮件过程的概要数据。此方法适应于支持触发器技术的数据库管理信息系统。
[0061 ] 本发明实施方式通过触发器对数据进行采集,避开了从传输通道中取数据的繁琐与麻烦,具有处理简单、采集到的信息完整、信息类型易识别等优点,特别适合于原系统以数据库管理系统为数据存储手段的信息系统的数据采集,此外,本发明实施方式提供的基于触发器的数据采集方法不破坏原系统结构和功能,不需要考虑业务处理过程的复杂细节,即可从结果中取得想要的数据,从而为分析原系统信息流提供数据支撑。
[0062]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关【技术领域】的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【权利要求】
1.一种基于触发器的数据采集方法,其特征在于,包括: 在数据采集的目标服务器上建立指向数据采集服务器的链接; 获取所述目标服务器中待采集信息的数据表; 在所述目标服务器上建立所述数据表对应的触发器; 当所述数据表中新增数据时,所述触发器触发数据采集行为,并通过所述链接将所述数据表中所述新增的数据发送至所述数据采集服务器。
2.根据权利要求1所述的基于触发器的数据采集方法,其特征在于,在数据采集的目标服务器上建立指向所述数据采集服务器的远程连接之前还包括: 在所述数据库采集服务器上建立数据采集表,所述数据采集表用于存储所述数据库采集服务器从所述目标服务器接收的数据。
3.根据权利要求1所述的基于触发器的数据采集方法,其特征在于,获取所述目标服务器中待采集信息的数据表包括: 获取所述待采集信息的数据项; 在所述目标服务器中的数据库中查找包含所述数据项的数据表,得到所述待采集信息的数据表。
4.根据权利要求3所述的基于触发器的数据采集方法,其特征在于,所述数据库为Oracle 或者 Sql Server。
5.根据权利要求1所述的基于触发器的数据采集方法,其特征在于,将所述数据表中所述新增的数据发送至所述数据采集服务器之后还包括: 记录所述新增的数据已经采集完成。
【文档编号】H04L29/06GK103778265SQ201410001116
【公开日】2014年5月7日 申请日期:2014年1月2日 优先权日:2014年1月2日
【发明者】崔培枝, 孙岩, 王青海, 张伟, 何国良, 许仁杰, 宋云汉, 钟海波 申请人:中国人民解放军装甲兵工程学院