一种网络流量数据索引方法及系统的制作方法

文档序号:6524323阅读:235来源:国知局
一种网络流量数据索引方法及系统的制作方法
【专利摘要】本发明公开了一种网络流量数据索引方法及系统,方法包括:实时捕获网络流量数据;在内存中通过对所述网络流量数据的每个索引字段维护一棵位图-字典树来建立并存储所述网络流量数据的索引结构,进而更新所述索引字段的索引结构;根据用户的查询请求来查询所述网络流量数据的索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给用户,用户根据该存储位置信息获取响应的数据。由此,提供一种能有效地支持实时高速流量记录的索引建立工作的网络流量数据索引方法及系统,即使在较小索引磁盘空间消耗的情况下,也能支持快速的索引查询操作。
【专利说明】—种网络流量数据索弓I方法及系统
【技术领域】
[0001]本发明涉及计算机网络流量存储,特别涉及一种网络流量数据索引方法及系统。【背景技术】
[0002]随着网络应用和用户的增加,网络流数据的规模越来越大,普通小型网络或者校园规模的网络流量带宽都已经到达1-1OGbps的速度,如此高速的网络链路带给网络流量存储与检索系统巨大的挑战。为了满足网络管理及网络取证等需求,系统应保证既能够实时存储网络数据流量,又可以在大规模网络数据集上进行高效的检索操作。例如,在网络取证操作中,运营商需要使用能方便有效地扫描存储的数据集的工具来检测入侵活动。当前,网络历史流量大多采用以下两种存储方法:第一种是存储流记录,常见的流记录采集、存储方法有sFl0W、NetFl0W和IPFIX等,这些方法仅仅保存了粗略的网络统计信息;另一种是存储网络的所有数据包,这些数据包不仅包含了头部信息,而且也包含了部分甚至全部的载荷内容。无论是存储流记录还是存储数据包,如何快速的检索这些流量数据是非常关键的。通常我们会对存储的流量数据建立索引以满足之后的查询工作。在面对高速链路、大规模网络和复杂多样应用时,仍旧存在着大量的挑战。网络流量的索引方法必须支持高速的实时插入速度、快速的查询响应以及较小的存储空间。
[0003]在流量索引方法的研究方面,目前主要有三种索引方法:哈希索引,多路搜索树索引以及位图索引方法:
[0004](I)哈希索引方法:网络流量存储系统Time-Machine就是采用这种索引方法。此方法在开始阶段,每次记录的插入只会消耗较小的CPU时间。但是随着记录数目的增加,由于哈希链冲突的不断增加,之后的插入操作将会花费大量的时间去查找哈希表中的对应存储位置。此外,由于哈希索引方法只支持单域的相等性查找,很难支持区间查找和多域组合查找。
[0005](2)多路搜索树索引方法:许多传统关系型数据库都是采用多路搜索树索引方法。但是由于多路搜索树在插入和检索过程中都需要采用二分查找操作去找到插入和检索记录的位置,而且如果采用传统的方法索引的更新会带来很多磁盘随机读写操作。所以多路搜索树并不能支持非常快的索引插入和查询速度。
[0006](3)位图索引方法:位图索引方法已经在许多数据存储领域广泛使用。此方法被证实非常适用于海量只读数据的索引和查询工作。至今为止已经存在使用位图索引方法非常优秀的数据库,比如FastBit。但是由于位图索引方法产生的索引文件非常巨大,尽管存在一些优秀的索引压缩编码方法,但是对于磁盘存储空间的消耗以及每次查询从磁盘读入索引文件的时间开销都是一个不可避免的缺点。
[0007]由于上述方法在网络流量的快速索引以及查询方面存在着不同程度的缺点,从而使得这些方法不能够真正应用于IOGbps及以上的高速链路环境中。上述情况迫切要求我们既能够实时地对高速链路环境下的网络数据流量进行存储,又能够对历史数据流量进行快速查询检索。[0008]在现有技术中,如发明名称为“一种海量历史数据的存储及索引方法”,该发明公开了一种海量历史数据的存储及索引方法,属于实时历史数据库领域。该方法根据分布式文件系统将大文件进行分块存储的特点,给出了一种简单高效的海量历史数据文件的存储方法和一种高效的分布式索引机制。该存储方法可以保证满足当前海量历史数据文件的存储要求,更保证具有在线扩展的特性;索引机制可以实现对海量历史数据的快速访问,同时在系统进行资源扩展以后,即底层物理存储发生变化时,该索引在无需修改的情况下依旧可以实现对数据的查找功能。但是该发明的方法更侧重分布式的存储和索引方法,用大文件分块存储来保证效率。而不是专注于索引算法本身的优化,没有针对海量网络流量数据特征进行优化。

【发明内容】

[0009]为了解决上述问题,本发明的目的在于,提供一种能有效地支持实时高速流量记录的索引建立工作的网络流量数据索引方法及系统,即使在较小索引磁盘空间消耗的情况下,也能支持快速的索引查询操作。
[0010]为实现上述目的,本发明提出一种网络流量数据索引方法,其特征在于,包括下列步骤:
[0011]步骤1,实时捕获网络流量数据;
[0012]步骤2,所述网络流量数据具有多个索引字段,在内存中通过对所述索引字段维护位图-字典树来建立并存储所述网络流量数据的索引结构,对于所述索引字段按字节来划分键值,通过使所述键值在所述位图-字典树的位图结构中所对应的非叶子节点的指针具有孩子节点、叶子节点的指针指向存储位置链表来更新所述网络流量数据的索引结构;
[0013]步骤3,根据用户的查询请求查询所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给用户,用户根据该存储位置信息获取响应的数据。
[0014]本发明提出的网络流量数据索引方法,其特征在于,在所述步骤2中,所述位图-字典树的高度等于所述索引字段的字节大小,对于所述索引字段按照每个字节一个键值来划分,更新所述网络流量数据的索引结构的方法具体为:
[0015]依次获取所述索引字段对应的键值,通过检测所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为1,来判断所述非叶子节点的指针具有孩子节点,若不具有孩子节点,则分配一个新节点,并使所述键值对应的指针指向该新节点,同时将该比特值置为1,以使所述非叶子节点的指针具有孩子节点,到达所述位图-字典树的叶子节点时,使所述叶子节点对应指针指向存储位置链表,在该存储位置链表中新增所述索引字段的存储位置信息。
[0016]本发明提出的网络流量数据索引方法,其特征在于,当内存中的所述索引结构大于内存阈值时,将所述索引结构存入磁盘,并在所述索引结构中增加一条记录并指向磁盘存储的位置,同时在内存中建立一个新的索引结构,用于处理后续的网络流量数据。
[0017]本发明提出的网络流量数据索引方法,其特征在于,将所述索引结构存入磁盘的具体方式为,在磁盘中按照所述位图-字典树的层来存储所述索引结构,且各层采用连续存储方式。
[0018]本发明提出的网络流量数据索引方法,其特征在于,将所述索引结构存入磁盘的方法具体为,
[0019]对于所述位图-字典树的每个节点,先存储位图结构,然后存储一个文件偏移位置的数组,该数组示出所述位图-字典树的每个节点的各孩子节点在磁盘中的存储位置,而对于所述位图-字典树的每个叶子节点,该数组示出每个叶子节点对应链表的存储位置。
[0020]本发明提出的网络流量数据索引方法,其特征在于,所述步骤3的查询所述索引结构的查询过程为,
[0021]将查询条件按照每个字节一个键值来划分,其中最后一个键值为未知键值,依此获取所述查询条件的键值,通过读取所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为I来获取该根节点对应孩子节点在磁盘中的存储位置,并读取该位置上的位图-字典树节点,否则返回查询结果为空,到达最后一个键值的前一个键值时,获取其在位图-字典树的位图结构中所对应的所有比特值为I的位,然后获取该所有比特值为I的位的偏移位置,最后读取这些偏移位置的叶子节点和其对应的链表元素,并将链表元素进行合并返回。
[0022]本发明还涉及一种网络流量数据索引系统,其特征在于,包括下列模块:
[0023]网络流量数据获取模块,用于通过网卡或板卡来实时捕获网络流量数据;
[0024]索引结构维护模块,所述网络流量数据具有多个索引字段,该模块用于在内存中通过使所述索引字段维护位图-字典树来建立并存储所述网络流量数据的索引结构,对于所述索引字段按字节来划分键值,通过使所述键值在所述位图-字典树的位图结构中所对应的非叶子节点的指针具有孩子节点、叶子节点的指针指向存储位置链表来更新所述网络流量数据的索引结构;
[0025]查询响应模块,用于根据用户的查询请求查询所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给用户,用户根据该存储位置信息获取响应的数据。
[0026]本发明提出的网络流量数据索引系统,其特征在于,在所述索引结构维护模块中,所述位图-字典树的高度等于所述索引字段的字节大小,对于所述索引字段按照每个字节一个键值来划分,更新所述网络流量数据的索引结构的方法具体为:
[0027]依次获取所述索引字段对应的键值,通过检测所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为1,来判断所述非叶子节点的指针具有孩子节点,若不具有孩子节点,则分配一个新节点,并使所述键值对应的指针指向该新节点,同时将该比特值置为1,以使所述非叶子节点的指针具有孩子节点,到达所述位图-字典树的叶子节点时,使所述叶子节点对应指针指向存储位置链表,在该存储位置链表中新增所述索引字段的存储位置信息。
[0028]本发明提出的网络流量数据索引系统,其特征在于,当内存中的所述索引结构大于内存阈值时,将所述索引结构存入磁盘,并在所述索引结构中增加一条记录并指向磁盘存储的位置,同时在内存中建立一个新的索引结构,用于处理后续的网络流量数据。
[0029]本发明提出的网络流量数据索引系统,其特征在于,将所述索引结构存入磁盘的具体方式为,在磁盘中按照所述位图-字典树的层来存储所述索引结构,且各层采用连续存储方式。[0030]本发明提出的网络流量数据索引系统,其特征在于,将所述索引结构存入磁盘的方法具体为,
[0031]对于所述位图-字典树的每个节点,先存储位图结构,然后存储一个文件偏移位置的数组,该数组示出所述位图-字典树的每个节点的各孩子节点在磁盘中的存储位置,而对于所述位图-字典树的每个叶子节点,该数组示出每个叶子节点对应链表的存储位置。
[0032]本发明提出的网络流量数据索引系统,其特征在于,所述查询响应模块的对存入磁盘的索引结构进行查询的查询过程为,
[0033]将查询条件按照每个字节一个键值来划分,其中最后一个键值为未知键值,依此获取所述查询条件的键值,通过读取所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为I来获取该根节点对应孩子节点在磁盘中的存储位置,并读取该位置上的位图-字典树节点,否则返回查询结果为空,到达最后一个键值的前一个键值时,获取其在位图-字典树的位图结构中所对应的所有比特值为I的位,然后获取该所有比特值为I的位的偏移位置,最后读取这些偏移位置的叶子节点和其对应的链表元素,并将链表元素进行合并返回。
[0034]本发明的网络流量数据索引方法具有以下主要优势:
[0035](I)实时索引记录插入速度快:利用网络流量索引字段的特征,本发明的索引方法对于每次索引结构的更新操作最多花费4次树节点的访问。
[0036](2)索引文件磁盘消耗小:索引文件大小和索引记录数目成线性关系,并且比快速比特索引文件大小小一半左右。
[0037](3)查询响应快:由于查询的索引可能存储在内存或磁盘上,对于内存中的索引结构,查询和插入操作一样只需花费4次对索引树节点的访问,对于磁盘上的索引结构,只需最多4次磁盘查找操作以及相关数据的读取操作便能获取索引信息,最后定为查询结果数据的存储位置。
[0038]总之本发明中提出的方法可以有效地支持实时高速流量记录的索引建立工作,并在较小索引磁盘空间消耗的情况下,支持快速的索引查询操作。
【专利附图】

【附图说明】
[0039]图1是本发明的网络流量数据索引方法的索引结构示意图;
[0040]图2是本发明的网络流量数据索引方法的索引文件磁盘存储布局示意图;
[0041]图3是本发明的网络流量数据索引方法的查询磁盘索引文件过程示意图。
【具体实施方式】
[0042]不同于以往的索引方法,本发明通过深入挖掘网络流量以及索引字段的特征,并利用这些特征提出相应的索引方法,这样可以有效地克服许多缺陷。通过深入挖掘的网络流量以及索引字段特征如下:
[0043](I)由于网络流量以及索引文件往往只用于查询功能,也就是当网络流量数据和索引文件写入到磁盘之后就不会再发生任何修改、更新操作。
[0044](2)网络流量索引的字段一般只有六种:源IP地址,目的IP地址,源端口号,目的端口号,协议号以及时间戳。而以上几种字段要么存在很强的局部性特征,要么其取值范围分布在一个非常小的区间。由于IP地址和时间戳拥有共享公共前缀的特征,对于端口号,协议号字段,它们的取值范围非常小,最大只是O到65535之间。
[0045](3)网络流量到达的速度非常迅速,这要求索引方法要支持非常快的实时插入速度。
[0046]本发明的索引方法主要包括以下几个功能模块:
[0047](I)网络流量数据获取模块:用于通过网卡或板卡实时捕获网络流量数据,即数据包或数据流记录,并将捕获的网络流量数据交给索引结构更新模块,该模块用于更新所述网络流量数据的索引结构,如果需要存储数据包记录,则将数据包写入磁盘,并在索引结构中增加一条记录并指向磁盘存储的位置。
[0048](2)索引结构维护模块:该模块用于实时维护这些网络流量数据的到达以及维护它们磁盘的存储信息。当索引结构大于内存阈值时,索引结构就会被永久性存入磁盘,另一个新的索引结构将处理后续到达记录的索引插入操作。
[0049](3)查询响应模块:索引的作用就是为了快速地检索到存储的历史流量数据。该查询响应模块功能主要负责接收用户的查询请求,并查询内存以及磁盘的索引结构,将查询的网络流量数据的磁盘存储信息返回给用户,用户根据该存储位置信息获取响应的数据。
[0050]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的网络流量数据索引方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0051]本索引方法是基于字典树与位图结构(简称为位图-字典树)相结合来维护实时索引记录的插入操作。其中字典树中每个节点一般包括256个指针用于指向对应的孩子节点,而位图结构用于标记哪些位置拥有孩子节点,哪些位置没有孩子节点。关于采用的索引结构如附图1所示。由于网络流量数据的索引字段往往只有以下几种:源IP地址,目的IP地址,源端口号,目的端口号,协议号以及时间戳。每当新的网络流量数据到达,一方面将这些网络流量数据信息写入磁盘存储,另一方面解析这些网络流量数据得到需要建立索引字段的值,从而更新这些字段的索引结构。
[0052]在内存中对于每个索引字段维护一颗位图-字典树来存储这些索引信息,位图-字典叶子节点会指向一些链表,分别表示满足这些索引条件的所有记录的磁盘存储位置。由于位图-字典树中每个节点存储256个指针,也就是一个字节的信息,那么该树的高度等于该索引字段的字节大小。比如对于源IPv4地址来说,它的字节大小为4字节,树的高度也是4。每次从根节点到叶子节点的路径代表了该IPv4地址的值,如附图1所示。假设到达的网络流量数据的源IPv4地址为”10.24.0.8”,那么该地址首先被分为4个键值,每个字节一个键值,即{10,24,0,8}。那么对其更新的步骤如下:
[0053](I)首先检测根节点的位图中第10个比特的值,如果该比特值为I则表示根节点中第10个指针拥有一个真实的孩子节点,则进入第2步;如果该比特值为0,则表示根节点中第10个指针为空,则分配一个新的节点,并将第10个指针指向这个新的节点,同时将根节点中位图的第10个比特值置为1,进入第二步。
[0054](2)获取对应的键值,比如第二层节点键值为24,第三层节点键值为0,并执行第I步中类似的操作直到叶子节点,如果是叶子节点,则在对应指针指向的链表后面新增该记录的磁盘存储位置信息。
[0055]基于上述结构,可以快速地处理内存中网络流量索引的插入操作。但是由于内存容量有限,随着网络数据包或流记录数目的不断增加,无法将这些索引信息一直存放在内存当中。需要每隔一段时间将内存中的索引结构导入到磁盘存储,然后内存中新的位图-字典树结构会负责后续记录的索引工作。附图2表示了将内存索引结构导入到磁盘存储的示意图。
[0056]附图2中依旧采用IP地址字段作为例子,在内存中该索引结构位图-字典树的高度为4。位图-字典树在磁盘中是按层来存储的,也就是说先存储根节点,然后存储第二层的节点,最后存储叶子节点以及其指向的链表。对于每个位图-字典树节点,会先存储位图结构,然后存储一个文件偏移位置的数组,该数组表示了各个孩子节点在磁盘中存储的位置。由于在内存中位图-字典树节点中的部分指针是空指针,而在磁盘存储过程中,只需存储那些拥有孩子节点的指针位置,该指针位置代表了孩子节点存储的磁盘位置。最后对于叶子节点来说,每个节点的数组元素存储的是对应链表的存储位置。各层的连续存储是为了在处理区间查询时可以在磁盘上进行顺序读操作,无需多余的磁盘查找操作,因为顺序读操作比查找操作要快很多。
[0057]拥有了内存中的索引结构和在磁盘永久存储的索引文件,就可以进行各种常用的网络流量检索查询。本发明的索引方法支持以下几种查询:
[0058](I)单域查询:可以对单个被索引的字段进行查询,查询过程是直接检索内存中相应字段索引结构和磁盘中存储的索引文件,然后得到满足条件的链表,链表中元素代表查询的记录位置。单域查询的例子为“source ip=10.24.0.8” ;
[0059](2)多域联合查询:可以对多个字段的组合进行查询,比如” sourceip=10.24.0.8and destination ip=220.11.8.8and source port=55555and destinationport=80”。多个域的组合查询在处理过程中被分隔成多个单域的查询,最后对这些查询的结果进行求交集便得到了最后满足条件的记录存储位置。
[0060](3)区间查询:可以对一些字段进行区间查询,比如“timestamp froml00to200andsource ip=10.24.0.8”。由于在磁盘存储位图_字典结构按每层连续存储,所以非常有利于区间查询。
[0061](4)通配符查询:由于网络流量索引的一些特殊要求,支持一些字段的通配符查询,比如“10.24.0.*”,其中代表了可以匹配任意值(在这里取值范围:0到255)。对于通配符查询可以等价转化成为区间查询,比如“ 10.24.0.* ”等价于“ 10.24.0.0 ”到“10.24.0.255”。
[0062]附图3为从磁盘索引文件进行查询的过程示意图。由于多域联合查询可以转化为单域查询然后进行处理。将以查询所有源IP地址满足“10.24.0.*”条件的记录作为例子介绍查找的详细过程。查询条件“10.24.0.*”将依旧分成四个键值{10,24,0,*}。首先读取磁盘索引文件的根节点,并判断其位图中第10个比特的值,如果为1,则获取其对应孩子节点在磁盘中的存储位置,如附图3中的偏移量208 ;如果为0,则表示没有存在第一个字节值为10的键值,所以返回查询结果为空。如果为1,找到了偏移位置208,则读取该位置上的位图-字典树节点,然后重复以上的过程。当到达第三层时,由于第四层的键值为表示所有值都满足,则读取第三层对应节点位图结构中所有比特值为I的位,然后获得他们的偏移位置,最后读取这些偏移位置的叶子节点和其对应的链表元素,并将链表元素进行合并返回。对于内存中的索引结构,根据查询的关键字在内存中根据字典树找到对应的叶子节点并读取满足条件的记录存储位置返回。
[0063]对于本发明涉及的网络流量数据索引系统,其包括下列模块:
[0064]网络流量数据获取模块,用于通过网卡或板卡来实时捕获网络流量数据;
[0065]索引结构维护模块,所述网络流量数据具有多个索引字段,该模块用于在内存中通过使所述索引字段维护位图-字典树来建立并存储所述网络流量数据的索引结构,对于所述索引字段按字节来划分键值,通过使所述键值在所述位图-字典树的位图结构中所对应的非叶子节点的指针具有孩子节点、叶子节点的指针指向存储位置链表来更新所述网络流量数据的索引结构;
[0066]查询响应模块,用于根据用户的查询请求查询所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给用户,用户根据该存储位置信息获取响应的数据。
[0067]本发明提出的网络流量数据索引系统,其中,在所述索引结构维护模块中,所述位图-字典树的高度等于所述索引字段的字节大小,对于所述索引字段按照每个字节一个键值来划分,更新所述网络流量数据的索引结构的方法具体为:
[0068]依次获取所述索引字段对应的键值,通过检测所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为1,来判断所述非叶子节点的指针具有孩子节点,若不具有孩子节点,则分配一个新节点,并使所述键值对应的指针指向该新节点,同时将该比特值置为1,以使所述非叶子节点的指针具有孩子节点,到达所述位图-字典树的叶子节点时,使所述叶子节点对应指针指向存储位置链表,在该存储位置链表中新增所述索引字段的存储位置信息。
[0069]本发明提出的网络流量数据索引系统,其中,当内存中的所述索引结构大于内存阈值时,将所述索引结构存入磁盘,并在所述索引结构中增加一条记录并指向磁盘存储的位置,同时在内存中建立一个新的索引结构,用于处理后续的网络流量数据。
[0070]本发明提出的网络流量数据索引系统,其中,将所述索引结构存入磁盘的具体方式为,在磁盘中按照所述位图-字典树的层来存储所述索引结构,且各层采用连续存储方式。
[0071]本发明提出的网络流量数据索引系统,其中,将所述索引结构存入磁盘的方法具体为,
[0072]对于所述位图-字典树的每个节点,先存储位图结构,然后存储一个文件偏移位置的数组,该数组示出所述位图-字典树的每个节点的各孩子节点在磁盘中的存储位置,而对于所述位图-字典树的每个叶子节点,该数组示出每个叶子节点对应链表的存储位置。
[0073]本发明提出的网络流量数据索引系统,其中,所述查询响应模块的对存入磁盘的索引结构进行查询的查询过程为,
[0074]将查询条件按照每个字节一个键值来划分,其中最后一个键值为未知键值,依此获取所述查询条件的键值,通过读取所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为I来获取该根节点对应孩子节点在磁盘中的存储位置,并读取该位置上的位图-字典树节点,否则返回查询结果为空,到达最后一个键值的前一个键值时,获取其在位图-字典树的位图结构中所对应的所有比特值为I的位,然后获取该所有比特值为I的位的偏移位置形成一个数组,最后读取所有所述偏移位置的叶子节点和该叶子节点对应的链表的元素,并将所述链表的元素进行合并返回。
【权利要求】
1.一种网络流量数据索引方法,其特征在于,包括下列步骤: 步骤1,实时捕获网络流量数据; 步骤2,所述网络流量数据具有多个索引字段,在内存中通过使所述索引字段维护位图-字典树来建立并存储所述网络流量数据的索引结构,对于所述索引字段按字节来划分键值,通过使所述键值在所述位图-字典树的位图结构中所对应的非叶子节点的指针具有孩子节点、叶子节点的指针指向存储位置链表来更新所述网络流量数据的索引结构; 步骤3,根据用户的查询请求查询所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给用户,用户根据该存储位置信息获取响应的数据。
2.如权利要求1所述的网络流量数据索引方法,其特征在于,在所述步骤2中,所述位图-字典树的高度等于所述索引字段的字节大小,对于所述索引字段按照每个字节一个键值来划分,更新所述网络流量数据的索引结构的方法具体为: 依次获取所述索引字段对应的键值,通过检测所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为1,来判断所述非叶子节点的指针具有孩子节点,若不具有孩子节点,则分配一个新节点,并使所述键值对应的指针指向该新节点,同时将该比特值置为1,以使所述非叶子节点的指针具有孩子节点,到达所述位图-字典树的叶子节点时,使所述叶子节点对应指针指向存储位置链表,在该存储位置链表中新增所述索引字段的存储位置信息。
3.如权利要求1所述的网络流量数据索引方法,其特征在于,当内存中的所述索引结构大于内存阈值时,将所述索引结构存入磁盘,并在所述索引结构中增加一条记录并指向磁盘存储的位置,同时在内存中建立一个新的索引结构,用于处理后续的网络流量数据。
4.如权利要求3所述的网络流量数据索引方法,其特征在于,将所述索引结构存入磁盘的具体方式为,在磁盘中按照所述位图-字典树的层来存储所述索引结构,且各层采用连续存储方式。
5.如权利要求3或4所述的网络流量数据索引方法,其特征在于,将所述索引结构存入磁盘的方法具体为, 对于所述位图-字典树的每个节点,先存储位图结构,然后存储一个文件偏移位置的数组,该数组示出所述位图-字典树的每个节点的各孩子节点在磁盘中的存储位置,而对于所述位图-字典树的每个叶子节点,该数组示出每个叶子节点对应链表的存储位置。
6.如权利要求1或2所述的网络流量数据索引方法,其特征在于,所述步骤3的查询所述索引结构的查询过程为, 将查询条件按照每个字节一个键值来划分,其中最后一个键值为未知键值,依此获取所述查询条件的键值,通过读取所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为I来获取该根节点对应孩子节点在磁盘中的存储位置,并读取该位置上的位图-字典树节点,否则返回查询结果为空,到达最后一个键值的前一个键值时,获取其在位图-字典树的位图结构中所对应的所有比特值为I的位,然后获取该所有比特值为I的位的偏移位置,最后读取这些偏移位置的叶子节点和其对应的链表元素,并将链表元素进行合并返回。
7.—种网络流量数据索引系统,其特征在于,包括下列模块: 网络流量数据获取模块,用于通过网卡或板卡来实时捕获网络流量数据;索引结构维护模块,所述网络流量数据具有多个索引字段,该模块用于在内存中通过使所述索引字段维护位图-字典树来建立并存储所述网络流量数据的索引结构,对于所述索引字段按字节来划分键值,通过使所述键值在所述位图-字典树的位图结构中所对应的非叶子节点的指针具有孩子节点、叶子节点的指针指向存储位置链表来更新所述网络流量数据的索引结构; 查询响应模块,用于根据用户的查询请求查询所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给用户,用户根据该存储位置信息获取响应的数据。
8.如权利要求7所述的网络流量数据索引系统,其特征在于,在所述索引结构维护模块中,所述位图-字典树的高度等于所述索引字段的字节大小,对于所述索引字段按照每个字节一个键值来划分,更新所述网络流量数据的索引结构的方法具体为: 依次获取所述索引字段对应的键值,通过检测所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为1,来判断所述非叶子节点的指针具有孩子节点,若不具有孩子节点,则分配一个新节点,并使所述键值对应的指针指向该新节点,同时将该比特值置为1,以使所述非叶子节点的指针具有孩子节点,到达所述位图-字典树的叶子节点时,使所述叶子节点对应指针指向存储位置链表,在该存储位置链表中新增所述索引字段的存储位置信息。
9.如权利要求7所述的网络流量数据索引系统,其特征在于,当内存中的所述索引结构大于内存阈值时,将所述索引结构存入磁盘,并在所述索引结构中增加一条记录并指向磁盘存储的位置,同时在内存中建立一个新的索引结构,用于处理后续的网络流量数据。
10.如权利要求9所 述的网络流量数据索引系统,其特征在于,将所述索引结构存入磁盘的具体方式为,在磁盘中按照所述位图-字典树的层来存储所述索引结构,且各层采用连续存储方式。
11.如权利要求9或10所述的网络流量数据索引系统,其特征在于,将所述索引结构存入磁盘的方法具体为, 对于所述位图-字典树的每个节点,先存储位图结构,然后存储一个文件偏移位置的数组,该数组示出所述位图-字典树的每个节点的各孩子节点在磁盘中的存储位置,而对于所述位图-字典树的每个叶子节点,该数组示出每个叶子节点对应链表的存储位置。
12.如权利要求7或8所述的网络流量数据索引系统,其特征在于,所述查询响应模块的对存入磁盘的索引结构进行查询的查询过程为, 将查询条件按照每个字节一个键值来划分,其中最后一个键值为未知键值,依此获取所述查询条件的键值,通过读取所述键值在所述位图-字典树的非叶子节点的位图结构中所对应的比特值为I来获取该根节点对应孩子节点在磁盘中的存储位置,并读取该位置上的位图-字典树节点,否则返回查询结果为空,到达最后一个键值的前一个键值时,获取其在位图-字典树的位图结构中所对应的所有比特值为I的位,然后获取该所有比特值为I的位的偏移位置,最后读取这些偏移位置的叶子节点和其对应的链表元素,并将链表元素进行合并返回。
【文档编号】G06F17/30GK103714134SQ201310698101
【公开日】2014年4月9日 申请日期:2013年12月18日 优先权日:2013年12月18日
【发明者】贺泰华, 张广兴, 谢高岗, 董尚文, 付乔宾 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1