CN103593440A - 日志文件的读写方法及装置 - Google Patents

日志文件的读写方法及装置 Download PDF

Info

Publication number
CN103593440A
CN103593440A CN201310575219.XA CN201310575219A CN103593440A CN 103593440 A CN103593440 A CN 103593440A CN 201310575219 A CN201310575219 A CN 201310575219A CN 103593440 A CN103593440 A CN 103593440A
Authority
CN
China
Prior art keywords
daily record
data
record data
read
temporary table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310575219.XA
Other languages
English (en)
Other versions
CN103593440B (zh
Inventor
吴充
郭涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201310575219.XA priority Critical patent/CN103593440B/zh
Publication of CN103593440A publication Critical patent/CN103593440A/zh
Application granted granted Critical
Publication of CN103593440B publication Critical patent/CN103593440B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1858Parallel file systems, i.e. file systems supporting multiple processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种日志文件的读写方法及装置。其中,该方法包括:读取步骤:将读取到日志文件中的日志数据保存入对应的内存集合;检测步骤:检测内存集合的行数是否大于预设阈值;***步骤:在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表;返回步骤:返回执行读取步骤直至将日志数据全部保存入第一临时表中;更新步骤:使用第一临时表中的数据更新数据库的正式表。通过本发明,解决了现有技术中将日志文件导入数据库的时间长、效率低的问题,实现了边读边写的效果,使用这种并行处理的机制,缩短了程序整体处理时间,提高了性能的效果。

Description

日志文件的读写方法及装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种日志文件的读写方法及装置。
背景技术
现有技术中日志文件导入数据库的通常做法为,通过程序逐行读取指定格式的日志文件并逐行写入内存,处理完该日志文件后,才把内存一次性写入数据库,也即先读取完文件才会写入数据库,采用该方案程序执行的时间=读取文件的时间+写入数据库的时间。在日志文件中有大量数据的情况下,读取文件的时间和写入数据库的执行时间分别大幅度增加,造成程序整体的执行时间也大幅度增加。采用上述方法因为执行流程是串行线性的,在程序读取文件过程中,写入数据库的操作一直在等待读取操作的完成,造成了大量的资源闲置。同时,当一次读入的数据足够的大的时候,把这些数据整体写入数据库会造成数据库写入时间过长,短时间内数据库的日志暴涨,如果写入失败,回滚大量数据的时间也很长。
针对现有技术中将日志文件导入数据库的时间长、效率低的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中将日志文件导入数据库的时间长、效率低的问题,目前尚未提出有效的解决方案,为此,本发明的主要目的在于提供一种日志文件的读写方法及装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种日志文件的读写方法,该方法包括:读取步骤:将读取到日志文件中的日志数据保存入对应的内存集合;检测步骤:检测内存集合的行数是否大于预设阈值;***步骤:在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表;返回步骤:返回执行读取步骤直至将日志数据全部保存入第一临时表中;更新步骤:使用第一临时表中的数据更新数据库的正式表。
进一步地,读取步骤包括:从日志文件中逐行读取第一日志数据;对第一日志数据进行过滤处理得到第二日志数据;将第二日志数据反序列化得到对象元素;将对象元素保存入内存集合。
进一步地,在检测步骤之后,方法还包括:在内存集合的行数不大于预设阈值的情况下,检测是否将日志文件中的日志数据读取完;在将日志文件中的日志数据读取完的情况下,执行***步骤;在没有将日志文件中的日志数据读取完的情况下,执行返回步骤。
进一步地,更新步骤包括:对第一临时表中的数据进行去重处理得到第二临时表;使用第二临时表中的数据更新正式表。
进一步地,方法还包括:删除第一临时表和第二临时表中的数据。
为了实现上述目的,根据本发明的另一方面,提供了一种日志文件的读写装置,该装置包括:读取模块,用于将读取到日志文件中的日志数据保存入对应的内存集合;检测模块,用于检测内存集合的行数是否大于预设阈值;***模块,用于在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表;返回执行模块,用于返回执行读取步骤直至将日志数据全部保存入第一临时表中;更新模块,用于使用第一临时表中的数据更新数据库的正式表。
进一步地,读取模块包括:读取子模块,用于从日志文件中逐行读取第一日志数据;过滤模块,用于对第一日志数据进行过滤处理得到第二日志数据;反序列化模块,用于将第二日志数据反序列化得到对象元素;保存模块,用于将对象元素保存入内存集合。
进一步地,装置还包括:检测子模块,用于在内存集合的行数不大于预设阈值的情况下,检测是否将日志文件中的日志数据读取完;第一执行模块,用于在将日志文件中的日志数据读取完的情况下,执行***模块;第二执行模块,用于在没有将日志文件中的日志数据读取完的情况下,执行返回执行模块。
进一步地,更新步骤包括:去重模块,用于对第一临时表中的数据进行去重处理得到第二临时表;更新子模块,用于使用第二临时表中的数据更新正式表。
进一步地,装置还包括:删除模块,用于删除第一临时表和第二临时表中的数据。
采用本发明,在将读取到日志文件中的日志数据保存入对应的内存集合之后,可以检测内存集合的行数是否大于预设阈值,并在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表,然后返回执行读取日志数据的步骤直至将日志数据全部保存入第一临时表中,在将所有的日志数据全部保存入第一临时表中之后,使用第一临时表中的数据更新正式表。在该日志处理逻辑中实现了并行处理的机制,把大量的日志数据拆分为多个小量数据穿插在主线程的读取过程中进行并行更新,也即可以在主线程读取日志数据的同时,子线程将日志数据写入数据库,更新正式表中的数据,实现了边读边写的效果,使用这种并行处理的机制,缩短了程序整体处理时间,提高了性能解决了现有技术中将日志文件导入数据库的时间长、效率低的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的日志文件的读写装置示意图;
图2是根据本发明实施例的日志文件的读写方法的流程图;以及
图3是根据本发明实施例的一种可选的日志文件的读写方法的流程图。
具体实施方式
首先,在对本发明实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
回滚(Rollback):回滚泛指程序更新失败,返回上一次正确状态的行为。
序列化(Serialize):将对象状态转换为可保持或传输的格式的过程。
反序列化(Deserialize):将数据流转化成对象的过程。
正则表达式(Regular Expression):正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
JSON(JavaScript Object Notation):一种轻量级的数据交换格式。
主键(Primary Key):是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
哈希(Hash):就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是根据本发明实施例的日志文件的读写装置示意图。如图1所示,该装置可以包括:读取模块10,用于将读取到日志文件中的日志数据保存入对应的内存集合;检测模块30,用于检测内存集合的行数是否大于预设阈值;***模块50,用于在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表;返回执行模块70,用于返回执行读取步骤直至将日志数据全部保存入第一临时表中;更新模块90,用于使用第一临时表中的数据更新数据库的正式表。
采用本发明,在将读取到日志文件中的日志数据保存入对应的内存集合之后,可以检测内存集合的行数是否大于预设阈值,并在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表,然后返回执行读取日志数据的步骤直至将日志数据全部保存入第一临时表中,在将所有的日志数据全部保存入第一临时表中之后,使用第一临时表中的数据更新正式表。在该日志处理逻辑中实现了并行处理的机制,把大量的日志数据拆分为多个小量数据穿插在主线程的读取过程中进行并行更新,也即可以在主线程读取日志数据的同时,子线程将日志数据写入数据库,更新正式表中的数据,实现了边读边写的效果,使用这种并行处理的机制,缩短了程序整体处理时间,提高了性能,解决了现有技术中将日志文件导入数据库的时间长、效率低的问题。
进一步地,读取模块包括:读取子模块,用于从日志文件中逐行读取第一日志数据;过滤模块,用于对第一日志数据进行过滤处理得到第二日志数据;反序列化模块,用于将第二日志数据反序列化得到对象元素;保存模块,用于将对象元素保存入内存集合。
具体地,在执行本申请的上述实施例之前,可以初始化内存中的数据集合和执行该实施例需要使用的内部变量(在完成对内存的初始化之后,打开日志文件,逐行读取日志文件中的第一日志数据。在该实施例中的日志数据与第一日志数据是同样的数据。
其中,该内部变量指程序中用于数据交换或者传递的临时变量,只在程序内部使用。
更具体地,通过正则表达式从读取到的第一日志数据中过滤掉不符合规则的数据流(即第一日志数据组成的数据流)得到第二日志数据。在该步骤中日志数据的表现形式为字符串。
通过该步骤可以减少大量不符合规则的日志数据,从而可以有效减少后续数据处理的数量,减少了资源占用并且可以大大提高处理速度。
具体地,将日志数据放入内存集合中,之后循环读取日志,直到日志全部读取完毕。在该实施例中日志数据的表现形式是对象元素。
更具体地,在该保存过程中,可以将具有不同属性的日志数据保存入不同的内存集合中,也即可以根据日志数据的属性信息将日志数据保存进对应的内存集合。其中,属性信息可以包括:业务类型、用户信息以及访问时间等信息。
进一步地,装置还包括:检测子模块,用于在内存集合的行数不大于预设阈值的情况下,检测是否将日志文件中的日志数据读取完;第一执行模块,用于在将日志文件中的日志数据读取完的情况下,执行***模块;第二执行模块,用于在没有将日志文件中的日志数据读取完的情况下,执行返回执行模块。
进一步地,更新步骤包括:去重模块,用于对第一临时表中的数据进行去重处理得到第二临时表;更新子模块,用于使用第二临时表中的数据更新正式表。
进一步地,装置还包括:删除模块,用于删除第一临时表和第二临时表中的数据。
由于第一临时表中会有大量的重复数据,将重复的大量数据直接在第一临时表中删除生成第二临时表,然后使用第二临时表中的数据更新正式表中的数据,比起直接将第一临时表中的数据导入正式表中后删除大量重复数据,可以节省大量的时间,采用该方案可以大大提高处理效率。
在本发明的上述实施例中,删除第一临时表和第二临时表中的数据,可以收缩数据库并释放资源。
具体地,可以将去重后的临时表(即第二临时表中的)根据第二临时表中的每行数据主键列生成的Hash值,对临时表和正式表的数据逐行进行Hash匹配,临时表的数据已经存在于正式表则把临时表的数据更新到正式表中,临时表的数据不存在于正式表则把临时表的数据***到正式表中。
在上述实施例中,对第二临时表和正式表中的数据逐行进行Hash匹配具体地可以通过如下方法实现:
比较两个表中每行数据的hash值是否相同,在hash值相同的情况下,确认匹配成功;在hash不同的情况下,确认匹配不成功。
在匹配成功的情况下,确认第二临时表中该行的数据在正式表中已经存在,使用第二临时表中的数据修改正式表中对应行的数据的值;在匹配不成功的情况下,确认第二临时表中该行的数据在正式表中不存在,将第二临时表中改行的数据***到正式表中。
上述实施例中的检测子模块、第一执行模块、第二执行模块、去重模块、更新子模块以及删除模块可以使用下述的方法实施例中的方法实现。
图2是根据本发明实施例的日志文件的读写方法的流程图,如图2所示该方法包括如下步骤:
步骤S102,读取步骤:将读取到日志文件中的日志数据保存入对应的内存集合。
步骤S104,检测步骤:检测内存集合的行数是否大于预设阈值。
步骤S106,***步骤:在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表。
步骤S108,返回步骤:返回执行读取步骤直至将日志数据全部保存入第一临时表中。
步骤S110,更新步骤:使用第一临时表中的数据更新数据库的正式表。
采用本发明,在将读取到日志文件中的日志数据保存入对应的内存集合之后,可以检测内存集合的行数是否大于预设阈值,并在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表,然后返回执行读取日志数据的步骤直至将日志数据全部保存入第一临时表中,在将所有的日志数据全部保存入第一临时表中之后,使用第一临时表中的数据更新正式表。在该日志处理逻辑中实现了并行处理的机制,把大量的日志数据拆分为多个小量数据穿拆在主线程的读取过程中进行并行更新,也即可以在主线程读取日志数据的同时,子线程将日志数据写入数据库,更新正式表中的数据,实现了边读边写的效果,使用这种并行处理的机制,缩短了程序整体处理时间,提高了性能解决了现有技术中将日志文件导入数据库的时间长、效率低的问题。
在本发明的上述实施例中,通过边读边写并行处理的机制,减少资源闲置,缩短整体执行时间,提高执行效率,通过设定一个读写平衡的阈值,减少一次性写入数据库的数据量,提高***的读写性能。
根据本发明的上述实施例,读取步骤可以包括:从日志文件中逐行读取第一日志数据;对第一日志数据进行过滤处理得到第二日志数据;将第二日志数据反序列化得到对象元素;将对象元素保存入内存集合。
具体地,如图3所示,本发明的上述实施例可以包括如下步骤:
步骤S201:读取日志数据。
步骤S202:读取下一条日志数据。
具体地,在执行本申请的上述实施例之前,可以初始化内存中的数据集合和执行该实施例需要使用的内部变量(在完成对内存的初始化之后,打开日志文件,逐行读取日志文件中的第一日志数据。在该实施例中的日志数据与第一日志数据是同样的数据。
其中,该内部变量指程序中用于数据交换或者传递的临时变量,只在程序内部使用。
步骤S203:检测下一条日志数据是否符合正则表达式。通过该步骤实现上述实施例中对第一日志数据进行过滤处理得到第二日志数据的步骤。
其中,具体地,在下一条日志数据符合正则表达式的情况下,表明该日志数据符合规则,则将该日志数据(此处的日志数据为第二日志数据)执行步骤S205的处理。在下一条日志数据符合正则表达式的情况下,执行步骤S204:抛出异常,并返回执行步骤S202。
更具体地,通过正则表达式从读取到的第一日志数据中过滤掉不符合规则的数据流(即第一日志数据组成的数据流)得到第二日志数据。在该步骤中日志数据的表现形式为字符串。
通过该步骤可以减少大量不符合规则的日志数据,从而可以有效减少后续数据处理的数量,减少了资源占用并且可以大大提高处理速度。
步骤S205:将日志数据反序列化成对象元素。
具体地,根据预设规则将第二日志数据(在本实施例中第一日志数据可以是字符串)反序列化为对象元素。
其中,上述实施例中的规则可以是客户端与服务器约定的数据格式、数据项的名称和类型定义等参数;数据流可以是进位制,例如:010101、JSON:{"name":"john","age":24}、参数形式:sn=85&gsve=1.3.1.0等,客户端和服务器端预先约定的发送日志数据的格式以及数据项的名称和类型定义即为上述实施例中的预设规则。
具体地,数据接收端(即上述实施例中的服务器)定义了接收数据的数据项个数、名称和类型,例如:A:数值型,B:字符型,C:字符型,客户端发送必须按该定义发送数据,如果数据项个数、名称和类型任意一项不合符定义,均被认为不符合规则。
步骤S206:将日志数据保存入内存集合。
具体地,将日志数据放入内存集合中,之后循环读取日志,直到日志全部读取完毕。在该实施例中日志数据的表现形式是对象元素。
更具体地,在该保存过程中,可以将具有不同属性的日志数据保存入不同的内存集合中,也即可以根据日志数据的属性信息将日志数据保存进对应的内存集合。其中,属性信息可以包括:业务类型、用户信息以及访问时间等信息。
步骤S207:检测内存集合的行数是否大于预设阈值。
其中,在行数大于预设阈值的情况下,执行步骤S209;在行数不大于预设阈值的情况下,执行步骤S208。
步骤S208:检测日志数据是否全部读完。其中,在日志数据全部读完的情况下,执行步骤S209;在日志数据没有全部读完的情况下,返回执行步骤S202,直至将所有的日志数据读完。
步骤S209:将日志数据***临时表。
具体地,对内存集合行数设置一个预设阈值,在内存集合的行数大于设置阈值时,开启一个线程,任务线程的标示符自加一,通过数据库脚本语言把内存集合中的数据(即第二日志数据)***数据库的第一临时表(中间表)。
其中,临时表的表结构和正式表完全一致。
步骤S210:检测日志数据是否成功***临时表。该步骤中的临时表即为上述实施例中的第一临时表。
具体地,若***失败则回滚事务,抛出异常结束程序;若***成功,则执行步骤S211,与此同时,子线程释放占用的资源,任务线程标示符自减一。
步骤S211:检测日志数据是否读完。其中,在日志数据没有读取完的情况下,返回执行步骤S202;在日志数据读取完的情况下,执行步骤S212。
具体地,主线程继续读取日志数据,直到日志数据全部读取完毕,通过任务线程标示符的数量判断是否还有子线程未完成,当任务线程标示符等于零时,子线程全部执行完毕。
在本发明的上述实施例中,在检测步骤之后,方法还可以包括:在内存集合的行数不大于预设阈值的情况下,检测是否将日志文件中的日志数据读取完;在将日志文件中的日志数据读取完的情况下,执行***步骤;在没有将日志文件中的日志数据读取完的情况下,执行返回步骤。
根据本发明的上述实施例,导入步骤可以包括:对第一临时表中的数据进行去重处理得到第二临时表;将第二临时表中的数据导入正式表。具体地,第二临时表可以是与第一临时表
由于第一临时表中会有大量的重复数据,将重复的大量数据直接在第一临时表中删除生成第二临时表,然后使用第二临时表中的数据更新正式表中的数据,比起直接将第一临时表中的数据导入正式表中后删除大量重复数据,可以节省大量的时间,采用该方案可以大大提高处理效率。
具体地,在导入步骤之后,方法还可以包括:删除第一临时表和第二临时表中的数据。
删除第一临时表和第二临时表中的数据,可以收缩数据库并释放资源。
具体地,在图3中示出的步骤S212至步骤S213可以实现上述实施例:
步骤S212:将临时表中的数据导入数据库正式表。
具体地,主线程等待子线程全部执行完毕(此时各个子线程已经完成各自的临时表数据的导入),把所有的临时表中的数据导入到数据库的正式表中。
更具体地,可以将去重后的临时表(即第二临时表中的)根据第二临时表中的每行数据主键列生成的Hash值,对临时表和正式表的数据逐行进行Hash匹配,临时表的数据已经存在于正式表则把临时表的数据更新到正式表中,临时表的数据不存在于正式表则把临时表的数据***到正式表中。
在上述实施例中,对第二临时表和正式表中的数据逐行进行Hash匹配具体地可以通过如下方法实现:
比较两个表中每行数据的hash值是否相同,在hash值相同的情况下,确认匹配成功;在hash不同的情况下,确认匹配不成功。
在匹配成功的情况下,确认第二临时表中该行的数据在正式表中已经存在,使用第二临时表中的数据修改正式表中对应行的数据的值;在匹配不成功的情况下,确认第二临时表中该行的数据在正式表中不存在,将第二临时表中改行的数据***到正式表中。
步骤S213:检测临时表中的数据导入正式表是否失败。
在临时表中的数据导入正式表失败的情况下,则回滚事务,抛出异常记录错误信息并结束程序;若导入成功,则提交事务。
在本发明实施例中提及的正式表是预先保存在数据库中预定格式的表。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明上述实施例中的正式表可以为数据库中预存好的固定格式的用于保存数据的表。
从以上的描述中,可以看出,本发明实现了如下技术效果:采用本发明,在将读取到日志文件中的日志数据保存入对应的内存集合之后,可以检测内存集合的行数是否大于预设阈值,并在内存集合的行数大于预设阈值的情况下,将内存集合中的日志数据***数据库中的第一临时表,然后返回执行读取日志数据的步骤直至将日志数据全部保存入第一临时表中,在将所有的日志数据全部保存入第一临时表中之后,使用第一临时表中的数据更新正式表。在该日志处理逻辑中实现了并行处理的机制,把大量的日志数据拆分为多个小量数据穿拆在主线程的读取过程中进行并行更新,也即可以在主线程读取日志数据的同时,子线程将日志数据写入数据库,更新正式表中的数据,实现了边读边写的效果,使用这种并行处理的机制,缩短了程序整体处理时间,提高了性能解决了现有技术中将日志文件导入数据库的时间长、效率低的问题。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种日志文件的读写方法,其特征在于,包括:
读取步骤:将读取到日志文件中的日志数据保存入对应的内存集合;
检测步骤:检测所述内存集合的行数是否大于预设阈值;
***步骤:在所述内存集合的所述行数大于所述预设阈值的情况下,将所述内存集合中的所述日志数据***数据库中的第一临时表;
返回步骤:返回执行所述读取步骤直至将所述日志数据全部保存入所述第一临时表中;
更新步骤:使用所述第一临时表中的数据更新所述数据库的正式表。
2.根据权利要求1所述的读写方法,其特征在于,所述读取步骤包括:
从所述日志文件中逐行读取第一日志数据;
对所述第一日志数据进行过滤处理得到第二日志数据;
将所述第二日志数据反序列化得到对象元素;
将所述对象元素保存入所述内存集合。
3.根据权利要求1所述的读写方法,其特征在于,在所述检测步骤之后,所述方法还包括:
在所述内存集合的所述行数不大于所述预设阈值的情况下,检测是否将所述日志文件中的所述日志数据读取完;
在将所述日志文件中的所述日志数据读取完的情况下,执行所述***步骤;
在没有将所述日志文件中的所述日志数据读取完的情况下,执行所述返回步骤。
4.根据权利要求1至3中任意一项所述的读写方法,其特征在于,所述更新步骤包括:
对所述第一临时表中的数据进行去重处理得到第二临时表;
使用所述第二临时表中的数据更新所述正式表。
5.根据权利要求4所述的读写方法,其特征在于,在所述更新步骤之后,所述方法还包括:
删除所述第一临时表和所述第二临时表中的数据。
6.一种日志文件的读写装置,其特征在于,包括:
读取模块,用于将读取到日志文件中的日志数据保存入对应的内存集合;
检测模块,用于检测所述内存集合的行数是否大于预设阈值;
***模块,用于在所述内存集合的所述行数大于所述预设阈值的情况下,将所述内存集合中的所述日志数据***数据库中的第一临时表;
返回执行模块,用于返回执行所述读取步骤直至将所述日志数据全部保存入所述第一临时表中;
更新模块,用于使用所述第一临时表中的数据更新所述数据库的正式表。
7.根据权利要求6所述的读写装置,其特征在于,所述读取模块包括:
读取子模块,用于从所述日志文件中逐行读取第一日志数据;
过滤模块,用于对所述第一日志数据进行过滤处理得到第二日志数据;
反序列化模块,用于将所述第二日志数据反序列化得到对象元素;
保存模块,用于将所述对象元素保存入所述内存集合。
8.根据权利要求6所述的读写装置,其特征在于,所述装置还包括:
检测子模块,用于在所述内存集合的所述行数不大于所述预设阈值的情况下,检测是否将所述日志文件中的所述日志数据读取完;
第一执行模块,用于在将所述日志文件中的所述日志数据读取完的情况下,执行所述***模块;
第二执行模块,用于在没有将所述日志文件中的所述日志数据读取完的情况下,执行所述返回执行模块。
9.根据权利要求6至8中任意一项所述的读写装置,其特征在于,所述更新步骤包括:
去重模块,用于对所述第一临时表中的数据进行去重处理得到第二临时表;
更新子模块,用于使用所述第二临时表中的数据更新所述正式表。
10.根据权利要求9所述的读写装置,其特征在于,所述装置还包括:
删除模块,用于删除所述第一临时表和所述第二临时表中的数据。
CN201310575219.XA 2013-11-15 2013-11-15 日志文件的读写方法及装置 Active CN103593440B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310575219.XA CN103593440B (zh) 2013-11-15 2013-11-15 日志文件的读写方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310575219.XA CN103593440B (zh) 2013-11-15 2013-11-15 日志文件的读写方法及装置

Publications (2)

Publication Number Publication Date
CN103593440A true CN103593440A (zh) 2014-02-19
CN103593440B CN103593440B (zh) 2017-10-27

Family

ID=50083581

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310575219.XA Active CN103593440B (zh) 2013-11-15 2013-11-15 日志文件的读写方法及装置

Country Status (1)

Country Link
CN (1) CN103593440B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462396A (zh) * 2014-12-10 2015-03-25 北京国双科技有限公司 字符串处理方法和装置
CN104809152A (zh) * 2015-03-12 2015-07-29 杭州米加科技有限公司 一种节约PostgreSQL共享内存的方法及***
CN105260485A (zh) * 2015-11-20 2016-01-20 杭州数梦工场科技有限公司 一种数据加载的方法和装置
CN105430534A (zh) * 2015-10-29 2016-03-23 Tcl集团股份有限公司 一种智能设备上报数据的方法和***
CN105701122A (zh) * 2014-11-28 2016-06-22 深圳市腾讯计算机***有限公司 一种日志收集方法、装置及***
CN106599222A (zh) * 2016-12-19 2017-04-26 广州四三九九信息科技有限公司 一种流式并行处理日志的方法和设备
CN106844526A (zh) * 2016-12-29 2017-06-13 金蝶软件(中国)有限公司 单据处理方法和装置
CN108415892A (zh) * 2018-03-07 2018-08-17 深圳市易迈数据技术有限公司 一种快速数据分析生成报表处理方法
CN108446370A (zh) * 2018-03-15 2018-08-24 苏州思必驰信息科技有限公司 语音数据统计方法和***
CN109213736A (zh) * 2017-06-29 2019-01-15 阿里巴巴集团控股有限公司 日志的压缩方法和装置
CN109828719A (zh) * 2018-12-15 2019-05-31 平安科技(深圳)有限公司 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备
CN111488237A (zh) * 2020-05-15 2020-08-04 征图新视(江苏)科技股份有限公司 一种二维码大数据快速校验方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1932812A (zh) * 2005-09-16 2007-03-21 腾讯科技(深圳)有限公司 一种日志保存方法及装置
US20110283139A1 (en) * 2005-12-29 2011-11-17 Trika Sanjeev N Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility
CN102542054A (zh) * 2011-12-29 2012-07-04 厦门雅迅网络股份有限公司 一种利用缓存表来提高数据库数据***性能的方法
CN102724279A (zh) * 2012-05-15 2012-10-10 北京首钢自动化信息技术有限公司 一种实现日志保存和管理的***
CN103049533A (zh) * 2012-12-23 2013-04-17 北京人大金仓信息技术股份有限公司 一种快速向数据库加载数据的方法
CN103064908A (zh) * 2012-12-18 2013-04-24 北京讯鸟软件有限公司 一种通过内存快速去重名单的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1932812A (zh) * 2005-09-16 2007-03-21 腾讯科技(深圳)有限公司 一种日志保存方法及装置
US20110283139A1 (en) * 2005-12-29 2011-11-17 Trika Sanjeev N Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility
CN102542054A (zh) * 2011-12-29 2012-07-04 厦门雅迅网络股份有限公司 一种利用缓存表来提高数据库数据***性能的方法
CN102724279A (zh) * 2012-05-15 2012-10-10 北京首钢自动化信息技术有限公司 一种实现日志保存和管理的***
CN103064908A (zh) * 2012-12-18 2013-04-24 北京讯鸟软件有限公司 一种通过内存快速去重名单的方法
CN103049533A (zh) * 2012-12-23 2013-04-17 北京人大金仓信息技术股份有限公司 一种快速向数据库加载数据的方法

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701122A (zh) * 2014-11-28 2016-06-22 深圳市腾讯计算机***有限公司 一种日志收集方法、装置及***
CN105701122B (zh) * 2014-11-28 2020-06-16 深圳市腾讯计算机***有限公司 一种日志收集方法、装置及***
CN104462396B (zh) * 2014-12-10 2017-12-19 北京国双科技有限公司 字符串处理方法和装置
CN104462396A (zh) * 2014-12-10 2015-03-25 北京国双科技有限公司 字符串处理方法和装置
CN104809152A (zh) * 2015-03-12 2015-07-29 杭州米加科技有限公司 一种节约PostgreSQL共享内存的方法及***
CN104809152B (zh) * 2015-03-12 2018-08-17 杭州米加科技有限公司 一种节约PostgreSQL共享内存的方法及***
CN105430534A (zh) * 2015-10-29 2016-03-23 Tcl集团股份有限公司 一种智能设备上报数据的方法和***
CN105430534B (zh) * 2015-10-29 2019-12-10 Tcl集团股份有限公司 一种智能设备上报数据的方法和***
CN105260485B (zh) * 2015-11-20 2019-05-31 杭州数梦工场科技有限公司 一种数据加载的方法和装置
CN105260485A (zh) * 2015-11-20 2016-01-20 杭州数梦工场科技有限公司 一种数据加载的方法和装置
CN106599222A (zh) * 2016-12-19 2017-04-26 广州四三九九信息科技有限公司 一种流式并行处理日志的方法和设备
CN106844526B (zh) * 2016-12-29 2019-12-10 金蝶软件(中国)有限公司 单据处理方法和装置
CN106844526A (zh) * 2016-12-29 2017-06-13 金蝶软件(中国)有限公司 单据处理方法和装置
CN109213736A (zh) * 2017-06-29 2019-01-15 阿里巴巴集团控股有限公司 日志的压缩方法和装置
CN108415892A (zh) * 2018-03-07 2018-08-17 深圳市易迈数据技术有限公司 一种快速数据分析生成报表处理方法
CN108446370A (zh) * 2018-03-15 2018-08-24 苏州思必驰信息科技有限公司 语音数据统计方法和***
CN109828719A (zh) * 2018-12-15 2019-05-31 平安科技(深圳)有限公司 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备
CN109828719B (zh) * 2018-12-15 2022-04-01 平安科技(深圳)有限公司 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备
CN111488237A (zh) * 2020-05-15 2020-08-04 征图新视(江苏)科技股份有限公司 一种二维码大数据快速校验方法
CN111488237B (zh) * 2020-05-15 2023-09-22 征图新视(江苏)科技股份有限公司 一种二维码大数据快速校验方法

Also Published As

Publication number Publication date
CN103593440B (zh) 2017-10-27

Similar Documents

Publication Publication Date Title
CN103593440A (zh) 日志文件的读写方法及装置
CN108628942B (zh) 区块链节点设备、分布式数据库的数据读取及写入方法
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和***
CN110399388A (zh) 数据查询方法、***和设备
CN109885614B (zh) 一种数据同步的方法和装置
US9299082B2 (en) Fast streams and substreams
CN103593442A (zh) 日志数据的去重方法及装置
EP3080723A1 (en) Building features and indexing for knowledge-based matching
CN105740337A (zh) 一种基于内容的发布订阅***中的事件快速匹配方法
CN111444192B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
JP2017526021A (ja) データ検索におけるエラー修正装置及びその方法
CN111444196B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
CN103885721A (zh) 一种在键-值***中的数据存储或读取方法、装置
CN110457348B (zh) 一种数据处理方法及装置
US8407255B1 (en) Method and apparatus for exploiting master-detail data relationships to enhance searching operations
CN111290714B (zh) 数据读取方法和装置
CN105389394A (zh) 基于多个数据库集群的数据请求处理方法及装置
CN117093619A (zh) 一种规则引擎处理方法、装置、电子设备及存储介质
CN112883088B (zh) 一种数据处理方法、装置、设备及存储介质
CN109101595B (zh) 一种信息查询方法、装置、设备及计算机可读存储介质
CN109408035B (zh) 一种业务***的流程配置方法、存储介质和服务器
CN111124883A (zh) 一种基于树形表格的测试用例库引入方法、***及设备
CN111262589A (zh) 一种dfa空间压缩方法及装置
CN111125332A (zh) 计算词的tf-idf值的方法、装置、设备及存储介质
CN113779068B (zh) 数据查询方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and device for reading and writing log file

Effective date of registration: 20190531

Granted publication date: 20171027

Pledgee: Shenzhen Black Horse World Investment Consulting Co.,Ltd.

Pledgor: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

Registration number: 2019990000503

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

PP01 Preservation of patent right
PP01 Preservation of patent right

Effective date of registration: 20240604

Granted publication date: 20171027