CN105335300B - 一种数据存储方法及装置 - Google Patents

一种数据存储方法及装置 Download PDF

Info

Publication number
CN105335300B
CN105335300B CN201510907032.4A CN201510907032A CN105335300B CN 105335300 B CN105335300 B CN 105335300B CN 201510907032 A CN201510907032 A CN 201510907032A CN 105335300 B CN105335300 B CN 105335300B
Authority
CN
China
Prior art keywords
data
hash table
layer
attribute
value
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.)
Active
Application number
CN201510907032.4A
Other languages
English (en)
Other versions
CN105335300A (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.)
Kelai Network Technology Co.,Ltd.
Original Assignee
CHENGDU COLASOFT 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 CHENGDU COLASOFT Co Ltd filed Critical CHENGDU COLASOFT Co Ltd
Priority to CN201510907032.4A priority Critical patent/CN105335300B/zh
Publication of CN105335300A publication Critical patent/CN105335300A/zh
Application granted granted Critical
Publication of CN105335300B publication Critical patent/CN105335300B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据存储方法及装置,该方法包括:依据抓取数据的先后顺序,将抓取到的多条数据存储在第一缓存中,并依据多条数据在第一缓存中的位置,生成第一嵌套哈希表,该第一哈希表为嵌套的多层哈希表,各层哈希表的键内容与抓取到的数据的属性类型一一对应,且最内层哈希表的值为各条数据在第一缓存中的地址值,根据预设的遍历顺序获取最内层哈希表中的地址值,进而根据各个地址值的获取顺序,依次将第一缓存中的各个地址值对应的数据存储至硬盘。相较于现有技术中仅仅按照抓取的先后顺序存储各条数据的方式相比,读取利用本发明实施例提供的数据存储方式存储的数据,可以提高数据的读取效率。

Description

一种数据存储方法及装置
技术领域
本申请涉及数据存储技术领域,尤其是一种利用数据属性进行数据存储的方法及装置。
背景技术
网络数据分析领域,常常需要抓取网络中的数据并进行存储,以便后续读取分析。目前,网络数据的存储方式是,将抓取到的数据按照抓取先后顺序,依次存储在硬盘中。然而,该种存储方式并不利于数据的读取,更具体地说,读取利用该种方式存储的数据效率较低。
发明内容
有鉴于此,本发明提供了一种数据存储方法及装置,用以解决利用现有数据存储方法存储的数据不方便读取的技术问题。为实现所述目的,本发明提供的技术方案如下:
一种数据存储方法,包括:
依据抓取的先后顺序,将抓取到的多条数据存储至第一缓存;其中,各条所述数据具有N个相同类型的属性;
依据所述多条数据在所述第一缓存中的位置,生成第一嵌套哈希表;其中,所述第一嵌套哈希表由N层第一哈希表嵌套组成,各层所述第一哈希表的键依次为所述N个相同类型的属性,且第1层至第N-1层所述第一哈希表的值依次为下一层的第一哈希表,第N层第一哈希表的值为各条所述数据在所述第一缓存中的地址值;
根据预设遍历顺序,依次获取所述第N层第一哈希表中的地址值;
根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘。
可选地,所述根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘包括:
根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至第二缓存中;
将所述第二缓存中的数据依次存储至硬盘。
可选地,还包括:
生成并存储第二嵌套哈希表;其中,所述第二嵌套哈希表由N层第二哈希表嵌套组成,每层所述第二哈希表的键为三元组,且第1层至第N-1层所述第二哈希表的值依次为下一层的第二哈希表,第N层第二哈希表的值为各条所述数据在所述硬盘中的地址值;
各层所述三元组的第一元素依次为所述N个相同类型的属性,每层所述三元组的第二元素为各自层对应类型的属性包含的数据在所述硬盘中的起始地址,每层所述三元组的第三元素为各自层对应类型的属性包含的数据在所述硬盘中的数据长度。
可选地,还包括:
依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据。
可选地,所述依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据包括:
当接收到数据读取指令时,提取所述数据读取指令中的属性类型及属性值;
在所述第二嵌套哈希表中,确定与所述属性类型及属性值对应的目标三元组;
依据所述目标三元组的第二元素及第三元素,从所述硬盘中读取存储的数据。
本申请还提供了一种数据存储装置,包括:
第一缓存存储单元,用于依据抓取的先后顺序,将抓取到的多条数据存储至第一缓存;其中,各条所述数据具有N个相同类型的属性;
第一哈希表生成单元,用于依据所述多条数据在所述第一缓存中的位置,生成第一嵌套哈希表;其中,所述第一嵌套哈希表由N层第一哈希表嵌套组成,各层所述第一哈希表的键依次为所述N个相同类型的属性,且第1层至第N-1层所述第一哈希表的值依次为下一层的第一哈希表,第N层第一哈希表的值为各条所述数据在所述第一缓存中的地址值;
缓存地址值获取单元,用于根据预设遍历顺序,依次获取所述第N层第一哈希表中的地址值;
硬盘数据存储单元,用于根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘。
可选地,所述硬盘数据存储单元包括:
第二缓存存储子单元,用于根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至第二缓存中;
硬盘数据存储子单元,用于将所述第二缓存中的数据依次存储至硬盘。
可选地,还包括:
第二哈希表生成单元,用于生成并存储第二嵌套哈希表;其中,所述第二嵌套哈希表由N层第二哈希表嵌套组成,每层所述第二哈希表的键为三元组,且第1层至第N-1层所述第二哈希表的值依次为下一层的第二哈希表,第N层第二哈希表的值为各条所述数据在所述硬盘中的地址值;
各层所述三元组的第一元素依次为所述N个相同类型的属性,每层所述三元组的第二元素为各自层对应类型的属性包含的数据在所述硬盘中的起始地址,每层所述三元组的第三元素为各自层对应类型的属性包含的数据在所述硬盘中的数据长度。
可选地,还包括:
硬盘数据读取单元,用于依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据。
可选地,所述硬盘数据读取单元包括:
读取指令接收子单元,用于当接收到数据读取指令时,提取所述数据读取指令中的属性类型及属性值;
目标三元组确定子单元,用于在所述第二嵌套哈希表中,确定与所述属性类型及属性值对应的目标三元组;
硬盘数据读取子单元,用于依据所述目标三元组的第二元素及第三元素,从所述硬盘中读取存储的数据。
由以上技术方案可知,本发明提供了一种数据存储方法及装置,该方法包括:依据抓取数据的先后顺序,将抓取到的多条数据存储在第一缓存中,并依据多条数据在第一缓存中的位置,生成第一嵌套哈希表,该第一哈希表为嵌套的多层哈希表,各层哈希表的键内容与抓取到的数据的属性类型一一对应,且最内层哈希表的值为各条数据在第一缓存中的地址值,根据预设的遍历顺序获取最内层哈希表中的地址值,进而根据各个地址值的获取顺序,依次将第一缓存中的各个地址值对应的数据存储至硬盘。相较于现有技术中仅仅按照抓取的先后顺序存储各条数据的方式相比,读取利用本发明实施例提供的数据存储方式存储的数据,可以提高数据的读取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的数据存储方法的流程图;
图2为本发明实施例提供的读取存储数据方法的流程图;
图3为本发明实施例提供的数据存储装置的结构图;
图4为本发明实施例提供的读取存储数据的装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在网络数据分析领域,需要将从网络中抓取到的数据进行存储。现有的数据存储方式中,将抓取到的数据按照抓取时间的先后顺序,依次存储在硬盘中,然而,该种存储方式并不能很好地满足读取需求。
具体来讲,常常需要按照某种属性分析网络数据,如果网络数据是利用现有技术中的存储方式存储的,读取时,必须依次将所有的数据都读取一遍,以判断各个数据的属性值是否满足属性条件,从而筛选出需要的网络数据。该种读取方式需要从硬盘读取较大量的数据,进行大量的数据匹配运算,增加了硬盘I/O读写压力和CPU的负载,数据的读取分析耗时较长,也就是说,网络数据的读取效率较低,并且,该缺点在存储网络数据量越大时越明显。
为了提高网络数据的读取效率,本发明以下各个实施例提供了数据存储方式,发明思想是将抓取到的数据按照时间先后顺序暂存在缓存中,然后记录具有相同类型属性的数据在缓存中的位置,进而利用记录的内容,将缓存中的数据按照属性类型排序后存储到硬盘中,即将具有相同类型属性的数据连续存储,这样,在读取时并可按照属性条件连续读取数据,从而提高读取效率。
请参阅图1,其示出了本发明一个实施例提供的数据存储方法的流程,具体包括以下流程:
步骤S101:依据抓取的先后顺序,将抓取到的多条数据存储至第一缓存;其中,各条所述数据具有N个相同类型的属性。
本实施例中,当需要对网络数据进行分析时,可利用抓取工具,从网络中抓取数据,并依据抓取到时间先后顺序,将数据存储到缓存中。其中,可以在预设的时间段内,每当抓取工具抓取到一条网络数据,即将该网络数据放入到的缓存中。或者,抓取工具在预设时间段内抓取到多条网络数据,然后,按照抓取顺序,将该多条数据放入到缓存中。
需要说明的是,网络数据具有属性,抓取的多条数据具有相同类型的属性,相同属性类型包括N个,N为大于1的整数。以抓取到TCP会话中的数据包为例,每个数据包都包括“源IP地址”、“源端口”、“目标IP地址”以及“目标端口”,这四种属性为相同类型的属性。当然,此处仅仅是一个示例,具体的属性类型与实际监测的数据场景相关,本发明并不做具体限定。
步骤S102:依据所述多条数据在所述第一缓存中的位置,生成第一嵌套哈希表;其中,所述第一嵌套哈希表由N层第一哈希表嵌套组成,各层所述第一哈希表的键依次为所述N个相同类型的属性,且第1层至第N-1层所述第一哈希表的值依次为下一层的第一哈希表,第N层第一哈希表的值为各条所述数据在所述第一缓存中的地址值。
上一步骤将抓取到的数据放入到的缓存中,该缓存中的数据是按照抓取时间数据排列的。如上文所述,为了将数据重新排序,需要记录具有相同类型属性的数据在缓存中的位置,其中一种记录方式便是哈希表。哈希表利用键值对存储数据,即哈希表中可以存储若干个哈希记录,每个哈希记录具有一个键及一个值,两者具有对应关系。本步骤中生成的哈希表是嵌套的多层哈希表,嵌套的形式是,由内向外的第1层至第N-1层哈希表的值依次为下一层的哈希表。
需要说明的是,嵌套哈希表的层数与网络数据相同的属性类型的个数相等,即步骤S101中的N值。每层中的哈希表的键是一种类型的属性,这样,生成的嵌套哈希表利用每层哈希表中的键记录相同类型属性的数据。每层哈希表中的哈希记录个数可以为一个,也可以为多个,每层中各个哈希记录的键为相同类型的属性,但属性值并不相同。需要说明的是,最内层即第N层哈希表的值为数据在缓存中的地址。
其中,生成第一嵌套哈希表的过程为:数据存储在缓存中,也就是说,每条数据均对一个缓存中的地址。由于每条数据均具有N种类型的属性,根据数据自身每种类型属性的属性值,一层一层查找键内容与数据的属性值相同的哈希记录,直至找到第N层哈希表中的哈希记录,将该数据在缓存中的地址存储在查找到的该哈希记录的值中,如此反复即可生成嵌套哈希表。需要说明的是,嵌套哈希表(即第一嵌套哈希表)的形式及生成嵌套哈希表的详细过程参见下文。
步骤S103:根据预设遍历顺序,依次获取所述第N层第一哈希表中的地址值。
其中,步骤S102生成的第一嵌套哈希表中包括多层哈希表,哈希表具有预设的遍历顺序,和数组遍历顺序相似,按照键的内容依次遍历。具体地,从第一层的哈希表开始,当第一层的哈希表中的哈希记录为多个时,则按照预设顺序,从第一个哈希记录开始。当该哈希记录的值为下一层哈希表时,则进入下一层哈希表中,从下一层哈希表的第一个记录开始判断,当该下一层哈希表中的哈希记录的值为下下一层哈希表时,进入该下下一层哈希表,判断该下下一层哈希表中的哈希记录的值,重复上述步骤,直至某层哈希表中的哈希记录的值为数据在缓存中的地址,此时,获取该缓存中的地址,这样获取到第N层中的第一个哈希记录的值。同理,获取到第N层中其他哈希记录的值。
遍历结束后,获取到的值为各个数据在缓存中的地址值,且地址值的获取顺序是按照数据的属性类型分类获取到的。
步骤S104:根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘。
将各个地址值中的数据依次存储至硬盘中,存储的顺序为获取到各个地址值的顺序。这样,将原来按照抓取先后顺序存储的数据,按照属性类型连续存储,此种存储方式将零散的数据按照属性类型聚合在一起,从而在读取时可以方便且快速地查找到具有相同属性类型的数据,数据读取效率较高。
当然,步骤S103与步骤S104可以是交替执行的,即每当步骤S103获取到地址值,便依据该地址值,在缓存中查找该地址值对应的数据,进而执行步骤S104将数据存储至硬盘。
由以上的技术方案可知,本发明实施例提供的数据存储方法,依据抓取数据的先后顺序,将抓取到的多条数据存储在第一缓存中,并依据多条数据在第一缓存中的位置,生成第一嵌套哈希表,该第一哈希表为嵌套的多层哈希表,各层哈希表的键内容与抓取到的数据的属性类型一一对应,且最内层哈希表的值为各条数据在第一缓存中的地址值,根据预设的遍历顺序获取最内层哈希表中的地址值,进而根据各个地址值的获取顺序,依次将第一缓存中的各个地址值对应的数据存储至硬盘。相较于现有技术中仅仅按照抓取的先后顺序存储各条数据的方式相比,读取利用本发明实施例提供的数据存储方式存储的数据,可以提高数据的读取效率。
数据的属性类型可以是时间、物理地址、数据方向、IP会话数据包、TCP会话数据包等,则读取需求可以是某个时间段内某物理地址发送的所有数据包,则第一嵌套哈希表中存储的属性类型分别是时间、物理地址及数据方向;或者读取需求是某个时间段内某物理地址接收的所有数据包,则第一嵌套哈希表中存储的属性类型分别是时间、物理地址及数据方向;或者读取需求是某个时间段内某IP会话的所有数据包,则读取需求是时间及IP会话数据包;或者读取需求是某个时间段内某TCP会话的所有数据包,则读取需求是时间及TCP会话数据包。当然,上面几种属性类型及读取需求仅仅是示例,具体的情况可以因抓取到的数据而不同,本发明实施例并不做具体限定。
下面对上述实施例中的第一嵌套哈希表的形式进行说明。
其中,第一嵌套哈希表的形式可以参照下述表1。例如,抓取到的数据包括三个相同类型的属性,分别为属性A、属性B及属性C,如表1所示的该哈希表,该哈希表包括三层,其中,由外至内,第一层哈希表的键属于属性A,各个哈希记录的键分别为a1、a2……an,各个哈希记录的值为第二层哈希表,第二层哈希表的键表示属性B,各个哈希记录的键分别为b1、b2……bn,各个哈希记录的值为第三层哈希表,第三层哈希表的键表示属性C,各个哈希记录的键分别为c1、c2……cn,各个哈希记录的值为数据的缓存地址。
表1
从最内层来看,数据集合1包含的各条数据的属性值分别为a1、b1及c1,数据集合2包含的各条数据的属性值分别为a1、b1及c2,数据集合n包含的各条数据的属性值分别为a1、b1及cn
从最外层看,数据是按照属性A进行聚合的,即所有数据按照属性A的值进行分类,属性A的值不同的数据分别属于不同的哈希记录。从第二层看,在第一层的分类基础上,数据是按照属性B进行聚合的,即属性B的值不同的数据分别属于不同的哈希记录。依次类推,直至最内一层的哈希表。需要说明的是,每一层哈希表中的各个哈希记录是具有存储顺序的,该顺序可以是抓取时间先后顺序。
更具体地,可以用下述表2、表3及表4说明各层哈希表。其中:
从最外层来看,数据的缓存地址是按照属性A的值进行聚合并排序。
表2
“属性A”值为a1的数据的缓存地址
“属性A”值为a2的数据的缓存地址
“属性A”值为an的数据的缓存地址
进入下一层看,数据的缓存地址是按照属性B的值进行聚合并排序的。
表3
“属性B”值为b1的数据的缓存地址
“属性B”值为b2的数据的缓存地址
“属性B”值为bn的数据的缓存地址
进入下下一层看,数据的缓存地址是按照属性C的值进行聚合并排序的。
表4
“属性C”值为c1的数据的缓存地址
“属性C”值为c2的数据的缓存地址
“属性C”值为cn的数据的缓存地址
由上述表1所示的嵌套哈希表可以看出,嵌套哈希表利用每层哈希表的键分别记录不同类型属性的数据的缓存地址,且当多个数据同一类型的属性的属性值相同时,这多个数据的缓存地址值会存储在同一个哈希记录中。
下面对生成上述表1所示的第一嵌套哈希表的具体过程进行说明。
假设抓取到的数据具有三种类型的属性,分别为属性A、属性B及属性C。抓取到的数据分别为(d1,d2,d3….dn),各条数据暂存到缓存中,便可获取到每条数据在缓存中的地址。
建立一张哈希表HA,该哈希表HA作为最外层的哈希表,该哈希表HA的键用于存储抓取到的数据的属性A的值,值用于存储下一层的哈希表HB;该哈希表HB的键用于存储抓取到的数据的属性B的值,值用于存储下一层的哈希表HC;该哈希表HC的键用于存储抓取到的数据的属性C的值,值用于存储数据在缓存中地址。
第一步,获取抓取到的第一条数据d1,该第一条数据的属性A的值为Ad,在该哈希表HA中查找键为Ad的哈希记录,若找到,则进行后续步骤,否则,在该哈希表HA中添加一条键为Ad且值为空哈希表的记录。
第二步,假设上一步在哈希表HA中查找到的(或添加的)记录为rhb,记录rhb的值也是一张哈希表HB。该第一条数据d1的属性B的值为Bd,在哈希表HB中查找键为Bd的哈希记录,若找到,则进行后续步骤,否则,在该哈希表HB中添加一条键为Bd且值为空哈希表的记录。
第三步,假设上一步在哈希表HB中查找到的(或添加的)记录为rhc,记录rhc的值也是一张哈希表HC。该第一条数据d1的属性C的值为Cd,在哈希表HC中查找键为Cd的哈希记录,若找到,则进行后续步骤,否则,在该哈希表HC中添加一条键为Cd且值为空数据集合的记录。
第四步,假设上一步在哈希表HC中查找到的(或添加的)记录为rds,则rds的值为数据集合,该数据集合中包含的是d1在缓存中的地址,至此,完成一条数据的缓存地址的存储过程。接下来继续获取抓取到的下一条数据d2,同理,将数据d2的缓存地址按照上述步骤进行存储,将抓取到的数据的缓存地址存储完成后即生成嵌套哈希表。
上述实施例中的步骤S104根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘的具体实现方式可以包括:
根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至第二缓存中;将所述第二缓存中的数据依次存储至硬盘。
具体地,将第一缓存中的数据存储至第二缓存中,存储的顺序即获取地址值的顺序,也即嵌套哈希表的遍历顺序。由于嵌套哈希表是按照属性类型分类存储地址值的,则依据该遍历顺序将各个地址值对应的数据存储到第二缓存中后,第二缓存中属于同一类型属性的数据会连续存储,将该第二缓存中的数据依次存储至硬盘,从而硬盘中存储的数据也是按照属性类型连续存储的。
该种实现方式中,利用第二缓存将第一缓存中的数据存储至硬盘,避免直接将第一缓存中的数据存储至硬盘时,多次写入硬盘造成的硬盘I/O接口压力。
为了方便数据的读取,可以生成并存储第二哈希表,该第二哈希表用于记录每种类型的属性对应的数据在硬盘中的起始地址及数据长度。
具体地,所述第二嵌套哈希表由N层第二哈希表嵌套组成,每层所述第二哈希表的键为三元组,且第1层至第N-1层所述第二哈希表的值依次为下一层的第二哈希表,第N层第二哈希表的值为各条所述数据在所述硬盘中的地址值;各层所述三元组的第一元素依次为所述N个相同类型的属性,每层所述三元组的第二元素为各自层对应类型的属性包含的数据在所述硬盘中的起始地址,每层所述三元组的第三元素为各自层对应类型的属性包含的数据在所述硬盘中的数据长度。
其中,第二嵌套哈希表利用键的三元组记录属性值、数据存储的起始地址及数据长度。该表的具体形式可参见表5所示。
表5
从该表可以看出,属性A的属性值分别为(a1、a2…an)、属性B的属性值分别(b1、b2…bn),属性C的属性值分别为(c1、c2…cn);属性值为a1的连续数据的起始地址为addr_a1、数据长度为len_a1,属性值为a1及b1的连续数据的起始地址为addr_b1、数据长度为len_b1,以此类推,可知其他数据。
利用该嵌套哈希表可以进行数据读取,具体如下所述。
根据抓取到的数据的属性类型,利用上述各个实施例将所述抓取到的数据存储至硬盘,以方便数据读取,即当接收到数据读取指令时,依据生成的第二嵌套哈希表,从硬盘中读取存储的数据。具体地,如图2所示,该读取过程包括:
步骤S201:当接收到数据读取指令时,提取所述数据读取指令中的属性类型及属性值。
其中,数据读取指令中包括属性类型及属性值。例如,属性类型为时间段及四元组即源IP地址、源端口、目标IP地址以及目标端口。
步骤S202:在所述第二嵌套哈希表中,确定与所述属性类型及属性值对应的目标三元组。
以上述表5所示的第二嵌套哈希表为例,查找该表中属性类型为提取的属性类型且属性值为提取的属性值的三元组,假设属性类型为A且属性值为a1,则查找到的三元组为(a1,addr_a1,len_a1);又如属性类型为A及B,属性值分别为a1及b2,则查找到的三元组为(b2,addr_b2,len_b2)。
步骤S203:依据所述目标三元组的第二元素及第三元素,从所述硬盘中读取存储的数据。
即以目标三元组的第二元素的起始地址为起始点,从硬盘中读取第三元素表示的数据长度的连续数据。该段连续数据即是需要读取的数据。
例如,抓取到的数据的属性类型包括时间及TCP会话数据包,进一步地、TCP会话数据包的属性类型是四元组,那么存储的数据类型包括时间及四元组,当将数据按照上述实施例提供的存储方式存储到硬盘中后,数据按照属性类型进行了重排,即具有相同时间和/或相同四元组的数据连续存储,且第二嵌套哈希表中记录有连续存储的相同时间和/或相同四元组的数据的起始地址及数据长度,这样在读取某个时间段内某四元组的数据时,只需在第二嵌套哈希表中查找到该段数据的起始地址及数据长度,从该起始地址开始读取该段数据长度的连续数据即可。
与现有的数据读取方式相比,本发明实施例提供的数据读取方式,并不需要将所有的数据均读取一遍以筛选数据,数据读取量小、从而减轻了硬盘的读写口负担,且提高了数据读取效率。
下面对本发明实施例提供的数据存储装置进行说明,需要说明的是,下文的数据存储装置的介绍可参照上文提供的数据存储方法,此处并不做赘述。
参照图3,其示出了本发明实施例提供的数据存储装置的结构,具体包括:第一缓存存储单元101、第一哈希表生成单元102、缓存地址值获取单元103及硬盘数据存储单元104。其中:
第一缓存存储单元101,用于依据抓取的先后顺序,将抓取到的多条数据存储至第一缓存;其中,各条所述数据具有N个相同类型的属性;
第一哈希表生成单元102,用于依据所述多条数据在所述第一缓存中的位置,生成第一嵌套哈希表;其中,所述第一嵌套哈希表由N层第一哈希表嵌套组成,各层所述第一哈希表的键依次为所述N个相同类型的属性,且第1层至第N-1层所述第一哈希表的值依次为下一层的第一哈希表,第N层第一哈希表的值为各条所述数据在所述第一缓存中的地址值;
缓存地址值获取单元103,用于根据预设遍历顺序,依次获取所述第N层第一哈希表中的地址值;
硬盘数据存储单元104,用于根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘。
由以上的技术方案可知,本发明实施例提供的数据存储装置,第一缓存存储单元101依据抓取数据的先后顺序,将抓取到的多条数据存储在第一缓存中,第一哈希表生成单元102依据多条数据在第一缓存中的位置,生成第一嵌套哈希表,该第一哈希表为嵌套的多层哈希表,各层哈希表的键内容与抓取到的数据的属性类型一一对应,且最内层哈希表的值为各条数据在第一缓存中的地址值,缓存地址值获取单元103根据预设的遍历顺序获取最内层哈希表中的地址值,进而硬盘数据存储单元104根据各个地址值的获取顺序,依次将第一缓存中的各个地址值对应的数据存储至硬盘。相较于现有技术中仅仅按照抓取的先后顺序存储各条数据的方式相比,读取利用本发明实施例提供的数据存储装置存储的数据,可以提高数据的读取效率。
可选地,硬盘数据存储单元104包括:
第二缓存存储子单元,用于根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至第二缓存中;
硬盘数据存储子单元,用于将所述第二缓存中的数据依次存储至硬盘。
可选地,上述的数据存储装置,还包括:第二哈希表生成单元。
第二哈希表生成单元,用于生成并存储第二嵌套哈希表;其中,所述第二嵌套哈希表由N层第二哈希表嵌套组成,每层所述第二哈希表的键为三元组,且第1层至第N-1层所述第二哈希表的值依次为下一层的第二哈希表,第N层第二哈希表的值为各条所述数据在所述硬盘中的地址值;
各层所述三元组的第一元素依次为所述N个相同类型的属性,每层所述三元组的第二元素为各自层对应类型的属性包含的数据在所述硬盘中的起始地址,每层所述三元组的第三元素为各自层对应类型的属性包含的数据在所述硬盘中的数据长度。
可选地,上述的数据存储装置,还包括:硬盘数据读取单元,用于依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据。
如图4所示,硬盘数据读取单元200包括:读取指令接收子单元201、目标三元组确定子单元202及硬盘数据读取子单元203;其中:
读取指令接收子单元201,用于当接收到数据读取指令时,提取所述数据读取指令中的属性类型及属性值;
目标三元组确定子单元202,用于在所述第二嵌套哈希表中,确定与所述属性类型及属性值对应的目标三元组;
硬盘数据读取子单元203,用于依据所述目标三元组的第二元素及第三元素,从所述硬盘中读取存储的数据。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种数据存储方法,其特征在于,包括:
依据抓取的先后顺序,将抓取到的多条数据存储至第一缓存;其中,各条所述数据具有N个相同类型的属性;
依据所述多条数据在所述第一缓存中的位置,生成第一嵌套哈希表;其中,所述第一嵌套哈希表由N层第一哈希表嵌套组成,各层所述第一哈希表的键依次为所述N个相同类型的属性,且第1层至第N-1层所述第一哈希表的值依次为下一层的第一哈希表,第N层第一哈希表的值为各条所述数据在所述第一缓存中的地址值;
根据预设遍历顺序,依次获取所述第N层第一哈希表中的地址值;
根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘。
2.根据权利要求1所述的数据存储方法,其特征在于,所述根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘包括:
根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至第二缓存中;
将所述第二缓存中的数据依次存储至硬盘。
3.根据权利要求1所述的数据存储方法,其特征在于,还包括:
生成并存储第二嵌套哈希表;其中,所述第二嵌套哈希表由N层第二哈希表嵌套组成,每层所述第二哈希表的键为三元组,且第1层至第N-1层所述第二哈希表的值依次为下一层的第二哈希表,第N层第二哈希表的值为各条所述数据在所述硬盘中的地址值;
各层所述三元组的第一元素依次为所述N个相同类型的属性,每层所述三元组的第二元素为各自层对应类型的属性对应的数据在所述硬盘中的起始地址,每层所述三元组的第三元素为各自层对应类型的属性对应的数据在所述硬盘中的数据长度。
4.根据权利要求3所述的数据存储方法,其特征在于,还包括:
依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据。
5.根据权利要求4所述的数据存储方法,其特征在于,所述依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据包括:
当接收到数据读取指令时,提取所述数据读取指令中的属性类型及属性值;
在所述第二嵌套哈希表中,确定与所述属性类型及属性值对应的目标三元组;
依据所述目标三元组的第二元素及第三元素,从所述硬盘中读取存储的数据。
6.一种数据存储装置,其特征在于,包括:
第一缓存存储单元,用于依据抓取的先后顺序,将抓取到的多条数据存储至第一缓存;其中,各条所述数据具有N个相同类型的属性;
第一哈希表生成单元,用于依据所述多条数据在所述第一缓存中的位置,生成第一嵌套哈希表;其中,所述第一嵌套哈希表由N层第一哈希表嵌套组成,各层所述第一哈希表的键依次为所述N个相同类型的属性,且第1层至第N-1层所述第一哈希表的值依次为下一层的第一哈希表,第N层第一哈希表的值为各条所述数据在所述第一缓存中的地址值;
缓存地址值获取单元,用于根据预设遍历顺序,依次获取所述第N层第一哈希表中的地址值;
硬盘数据存储单元,用于根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至硬盘。
7.根据权利要求6所述的数据存储装置,其特征在于,所述硬盘数据存储单元包括:
第二缓存存储子单元,用于根据获取各个所述地址值的顺序,依次将所述第一缓存中各个所述地址值对应的数据存储至第二缓存中;
硬盘数据存储子单元,用于将所述第二缓存中的数据依次存储至硬盘。
8.根据权利要求6所述的数据存储装置,其特征在于,还包括:
第二哈希表生成单元,用于生成并存储第二嵌套哈希表;其中,所述第二嵌套哈希表由N层第二哈希表嵌套组成,每层所述第二哈希表的键为三元组,且第1层至第N-1层所述第二哈希表的值依次为下一层的第二哈希表,第N层第二哈希表的值为各条所述数据在所述硬盘中的地址值;
各层所述三元组的第一元素依次为所述N个相同类型的属性,每层所述三元组的第二元素为各自层对应类型的属性对应的数据在所述硬盘中的起始地址,每层所述三元组的第三元素为各自层对应类型的属性对应的数据在所述硬盘中的数据长度。
9.根据权利要求8所述的数据存储装置,其特征在于,还包括:
硬盘数据读取单元,用于依据所述第二嵌套哈希表,从所述硬盘中读取存储的数据。
10.根据权利要求9所述的数据存储装置,其特征在于,所述硬盘数据读取单元包括:
读取指令接收子单元,用于当接收到数据读取指令时,提取所述数据读取指令中的属性类型及属性值;
目标三元组确定子单元,用于在所述第二嵌套哈希表中,确定与所述属性类型及属性值对应的目标三元组;
硬盘数据读取子单元,用于依据所述目标三元组的第二元素及第三元素,从所述硬盘中读取存储的数据。
CN201510907032.4A 2014-12-10 2015-12-09 一种数据存储方法及装置 Active CN105335300B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510907032.4A CN105335300B (zh) 2014-12-10 2015-12-09 一种数据存储方法及装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201410756207.1A CN104407991A (zh) 2014-12-10 2014-12-10 一种数据存储方法及装置
CN2014107562071 2014-12-10
CN201510907032.4A CN105335300B (zh) 2014-12-10 2015-12-09 一种数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN105335300A CN105335300A (zh) 2016-02-17
CN105335300B true CN105335300B (zh) 2018-10-12

Family

ID=52645624

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410756207.1A Pending CN104407991A (zh) 2014-12-10 2014-12-10 一种数据存储方法及装置
CN201510907032.4A Active CN105335300B (zh) 2014-12-10 2015-12-09 一种数据存储方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201410756207.1A Pending CN104407991A (zh) 2014-12-10 2014-12-10 一种数据存储方法及装置

Country Status (1)

Country Link
CN (2) CN104407991A (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106504183B (zh) * 2015-09-08 2019-09-10 龙芯中科技术有限公司 顶点属性存储的方法及装置
CN106484332A (zh) * 2016-10-12 2017-03-08 郑州云海信息技术有限公司 一种数据存储方法及装置
CN107315801B (zh) * 2017-06-22 2019-12-13 中国人民解放军国防科学技术大学 并行离散事件仿真系统初始化数据存储方法
CN107220105A (zh) * 2017-06-22 2017-09-29 中国人民解放军国防科学技术大学 并行离散事件仿真系统自动初始化实现方法
CN107453948A (zh) * 2017-07-28 2017-12-08 北京邮电大学 一种网络测量数据的存储方法及系统
US11468781B2 (en) * 2017-08-11 2022-10-11 The Boeing Company Simulation of an asset including message playback using nested hash tables
CN107632792A (zh) * 2017-10-13 2018-01-26 郑州云海信息技术有限公司 云数据系统中管理虚拟磁盘的方法和装置
CN112181312A (zh) * 2020-10-23 2021-01-05 北京安石科技有限公司 硬盘数据的快速读取方法及系统
CN112491857B (zh) * 2020-11-20 2023-05-02 北京人大金仓信息技术股份有限公司 集合类型数据的传输方法、装置和设备
CN112465344B (zh) * 2020-11-26 2023-10-24 中船重工鹏力(南京)智能装备系统有限公司 一种基于车间自动化产线仿真系统参数的初始化方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1652112A (zh) * 2005-03-02 2005-08-10 北京北方烽火科技有限公司 一种嵌入式环境下数据字典的实现方法
CN101777025A (zh) * 2009-12-25 2010-07-14 宇龙计算机通信科技(深圳)有限公司 一种多级菜单内容存储方法、装置及网络通信终端
CN102253988A (zh) * 2011-06-30 2011-11-23 北京新媒传信科技有限公司 网络文本服务中敏感词过滤的方法
CN103559215A (zh) * 2013-10-14 2014-02-05 西安交通大学 一种面向内容网络中内容名存储结构的设计方法
CN104090942A (zh) * 2014-06-30 2014-10-08 中国电子科技集团公司第三十二研究所 应用于网络处理器中的Trie搜索方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7099881B2 (en) * 2002-12-06 2006-08-29 Stmicroelectronics, Inc. Method for increasing average storage capacity in a bit-mapped tree-based storage engine by using remappable prefix representations and a run-length encoding scheme that defines multi-length fields to compactly store IP prefixes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1652112A (zh) * 2005-03-02 2005-08-10 北京北方烽火科技有限公司 一种嵌入式环境下数据字典的实现方法
CN101777025A (zh) * 2009-12-25 2010-07-14 宇龙计算机通信科技(深圳)有限公司 一种多级菜单内容存储方法、装置及网络通信终端
CN102253988A (zh) * 2011-06-30 2011-11-23 北京新媒传信科技有限公司 网络文本服务中敏感词过滤的方法
CN103559215A (zh) * 2013-10-14 2014-02-05 西安交通大学 一种面向内容网络中内容名存储结构的设计方法
CN104090942A (zh) * 2014-06-30 2014-10-08 中国电子科技集团公司第三十二研究所 应用于网络处理器中的Trie搜索方法及装置

Also Published As

Publication number Publication date
CN104407991A (zh) 2015-03-11
CN105335300A (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
CN105335300B (zh) 一种数据存储方法及装置
CN106096023B (zh) 数据读取方法、数据写入方法及数据服务器
CN102195866B (zh) 利用布隆滤波器的数据包分类方法及数据包分类装置
CN105429968B (zh) 基于布隆过滤器的网络取证载荷归属方法及系统
CN110268399A (zh) 用于维护操作的合并树修改
CN110383261A (zh) 用于多流存储装置的流选择
CN103973810B (zh) 基于互联网协议ip盘的数据处理方法和装置
CN103581331B (zh) 虚拟机在线迁移方法与系统
JP2008015872A5 (zh)
CN106484332A (zh) 一种数据存储方法及装置
CN103577602A (zh) 一种二次聚类方法及系统
CN102024019B (zh) 一种分布式文件系统中基于后缀树的目录组织方法
CN104392171B (zh) 一种基于数据关联的自动内存证据分析方法
CN102110171A (zh) 基于树形结构的布鲁姆过滤器的查询与更新方法
CN106959993A (zh) 储藏物的位置追踪方法
CN106407485B (zh) 一种基于相似度比较的url去重方法和系统
CN104636368B (zh) 数据检索方法、装置及服务器
CN104915388B (zh) 一种基于谱聚类和众包技术的图书标签推荐方法
CN106294792A (zh) 关联查询系统的建立方法及建立系统
CN103198157A (zh) 一种大地电场数据的压缩存储处理方法
CN100555935C (zh) 基于相似数据集的网络监测数据压缩存储和联合检测方法
CN106775464A (zh) 一种数据分层存储系统及方法
CN107590233B (zh) 一种文件管理方法及装置
CN104424204B (zh) 索引机制合并方法、搜索方法、装置及设备
CN107704208A (zh) 一种元数据的修复方法、装置及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 610000 No. 06, floor 15, unit 2, building 1, No. 28, north section of Tianfu Avenue, Chengdu hi tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan

Patentee after: Chengdu Shumo Technology Co.,Ltd.

Address before: 610041 building b6-7, Tianfu Software Park, No. 801, middle section of Tianfu Avenue, high tech Zone, Chengdu, Sichuan

Patentee before: COLASOFT Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220324

Address after: 610041 12th, 13th and 14th floors, unit 1, building 4, No. 966, north section of Tianfu Avenue, high tech Zone, Chengdu, Sichuan

Patentee after: Kelai Network Technology Co.,Ltd.

Address before: 610000 No. 06, floor 15, unit 2, building 1, No. 28, north section of Tianfu Avenue, Chengdu hi tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan

Patentee before: Chengdu Shumo Technology Co.,Ltd.