本发明专利技术公开了一种日志数据的去重方法及装置。其中,该方法包括:获取日志文件的对象元素;根据对象元素的快照ID将对象元素保存入数据集合;在将日志文件读取完毕之后,将数据集合中的数据插入到第一临时表;对第一临时表中的数据进行去重处理得到第二临时表;将第二临时表中的数据插入到数据库的正式表中。采用本发明专利技术,解决了现有技术中在数据库中对数据去重会耗费大量资源且处理速度慢的问题,实现了大幅度减少写入数据库的重复数据的效果,从而大幅度减轻了数据库对于IO、CPU资源的消耗。
【技术实现步骤摘要】
日志数据的去重方法及装置
本专利技术涉及数据处理领域,具体而言,涉及一种日志数据的去重方法及装置。
技术介绍
现有技术中日志文件导入数据库的通常做法为:通过程序逐行读取指定格式的日志文件并逐行写入内存,处理完该日志文件后,把内存中的数据一次性写入数据库,在数据库中去重合并。在存在大量数据的情况下,需要向数据库写入大量数据,在全部数据写入完成后,在数据库中去重合并,采用本专利技术的上述方案会耗费大量的10、CPU资源,随着数据量的增大,处理压力也会线性增大,同时等待时间变长。当短时间内数据量级达到一定级别会造成数据库的内存溢出以至崩溃。针对现有技术在数据库中对数据去重会耗费大量资源且处理速度慢的问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术在数据库中对数据去重会耗费大量资源且处理速度慢的问题,目前尚未提出有效的解决方案,为此,本专利技术的主要目的在于提供一种日志数据的去重方法及装置,以解决上述问题。为了实现上述目的,根据本专利技术的一个方面,提供了一种日志数据的去重方法,该方法包括:获取日志文件的对象元素;根据对象元素的快照ID将对象元素保存入数据集合;在将日志文件读取完毕之后,将数据集合中的数据插入到第一临时表;对第一临时表中的数据进行去重处理得到第二临时表;将第二临时表中的数据插入到数据库的正式表中。进一步地,获取日志文件的对象元素的步骤包括:从日志文件中逐行读取第一日志数据;对第一日志数据进行过滤处理得到第二日志数据;将第二日志数据反序列化得到对象元素。进一步地,根据对象元素的快照ID将对象元素保存入数据集合的步骤包括:在数据集合中查找是否存在快照ID ;在数据集合中存在快照ID的情况下,将当前的对象元素按照键值对的形式保存入数据集合;在数据集合中不存在快照ID的情况下,比较对象元素的元素发送序号与数据集合的集合发送序号的大小;在元素发送序号大于集合发送序号的情况下,获取数据集合中该快照ID对应的第一数据,将第一数据替换为对象元素;在元素发送序号不大于集合发送序号的情况下,返回执行获取日志文件的对象元素的步骤,直至将日志文件读取完。进一步地,在将日志文件读取完毕之后,将数据集合中的数据插入到第一临时表的步骤包括:判断数据集合中的数据条数是否大于零;在数据条数大于零的情况下,将数据集合中的数据插入到第一临时表中。进一步地,对第一临时表中的数据进行去重处理得到第二临时表的步骤包括:获取快照ID在第一临时表中的最大发送序号;在第一临时表中查询所有比最大发送序号小的元素发送序号生成第一序号集合;获取与第一序号集合中的元素发送序号对应的对象元素,得到对象元素集合;从第一临时表中删除对象元素集合中的对象元素得到第二临时表。为了实现上述目的,根据本专利技术的一个方面,提供了一种日志数据的去重装置,该装置包括:元素获取模块,用于获取日志文件的对象元素;元素保存模块,用于保存根据对象元素的快照ID将对象元素保存入数据集合;第一插入模块,用于在将日志文件读取完毕之后,将数据集合中的数据插入到第一临时表;去重模块,用于对第一临时表中的数据进行去重处理得到第二临时表;第二插入模块,用于将第二临时表中的数据插入到数据库的正式表中。进一步地,元素获取模块包括:读取模块,用于从日志文件中逐行读取第一日志数据;过滤模块,用于对第一日志数据进行过滤处理得到第二日志数据;反序列化模块,用于将第二日志数据反序列化得到对象元素。进一步地,元素保存模块包括:查找模块,用于在数据集合中查找是否存在快照ID ;第一子保存模块,用于在数据集合中存在快照ID的情况下,将当前的对象元素按照键值对的形式保存入数据集合;比较模块,用于在数据集合中不存在快照ID的情况下,比较对象元素的元素发送序号与数据集合的集合发送序号的大小;替换模块,用于在元素发送序号大于集合发送序号的情况下,获取数据集合中该快照ID对应的第一数据,将第一数据替换为对象元素;返回模块,用于在元素发送序号不大于集合发送序号的情况下,返回执行获取日志文件的对象元素的步骤,直至将日志文件读取完。进一步地,去重装置包括:判断模块,用于判断数据集合中的数据条数是否大于零;第三插入模块,用于在数据条数大于零的情况下,将数据集合中的数据插入到第一临时表中。进一步地,去重模块包括:序号获取模块,用于获取快照ID在第一临时表中的最大发送序号;集合生成模块,用于在第一临时表中查询所有比最大发送序号小的元素发送序号生成第一序号集合;集合获取模块,用于获取与第一序号集合中的元素发送序号对应的对象元素,得到对象元素集合;删除模块,用于从第一临时表中删除对象元素集合中的对象元素得到第二临时表。采用本专利技术,在获取日志文件的对象元素之后,根据对象元素的快照ID将对象元素保存入数据集合,并在将日志文件读取完毕之后,将数据集合中的数据插入到第一临时表,然后对第一临时表中的数据进行去重处理得到第二临时表,并将第二临时表中的数据插入到数据库的正式表中,可以在将数据在写入数据库之前完成去重,并且使用快照式传送数据,在缩短传送时间的同时存在大量重复数据,然后将去重后的数据写入数据库,解决了现有技术中在数据库中对数据去重会耗费大量资源且处理速度慢的问题,实现了大幅度减少写入数据库的重复数据的效果,从而大幅度减轻了数据库对于10、CPU资源的消耗。【附图说明】此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本专利技术实施例的日志数据的去重装置示意图;图2是根据本专利技术实施例的日志文件的读写方法的流程图;以及图3是根据本专利技术实施例的一种可选的日志文件的读写方法的流程图。【具体实施方式】首先,在对本专利技术实施例进行描述的过程中出现的部分名词或术语适用于如下解释:反序列化:将流转化成对象的过程称之为反序列化(Deserialize)。快照:快照(Snapshot)是某个数据集在某一特定时刻的镜像,也称为即时拷贝,它是这个数据集的一个完整可用的副本。回滚(Rollback):回滚泛指程序更新失败,返回上一次正确状态的行为。序列化(Serialize):将对象状态转换为可保持或传输的格式的过程。反序列化(Deserialize):将数据流转化成对象的过程。正则表达式(Regular Expression):正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。哈希(Hash):就是把任意长度的输入(又叫做预映射,pre-1mage),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性本文档来自技高网...
【技术保护点】
一种日志数据的去重方法,其特征在于,包括:获取日志文件的对象元素;根据所述对象元素的快照ID将所述对象元素保存入数据集合;在将所述日志文件读取完毕之后,将所述数据集合中的数据插入到第一临时表;对所述第一临时表中的数据进行去重处理得到第二临时表;将所述第二临时表中的数据插入到数据库的正式表中。
【技术特征摘要】
1.一种日志数据的去重方法,其特征在于,包括: 获取日志文件的对象元素; 根据所述对象元素的快照ID将所述对象元素保存入数据集合; 在将所述日志文件读取完毕之后,将所述数据集合中的数据插入到第一临时表; 对所述第一临时表中的数据进行去重处理得到第二临时表; 将所述第二临时表中的数据插入到数据库的正式表中。2.根据权利要求1所述的去重方法,其特征在于,获取日志文件的对象元素的步骤包括: 从所述日志文件中逐行读取第一日志数据; 对所述第一日志数据进行过滤处理得到第二日志数据; 将所述第二日志数据反序列化得到所述对象元素。3.根据权利要求1所述的去重方法,其特征在于,根据所述对象元素的快照ID将所述对象元素保存入数据集合的步骤包括: 在所述数据集合中查找是否存在所述快照ID ; 在所述数据集合中存在所述快照ID的情况下,将当前的所述对象元素按照键值对的形式保存入所述数据集合; 在所述数据集合中不存在所述快照ID的情况下,比较所述对象元素的元素发送序号与所述数据集合的集合发送序号的大小; 在所述元素发送序号大于所述集合发送序号的情况下,获取所述数据集合中该快照ID对应的第一数据,将所述第一数据替换为所述对象元素; 在所述元素发送序号不大于所述集合发送序号的情况下,返回执行获取日志文件的对象元素的步骤,直至将所述日志文件读取完。4.根据权利要求3所述的去重方法,其特征在于,在将所述日志文件读取完毕之后,将所述数据集合中的数据插入到第一临时表的步骤包括: 判断所述数据集合中的数据条数是否大于零; 在所述数据条数大于零的情况下,将所述数据集合中的数据插入到所述第一临时表中。5.根据权利要求4所述的去重方法,其特征在于,对所述第一临时表中的数据进行去重处理得到第二临时表的步骤包括: 获取所述快照ID在所述第一临时表中的最大发送序号; 在所述第一临时表中查询所有比所述最大发送序号小的所述元素发送序号生成第一序号集合; 获取与所述第一序号集合中的所述元素发送序号对应的所述对象元素,得到所述对象元素集合; 从所述第一临时表中删除所述对象元素集合中的所述对象元素得到所述第二临时表。6.一种日志数据的去重装置,其特征在于,包括: 元素获取模块,用于获取日...
【专利技术属性】
技术研发人员:吴充,郭涛,
申请(专利权)人:北京国双科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。