一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

日志数据存储系统、方法、设备及介质与流程

2022-11-14 13:01:55 来源:中国专利 TAG:


1.本发明涉及工业互联网领域,特别涉及日志数据存储系统、方法、设备及介质。


背景技术:

2.随着针对工控领域的威胁及攻击越来越多,电力系统安全问题越来越凸显,作为国家关键信息基础设施重要节点,以电力系统为代表的工控系统需要将自身的过程记录、流量数据、工作日志等信息以日志的形式上报至工控局域网内的网络探针设备进行存储,以便后期进行安全查阅、分析及审计。由于成本的限制,工控探针的内存、磁盘等硬件资源的配置往往比较低。但根据网络安全相关法律法规的要求,工控探针需要至少保持半年的工控日志,将有巨大量的日志数据需要存储。加之工控系统实时性较高,其日志产生速度快,这工控探针的存储速度有着较高要求。
3.在通用计算机领域通常使用数据库进行重要数据存储,例如关系型数据库和非关系型数据库,关系型数据库成本较高、对硬件资源要求高,且由于工控设备的日志格式不统一,关系型数据库并不适应于此类场景。随着大数据概念的兴起,越来越多的系统采用了非关系型数据库来存储无明显规律的日志数据。针对工控探针设备而言,常见的非关系型数据库在使用时软件体积大,需要大内存进行缓存,不适合低端型设备使用,又因为存储的日志数据过于庞大,进而后续只能支持键值查询,无法快速查询出对应的日志数据。
4.综上可见,如何合理存储日志数据,以便提高后续查询效率是本领域有待解决的问题。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种日志数据存储系统、方法、设备及介质,实现合理存储日志数据,以便提高后续查询效率。其具体方案如下:第一方面,本技术公开了一种日志数据存储系统,包括:时间索引确定模块,用于基于预设时间命令从预设时间索引表和/或预设时间索引备份表中确定出对应的目标时间索引;与所述时间索引确定模块连接的日志数据存储模块,用于将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区;与所述日志数据存储模块连接的日志信息存储模块,用于存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。
6.可选的,所述时间索引确定模块,包括:时间索引备份单元,用于将所述预设时间索引表进行备份处理,以得到对应的所述时间索引备份表。
7.可选的,所述时间索引确定模块,包括:操作类型确定单元,用于获取当前操作命令,并确定所述当前操作命令对应的操
作类型;第一检索单元,用于若所述当前操作命令的所述操作类型为读操作时,则利用所述预设时间索引备份表中的所述目标时间索引检索出对应的预设信息字段;第二检索单元,用于若所述当前操作命令的所述操作类型为写操作时,则利用所述预设时间索引表中的所述目标时间索引检索出对应的预设信息字段。
8.可选的,所述日志数据存储模块,包括:日志头存储单元,用于将包含所述待存储日志的设备地址信息、功能码、告警级别、设备类型、上条日志指针、日志内容指针的所述日志头存储至对应的所述预设日志数据区。
9.可选的,所述日志数据存储模块,包括:预设日志数据区构建单元,用于基于从小到大的编号顺序构建所述预设日志数据区的日志头部,并基于从大到小的编号顺序构建所述预设日志数据区的日志尾部。
10.可选的,所述日志数据存储模块,包括:第一存储单元,用于基于所述待存储日志数据的编号,将所述日志头存储至对应的所述日志头部,并将所述日志内容存储至对应的日志尾部;第二存储单元,用于当所述预设日志数据区满足预设条件时,从预设空闲区中申请备用日志数据区,并将所述待存储日志数据的所述日志头和所述日志内容存储至对应的备用日志数据区内。
11.可选的,所述日志信息存储模块,包括:位置确定单元,用于利用所述预设信息字段中的空闲数据头指针确定所述日志头存储的所述日志头部的编号,并利用所述预设信息字段中的空闲数据尾指针确定所述日志内容存储的所述日志尾部的编号;第一更新单元,用于当所述待存储日志数据已存储时,将所述预设时间索引表的第一版本号进行更新,并将所述预设时间索引表同步至预设磁盘文件;第二更新单元,用于当所述预设时间索引表同步至所述磁盘文件时,将所述预设时间索引备份表的第二版本号进行更新。
12.第二方面,本技术公开了一种日志数据存储方法,包括:基于预设时间命令从预设时间索引表和/或预设时间索引备份表中查询出对应的目标时间索引;将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区;存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。
13.第三方面,本技术公开了一种电子设备,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现前述公开的日志数据存储方法的步骤。
14.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的日志数据存储方法的步骤。
15.可见,本技术公开了一种日志数据存储系统,其中,时间索引确定模块,用于基于
预设时间命令从预设时间索引表和/或预设时间索引备份表中确定出对应的目标时间索引;与所述时间索引确定模块连接的日志数据存储模块,用于将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区;与所述日志数据存储模块连接的日志信息存储模块,用于存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。由此可见,本技术的时间索引确定模块可以确定出与待存储日志数据对应的目标时间索引,以便日志数据存储模块将待存储日志数据存储至与目标时间索引对应的预设日志数据区,又通过日志信息存储模块的预设信息字段确定待存储日志数据在预设日志数据区的具体的存储位置,因为待存储日志数据是基于目标时间索引进行存储的,即合理的将原庞大的日志数据按照时间进行切片存储,所以后续可以基于目标时间索引和预设信息字段查询到待存储日志数据的具体的存储位置,提高后续查询效率。
附图说明
16.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
17.图1为本技术公开的一种日志数据存储系统的结构图;图2为本技术公开的一种具体的预设日志数据区示意图;图3为本技术公开的一种具体的日志数据存储系统的结构图;图4为本技术公开的一种具体的预设日志数据区构建示意图;图5为本技术公开的一种具体的文件格式示意图;图6为本技术公开的一种日志数据存储方法流程图;图7为本技术公开的一种电子设备结构图。
具体实施方式
18.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.随着针对工控领域的威胁及攻击越来越多,电力系统安全问题越来越凸显,作为国家关键信息基础设施重要节点,以电力系统为代表的工控系统需要将自身的过程记录、流量数据、工作日志等信息以日志的形式上报至工控局域网内的网络探针设备进行存储,以便后期进行安全查阅、分析及审计。由于成本的限制,工控探针的内存、磁盘等硬件资源的配置往往比较低。但根据网络安全相关法律法规的要求,工控探针需要至少保持半年的工控日志,将有巨大量的日志数据需要存储。加之工控系统实时性较高,其日志产生速度快,这工控探针的存储速度有着较高要求。
20.在通用计算机领域通常使用数据库进行重要数据存储,例如关系型数据库和非关系型数据库,关系型数据库成本较高、对硬件资源要求高,且由于工控设备的日志格式不统
一,关系型数据库并不适应于此类场景。随着大数据概念的兴起,越来越多的系统采用了非关系型数据库来存储无明显规律的日志数据。针对工控探针设备而言,常见的非关系型数据库在使用时软件体积大,需要大内存进行缓存,不适合低端型设备使用,又因为存储的日志数据过于庞大,进而后续只能支持键值查询,无法快速查询出对应的日志数据。
21.为此本技术相应的提供了一种日志数据存储方案,实现合理存储日志数据,以便提高后续查询效率。
22.参见图1所示,本技术实施例公开了一种日志数据存储系统,包括:时间索引确定模块11,用于基于预设时间命令从预设时间索引表和/或预设时间索引备份表中确定出对应的目标时间索引;与所述时间索引确定模块连接的日志数据存储模块12,用于将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区;与所述日志数据存储模块连接的日志信息存储模块13,用于存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。
23.所述时间索引确定模块11,包括:时间索引备份单元,用于将所述预设时间索引表进行备份处理,以得到对应的所述时间索引备份表。时间索引表位于日志库文件头部,例如图2所示的一种具体的预设日志数据区示意图,区域大小为10mb,以每日86400秒为依据建立86400个时间索引,每个时间索引指向一个预设日志数据区的日志头部head及日志尾部tail。该预设日志数据区由当前秒级时间段内的所有日志构成,为便于倒序遍历查询最新的日志,日志间采用反向单向链表级联。可以理解的是,时间索引备份表与时间索引表的大小及内容一致,当时间索引表出现错误时,可用时间索引备份表对时间索引表进行恢复。以每日中的秒级为基本单位建立细粒化的日志数据的时间索引表,同一秒钟的待存储日志数据按顺序进行依次相连,可以提高待存储日志数据写入时定位效率、提高以时间为关键字的查询类操作快速定位到指定时间点、时间段的效率。
24.所述时间索引确定模块11,包括:操作类型确定单元,用于获取当前操作命令,并确定所述当前操作命令对应的操作类型;所述时间索引确定模块11,第一检索单元111,用于若所述当前操作命令的所述操作类型为读操作时,则利用所述预设时间索引备份表中的所述目标时间索引检索出对应的预设信息字段;所述时间索引确定模块11,还包括:第二检索单元112,用于若所述当前操作命令的所述操作类型为写操作时,则利用所述预设时间索引表中的所述目标时间索引检索出对应的预设信息字段。
25.所述日志数据存储模块12,包括:日志头存储单元121,用于将包含所述待存储日志的设备地址信息、功能码、告警级别、设备类型、上条日志指针、日志内容指针的所述日志头存储至对应的所述预设日志数据区。预设日志数据 区存储着日志的具体内容,预设日志数据区的大小至少为1个为32mb空间。一个预设日志数据区写满后,创建另一个预设日志数据区,多个日志数据区域之间无关联。待存储日志由日志头和日志内容两部分组成,日志头包括设备地址(identity document,即id)信息、功能码、告警级别、设备类型、上条日志指针、日志内容指针等信息。因此查询时,可通过日志头中的设备地址信息、功能码、告警级别、设备类型、上条日志指针、日志内容指针中的任意一种或几种查询条件快速对待存储日志进行多条件遍历搜索。
26.所述日志信息存储模块13,包括:第一更新单元,用于当所述待存储日志数据已存储时,将所述预设时间索引表的第一版本号进行更新,并将所述预设时间索引表同步至预设磁盘文件;所述日志信息存储模块13,包括:第二更新单元,用于当所述预设时间索引表同步至所述磁盘文件时,将所述预设时间索引备份表的第二版本号进行更新。例如当待存储日志数据批量写入后,对应地修改时间索引表并同步到磁盘文件,并且时间索引表的第一版本号加1,时间索引表同步到磁盘文件后,将时间索引备份表同步更新,且时间索引备份表的第二版本号加1,预设时间索引表的第一版本号和预设时间索引备份表的第二版本号用于日志文件断电保护,如当出现以外断电时,通过查询最新的第一版本号和第二版本号可以获取对应的日志数据。所述预设信息字段还包括校验码,校验码为预设信息字段的md5校验值。拥有均衡的文件信息区擦写频率,提高了磁盘使用寿命。
27.可见,本技术公开了一种日志数据存储系统,其中,时间索引确定模块,用于基于预设时间命令从预设时间索引表和/或预设时间索引备份表中确定出对应的目标时间索引;与所述时间索引确定模块连接的日志数据存储模块,用于将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区;与所述日志数据存储模块连接的日志信息存储模块,用于存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。由此可见,本技术的时间索引确定模块可以确定出与待存储日志数据对应的目标时间索引,以便日志数据存储模块将待存储日志数据存储至与目标时间索引对应的预设日志数据区,又通过日志信息存储模块的预设信息字段确定待存储日志数据在预设日志数据区的具体的存储位置,因为待存储日志数据是基于目标时间索引进行存储的,即合理的将原庞大的日志数据按照时间进行切片存储,所以后续可以基于目标时间索引和预设信息字段查询到待存储日志数据的具体的存储位置,提高后续查询效率。
28.参见图3所示,本技术实施例公开了一种具体的日志数据存储系统模块框架,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:所述日志数据存储模块12,包括:预设日志数据区构建单元122,用于基于从小到大的编号顺序构建所述预设日志数据区的日志头部,并基于从大到小的编号顺序构建所述预设日志数据区的日志尾部。预设日志数据区构建单元122将日志头和日志内容分开存储,二者分别从预设日志数据区的头部和尾部开始往中间写入数据,第一方面可以保证日志头信息字节对齐,第二方面是日志查询条件均在日志头部,显著缩短了待检索区域的长度,可以极大的提升后续日志查询效率。例如图4所示的一种具体的预设日志数据区构建示意图,基于日志内容指针使得第1条日志头和第1条日志内容之间、第2条日志头和第2条日志内容之间、...、第n条日志头和第n条日志内容之间存在映射关系。需要注意的是,预设日志数据区为待存储日志数据的日志区。
29.所述日志数据存储模块12,包括:第一存储单元123,用于基于所述待存储日志数据的编号,将所述日志头存储至对应的所述日志头部,并将所述日志内容存储至对应的日志尾部。可以理解的是,本技术提取不规则待存储日志数据的共性部分做日志头,即与日志内容两部分分开存储,二者通过链表进行关联,进而减少检索区域大小,可提高日志头进行多条件查询的效率。
30.所述日志数据存储模块12,包括:第二存储单元124,用于当所述预设日志数据区
满足预设条件时,从预设空闲区中申请备用日志数据区,并将所述待存储日志数据的所述日志头和所述日志内容存储至对应的备用日志数据区内。备用日志数据区即为空闲区,备用日志数据区位于文件末尾,其长度与预设文件信息区长度一致,主要用于进行数据库错保护设计。
31.所述日志信息存储模块13,包括:位置确定单元131,用于利用所述预设信息字段中的空闲数据头指针确定所述日志头存储的所述日志头部的编号,并利用所述预设信息字段中的空闲数据尾指针确定所述日志内容存储的所述日志尾部的编号。空闲数据头指针指向预设日志数据区空闲区域的起始,即待存储日志数据的日志头的存储位置,空闲数据尾指针指向预设日志数据区空闲区域的尾部,即待存储日志数据的日志内容的存储位置。预设信息字段中的事务状态时批量写入的两种状态,即启动事务及事务完成。需要注意的是,日志信息存储模块13将待存储日志数据的预设信息字段存储至预设文件信息区,预设信息字段为待存储日志数据的属性,因此预设文件信息区为待存储日志数据的属性区。
32.可以理解的是,将日志数据库模型设计为对象数据库,数据文件中直存储数据结构,通过nmap(network mapper)技术将磁盘文件映射至内存,打破了内存数据与持久化数据之间的界限,可有效提高数据文件读写的速度。杜绝巨型数据文件,按日进行日志切片存储,每个切片后的数据文件设计为属性区和日志区两部分。属性区大小固定,日志区大小与日志内容一致,可最大限度的缩小日志存储的磁盘空间要求。为降低大容量数据保存时对大容量内存的依赖,日志区可以由若干个32mb区域组成,不同的日志区之间数据独立。由于基于目标时间索引进行存储日志数据,使得从传统的巨型日志数据文件转换为轻量级日志数据存储系统,对cpu、内存、磁盘的性能要求低、容量要求低,适用于工控系统中的低端类设备使用。采用对象数据库模型,将数据结构直存于数据文件中,可有效提高数据文件读写的速度。如图5所示的一种具体的文件格式示意图,通过nmap技术将当日的数据文件影射至内存操作,用以减少磁盘io开销,进一步提高日志的操作效率。每个数据文件中直接存储着一个二进制数据结构,包含一个时间索引备份表、一个时间索引表、一个文件信息区、一个空闲区和多个日志数据区组成。
33.参见图6所示,本技术实施例公开了一种日志数据存储方法,包括:步骤s11:基于预设时间命令从预设时间索引表和/或预设时间索引备份表中确定出对应的目标时间索引。
34.步骤s12:将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区。
35.步骤s13:存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。
36.可见,本技术公开了一种日志数据存储系统,其中,时间索引确定模块,用于基于预设时间命令从预设时间索引表和/或预设时间索引备份表中确定出对应的目标时间索引;与所述时间索引确定模块连接的日志数据存储模块,用于将待存储日志数据的日志头和日志内容存储至与所述目标时间索引对应的预设日志数据区;与所述日志数据存储模块连接的日志信息存储模块,用于存储所述待存储日志数据的预设信息字段,并利用所述预设信息字段确定所述待存储日志数据在所述预设日志数据区的存储位置。由此可见,本技术的时间索引确定模块可以确定出与待存储日志数据对应的目标时间索引,以便日志数据
存储模块将待存储日志数据存储至与目标时间索引对应的预设日志数据区,又通过日志信息存储模块的预设信息字段确定待存储日志数据在预设日志数据区的具体的存储位置,因为待存储日志数据是基于目标时间索引进行存储的,即合理的将原庞大的日志数据按照时间进行切片存储,所以后续可以基于目标时间索引和预设信息字段查询到待存储日志数据的具体的存储位置,提高后续查询效率。
37.进一步的,本技术实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
38.图7为本技术实施例提供的一种电子设备的结构示意图。具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由电子设备执行的日志数据存储方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
39.本实施例中,电源23用于为电子设备上的各硬件设备提供工作电压;通信接口24能够为电子设备创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
40.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
41.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
42.其中,操作系统221用于管理与控制电子设备上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是windows、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备执行的日志数据存储方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括电子设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
43.进一步的,本技术实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的由日志数据存储过程中执行的方法步骤。
44.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
45.以上对本发明所提供的一种日志数据存储系统、方法、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献