一种基于列存储的NetFlow数据保存方法与装置与流程

文档序号:28435063发布日期:2022-01-12 01:44阅读:92来源:国知局
一种基于列存储的NetFlow数据保存方法与装置与流程
一种基于列存储的netflow数据保存方法与装置
技术领域
1.本发明的实施例一般涉及数据处理领域,尤其涉及一种基于列存储的netflow数据保存方法与装置。


背景技术:

2.在信息时代,信息的存储、管理、查询、更新都非常重要。随着数据不断增多,数据库的存储量越来越大,每一次查询操作的时间会更长,总耗时不断增多。在实际应用场景中,数据的需求量都非常大,数据库通常需要应对实时的大规模并发查询,那么能否快速响应并返回并行计算结果,就显得尤为重要。
3.现有关系型数据库,如oracle、db2、mysql、sql server,是采用行式存储法存储数据。在基于行式存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在。行存储的写入是一次完成。数据读取时,行存储通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列。行存储的写入消耗的时间较少,并且能够保证数据的完整性,但是数据读取过程中会产生冗余数据,影响到数据的处理效率。
4.列式存储是相对于行式存储来说的,新兴的hbase、hp vertica、emc greenplum等分布式数据库均采用列式存储。在基于列式存储的数据库中,数据是按照列为基础的逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。列存储需要把一行记录拆分成单列保存,写入次数比行存储多。列存储每次读取的数据是集合的一段或者全部,不存在冗余性问题。
5.由于列存储的每一列数据类型是同质的,不存在二义性问题。相比之下,行存储则要复杂得多,因为在一行记录中保存了多种类型的数据,数据解析需要在多种数据类型之间频繁转换,这个操作很消耗cpu,增加了解析的时间。所以,列存储的解析过程更有利于分析大数据。
6.如专利:“由行存储到列存储的格式转化方法、查询方法及装置(cn201911170878.9)”:读取数据库结构体类型的行存储表数据,并将读取的行存储表数据存储至数据库结构体类型的表中;从结构体类型的表读取表总数和各表表名,解析数据库结构体类型的表中的各表,得到行存储表数据的各表的各列的列名和列数据类型,以及获取硬件解析所述数据库所需信息;根据表总数、表名、列名及列数据类型创建包含硬件解析数据库所需信息的设定列存储格式的列容器;以行为单位从解析后的行存储表数据的各表读取数据,并将以行为单位读取的数据存储至列容器中,得到列存储表数据。通过上述方案能够实现存储格式转化,提高硬件解析数据库的效率和速度。此方式需要先将数据用行存储对齐进行存储,再转化为列存储的方式,增加了存储时间,使存储过程复杂化。


技术实现要素:

7.为克服上述存在的技术问题,本发明提供一种基于列存储的netflow数据保存方
法及装置,实现对netflow数据的列存储方法,能够灵活的对netflow的存储报文数据进行扩展,增加数据的兼容性,减少从文件中检索netflow数据时的磁盘io读取量,提高查询效率。
8.为实现上述目的,本发明采用下述技术方案:
9.在本发明的第一方面,提供了一种基于列存储的netflow数据保存方法。该方法包括:
10.s01:接收netflow数据,对其进行解析,获取flow里的各属性的值,并将每个属性的值按处理的flow的顺序保存到文件中;
11.s02:判断是否已过当前采集周期,若没有超过,执行s03;若已超过,执行s04;
12.s03:根据flow的属性名称将其对应的值写入对应的列文件中;
13.s04:对存储的文件进行切割,生成采集时间范围内的列数据文件、摘要文件及新的采集周期目录,再执行s03;
14.s05:保存列文件信息并采集统计信息。
15.进一步地,s01中所述的flow里各属性包括:flow的源ip地址属性、flow的目的ip地址属性、flow的协议属性、flow的下一跳属性、flow的包数属性、flow的流量属性、flow的输入接口属性、flow的输出接口属性、flow的源协议端口号属性、flow的目的协议端口号属性、flow的源as号属性、flow的目的as号属性、flow的tcp标签属性、flow的源掩码属性、flow的目的掩码属性、flow的tos属性。
16.进一步地,s02中所述的采集周期为一分钟。
17.进一步地,s04中所述的摘要文件的内容包括:收到的flow数、丢失的flow数、存储的列信息。
18.进一步地,所述的收到的flow数为当前一分钟收到的实际的netflow报文的flow数量。
19.进一步地,丢失的flow数为由于网络或设备问题导致丢失的flow的数量。
20.进一步地,丢失的flow数根据netflow的报文的序列号进行统计计算。
21.进一步地,存储的列信息包含当前一分钟里存储的列名称,列数据格式。
22.进一步地,s05中所述的统计信息的内容包括:收到的flow数、丢失的flow数。
23.在本发明的第二方面,提供了一种基于列存储的netflow数据保存装置。该装置包括:
24.接收模块:用于接收netflow数据,对其进行解析,获取flow里的各属性的值,并将每个属性的值按处理的flow的顺序保存到文件中;
25.判断模块:用于判断是否已过当前采集周期;
26.写入模块:用于根据flow的属性名称将其对应的值写入对应的列文件中;
27.生成模块:用于对存储的文件进行切割,生成采集时间范围内的列数据文件、摘要文件及新的采集周期目录,根据flow的属性名称将其对应的值写入对应的列文件中;
28.保存模块:用于保存列文件信息并采集统计信息。
29.进一步地,接收模块中所述的flow里各属性包括:flow的源ip地址属性、flow的目的ip地址属性、flow的协议属性、flow的下一跳属性、flow的包数属性、flow的流量属性、flow的输入接口属性、flow的输出接口属性、flow的源协议端口号属性、flow的目的协议端
口号属性、flow的源as号属性、flow的目的as号属性、flow的tcp标签属性、flow的源掩码属性、flow的目的掩码属性、flow的tos属性。
30.进一步地,判断模块中所述的采集周期为一分钟
31.进一步地,生成模块中所述的摘要文件的内容包括:收到的flow数、丢失的flow数、存储的列信息。
32.进一步地,所述的收到的flow数为当前一分钟收到的实际的netflow报文的flow数量。
33.进一步地,丢失的flow数为由于网络或设备问题导致丢失的flow的数量。
34.进一步地,丢失的flow数根据netflow的报文的序列号进行统计计算。
35.进一步地,存储的列信息包含当前一分钟里存储的列名称,列数据格式。
36.进一步地,保存模块中所述的统计信息的内容包括:收到的flow数、丢失的flow数。
37.在本发明的第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述基于列存储的netflow数据保存方法。
38.在本发明的第四方面,提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有执行基于列存储的netflow数据保存方法的计算机程序。
39.以上提及英文缩写释义:
40.netflow:一种网络监测功能
41.flow:流,一个最小的统计单元
42.ip:internet protocol,网际互连协议
43.as:autonomous system,自治系统
44.tcp:transmission control protocol,传输控制协议
45.tos:terms ofservice,服务条款
46.io:input/output,输入/输出
47.本发明能够灵活的对netflow的存储报文数据进行扩展,增加数据的兼容性,减少从文件中检索netflow数据时的磁盘io读取量,提高查询效率。
48.应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
附图说明
49.结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。其中:
50.图1示出了根据本发明的实施例的基于列存储的netflow数据保存方法的流程图;
51.图2示出了根据本发明的实施例的列文件示意图;
52.图3示出了根据本发明的实施例的基于列存储的netflow数据保存装置的方框图;
53.图4示出了根据本发明的实施例的计算机设备结构示意图。
具体实施方式
54.下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
55.本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
56.根据本发明的实施方式,提出了一种基于列存储的netflow数据保存方法及装置,通过列存储的方式保存netflow数据,灵活的对netflow的存储报文数据进行扩展,增加数据的兼容性,减少从文件中检索netflow数据时的磁盘io读取量,提高查询效率。
57.下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
58.图1是本发明一实施例的基于列存储的netflow数据保存方法流程示意图。该方法包括:
59.s01:接收netflow数据,对其进行解析,获取flow里的各属性的值,并将每个属性的值按处理的flow的顺序保存到文件中;
60.s02:判断是否已过当前采集周期,若没有超过,执行s03;若已超过,执行s04;
61.s03:根据flow的属性名称将其对应的值写入对应的列文件中;
62.s04:对存储的文件进行切割,生成采集时间范围内的列数据文件、摘要文件及新的采集周期目录,再执行s03;
63.s05:保存列文件信息并采集统计信息。
64.需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
65.为了对上述基于列存储的netflow数据保存方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
66.下面以一个具体实例来更加详细的对基于列存储的netflow数据保存方法进一步说明:
67.某项目需要对存储的netflow数据字段进行扩展,但由于此数据通过行存储的方式进行了保存,在对其进行扩展时会无法兼容此前保存的数据,因此采用列存储的方式对netflow数据重新存储。
68.netflow数据通过udp数据承载的应用数据,程序接收netflow数据,按netflow协议头格式读取报文头信息,获取netflow版本号,不是5或9的数据丢弃;netflow版本号是5,则按netflow v5的数据格式依次读取剩余的报文数据获取flow数据,得到各属性的值数据;netflow版本号是9,则按netflow v9的报文格式读取剩余的报文,判断该flow部分是数据包,根据数据包需要的模板包id获取属性字段的数据位置,从报文中按数据位置读取需要的属性值数据,解析后的格式如下:
69.70.[0071][0072]
并将每个属性的值按处理的flow的顺序保存到文件中,如图2所示。
[0073]
判断是否已过当前采集周期,采集周期未超过一分钟,则根据flow的属性名称将其对应的值写入对应的列文件中:
[0074]
srcaddr:27.184.6.132
[0075]
dstaddr:124.232.146.155
[0076]
inputint:149
[0077]
outputint:65
[0078]
srcport:56416
[0079]
dstport:80
[0080]
srcas:0
[0081]
dstas:0
[0082]
bgpnexthop:202.97.32.200
[0083]
srcmask:15
[0084]
dstmask:24
[0085]
protocol:tcp(6)
[0086]
tcp flags:0x10,ack
[0087]
ip tos:0x00
[0088]
direction:ingress(0)
[0089]
forwarding status
[0090]
samplerid:1
[0091]
保存列文件信息并采集统计信息,包括flow信息存储数量及丢失数量,存储flow信息的数量统计过程是在分析flow的时候,每分析一个则+1,直到写入到统计文件中后重置该值;netflow报文协议中有序列号,根据当前序列号和这个报文的flow数,可以推断下一个报文的序列号是多少,如果接收到的数据不是想要的序列号的话,就表示数据存在丢失,将丢失的flow数量计算出来:
[0092][0093]
程序继续接收netflow数据,对其进行解析,获取flow里的各属性的值,并将每个属性的值按处理的flow的顺序保存到文件中。
[0094]
判断是否已过当前采集周期,采集周期超过一分钟,对存储的文件进行切割,即关闭当前周期的所有写入文件,新生成下一个周期的目录与列文件,然后再将新的数据写入到新的文件中。切割完成后,在老的周期目录下生成摘要文件,写入摘要文件的信息;
[0095]
再根据flow的属性名称将其对应的值写入对应的列文件中;
[0096]
最后保存列文件信息并采集统计信息。
[0097]
基于同一发明构思,本发明还提出了一种基于列存储的netflow数据保存装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。如图3所示,该装置100包括:
[0098]
接收模块101:用于接收netflow数据,对其进行解析,获取flow里的各属性的值,并将每个属性的值按处理的flow的顺序保存到文件中;
[0099]
判断模块102:用于判断是否已过当前采集周期;
[0100]
写入模块103:用于根据flow的属性名称将其对应的值写入对应的列文件中;
[0101]
生成模块104:用于对存储的文件进行切割,生成采集时间范围内的列数据文件、摘要文件及新的采集周期目录,根据flow的属性名称将其对应的值写入对应的列文件中;
[0102]
保存模块105:用于保存列文件信息并采集统计信息。
[0103]
应当注意,尽管在上文详细描述中提及了基于列存储的netflow数据保存装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
[0104]
基于前述发明构思,如图4所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述基于列存储的netflow数据保存方法。
[0105]
基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述基于列存储的netflow数据保存方法的计算机程序。
[0106]
本发明提出的一种基于列存储的netflow数据保存方法及装置,能够灵活的对netflow的存储报文数据进行扩展,增加数据的兼容性,减少从文件中检索netflow数据时
的磁盘io读取量,提高查询效率。
[0107]
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
[0108]
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1