CN115408350A - 日志压缩、日志还原方法、装置、计算机设备和存储介质 - Google Patents
日志压缩、日志还原方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115408350A CN115408350A CN202210822255.0A CN202210822255A CN115408350A CN 115408350 A CN115408350 A CN 115408350A CN 202210822255 A CN202210822255 A CN 202210822255A CN 115408350 A CN115408350 A CN 115408350A
- Authority
- CN
- China
- Prior art keywords
- log
- template
- character string
- target
- initial
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种日志压缩、日志还原方法、装置、计算机设备、存储介质和计算机程序产品。本发明实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。所述方法包括:将模板字符串排列信息和目标日志的字符串排列信息匹配成功的候选日志模板作为初始日志模板;从目标日志的日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;基于初始日志模板对应的模板标识、各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成日志压缩数据,以此提高日志压缩率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种日志压缩、日志还原方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,出现了日志,日志是用于记录***或应用操作事件的文件,对于处理历史数据、定位问题以及理解***的活动等具有重要作用。
传统技术中,通常是直接将原始日志进行存储或传输。然而日志的数量通常是比较庞大的,目前的日志处理方式日志压缩率较低,会增加存储压力和传输压力。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高日志压缩率的日志压缩、日志还原方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
本申请提供了一种日志压缩方法。所述方法包括:
获取目标日志;
将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板;
从所述目标日志的各个日志字符串中,将与所述初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与所述初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;
获取各个第一初始字符串分别对应的第一编码数据;
基于所述初始日志模板对应的模板标识、各个第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成所述目标日志对应的日志压缩数据。
本申请还提供了一种日志压缩装置。所述装置包括:
日志获取模块,用于获取目标日志;
日志模板确定模块,用于将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板;
字符串分类模块,用于从所述目标日志的各个日志字符串中,将与所述初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与所述初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;
编码数据获取模块,用于获取各个第一初始字符串分别对应的第一编码数据;
日志压缩数据生成模块,用于基于所述初始日志模板对应的模板标识、各个第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成所述目标日志对应的日志压缩数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述日志压缩方法所述的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述日志压缩方法所述的步骤。
一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述日志压缩方法所述的步骤。
上述日志压缩方法、装置、计算机设备、存储介质和计算机程序产品,通过获取目标日志;将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板;从目标日志的各个日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;获取各个第一初始字符串分别对应的第一编码数据;基于初始日志模板对应的模板标识、各个第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。这样,将目标日志中的第二初始字符串通过基于字符串排列信息确定的初始日志模板对应的模板标识来表示,可以有效压缩日志数据,提高日志压缩率,将由大量字符串组成的目标日志转换为由模板标识、第一编码数据和第一位置关系组成的日志压缩数据,可以有效减少日志数据的数据量,提高日志压缩率。
本申请提供了一种日志还原方法。所述方法包括:
获取目标日志对应的日志压缩数据;所述日志压缩数据是基于初始日志模板对应的模板标识、所述目标日志中各个第一初始字符串分别对应的第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,所述初始日志模板是通过将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,所述第一初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的变量类模板字符串匹配的日志字符串,所述第二初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的常量类模板字符串匹配的日志字符串;
获取所述模板标识对应的初始日志模板,获取所述第一编码数据对应的日志字符串;
基于所述第一位置关系,将所述初始日志模板中的变量类模板字符串替换为相应的日志字符串,得到所述目标日志。
本申请还提供了一种日志还原装置。所述装置包括:
日志压缩数据获取模块,用于获取目标日志对应的日志压缩数据;所述日志压缩数据是基于初始日志模板对应的模板标识、所述目标日志中各个第一初始字符串分别对应的第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,所述初始日志模板是通过将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,所述第一初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的变量类模板字符串匹配的日志字符串,所述第二初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的常量类模板字符串匹配的日志字符串;
日志组成数据获取模块,用于获取所述模板标识对应的初始日志模板,获取所述第一编码数据对应的日志字符串;
日志还原模块,用于基于所述第一位置关系,将所述初始日志模板中的变量类模板字符串替换为相应的日志字符串,得到所述目标日志。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述日志还原方法所述的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述日志还原方法所述的步骤。
一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述日志还原方法所述的步骤。
上述日志还原方法、装置、计算机设备、存储介质和计算机程序产品,通过获取目标日志对应的日志压缩数据;日志压缩数据是基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,初始日志模板是通过将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,第一初始字符串是目标日志的各个日志字符串中,与初始日志模板中的变量类模板字符串匹配的日志字符串,第二初始字符串是目标日志的各个日志字符串中,与初始日志模板中的常量类模板字符串匹配的日志字符串;获取模板标识对应的初始日志模板,获取第一编码数据对应的日志字符串;基于第一位置关系,将初始日志模板中的变量类模板字符串替换为相应的日志字符串,得到目标日志。这样,日志压缩数据是基于初始日志模板对应的模板标识、目标日志中属于变量类字符串的各个日志字符串分别对应的目标编码数据、目标日志中变量类字符串和常量类字符串之间的位置关系生成的,将目标日志中的常量字符串通过基于常量类字符串排列信息确定的初始日志模板对应的模板标识来表示,可以有效压缩日志数据,提高日志压缩率,将由大量字符串组成的目标日志转换为由模板标识、目标编码数据和位置关系组成的日志压缩数据,可以有效减少日志数据的数据量,提高日志压缩率。在进行日志还原时,只需要基于日志压缩数据中的模板标识获取对应的日志模板,基于日志压缩数据中的目标编码数据获取对应的日志字符串,基于模板标识对应的日志模板、目标编码数据对应的日志字符串和日志压缩数据中的位置关系,就可以快速准确还原出原始的日志。
附图说明
图1为一个实施例中日志压缩方法和日志还原方法的应用环境图;
图2为一个实施例中日志压缩方法的流程示意图;
图3为另一个实施例中日志压缩方法的流程示意图;
图4为又一个实施例中日志压缩方法的流程示意图;
图5为一个实施例中数据块存储方式的示意图;
图6为一个实施例中日志还原方法的流程示意图;
图7为一个实施例中日志压缩方法的架构示意图;
图8为一个实施例中日志压缩装置的结构框图;
图9为一个实施例中日志还原装置的结构框图;
图10为一个实施例中计算机设备的内部结构图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
本申请实施例提供的方案涉及人工智能的自然语言处理等技术,具体通过如下实施例进行说明:
本申请实施例提供的日志压缩方法和日志还原方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储***可以存储服务器104需要处理的数据。数据存储***可以集成在服务器104上,也可以放在云上或其他服务器上。终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
终端和服务器均可单独用于执行本申请实施例中提供的日志压缩方法和日志还原方法。
例如,服务器在本地获取目标日志,将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板。服务器从目标日志的各个日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串。服务器获取各个第一初始字符串分别对应的第一编码数据,基于初始日志模板对应的模板标识、各个第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。服务器可以将日志压缩数据存储在本地或传输至其他设备。
服务器在本地获取目标日志对应的日志压缩数据,日志压缩数据是基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的。服务器获取模板标识对应的初始日志模板,获取第一编码数据对应的日志字符串,基于第一位置关系,将初始日志模板中的变量类字符串替换为相应的日志字符串,得到目标日志。服务器可以对还原得到的目标日志进行数据分析,也可以将还原得到的目标日志传输至其他设备。
终端和服务器也可协同用于执行本申请实施例中提供的日志压缩方法和日志还原方法。
例如,服务器从终端获取目标日志。服务器将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板。服务器从目标日志的各个日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串。服务器获取各个第一初始字符串分别对应的第一编码数据,基于初始日志模板对应的模板标识、各个第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。服务器可以将日志压缩数据存储在本地或传输至其他设备。
终端向服务器发送日志获取请求,日志获取请求携带目标日志对应的日志标识。服务器接收到日志获取请求后,获取目标日志对应的日志压缩数据,日志压缩数据是基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的。服务器获取模板标识对应的初始日志模板,获取第一编码数据对应的日志字符串,基于第一位置关系,将初始日志模板中的变量类字符串替换为相应的日志字符串,得到目标日志。服务器可以将还原得到的目标日志发送至终端,以供终端进行查阅或数据分析。
在一个实施例中,如图2所示,提供了一种日志压缩方法,以该方法应用于计算机设备来举例说明,该计算机设备可以是上述图1中的终端102或服务器104。参考图2,日志压缩方法包括以下步骤:
步骤S202,获取目标日志。
步骤S204,将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板。
其中,目标日志是指任意的日志。日志是存储操作***或应用程序产生的消息记录的文件。日志记录着操作***或应用程序的各种服务运行的细节信息,对于处理历史数据、定位问题以及理解操作***或应用程序的活动等具有重要作用。日志包括但不限于应用程序日志,安全日志、***日志等。
日志字符串排列信息是指日志对应的字符串排列信息,用于表示日志中各个日志字符串的排列顺序。模板字符串排列信息是指日志模板对应的字符串排列信息,用于表示日志模板中各个模板字符串的排列顺序。
字符串是由至少一个字符组成的字符序列。字符串中的字符包括数字、字母或符号等至少一种字符。字符串也可以称为token。日志字符串是指日志中的字符串,可以对日志进行分词得到日志对应的各个日志字符串。可以采用各种方式对日志进行分词。模板字符串是指日志模板中的字符串,是在生成日志模板时确定的字符串。
日志模板是一种模板,用于表征一类日志所对应的通用格式。日志模板包括常量部分和变量部分,常量部分用常量类模板字符串表示,变量部分用变量类模板字符串表示。常量部分用于表示日志模板对应的一类日志中的公共部分,也就是,常量类模板字符串可以表示日志模板对应的一类日志中的共有字符串。变量部分用于表示日志模板对应的一类日志中的差异部分,也就是,变量类模板字符串可以表示日志模板对应的一类日志中的不同字符串。
日志模板可以是基于日志生成的模板。在生成日志模板时,可以基于日志中的高频字符串得到日志模板中的常量部分,基于日志中的低频字符串得到日志模板中的变量部分。可以将日志中的高频字符串作为日志模板中的常量部分,将相邻高频字符串之间的低频字符串用预设字符串来表示,将预设字符串作为日志模板中的变量部分。日志模板中的各个变量部分可以均用相同的预设字符串表示,也可以用不同的预设字符串表示。预设字符串可以是任意的字符串。
在一个实施例中,相邻高频字符串之间的所有低频字符串可以用一个预设字符串来表示,即一个预设字符串可以指代至少一个日志字符串。举例说明,日志模板可以用“token1+*+token4+*+token6+token10”表示,token1、token4、token6、token10表示常量类模板字符串,“*”表示变量类模板字符串,token1和token4之间存在“*”,表示在该日志模板对应的一类日志中,token1和token4之间存在日志字符串。可以理解,在该日志模板对应的各个日志中,位于token1和token4之间的日志字符串的数量可以相同可以不同。例如,在该日志模板对应的日志A中,token1和token4之间存在一个日志字符串;在该日志模板对应的日志B中,token1和token4之间存在三个日志字符串。
可以理解,相邻高频字符串之间的所有低频字符串也可以用至少两个预设字符串来表示。例如,若相邻高频字符串之间的低频字符串的数量为奇数,则用一个预设字符串来表示相邻高频字符串之间的所有低频字符串,若相邻高频字符串之间的低频字符串的数量为偶数,则用两个预设字符串来表示相邻高频字符串之间的所有低频字符串。
当然,起始高频字符串(即第一个高频字符串)之前的所有低频字符串也可以用一个预设字符串来表示,结尾高频字符串(即最后一个高频字符串)之后的所有低频字符串也可以用一个预设字符串来表示。
候选日志模板是指候选的待匹配日志模板。候选日志模板是现有的日志模板。初始日志模板是指基于字符串排列信息确定与目标日志匹配成功的候选日志模板。
具体地,计算机设备可以在本地或从其他设备上获取目标日志,对目标日志进行分词得到目标日志对应的各个日志字符串和日志字符串排列信息。计算机设备可以在本地或从其他设备上获取至少一个候选日志模板,候选日志模板存在对应的模板字符串排列信息。计算机设备可以将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,若目标日志中依次出现了候选日志模板中的常量部分,且目标日志中存在与候选日志模板中的变量部分匹配的日志字符串,则确定目标日志和候选日志模板匹配成功,将匹配成功的候选日志模板作为初始日志模板。
在一个实施例中,计算机设备可以获取预设分隔符,基于预设分隔符对目标日志进行分词,将目标日志分为多个日志字符串。其中,预设分隔符是指预先设置、预先指定的分隔符,用于对日志进行分词。例如,可以将“,”、“;”和空格作为预设分隔符。
在一个实施例中,可以将预设分隔符作为日志模板中的预设字符串。预设分隔符通常是无意义的字符串,将预设分隔符作为预设字符串,可以避免混淆常量类模板字符串和变量类模板字符串。
在一个实施例中,若存在至少两个匹配成功的候选日志模板,可以随机选取一个匹配成功的候选日志模板来进行日志压缩,也可以从各个匹配成功的候选日志模板中,选取模板字符串数量最大的候选日志模板来进行日志压缩。
步骤S206,从目标日志的各个日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串。
具体地,在确定初始日志模板后,计算机设备可以将目标日志的各个日志字符串中与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将目标日志的各个日志字符串中与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串。例如,可以将目标日志中与变量类模板字符串一致的日志字符串作为第二初始字符串,将相邻第二初始字符串之间的日志字符串作为第一初始字符串。
步骤S208,获取各个第一初始字符串分别对应的第一编码数据。
其中,字符串对应的编码数据是指字符串经过编码处理得到的数据。不同字符串对应不同的编码数据。第一编码数据是指目标日志中的第一初始字符串所对应的编码数据。
具体地,在确定第一初始字符串后,计算机设备可以获取目标日志中各个第一初始字符串分别对应的第一编码数据,第一编码数据用于在压缩目标日志时替换目标日志中相应的第一初始字符串。
在一个实施例中,可以预先设置各个字符串分别对应的编码数据,从而计算机设备可以从预设的编码数据中获取第一初始字符串对应的第一编码数据。当然,计算机设备也可以实时对目标日志中的第一初始字符串进行编码处理得到对应的第一编码数据。
在一个实施例中,可以对字符串进行加密处理得到相应的编码数据,也可以采用自定义的算法或公式对字符串进行编码处理得到相应的编码数据。
在一个实施例中,第一初始字符串对应的第一编码数据的数据量小于第一初始字符串的数据量。例如,第一初始字符串由六个字符组成,第一初始字符串对应的目标编码数据由三个字符串组成。这样,在压缩目标日志时,通过数据量更小的第一编码数据来替代原始的日志字符串,可以有效减少日志数据的数据量,提高日志压缩率。在一个实施例中,若第一初始字符串的数据量小于或等于预设值,则将第一初始字符串作为第一初始字符串对应的编码数据,若第一初始字符串的数据量大于预设值,则对第一初始字符串进行编码处理得到第一初始字符串对应的编码数据。
步骤S210,基于初始日志模板对应的模板标识、各个第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。
其中,模板标识是一种标识,用于唯一标识日志模板,具体可以包括字母、数字或符号等至少一种字符的字符串。
第一位置关系是指目标日志中第一初始字符串和第二初始字符串之间的位置关系,用于指示相邻第一初始字符串之间是否存在第二初始字符串,相邻第二初始字符串之间是否存在第一初始字符串。
具体地,在确定初始日志模板后,计算机设备可以基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。例如,将模板标识、各个第一编码数据和第一位置关系组成日志压缩数据。这样,通过一系列的数据处理实现对目标日志的日志压缩,可以将原始的目标日志压缩为日志压缩数据。可以理解,将目标日志中的所有第二初始字符串由一个模板标识来表示,可以使得日志压缩数据的数据量小于目标日志的数据量。并且,将目标日志中的所有第二初始字符串由一个模板标识来表示,将目标日志中的第一初始字符串由目标编码数据来表示,也有利于保护目标日志中日志字符串的安全,即使可疑设备获取到日志压缩数据,也可以无法还原出目标日志。
上述日志压缩方法中,通过获取目标日志;将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板;从目标日志的各个日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;获取各个第一初始字符串分别对应的第一编码数据;基于初始日志模板对应的模板标识、各个第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。这样,将目标日志中的第二初始字符串通过基于字符串排列信息确定的初始日志模板对应的模板标识来表示,可以有效压缩日志数据,提高日志压缩率,将由大量字符串组成的目标日志转换为由模板标识、第一编码数据和第一位置关系组成的日志压缩数据,可以有效减少日志数据的数据量,提高日志压缩率。
在一个实施例中,步骤S204,包括:
当目标日志包含候选日志模板中的各个常量类模板字符串、且常量类模板字符串在目标日志和候选日志模板中的出现顺序一致、且目标日志中存在与变量类模板字符串匹配的日志字符串时,确定目标日志和候选日志模板匹配成功。
具体地,在基于字符串排列信息进行模板匹配时,若目标日志包含候选日志模板中的各个常量类模板字符串、且常量类模板字符串在目标日志和候选日志模板中的出现顺序一致、且目标日志中存在与变量类模板字符串匹配的日志字符串,表明目标日志具备候选日志模板所指示的日志格式,则确定目标日志和候选日志模板匹配成功。
举例说明,目标日志由token1、token2、token3、token4、token5、token6组成,目标日志用“token1+token2+token3+token4+token5+token6”表示。候选日志模板用“token1+*+token4+*+token6”表示,token1、token4、token6表示常量类模板字符串,“*”表示变量类模板字符串。与候选日志模板一样,目标日志也是先出现token1,再出现token4,再出现token6,并且token1和token4之间存在其他日志字符串,token4和token6之间存在其他日志字符串。token2和token3可以认为是与候选日志模板中token1、token4之间的“*”相互匹配,token5可以认为是与候选日志模板中token4、token6之间的“*”相互匹配。
上述实施例中,当目标日志包含候选日志模板中的各个常量类模板字符串、且常量类模板字符串在目标日志和候选日志模板中的出现顺序一致、且目标日志中存在与变量类模板字符串匹配的日志字符串时,可以快速确定目标日志和候选日志模板匹配成功。
在一个实施例中,步骤S208,包括:
获取动态字典;动态字典包括候选字符串和候选字符串对应的候选编码数据,候选字符串对应的目标词频信息大于预设词频信息,候选编码数据的数据量小于对应的候选字符串的数据量,动态字典中的候选字符串数量是动态更新的;在动态字典中,查询各个第一初始字符串分别对应的编码数据;基于动态字典中与第一初始字符串匹配的候选字符串所对应的候选编码数据,得到查询成功的各个第一初始字符串分别对应的第一编码数据,将查询失败的各个第一初始字符串作为查询失败的各个第一初始字符串分别对应的第一编码数据。
其中,动态字典是候选字符串的集合。动态字典中记录了候选字符串的有关信息。候选字符串是指目标词频信息大于预设词频信息的字符串,也就是,动态字典只记录了目标词频信息大于预设词频信息的字符串。
目标词频信息是指字符串的最新词频信息,用于表征字符串在已知的、已获取的大量日志中的使用频率或使用次数。预设词频信息用于判断字符串是否可以添加到动态字典中。预设词频信息可以根据实际需要进行设置。
动态字典中记录有候选字符串和候选字符串对应的编码数据。候选编码数据是指候选字符串对应的编码数据。一个候选字符串对应的候选编码数据的数据量小于候选字符串的数据量,从而在压缩日志时用编码数据替代原有的日志字符串,可以有效减少数据量。
可以理解,动态字典中的候选字符串数量是动态更新的。一旦出现新的字符串的目标词频信息大于预设词频信息,就可以将该字符串加入动态字典中。
具体地,计算机设备可以基于动态字典确定目标日志中各个第一初始字符串分别对应的第一编码数据。计算机设备可以获取动态字典,在动态字典中,查询各个第一初始字符串分别对应的编码数据。若动态字典中可以查询到与第一初始字符串一致的候选字符串,则将该候选字符串对应的候选编码数据作为第一初始字符串对应的第一编码数据。也就是,计算机设备基于动态字典中与第一初始字符串匹配的候选字符串对应的候选编码数据,得到查询成功的各个第一初始字符串分别对应的第一编码数据。若动态字典中查询不到与第一初始字符串一致的候选字符串,则将该第一初始字符串直接作为其对应的第一编码数据。也就是,计算机设备可以将查询失败的各个第一初始字符串直接作为查询失败的各个第一初始字符串分别对应的第一编码数据。
例如,动态字典中包括tokenA,动态字典中tokenA对应的编码数据为1。若目标日志对应的某个第一初始字符串也为tokenA,则该第一初始字符串对应的第一编码数据为1。若目标日志的某个第一初始字符串为tokenF,动态字典中没有记载tokenF,则该第一初始字符串对应的第一编码数据为tokenF。
在一个实施例中,基于同一应用程序所产生的日志,建立一个应用程序专属的动态字典。针对不同的应用程序,可以建立不同的动态字典,提高动态字典对于应用程序的适配度。一个动态字典中只包含一个应用程序所涉及的字符串,可以有效控制动态字典的数据量,进而提高查询速度。这样,基于动态字典获取目标编码数据时,从目标日志所属应用程序对应的动态字典中可以快速查找到相应的目标编码数据。
在一个实施例中,候选编码数据是基于候选字符串在动态字典中的排序信息生成的。候选字符串在动态字典中的排序信息用于指示候选字符串在动态字典中的排列位置。例如,动态字典包括100个候选字符串,候选字符串在动态字典中的排序是基于候选字符串加入动态字典的时间确定的,若候选字符串A是动态字典中排列第11位的字符串,则候选字符串A对应的候选编码数据为11。这样,动态字典中每新增一个候选字符串,无需复杂的编码处理,基于候选字符串的排序信息就可以快速生成候选字符串对应的候选编码数据。
进一步的,候选编码数据可以是由动态字典对应的字典标识和候选字符串在动态字典中的排序信息组成。字典标识是一种标识,用于唯一标识动态字典,具体可以包括字母、数字或符号等至少一种字符的字符串。不同的动态字典对应不同的字典标识。
在一个实施例中,动态字典中还可以记录有候选字符串对应的目标词频信息。动态字典中的目标词频信息也可以是动态更新的。在处理新日志时,及时对动态字典中的相应候选字符串的词频信息进行更新。若新日志包含记录在动态字典中的候选字符串,则对动态字典中该候选字符串对应的词频信息进行更新。
在一个实施例中,为了保障动态字典的时效性,可以过滤动态字典中在预设时长内词频信息保持不变的候选字符串,将动态字典中在预设时长内词频信息保持不变的候选字符串进行删除。若动态字典中的候选字符串的词频信息在预设时长内保持不变,表明该候选字符串已经不常使用,可以从动态字典中将其滤除,以减少动态字典的数据量。计算机设备可以定时从动态字典中筛选出需要删除的候选字符串,每隔一段时间整理一次动态字典。
在一个实施例中,动态字典中的候选字符串的数据量大于预设值。例如,动态字典中只存储有字符串长度超过五的字符串。这样,可以避免对字符串盲目编码,数据量小于或等于预设值的字符串无需进行编码。
上述实施例中,获取动态字典;动态字典包括候选字符串和候选字符串对应的候选编码数据,候选字符串对应的目标词频信息大于预设词频信息,候选编码数据的数据量小于对应的候选字符串的数据量,动态字典中的候选字符串数量是动态更新的;在动态字典中,查询各个第一初始字符串分别对应的编码数据;基于动态字典中与第一初始字符串匹配的候选字符串所对应的候选编码数据,得到查询成功的各个第一初始字符串分别对应的第一编码数据,将查询失败的各个第一初始字符串作为查询失败的各个第一初始字符串分别对应的第一编码数据。这样,基于动态字典可以快速确定第一初始字符串对应的第一编码。并且,动态字典中的编码数据的数据量小于相应字符串的数据量,可以有效提高日志压缩率。若在动作字典中查询不到相应的编码数据,则直接将原始的字符串作为相应的编码数据,可以快速确定编码数据。
在一个实施例中,日志压缩方法还包括:
在每次获取日志时,确定当前日志对应的各个当前字符串;在动态字典中已存在当前字符串的情况下,基于当前日志,更新当前字符串在动态字典中的词频信息;在动态字典中不存在当前字符串的情况下,基于当前日志更新当前字符串对应的历史词频信息,得到当前字符串对应的目标词频信息,在当前字符串对应的目标词频信息大于预设词频信息时,生成当前字符串对应的编码数据,在动态字典中添加当前字符串和对应的编码数据、目标词频信息。
其中,历史词频信息是指在处理当前日志之前统计得到的词频信息。目标词频信息是指最新的词频信息。例如,对当前日志进行分词得到的某一当前字符串为“test”,“test”对应的历史词频信息为10,经过更新后,“test”对应的目标词频信息为11。
具体地,动态字典中记录有候选字符串对应的词频信息。在每次获取日志进行日志压缩时,计算机设备都可以确定当前日志对应的各个当前字符串。若动态字典中已存在当前字符串,则基于当前日志更新当前字符串在动态字典中的词频信息。若动态字典中不存在当前字符串,则基于当前日志更新当前字符串对应的历史词频信息,得到当前字符串对应的目标词频信息。随着日志数量的增加,字符串的词频信息也会增加。若当前字符串对应的目标词频信息增加到大于预设词频信息,则计算机设备可以生成当前字符串对应的目标编码数据,将当前字符串、当前字符串对应的目标编码数据和目标词频信息添加到动态字典中。
在一个实施例中,计算机设备可以先用词频统计表记录各个字符串分别对应的词频信息,若出现字符串的词频信息大于预设词频信息,则将该字符串从词频统计表中移动到动态字典中。
上述实施例中,在每次获取日志时,确定当前日志对应的各个当前字符串;在动态字典中已存在当前字符串的情况下,基于当前日志,更新当前字符串在动态字典中的词频信息;在动态字典中不存在当前字符串的情况下,基于当前日志更新当前字符串对应的历史词频信息,得到当前字符串对应的目标词频信息,在当前字符串对应的目标词频信息大于预设词频信息时,生成当前字符串对应的编码数据,在动态字典中添加当前字符串和对应的编码数据、目标词频信息。这样,动态字典中的数据是实时动态更新的,可以保障数据的有效性、准确性。
在一个实施例中,如图3所示,日志压缩方法还包括:
步骤S302,将目标日志对应的日志字符串数量分别和各个初始日志模板对应的模板字符串数量进行匹配,将匹配成功的初始日志模板作为中间日志模板。
其中,日志字符串数量是对目标日志中的日志字符串进行数量统计得到的数据。例如,目标日志由token1、token2、token3、token4、token5、token6组成,则目标日志对应的日志字符串数量为6。
模板字符串数量是对日志模板中的字符串进行数量统计得到的数据。例如,日志模板由token1、*、token4、*、token6组成,则日志模板对应的模板字符串数量为5。
中间日志模板是指基于字符串数量确定与目标日志匹配成功的初始日志模板。
具体地,在确定初始日志模板后,计算机设备可以基于目标日志对应的日志字符串数量和初始日志模板对应的模板字符串数量,将目标日志和初始日志模板进行进一步的匹配,将匹配成功的初始日志模板作为中间日志模板,最终通过中间日志模板来进行日志压缩。例如,将与日志字符串数量的数据差异小于预设差异的模板字符串数量所对应的初始日志模板作为中间日志模板,这样的中间日志模板对应的模板标识可以指代目标日志中更多的常量类字符串,日志压缩率更高。
可以理解,若初始日志模板只有一个,则将目标日志和该初始日志模板进行匹配,确定最终是否基于初始日志模板进行日志压缩。若初始日志模板有至少两个,则将目标日志和至少两个初始日志模板一一进行匹配,从至少两个初始日志模板中,基于匹配成功的初始日志模板进行日志压缩。
步骤S304,从目标日志的各个日志字符串中,将与中间日志模板中的变量类模板字符串匹配的日志字符串作为第一中间字符串,将与中间日志模板中的常量类模板字符串匹配的日志字符串作为第二中间字符串。
步骤S306,获取各个第一中间字符串分别对应的第二编码数据。
可以理解,第一中间字符串和第二中间字符串的确定方式可以参考前述第一初始字符串和第二初始字符串的确定方式,第二编码数据的获取方式可以参考前述第一编码数据的获取方式,此处不再赘述。
步骤S308,基于中间日志模板对应的模板标识、各个第二编码数据、目标日志中第一中间字符串和第二中间字符串之间的第二位置关系,生成目标日志对应的日志压缩数据。
其中,第二位置关系是指目标日志中第一中间字符串和第二中间字符串之间的位置关系,用于指示相邻第一中间字符串之间是否存在第二中间字符串,相邻第二中间字符串之间是否存在第一中间字符串。
可以理解,若中间日志模板和初始日志模板为同一日志模板,则第一初始字符串和第一中间字符串为相同字符串,第二初始字符串和第二中间字符串为相同字符串,第一编码数据和第二编码数据为相同编码数据,第一位置关系和第二位置关系为相同位置关系,无需重复确定或获取。
具体地,在确定目标日志模板后,计算机设备可以基于中间日志模板对应的模板标识、目标日志中各个第一中间字符串分别对应的第二编码数据、目标日志中第一中间字符串和第二中间字符串之间的第二位置关系,生成目标日志对应的日志压缩数据。例如,将模板标识、各个第二编码数据和第二位置关系组成日志压缩数据。
在一个实施例中,若存在至少两个匹配成功的初始日志模板,可以随机选取一个匹配成功的初始日志模板来进行日志压缩,也可以从各个匹配成功的初始日志模板中,选取模板字符串数量最大的初始日志模板来进行日志压缩。
上述实施例中,将目标日志对应的日志字符串数量分别和各个初始日志模板对应的模板字符串数量进行匹配,将匹配成功的初始日志模板作为中间日志模板;从目标日志的各个日志字符串中,将与中间日志模板中的变量类模板字符串匹配的日志字符串作为第一中间字符串,将与中间日志模板中的常量类模板字符串匹配的日志字符串作为第二中间字符串;获取各个第一中间字符串分别对应的第二编码数据;基于中间日志模板对应的模板标识、各个第二编码数据、目标日志中第一中间字符串和第二中间字符串之间的第二位置关系,生成目标日志对应的日志压缩数据。这样,基于字符串数量将目标日志和初始日志模板进行进一步的匹配,基于匹配成功的初始日志模板进行日志压缩可以有效保障压缩效益,显著提高日志压缩率。
在一个实施例中,步骤S302,包括:
将日志字符串数量和模板匹配阈值进行融合,得到目标日志对应的第一融合数据;当初始日志模板对应的模板字符串数量大于或等于第一融合数据时,确定目标日志和初始日志模板匹配成功,将匹配成功的初始日志模板作为中间日志模板;当初始日志模板对应的模板字符串数量小于第一融合数据时,确定目标日志和初始日志模板匹配失败。
其中,模板匹配阈值是指用于模板匹配的阈值。模板匹配阈值可以根据实际需要进行设置。
具体地,在将目标日志和初始日志模板进行匹配时,计算机设备可以将目标日志对应的日志字符串数量和模板匹配阈值进行融合,得到目标日志对应的第一融合数据,例如,将日志字符串数量和模板匹配阈值相乘得到第一融合数据;将日志字符串数量和模板匹配阈值的差值作为第一融合数据;等等。当初始日志模板对应的模板字符串数量大于或等于第一融合数据时,计算机设备可以确定目标日志和该初始日志模板匹配成功,将匹配成功的初始日志模板作为中间日志模板。当初始日志模板对应的模板字符串数量小于第一融合数据时,计算机设备可以确定目标日志和该初始日志模板匹配失败。
可以理解,若初始日志模板对应的模板字符串数量大于或等于第一融合数据,表明相对于目标日志,初始日志模板具有比较充足的字符串,通过这样的初始日志模板进行日志压缩,可以有较高的压缩效益,实现较高的压缩率。若初始日志模板对应的模板字符串数量小于第一融合数据,表明相对于目标日志,初始日志模板的字符串不够充足,通过这样的初始日志模板进行日志压缩,压缩效益没有很高。
上述实施例中,将日志字符串数量和模板匹配阈值进行融合,得到目标日志对应的第一融合数据;当初始日志模板对应的模板字符串数量大于或等于第一融合数据时,确定目标日志和初始日志模板匹配成功,将匹配成功的初始日志模板作为中间日志模板;当初始日志模板对应的模板字符串数量小于第一融合数据时,确定目标日志和初始日志模板匹配失败。这样,基于模板字符串数量大于或等于第一融合数据的初始日志模板进行日志压缩,可以有效保障压缩效益,显著提高日志压缩率。
在一个具体的实施例中,假设目标日志的token数量为L(log),模板匹配成功阈值(即模板匹配阈值)为T(match),T(match)的取值范围在0~1之间,初始日志模板的常量数量与变量数量之和(两个常量之间最多只有一个变量)为S(template),若符合S(template)≥T(match)*L(log),则确定目标日志和初始日志模板匹配成功,将初始日志模板作为中间日志模板。
在一个实施例中,如图4所示,日志压缩方法还包括:
步骤S402,当目标日志和候选日志模板匹配失败或目标日志和初始日志模板匹配失败时,将目标日志中各个日志字符串分为变量类日志字符串和常量类日志字符串,基于变量类日志字符串和常量类日志字符串,生成目标日志对应的目标日志模板;变量类日志字符串对应的目标词频信息小于常量类日志字符串对应的目标词频信息。
其中,基于日志字符串的目标词频信息可以把日志字符串分为变量类字符串和常量类字符串。变量类字符串对应的目标词频信息小于常量类字符串对应的目标词频信息。可以认为,针对某一日志,变量类字符串是该日志的日志字符串中的低频字符串,常量类字符串是该日志的日志字符串中的高频字符串。高频字符串在大量日志中的使用频率较高,在大量日志中经常使用到,可以认为是日志中的常量部分。低频字符串在大量日志中的使用频率较低,在大量日志中偶尔使用到,可以认为是日志中的变量部分。
目标日志模板是基于目标日志生成的模板。
具体地,若目标日志和候选日志模板匹配失败或目标日志和初始日志模板匹配失败,计算机设备可以为目标日志新建其对应的日志模板,生成目标日志对应的目标日志模板,基于目标日志模板进行日志压缩。
计算机设备可以基于目标词频信息将目标日志中各个日志字符串分为变量类字符串和常量类字符串,将目标词频信息大于预设阈值的日志字符串作为常量类字符串,将目标词频信息小于或等于预设阈值的日志字符串作为变量类字符串。进而,计算机设备可以基于变量类日志字符串和常量类日志字符串,生成目标日志对应的目标日志模板。例如,将常量类日志字符串作为目标日志模板中的常量类模板字符串,将变量类日志字符串作为目标日志模板中的变量类模板字符串。
在一个实施例中,在确定目标日志对应的各个日志字符串后,计算机设备可以获取各个日志字符串分别对应的历史词频信息,基于目标日志更新历史词频信息,从而得到各个日志字符串分别对应的目标词频信息。例如,对目标日志进行分词得到的某一日志字符串为“test”,“test”对应的历史词频信息为10,经过更新后,“test”对应的目标词频信息为11。
步骤S404,获取属于变量类日志字符串的各个日志字符串分别对应的第三编码数据。
步骤S406,基于目标日志模板对应的模板标识、各个第三编码数据、目标日志中变量类日志字符串和常量类日志字符串之间的第三位置关系,生成目标日志对应的日志压缩数据。
其中,第三编码数据是指目标日志中属于变量类日志字符串的日志字符串所对应的编码数据。
可以理解,第三编码数据的获取方式可以参考前述第一编码数据的获取方式,此处不再赘述。
第三位置关系是指目标日志中变量类日志字符串和常量类日志字符串之间的位置关系,用于指示相邻变量类日志字符串之间是否存在常量类日志字符串,相邻常量类日志字符串之间是否存在变量类日志字符串。
具体地,在生成目标日志模板后,计算机设备可以基于目标日志模板对应的模板标识、目标日志中属于变量类日志字符串的各个日志字符串分别对应的第三编码数据、目标日志中变量类日志字符串和常量类日志字符串之间的第三位置关系,生成目标日志对应的日志压缩数据。例如,将模板标识、各个第三编码数据和第三位置关系组成日志压缩数据。
上述实施例中,当目标日志和候选日志模板匹配失败或目标日志和初始日志模板匹配失败时,将目标日志中各个日志字符串分为变量类日志字符串和常量类日志字符串,基于变量类日志字符串和常量类日志字符串,生成目标日志对应的目标日志模板;变量类日志字符串对应的目标词频信息小于常量类日志字符串对应的目标词频信息;获取属于变量类日志字符串的各个日志字符串分别对应的第三编码数据;基于目标日志模板对应的模板标识、各个第三编码数据、目标日志中变量类日志字符串和常量类日志字符串之间的第三位置关系,生成目标日志对应的日志压缩数据。这样,在目标日志和现有日志模板都匹配失败时,生成目标日志自己的目标日志模板,基于目标日志模板进行日志压缩可以有效提高日志压缩率。后续,目标日志模板也可以用于其他日志的日志压缩。
在一个实施例中,基于变量类日志字符串和常量类日志字符串,生成目标日志对应的目标日志模板,包括:
将日志字符串数量和模板生成阈值进行融合,得到目标日志对应的第二融合数据;对目标日志中的变量类日志字符串和常量类日志字符串进行数量统计,得到目标日志对应的参考字符串数量;其中,当目标日志中相邻常量类日志字符串之间存在变量类日志字符串时,相邻常量类日志字符串之间的变量类日志字符串的数量统计为预设数量,当目标日志中起始常量类日志字符串之前或结尾常量类日志字符串之后存在变量类日志字符串时,起始常量类日志字符串之前或结尾常量类日志字符串之后的变量类日志字符串的数量统计为预设数量;当参考字符串数量大于或等于第二融合数据时,基于变量类日志字符串和常量类日志字符串,生成目标日志模板;目标日志模板对应的模板字符串数量为参考字符串数量;当参考字符串数量小于第二融合数据时,基于目标日志中各个日志字符串分别对应的编码数据,得到目标日志对应的日志压缩数据。
其中,模板生成阈值是指用于模板建立的阈值。模板生成阈值可以根据实际需要进行设置。预设数量也可以根据实际需要进行设置。
起始常量类日志字符串是指目标日志中第一个常量类日志字符串。结尾常量类日志字符串是指目标日志中最后一个常量类日志字符串。
具体地,在新建目标日志模板之前,计算机设备可以进一步判断是否有必要建立新的日志模板,避免新建的日志模板无法达到较高的压缩效益。
计算机设备可以将目标日志对应的日志字符串数量和模板生成阈值进行融合,得到目标日志对应的第二融合数据,例如,将日志字符串数量和模板生成阈值相乘得到第二融合数据;将日志字符串数量和模板生成阈值的差值作为第二融合数据;等等。计算机设备可以统计目标日志中的变量类日志字符串和常量类日志字符串的数量,从而得到目标日志对应的参考字符串数量。在进行数量统计时,若目标日志中相邻常量类日志字符串之间存在变量类日志字符串,则相邻常量类日志字符串之间的变量类日志字符串的数量统计为预设数量,若目标日志中起始常量类日志字符串之前存在变量类日志字符串,则起始常量类日志字符串之前的变量类日志字符串的数量统计为预设数量。若结尾常量类日志字符串之后存在变量类日志字符串,则结尾常量类日志字符串之后的变量类日志字符串的数量统计为预设数量。例如,若目标日志中相邻常量类日志字符串之间存在变量类日志字符串,无论目标日志中相邻常量类日志字符串之间存在多少个变量类日志字符串,将相邻常量类日志字符串之间的变量类日志字符串的数量统计为一。
若参考字符串数量大于或等于第二融合数据,表明生成的目标日志模板包含了比较充足的模板字符串,也可以认为生成的目标日志模板包含了比较充足的常量类模板字符串,这样的目标日志模板可以实现较高的压缩效益,此时,计算机设备可以基于目标日志中的变量类日志字符串和常量类日志字符串,生成目标日志模板,生成的目标日志模板对应的模板字符串数量为参考字符串数量。若参考字符串数量小于第二融合数据,表明生成的目标日志模板包含不太充足的模板字符串,也可以认为生成的目标日志模板包含了较少的常量类模板字符串,无法实现较高的压缩效益,此时,计算机设备可以获取目标日志中各个日志字符串分别对应的编码数据,基于获取到的编码数据生成目标日志对应的日志压缩数据。
上述实施例中,将日志字符串数量和模板生成阈值进行融合,得到目标日志对应的第二融合数据;对目标日志中的变量类日志字符串和常量类日志字符串进行数量统计,得到目标日志对应的参考字符串数量;当参考字符串数量大于或等于第二融合数据时,基于变量类日志字符串和常量类日志字符串,生成目标日志模板;目标日志模板对应的模板字符串数量为参考字符串数量;当参考字符串数量小于第二融合数据时,基于目标日志中各个日志字符串分别对应的编码数据,得到目标日志对应的日志压缩数据。这样,若参考字符串数量大于或等于第二融合数据,则生成目标日志模板,可以保障基于目标日志模板进行日志压缩可以有较好的压缩效益,有效提高日志压缩率。
在一个具体的实施例中,假设目标日志的token数量为L(log),模板生成成功阈值(即模板生成阈值)为T(create),T(create)的范围在0~1之间,目标日志的常量数量与变量数量之和(两个常量之间最多只有一个变量)为S(template),若符合S(template)≥T(create)*L(log),则生成目标日志对应的目标日志模板。
在一个实施例中,基于变量类日志字符串和常量类日志字符串,生成目标日志模板,包括:
将常量类日志字符串作为目标模板字符串,基于变量类日志字符串,在各个目标模板字符串之间添加预设字符串,得到目标日志模板。
其中,目标模板字符串用于作为目标日志模板中的常量类模板字符串,预设字符串用于作为目标日志模板中的变量类模板字符串;当目标日志中相邻常量类日志字符串之间存在变量类日志字符串时,在相应的相邻目标模板字符串之间添加预设数量个预设字符串;当起始常量类日志字符串之前存在变量类日志字符串时,在相应的目标模板字符串之前添加预设数量个预设字符串;当结尾常量类日志字符串之后存在变量类日志字符串时,在相应的目标模板字符串之后添加预设数量个预设字符串。
具体地,在直接生成目标日志模板或经过判断后确定生成目标日志模板时,计算机设备可以将常量类日志字符串作为目标模板字符串,基于变量类日志字符串,在各个目标模板字符串之间加入预设字符串,从而得到目标日志模板。目标模板字符串用于作为目标日志模板中的常量类模板字符串,预设字符串用于作为目标日志模板中的变量类模板字符串。在添加预设字符串时,若目标日志中相邻常量类日志字符串之间存在变量类日志字符串,则计算机设备在相应的相邻目标模板字符串之间添加预设数量的预设字符串;若起始常量类日志字符串之前存在变量类日志字符串时,则计算机设备在相应的目标模板字符串之前添加预设数量个预设字符串。若结尾常量类日志字符串之后存在变量类日志字符串,则计算机设备在相应的目标模板字符串之后添加预设数量个预设字符串。
例如,目标日志用“token1+token2+token3+token4+token5+token6+token7+token8”表示,其中字符串token1、token4、token6为常量类日志字符串,token2、token3、token5、token7、token8为变量类日志字符串。目标日志对应的目标日志模板用“token1+*+token4+*+token6+*”表示。目标日志模板可以对具备“token1+*+token4+*+token6+*”这样格式的多个日志进行日志压缩。
上述实施例中,将常量类日志字符串作为目标模板字符串,基于变量类日志字符串,在各个目标模板字符串之间添加预设字符串,得到目标日志模板;目标模板字符串用于作为目标日志模板中的常量类模板字符串,预设字符串用于作为目标日志模板中的变量类模板字符串。这样,基于常量类日志字符串和变量类日志字符串可以快速生成目标日志模板。
在一个实施例中,当前日志模板为初始日志模板或中间日志模板或目标日志模板;当当前日志模板为初始日志模板时,当前变量类字符串为第一初始字符串,当前常量类字符串为第二初始字符串,当前编码数据为第一编码数据,当前位置关系为第一位置关系;当当前日志模板为中间日志模板时,当前变量类字符串为第一中间字符串,当前常量类字符串为第二中间字符串,当前编码数据为第二编码数据,当前位置关系为第二位置关系;当当前日志模板为目标日志模板时,当前变量类字符串为变量类日志字符串,当前常量类字符串为常量类日志字符串,当前编码数据为第三编码数据,当前位置关系为第三位置关系。
日志压缩数据的生成过程包括以下步骤:
按照目标日志中各个当前变量类字符串的出现顺序,将各个当前编码数据进行排列,得到初始编码序列;基于目标日志中当前常量类字符串在各个当前变量类字符串之间的出现位置,在初始编码序列中相应位置***位置标识符,得到目标编码序列;基于当前日志模板对应的模板标识和目标编码序列,得到日志压缩数据。
具体地,在基于模板标识、编码数据和位置关系生成目标压缩数据时,计算机设备可以按照目标日志中各个当前变量类字符串的出现顺序,将各个当前编码数据进行有序排列得到初始编码序列,再基于目标日志中当前常量类字符串在各个当前变量类字符串之间的出现位置,在初始编码序列中相应位置***位置标识符得到目标编码序列,最后基于当前日志模板对应的模板标识和目标编码序列,得到日志压缩数据。位置标识符用于标识在目标日志中相邻的当前变量类字符串是直接相邻还是间接相邻,在目标日志中相邻的当前变量类字符串之间是否存在其他字符串。
举例说明,目标日志用“token1+token2+token3+token4+token5+token6+token7+token8”表示,初始日志模板用“token1+*+token4+*+token6+*”表示,初始日志模板对应的模板标识为A。其中,token2、token3、token5、token7、token8为第一初始字符串,token2、token3、token5、token7、token8分别对应的第一编码数据为2、3、5、7、8,字符串token1、token4、token6为第二初始字符串。目标日志对应的目标压缩数据可以用“A-2-3-&-5-&-7-8”表示。“&”为位置标识符。
在基于目标压缩数据还原目标日志时,基于目标压缩数据中的A获取A对应的初始日志模板“token1+*+token4+*+token6+*”,基于初始日志模板可知目标日志包含token1、token4、token6,且token1、token4、token6依次出现,token1和token4之间存在其他字符串,token4和token6之间存在其他字符串,token6之后存在其他字符串。
基于目标压缩数据中的2、3、5、7、8获取2、3、5、7、8分别对应的token2、token3、token5、token7、token8。基于目标压缩数据中的&,确定token2和token3位于token1和token4之间,确定token5位于token4和token6之间,确定token7、8位于token6之后。
最终基于目标压缩数据还原得到的目标日志为“token1+token2+token3+token4+token5+token6+token7+token8”。
上述实施例中,按照目标日志中各个当前变量类字符串的出现顺序,将各个当前编码数据进行排列,得到初始编码序列;基于目标日志中当前常量类字符串在各个当前变量类字符串之间的出现位置,在初始编码序列中相应位置***位置标识符,得到目标编码序列;基于当前日志模板对应的模板标识和目标编码序列,得到日志压缩数据。这样,目标编码序列不仅记录了变量类字符串的编码数据和出现顺序,还记录了相邻变量类字符串是否被常量类字符串隔开,基于模板标识可以查找到记录有日志中常量类字符串的日志模板,基于模板标识和目标编码序列得到的日志压缩数据在保持优异的日志压缩率的同时,也可以有效还原出原始的目标日志。
在一个实施例中,基于当前日志模板对应的模板标识和目标编码序列,得到日志压缩数据,包括:
基于当前日志模板对应的模板标识和目标编码序列,生成目标日志对应的日志编码数据;对日志编码数据进行通用压缩,得到日志压缩数据。
其中,通用压缩是指通用的、基本的压缩方式。例如,使用通用压缩工具或算法进行压缩。通用压缩工具或算法包括但不限于ZSTD(Zstandard,一种开源的新无损压缩算法)和Deflate(一种同时使用了LZ77算法与哈夫曼编码的无损数据压缩算法)。
具体地,为了进一步提高压缩率,计算机设备可以基于当前日志模板对应的模板标识和目标编码序列先生成目标日志对应的日志编码数据,再对日志编码数据进行通用压缩,进一步减少数据量,从而得到日志压缩数据。
在一个实施例中,可以将日志编码数据以块为单元进行通用压缩。若一个日志的日志编码数据的数据量大于或等于预设数据量,则将该日志编码数据作为一个数据块进行通用压缩。若一个日志的日志编码数据的数据量小于预设数据量,则获取下一日志对应的日志编码数据,若两个日志的日志编码数据总和大于或等于预设数据量,则将两个日志的日志编码数据作为一个数据块进行通用压缩。若日志编码数据总和还是小于预设数据量,则继续获取下一日志对应的日志编码数据,直至日志编码数据总和大于或等于预设数据量,形成一个数据块进行通用压缩。
在一个实施例中,参考图5,为数据块的存储方式。在存储数据块时,需要记录数据块大小(Block Size),记录数据块中每个日志对应的日志编码数据。一个日志对应的日志编码数据包括日志大小(Log Size)、日志标识(Log ID)、日志模板标识(Template ID)、各个变量类字符串对应的编码数据(也可以称为参数,Param)。
上述实施例中,基于当前日志模板对应的模板标识和目标编码序列,生成目标日志对应的日志编码数据;对日志编码数据进行通用压缩,得到日志压缩数据。这样,先生成日志编码数据,再进行通用压缩得到日志压缩数据,可以进一步提高日志压缩率。
在一个实施例中,如图6所示,提供了一种日志还原方法,以该方法应用于计算机设备来举例说明,该计算机设备可以是上述图1中的终端102或服务器104。参考图6,日志还原方法包括以下步骤:
步骤S602,获取目标日志对应的日志压缩数据;日志压缩数据是基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的。
其中,初始日志模板是通过将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,第一初始字符串是目标日志的各个日志字符串中,与初始日志模板中的变量类模板字符串匹配的日志字符串,第二初始字符串是目标日志的各个日志字符串中,与初始日志模板中的常量类模板字符串匹配的日志字符串。
可以理解,日志压缩数据的生成过程可以参考前述日志压缩方法的各个实施例的内容,此处不再赘述。
具体地,在需要查阅目标日志或对目标日志进行数据分析时,计算机设备可以获取目标日志对应的日志压缩数据,基于日志压缩数据还原出原始的目标日志。
在一个实施例中,若日志压缩数据是对日志编码数据进行通用压缩得到的,则先对日志压缩数据进行通用解压,再基于日志编码数据还原出原始的目标日志。
在一个实施例中,终端可以发送携带目标日志的日志标识的日志获取请求至服务器。服务器基于日志标识获取目标日志对应的日志压缩数据,基于日志压缩数据还原出原始的目标日志,向终端发送原始的目标日志。
步骤S604,获取模板标识对应的初始日志模板,获取第一编码数据对应的日志字符串。
步骤S606,基于第一位置关系,将初始日志模板中的变量类模板字符串替换为相应的日志字符串,得到目标日志。
具体地,在进行日志还原时,计算机设备可以基于日志压缩数据中的模板标识对应的初始日志模板,基于日志压缩数据中的第一编码数据获取第一编码数据对应的日志字符串,基于日志压缩数据中的第一位置关系,将初始日志模板中的变量类模板字符串替换为相应的日志字符串,得到目标日志。
可以理解,若日志压缩数据是基于中间日志模板或目标日志模板生成的,也可以采用类似的方式还原出原始的目标日志。
在一个实施例中,计算机设备可以基于第一编码数据从动态字典中获取第一编码数据对应的日志字符串。
上述日志还原方法,通过获取目标日志对应的日志压缩数据;日志压缩数据是基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,初始日志模板是通过将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,第一初始字符串是目标日志的各个日志字符串中,与初始日志模板中的变量类模板字符串匹配的日志字符串,第二初始字符串是目标日志的各个日志字符串中,与初始日志模板中的常量类模板字符串匹配的日志字符串;获取模板标识对应的初始日志模板,获取第一编码数据对应的日志字符串;基于第一位置关系,将初始日志模板中的变量类模板字符串替换为相应的日志字符串,得到目标日志。这样,日志压缩数据是基于初始日志模板对应的模板标识、目标日志中属于变量类字符串的各个日志字符串分别对应的目标编码数据、目标日志中变量类字符串和常量类字符串之间的位置关系生成的,将目标日志中的常量字符串通过基于常量类字符串排列信息确定的初始日志模板对应的模板标识来表示,可以有效压缩日志数据,提高日志压缩率,将由大量字符串组成的目标日志转换为由模板标识、目标编码数据和位置关系组成的日志压缩数据,可以有效减少日志数据的数据量,提高日志压缩率。在进行日志还原时,只需要基于日志压缩数据中的模板标识获取对应的日志模板,基于日志压缩数据中的目标编码数据获取对应的日志字符串,基于模板标识对应的日志模板、目标编码数据对应的日志字符串和日志压缩数据中的位置关系,就可以快速准确还原出原始的日志。
在一个具体的实施例中,参考图7,日志压缩方法包括以下步骤:
1、日志解析
对用户写入的日志数据流进行分词和词频统计。分词是将一条日志划分成多个字符串,称为token(也可以称为词)。可以通过指定分隔符(如“,”,“;”等)对日志进行分词,对划分得到的token进行词频统计。
2、在线生成动态字典。
若一个token的词频达到字典生成阈值T(create_dict),则将该token添加到动态字典中,否则持续更新词频统计结果。
token被加入动态字典后,在动态字典中保存token和对应的编码数据、词频。在处理新到来的日志时,及时对动态字典中的词频进行更新,便于后续生成日志模板。
token在动态字典中编码数据(code)的格式采用:1byte(字节)的标识符+小于或等于4byte的可变长编码。这样的编码方式使得token的编码数据的大小范围为2~5个字节。1byte(字节)的标识符为动态字典的字典标识,可变长编码根据字典大小自增生成,是int型数字。为了保证编码有收益,需要保证token的原始数据大小比其对应的编码数据大,于是动态字典只处理长度大于5字节的token,其余token通过超短词字典处理。超短词字典只用于缓存高频且长度低于5字节的token,不对其进行编码。
3、在线匹配和生成动态模板。
对每条日志在线匹配和生成动态模板。日志模板的常量部分存储高频词,变量部分通过一个通配符“<*>”来表示日志中词频较低的词。
3-1、模板匹配
将当前日志与现有日志模板进行匹配,若匹配成功则基于现有日志模板进行日志编码。
假设当前日志的token数量为L(log),模板匹配成功阈值T(match)(范围在0~1之间),现有日志模板的常量数量与变量数量之和(两个常量之间最多只有一个变量)为S(template),若符合S(template)≥T(match)*L(log),并且日志里按顺序出现了现有日志模板中常量token,且相对顺序一致,日志里其余token也可以被现有日志模板中的通配符匹配的话,确定当前日志与现有日志模板匹配成功。
3-2、模板生成
若当前日志与现有日志模板匹配失败,可以生成当前日志对应的新日志模板,基于新日志模板进行日志编码。
根据动态字典中词频统计结果,将词频达到阈值T(const)的token作为新日志模板的常量部分,其余token作为新日志模板的变量部分,变量部分通过通配符“<*>”来表示。两个常量token之间最多只有一个变量token。
假设当前日志的token数量为L(log),模板生成成功阈值T(create)(范围在0~1之间),新日志模板的常量数量与变量数量之和(例如两个常量之间最多只有一个变量)为S(template),若符合S(template)≥T(create)*L(log),则表明日志模板创建成功。
4、编码
模板匹配成功或模板新建成功的日志被分为常量和变量两个部分,常量部分通过动态模板进行编码,变量部分则通过动态字典进行编码,模板新建失败的日志直接采用动态字典进行编码。
5、通过通用压缩工具压缩。
对编码后的日志数据以块为单位使用通用压缩工具(如ZSTD和Deflate等)压缩,进一步处理块内的冗余。
日志数据的解码流程包括以下步骤:
1、确定日志中的常量部分
读取日志编码数据中的模板编码序号,查找该模板编码序号对应的日志模板,基于查找到的日志模板确定日志中的常量部分。
2、确定日志中的变量部分
若在日志编码数据中读取到字典标识,则查找该字典标识对应的动态字典,在动态字典中查找编码数据对应的token,得到日志中的变量部分。
3、组合常量部分和变量部分
基于日志模板将日志中的常量部分和变量部分恢复原始顺序,得到原始日志。
举例说明,当前日志为{Timestamp:“[2022-5-1 12:00:00]”,URL:“/is/a/test”,Message:“a/test”,Server_ip:127.0.0.1}。当前日志的编码流程如下:
当前日志对应的token如表1所示。
表1
假设目前无匹配成功的现有日志模板,设T(const)为11,T(create)为0.5,T(match)为0.5,则创建的新日志模板如表2所示。
表2
S(template)为11,满足模板创建成功的条件。若新日志模板的编码序号(即模板标识)Template ID为1。则当前日志被新日志模板替换后的数据如表3所示。
表3
其中,新日志模板的编码序号替换了当前日志中的常量部分,后面的5个token属于模板的变量部分,通过动态字典来编码。
当前日志的最终编码数据如表4所示。
表4
其中,1表示一个字节的字典标识,值为ASCII码1。其后的6或5表示动态字典中的编码数据。可以理解,时间信息可以不用编码。
当前日志的解码流程如下:
解析常量:读取Template ID为1的日志模板{Timestamp:“<*>”,URL:“<*>a/<*>Message:“a/<*>Server_ip:<*>}
解析变量:读取到原始数据“[2022-5-1 12:00:00]”和“/is/”,直接按顺序写。读取到ASCII为1的字节,表明需要查询动态字典,根据字典编码6和5,从动作字典中获取原始数据“test”,”和“127.0.0.1”。
对模板常量和解析出的变量按顺序复原得到:Timestamp:“[2022-5-1 12:00:00]”,URL:“/is/a/test”,Message:“a/test”,Server_ip:127.0.0.1。
上述实施例中,本申请的日志压缩方法可以同时兼顾局部冗余和全局冗余,用动态字典和动态模板的编码方式可以减少全局冗余,日志按块存储通过减少局部冗余,有效提高日志数据的压缩率。并且,动态模板、动态字典均为全局共享,都是在线生成、不断更新的,维护便利。日志按块存储,支持随机读操作。日志只需要扫描一遍就能进行编码压缩,有效减少编码压缩过程中日志数据的扫描次数,提高了编码压缩效率。本申请的日志压缩方法可实现流式处理,批量读取日志到内存,批量编码压缩日志数据并持久化存储。本申请的日志压缩方法在实现减少日志数据对存储空间的消耗、节约成本的同时,可以保证随机读写的性能。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的日志压缩方法的日志压缩装置,一种用于实现上述所涉及的日志还原方法的日志还原装置。上述装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个日志压缩装置实施例中的具体限定可以参见上文中对于日志压缩方法的限定,下面所提供的一个或多个日志还原装置实施例中的具体限定可以参见上文中对于日志还原方法的限定,在此不再赘述。
在一个实施例中,如图8所示,提供了一种日志压缩装置,包括:日志获取模块802、日志模板确定模块804、字符串分类模块806、编码数据获取模块808和日志压缩数据生成模块810,其中:
日志获取模块802,用于获取目标日志。
日志模板确定模块804,用于将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板。
字符串分类模块806,用于从目标日志的各个日志字符串中,将与初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串。
编码数据获取模块808,用于获取各个第一初始字符串分别对应的第一编码数据。
日志压缩数据生成模块810,用于基于初始日志模板对应的模板标识、各个第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成目标日志对应的日志压缩数据。
上述日志压缩装置,将目标日志中的第二初始字符串通过基于字符串排列信息确定的初始日志模板对应的模板标识来表示,可以有效压缩日志数据,提高日志压缩率,将由大量字符串组成的目标日志转换为由模板标识、第一编码数据和第一位置关系组成的日志压缩数据,可以有效减少日志数据的数据量,提高日志压缩率。
在一个实施例中,日志模板确定模块还用于当目标日志包含候选日志模板中的各个常量类模板字符串、且常量类模板字符串在目标日志和候选日志模板中的出现顺序一致、且目标日志中存在与变量类模板字符串匹配的日志字符串时,确定目标日志和候选日志模板匹配成功。
在一个实施例中,编码数据获取模块还用于获取动态字典;动态字典包括候选字符串和候选字符串对应的候选编码数据,候选字符串对应的目标词频信息大于预设词频信息,候选编码数据的数据量小于对应的候选字符串的数据量,动态字典中的候选字符串数量是动态更新的;在动态字典中,查询各个第一初始字符串分别对应的编码数据;基于动态字典中与第一初始字符串匹配的候选字符串所对应的候选编码数据,得到查询成功的各个第一初始字符串分别对应的第一编码数据,将查询失败的各个第一初始字符串作为查询失败的各个第一初始字符串分别对应的第一编码数据。
在一个实施例中,日志压缩装置还用于:
在每次获取日志时,确定当前日志对应的各个当前字符串;
在动态字典中已存在当前字符串的情况下,基于当前日志,更新当前字符串在动态字典中的词频信息;
在动态字典中不存在当前字符串的情况下,基于当前日志更新当前字符串对应的历史词频信息,得到当前字符串对应的目标词频信息,在当前字符串对应的目标词频信息大于预设词频信息时,生成当前字符串对应的编码数据,在动态字典中添加当前字符串和对应的编码数据、目标词频信息。
在一个实施例中,日志模板确定模块还用于将目标日志对应的日志字符串数量分别和各个初始日志模板对应的模板字符串数量进行匹配,将匹配成功的初始日志模板作为中间日志模板。
字符串分类模块还用于从目标日志的各个日志字符串中,将与中间日志模板中的变量类模板字符串匹配的日志字符串作为第一中间字符串,将与中间日志模板中的常量类模板字符串匹配的日志字符串作为第二中间字符串。
编码数据获取模块还用于获取各个第一中间字符串分别对应的第二编码数据。
日志压缩数据生成模块还用于基于中间日志模板对应的模板标识、各个第二编码数据、目标日志中第一中间字符串和第二中间字符串之间的第二位置关系,生成目标日志对应的日志压缩数据。
在一个实施例中,日志模板确定模块还用于将日志字符串数量和模板匹配阈值进行融合,得到目标日志对应的第一融合数据;当初始日志模板对应的模板字符串数量大于或等于第一融合数据时,确定目标日志和初始日志模板匹配成功,将匹配成功的初始日志模板作为中间日志模板;当初始日志模板对应的模板字符串数量小于第一融合数据时,确定目标日志和初始日志模板匹配失败。
在一个实施例中,日志模板确定模块还用于当目标日志和候选日志模板匹配失败或目标日志和初始日志模板匹配失败时,将目标日志中各个日志字符串分为变量类日志字符串和常量类日志字符串,基于变量类日志字符串和常量类日志字符串,生成目标日志对应的目标日志模板;变量类日志字符串对应的目标词频信息小于常量类日志字符串对应的目标词频信息。
编码数据获取模块还用于获取属于变量类日志字符串的各个日志字符串分别对应的第三编码数据。
日志压缩数据生成模块还用于基于目标日志模板对应的模板标识、各个第三编码数据、目标日志中变量类日志字符串和常量类日志字符串之间的第三位置关系,生成目标日志对应的日志压缩数据。
在一个实施例中,日志模板确定模块还用于将日志字符串数量和模板生成阈值进行融合,得到目标日志对应的第二融合数据;对目标日志中的变量类日志字符串和常量类日志字符串进行数量统计,得到目标日志对应的参考字符串数量;其中,当目标日志中相邻常量类日志字符串之间存在变量类日志字符串时,相邻常量类日志字符串之间的变量类日志字符串的数量统计为预设数量,当目标日志中起始常量类日志字符串之前或结尾常量类日志字符串之后存在变量类日志字符串时,起始常量类日志字符串之前或结尾常量类日志字符串之后的变量类日志字符串的数量统计为预设数量;当参考字符串数量大于或等于第二融合数据时,基于变量类日志字符串和常量类日志字符串,生成目标日志模板;目标日志模板对应的模板字符串数量为参考字符串数量;当参考字符串数量小于第二融合数据时,基于目标日志中各个日志字符串分别对应的编码数据,得到目标日志对应的日志压缩数据。
在一个实施例中,日志模板确定模块还用于将常量类日志字符串作为目标模板字符串,基于变量类日志字符串,在各个目标模板字符串之间添加预设字符串,得到目标日志模板;其中,目标模板字符串用于作为目标日志模板中的常量类模板字符串,预设字符串用于作为目标日志模板中的变量类模板字符串;当目标日志中相邻常量类日志字符串之间存在变量类日志字符串时,在相应的相邻目标模板字符串之间添加预设数量个预设字符串;当起始常量类日志字符串之前存在变量类日志字符串时,在相应的目标模板字符串之前添加预设数量个预设字符串;当结尾常量类日志字符串之后存在变量类日志字符串时,在相应的目标模板字符串之后添加预设数量个预设字符串。
在一个实施例中,当前日志模板为初始日志模板或中间日志模板或目标日志模板;当当前日志模板为初始日志模板时,当前变量类字符串为第一初始字符串,当前常量类字符串为第二初始字符串,当前编码数据为第一编码数据,当前位置关系为第一位置关系;当当前日志模板为中间日志模板时,当前变量类字符串为第一中间字符串,当前常量类字符串为第二中间字符串,当前编码数据为第二编码数据,当前位置关系为第二位置关系;当当前日志模板为目标日志模板时,当前变量类字符串为变量类日志字符串,当前常量类字符串为常量类日志字符串,当前编码数据为第三编码数据,当前位置关系为第三位置关系。
日志压缩数据生成模块还用于按照目标日志中各个当前变量类字符串的出现顺序,将各个当前编码数据进行排列,得到初始编码序列;基于目标日志中当前常量类字符串在各个当前变量类字符串之间的出现位置,在初始编码序列中相应位置***位置标识符,得到目标编码序列;基于当前日志模板对应的模板标识和目标编码序列,得到日志压缩数据。
在一个实施例中,日志压缩数据生成模块还用于基于当前日志模板对应的模板标识和目标编码序列,生成目标日志对应的日志编码数据;对日志编码数据进行通用压缩,得到日志压缩数据。
在一个实施例中,如图9所示,提供了一种日志还原装置,包括:M模块、N模块和L模块,其中:
日志压缩数据获取模块902,用于获取目标日志对应的日志压缩数据;日志压缩数据是基于初始日志模板对应的模板标识、目标日志中各个第一初始字符串分别对应的第一编码数据、目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,初始日志模板是通过将目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,第一初始字符串是目标日志的各个日志字符串中,与初始日志模板中的变量类模板字符串匹配的日志字符串,第二初始字符串是目标日志的各个日志字符串中,与初始日志模板中的常量类模板字符串匹配的日志字符串。
日志组成数据获取模块904,用于获取模板标识对应的初始日志模板,获取第一编码数据对应的日志字符串。
日志还原模块906,用于基于第一位置关系,将初始日志模板中的变量类字符串替换为相应的日志字符串,得到目标日志。
上述日志还原装置,日志压缩数据是基于初始日志模板对应的模板标识、目标日志中属于变量类字符串的各个日志字符串分别对应的目标编码数据、目标日志中变量类字符串和常量类字符串之间的位置关系生成的,将目标日志中的常量字符串通过基于常量类字符串排列信息确定的初始日志模板对应的模板标识来表示,可以有效压缩日志数据,提高日志压缩率,将由大量字符串组成的目标日志转换为由模板标识、目标编码数据和位置关系组成的日志压缩数据,可以有效减少日志数据的数据量,提高日志压缩率。在进行日志还原时,只需要基于日志压缩数据中的模板标识获取对应的日志模板,基于日志压缩数据中的目标编码数据获取对应的日志字符串,基于模板标识对应的日志模板、目标编码数据对应的日志字符串和日志压缩数据中的位置关系,就可以快速准确还原出原始的日志。
上述日志压缩装置和日志还原装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储动态字典、日志模板等数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种日志压缩方法或日志还原方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种日志压缩方法或日志还原方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10、11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (17)
1.一种日志压缩方法,其特征在于,所述方法包括:
获取目标日志;
将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板;
从所述目标日志的各个日志字符串中,将与所述初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与所述初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;
获取各个第一初始字符串分别对应的第一编码数据;
基于所述初始日志模板对应的模板标识、各个第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成所述目标日志对应的日志压缩数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,包括:
当所述目标日志包含候选日志模板中的各个常量类模板字符串、且常量类模板字符串在所述目标日志和候选日志模板中的出现顺序一致、且所述目标日志中存在与变量类模板字符串匹配的日志字符串时,确定所述目标日志和候选日志模板匹配成功。
3.根据权利要求1所述的方法,其特征在于,所述获取各个第一初始字符串分别对应的第一编码数据,包括:
获取动态字典;所述动态字典包括候选字符串和候选字符串对应的候选编码数据,所述候选字符串对应的目标词频信息大于预设词频信息,所述候选编码数据的数据量小于对应的候选字符串的数据量,所述动态字典中的候选字符串数量是动态更新的;
在所述动态字典中,查询各个第一初始字符串分别对应的编码数据;
基于动态字典中与第一初始字符串匹配的候选字符串所对应的候选编码数据,得到查询成功的各个第一初始字符串分别对应的第一编码数据,将查询失败的各个第一初始字符串作为查询失败的各个第一初始字符串分别对应的第一编码数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在每次获取日志时,确定当前日志对应的各个当前字符串;
在所述动态字典中已存在当前字符串的情况下,基于当前日志,更新当前字符串在所述动态字典中的词频信息;
在所述动态字典中不存在当前字符串的情况下,基于当前日志更新当前字符串对应的历史词频信息,得到当前字符串对应的目标词频信息,在当前字符串对应的目标词频信息大于预设词频信息时,生成当前字符串对应的编码数据,在所述动态字典中添加当前字符串和对应的编码数据、目标词频信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述目标日志对应的日志字符串数量分别和各个初始日志模板对应的模板字符串数量进行匹配,将匹配成功的初始日志模板作为中间日志模板;
从所述目标日志的各个日志字符串中,将与所述中间日志模板中的变量类模板字符串匹配的日志字符串作为第一中间字符串,将与所述中间日志模板中的常量类模板字符串匹配的日志字符串作为第二中间字符串;
获取各个第一中间字符串分别对应的第二编码数据;
基于所述中间日志模板对应的模板标识、各个第二编码数据、所述目标日志中第一中间字符串和第二中间字符串之间的第二位置关系,生成所述目标日志对应的日志压缩数据。
6.根据权利要求5所述的方法,其特征在于,所述将所述目标日志对应的日志字符串数量分别和各个初始日志模板对应的模板字符串数量进行匹配,将匹配成功的初始日志模板作为中间日志模板,包括:
将所述日志字符串数量和模板匹配阈值进行融合,得到所述目标日志对应的第一融合数据;
当初始日志模板对应的模板字符串数量大于或等于所述第一融合数据时,确定所述目标日志和初始日志模板匹配成功,将匹配成功的初始日志模板作为所述中间日志模板;
当初始日志模板对应的模板字符串数量小于所述第一融合数据时,确定所述目标日志和初始日志模板匹配失败。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述目标日志和所述候选日志模板匹配失败或所述目标日志和所述初始日志模板匹配失败时,将所述目标日志中各个日志字符串分为变量类日志字符串和常量类日志字符串,基于所述变量类日志字符串和所述常量类日志字符串,生成所述目标日志对应的目标日志模板;所述变量类日志字符串对应的目标词频信息小于所述常量类日志字符串对应的目标词频信息;
获取属于变量类日志字符串的各个日志字符串分别对应的第三编码数据;
基于所述目标日志模板对应的模板标识、各个第三编码数据、所述目标日志中所述变量类日志字符串和所述常量类日志字符串之间的第三位置关系,生成所述目标日志对应的日志压缩数据。
8.根据权利要求7所述的方法,其特征在于,所述基于所述变量类日志字符串和所述常量类日志字符串,生成所述目标日志对应的目标日志模板,包括:
将所述日志字符串数量和模板生成阈值进行融合,得到所述目标日志对应的第二融合数据;
对所述目标日志中的变量类日志字符串和常量类日志字符串进行数量统计,得到所述目标日志对应的参考字符串数量;其中,当所述目标日志中相邻常量类日志字符串之间存在变量类日志字符串时,相邻常量类日志字符串之间的变量类日志字符串的数量统计为预设数量,当所述目标日志中起始常量类日志字符串之前或结尾常量类日志字符串之后存在变量类日志字符串时,起始常量类日志字符串之前或结尾常量类日志字符串之后的变量类日志字符串的数量统计为预设数量;
当所述参考字符串数量大于或等于所述第二融合数据时,基于所述变量类日志字符串和所述常量类日志字符串,生成所述目标日志模板;所述目标日志模板对应的模板字符串数量为所述参考字符串数量;
当所述参考字符串数量小于所述第二融合数据时,基于所述目标日志中各个日志字符串分别对应的编码数据,得到所述目标日志对应的日志压缩数据。
9.根据权利要求8所述的方法,其特征在于,所述基于所述变量类日志字符串和所述常量类日志字符串,生成所述目标日志模板,包括:
将所述常量类日志字符串作为目标模板字符串,基于所述变量类日志字符串,在各个目标模板字符串之间添加预设字符串,得到所述目标日志模板;
其中,所述目标模板字符串用于作为所述目标日志模板中的常量类模板字符串,所述预设字符串用于作为所述目标日志模板中的变量类模板字符串;当目标日志中相邻常量类日志字符串之间存在变量类日志字符串时,在相应的相邻目标模板字符串之间添加预设数量个预设字符串;当所述起始常量类日志字符串之前存在变量类日志字符串时,在相应的目标模板字符串之前添加预设数量个预设字符串;当所述结尾常量类日志字符串之后存在变量类日志字符串时,在相应的目标模板字符串之后添加预设数量个预设字符串。
10.根据权利要求1至9任一项所述的方法,其特征在于,当前日志模板为初始日志模板或中间日志模板或目标日志模板;当所述当前日志模板为初始日志模板时,当前变量类字符串为第一初始字符串,当前常量类字符串为第二初始字符串,当前编码数据为第一编码数据,当前位置关系为第一位置关系;当所述当前日志模板为中间日志模板时,当前变量类字符串为第一中间字符串,当前常量类字符串为第二中间字符串,当前编码数据为第二编码数据,当前位置关系为第二位置关系;当所述当前日志模板为目标日志模板时,当前变量类字符串为变量类日志字符串,当前常量类字符串为常量类日志字符串,当前编码数据为第三编码数据,当前位置关系为第三位置关系;
所述日志压缩数据的生成过程包括以下步骤:
按照所述目标日志中各个当前变量类字符串的出现顺序,将各个当前编码数据进行排列,得到初始编码序列;
基于所述目标日志中当前常量类字符串在各个当前变量类字符串之间的出现位置,在所述初始编码序列中相应位置***位置标识符,得到目标编码序列;
基于所述当前日志模板对应的模板标识和所述目标编码序列,得到所述日志压缩数据。
11.根据权利要求10所述的方法,其特征在于,所述基于所述当前日志模板对应的模板标识和所述目标编码序列,得到所述日志压缩数据,包括:
基于所述当前日志模板对应的模板标识和所述目标编码序列,生成所述目标日志对应的日志编码数据;
对所述日志编码数据进行通用压缩,得到所述日志压缩数据。
12.一种日志还原方法,其特征在于,所述方法包括:
获取目标日志对应的日志压缩数据;所述日志压缩数据是基于初始日志模板对应的模板标识、所述目标日志中各个第一初始字符串分别对应的第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,所述初始日志模板是通过将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,所述第一初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的变量类模板字符串匹配的日志字符串,所述第二初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的常量类模板字符串匹配的日志字符串;
获取所述模板标识对应的初始日志模板,获取所述第一编码数据对应的日志字符串;
基于所述第一位置关系,将所述初始日志模板中的变量类字符串替换为相应的日志字符串,得到所述目标日志。
13.一种日志压缩装置,其特征在于,所述装置包括:
日志获取模块,用于获取目标日志;
日志模板确定模块,用于将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板;
字符串分类模块,用于从所述目标日志的各个日志字符串中,将与所述初始日志模板中的变量类模板字符串匹配的日志字符串作为第一初始字符串,将与所述初始日志模板中的常量类模板字符串匹配的日志字符串作为第二初始字符串;
编码数据获取模块,用于获取各个第一初始字符串分别对应的第一编码数据;
日志压缩数据生成模块,用于基于所述初始日志模板对应的模板标识、各个第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系,生成所述目标日志对应的日志压缩数据。
14.一种日志还原装置,其特征在于,所述装置包括:
日志压缩数据获取模块,用于获取目标日志对应的日志压缩数据;所述日志压缩数据是基于初始日志模板对应的模板标识、所述目标日志中各个第一初始字符串分别对应的第一编码数据、所述目标日志中第一初始字符串和第二初始字符串之间的第一位置关系生成的,所述初始日志模板是通过将所述目标日志对应的日志字符串排列信息和候选日志模板对应的模板字符串排列信息进行匹配,将匹配成功的候选日志模板作为初始日志模板,所述第一初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的变量类模板字符串匹配的日志字符串,所述第二初始字符串是所述目标日志的各个日志字符串中,与所述初始日志模板中的常量类模板字符串匹配的日志字符串;
日志组成数据获取模块,用于获取所述模板标识对应的初始日志模板,获取所述第一编码数据对应的日志字符串;
日志还原模块,用于基于所述第一位置关系,将所述初始日志模板中的变量类字符串替换为相应的日志字符串,得到所述目标日志。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11或12中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11或12中任一项所述的方法的步骤。
17.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11或12中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210822255.0A CN115408350A (zh) | 2022-07-13 | 2022-07-13 | 日志压缩、日志还原方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210822255.0A CN115408350A (zh) | 2022-07-13 | 2022-07-13 | 日志压缩、日志还原方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115408350A true CN115408350A (zh) | 2022-11-29 |
Family
ID=84158466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210822255.0A Pending CN115408350A (zh) | 2022-07-13 | 2022-07-13 | 日志压缩、日志还原方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115408350A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115757049A (zh) * | 2023-01-09 | 2023-03-07 | 深圳市蓝凌软件股份有限公司 | 多业务模块日志记录方法、***、电子设备及存储介质 |
CN116708589A (zh) * | 2023-08-03 | 2023-09-05 | 腾讯科技(深圳)有限公司 | 包头的压缩方法、装置、计算机设备和存储介质 |
-
2022
- 2022-07-13 CN CN202210822255.0A patent/CN115408350A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115757049A (zh) * | 2023-01-09 | 2023-03-07 | 深圳市蓝凌软件股份有限公司 | 多业务模块日志记录方法、***、电子设备及存储介质 |
CN115757049B (zh) * | 2023-01-09 | 2023-05-05 | 深圳市蓝凌软件股份有限公司 | 多业务模块日志记录方法、***、电子设备及存储介质 |
CN116708589A (zh) * | 2023-08-03 | 2023-09-05 | 腾讯科技(深圳)有限公司 | 包头的压缩方法、装置、计算机设备和存储介质 |
CN116708589B (zh) * | 2023-08-03 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 包头的压缩方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115408350A (zh) | 日志压缩、日志还原方法、装置、计算机设备和存储介质 | |
JP6190041B2 (ja) | 安否確認システム及び秘匿化データの類似検索方法 | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
CN114764557A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115208414B (zh) | 数据压缩方法、数据压缩装置、计算机设备及存储介质 | |
EP3154202A1 (en) | Encoding program, encoding method, encoding device, decoding program, decoding method, and decoding device | |
CN105144157A (zh) | 用于压缩数据库中的数据的***和方法 | |
CN112463784A (zh) | 数据去重方法、装置、设备及计算机可读存储介质 | |
CN116978011B (zh) | 一种用于智能目标识别的图像语义通信方法及*** | |
US20030122694A1 (en) | Variable length encoding and decoding of ascending numerical sequences | |
CN112199374B (zh) | 针对数据缺失的数据特征挖掘方法及其相关设备 | |
EP1311978A1 (en) | Focal point compression method and apparatus | |
CN110266834B (zh) | 基于互联网协议地址的地区查找方法及装置 | |
CN110825706B (zh) | 一种数据压缩的方法和相关设备 | |
CN115603758A (zh) | 一种客户号压缩和解压方法及装置 | |
US8244677B2 (en) | Focal point compression method and apparatus | |
US20170048303A1 (en) | On the fly statistical delta differencing engine | |
CN111858391A (zh) | 一种数据处理过程中优化压缩存储格式的方法 | |
CN112527753B (zh) | Dns解析记录无损压缩方法、装置、电子设备及存储介质 | |
CN112669396B (zh) | 图像无损压缩方法和装置 | |
CN112686966B (zh) | 图像无损压缩方法和装置 | |
CN113486123B (zh) | 行为数据同步方法、装置、计算机设备和存储介质 | |
US20170337204A1 (en) | Differencing engine for moving pictures | |
CN114640357B (zh) | 数据编码方法、设备及存储介质 | |
CN117118453A (zh) | 一种基于大数据的数据压缩存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |