CN111177476B - 数据查询方法、装置、电子设备及可读存储介质 - Google Patents
数据查询方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN111177476B CN111177476B CN201911235112.4A CN201911235112A CN111177476B CN 111177476 B CN111177476 B CN 111177476B CN 201911235112 A CN201911235112 A CN 201911235112A CN 111177476 B CN111177476 B CN 111177476B
- Authority
- CN
- China
- Prior art keywords
- hash
- brief information
- queried
- stored
- bucket
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000004422 calculation algorithm Methods 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 22
- 238000003491 array Methods 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000003068 static effect Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000005476 soldering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- 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/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据查询方法、装置、电子设备及可读存储介质,涉及信息检索技术。本申请实施例获取待查询内容的哈希值后,获取所述哈希值对应的数据单元和所述待查询内容的简要信息,之后并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,进而,根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容,通过并行查询方式提高了查找效率和速度,并且,无需对数据单元进行代价昂贵的逐一顺序查找和内容匹配,节省了成本。
Description
技术领域
涉及计算机技术,具体涉及信息检索技术,尤其涉及一种数据查询方法、装置、电子设备及可读存储介质。
背景技术
进入云计算时代,信息爆炸式增长,面对海量数据,信息检索系统依赖索引数据对数据进行快速的查找。哈希表(Hash Table,也称为散列表),是根据键值(key)而直接访问在内存存储位置的数据表,它通过一个键值的函数将所需的数据映射到哈希表中的位置来访问数据,这个映射函数叫做哈希函数(也称为散列函数)。其中,拉链式(SeparateChaining)哈希表是指使用额外的拉链结构解决哈希冲突的哈希表。
现有的拉链式哈希表中存储的是键值,进行数据查询时,需要对拉链式哈希表的拉链结构中存储的键值数据进行逐一的顺序查找,查询效率较低。
发明内容
本申请的多个方面提供一种数据查询方法、装置、电子设备及可读存储介质,用以提高拉链式哈希表的查询效率和速度,节省成本。
本申请的一方面,提供一种数据查询方法,包括:
获取待查询内容的哈希值;
获取所述哈希值对应的数据单元和所述待查询内容的简要信息;其中,每个所述数据单元用于存储哈希值相同的内容;
并行比较所述简要信息与所述数据单元中的多个简要信息是否相同;
根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述待查询内容和所述存储内容分别为键值;
所述数据单元为拉链式哈希表中的所述哈希分桶;
其中,每个所述哈希分桶包括数据块和简要信息序列,所述简要信息序列包括分别与所述数据块中各存储内容对应的简要信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取所述哈希值对应的数据单元和所述待查询内容的简要信息,包括:
基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值的对应的哈希分桶和和所述待查询键值的简要信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值对应的哈希分桶,包括:
将所述哈希值对所述拉链式哈希表包括的哈希分桶总数取模,得到所述哈希值对应的哈希分桶的分桶标识,以便获取所述分桶标识所标识的哈希分桶。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述待查询内容的简要信息,包括:
以所述哈希值的高N位作为所述待查询键值的简要信息,其中,N为大于0的整数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述数据块的数据结构包括以下任意一种:链表,动态数组,静态数组,跳表,队列,栈,树,堆,图,散列表。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,包括:
使用单指令流多数据流SIMD指令并行比较所述待查询键值的简要信息与所述简要信息序列中的多个简要信息是否相同。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述简要信息序列的大小为8的整数倍;
所述简要信息序列中各元素的大小为1个字节。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述哈希分桶还包括数据块指针;
所述拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储,其中,L的取值为大于0且小于所述拉链式哈希表包括的哈希分桶总数M的整数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述拉链式哈希表为只读拉链式哈希表,所述哈希分桶还包括数据块索引;
所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,包括:
选取所述对应的哈希分桶中简要信息序列中预设数量的简要信息作为当前简要信息,并行比较所述待查询键值的简要信息与所述当前简要信息是否相同;
若所述当前简要信息中不存在与所述待查询键值的简要信息相同的简要信息,选取所述对应的哈希分桶中简要信息序列中下一预设数量的简要信息作为当前简要信息,执行所述并行比较所述待查询键值的简要信息与所述当前简要信息是否相同的操作,直至所述当前简要信息中存在与所述待查询键值的简要信息相同的简要信息或者读取到所述对应的哈希分桶的下一个哈希分桶。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述简要信息序列存储在第一存储单元中,所述数据块存储在第二存储单元中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,还包括:
采用预设哈希算法对待存储键值进行哈希计算,得到待存储哈希值;
获取所述待存储键值的简要信息和所述待存储哈希值对应的哈希分桶;
在所述待存储哈希值对应的哈希分桶的简要信息序列中存储所述待存储键值的简要信息,在所述待存储哈希值对应的哈希分桶的数据块中与所述待存储键值的简要信息对应的位置存储所述待存储键值。
本申请的另一方面,提供一种数据查询装置,包括:
计算单元,用于获取待查询内容的哈希值;
获取单元,用于获取所述哈希值对应的数据单元和所述待查询内容的简要信息;其中,每个所述数据单元用于存储哈希值相同的内容;
第一比较单元,用于并行比较所述简要信息与所述数据单元中的多个简要信息是否相同;
第二比较单元,用于根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,
所述待查询内容和所述存储内容分别为键值;
所述数据单元为拉链式哈希表中的所述哈希分桶;
其中,每个所述哈希分桶包括数据块和简要信息序列,所述简要信息序列包括分别与所述数据块中各存储内容对应的简要信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取单元,具体用于
基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值的对应的哈希分桶和和所述待查询键值的简要信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取单元,具体用于
将所述哈希值对所述拉链式哈希表包括的哈希分桶总数取模,获取所述哈希值对应的哈希分桶的分桶标识,以便获取所述分桶标识所标识的哈希分桶。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取单元,具体用于
以所述哈希值的高N位作为所述待查询键值的简要信息,其中,N为大于0的整数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述数据块的数据结构包括以下任意一种:链表,动态数组,静态数组,跳表,队列,栈,树,堆,图,散列表。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,第一比较单元,具体用于
使用单指令流多数据流SIMD指令并行比较所述待查询键值的简要信息与所述简要信息序列中的多个简要信息是否相同。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述简要信息序列的大小为8的整数倍;
所述简要信息序列中各元素的大小为1个字节。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括:
第三存储单元,用于存储所述拉链式哈希表;
所述数据单元还包括数据块指针;所述拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储于所述第三存储单元中,其中,L的取值为大于0且小于所述拉链式哈希表包括的哈希分桶总数M的整数。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括:
第三存储单元,用于存储所述拉链式哈希表;
所述拉链式哈希表为只读拉链式哈希表,所述哈希分桶还包括数据块索引;
所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列存储于所述第三存储单元中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述第一比较单元,用于
选取所述对应的哈希分桶中序列简要信息序列中预设数量的简要信息作为当前简要信息,并行比较所述待查询键值的简要信息与所述当前简要信息是否相同;
若所述当前简要信息中不存在与所述待查询键值的简要信息相同的简要信息,选取所述对应的哈希分桶中简要信息序列中下一预设数量的简要信息作为当前简要信息,执行所述并行比较所述待查询键值的简要信息与所述当前简要信息是否相同的操作,直至所述当前简要信息中存在与所述待查询键值的简要信息相同的简要信息或者读取到所述对应的哈希分桶的下一个哈希分桶。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,还包括:
第一存储单元,用于存储所述简要信息序列;
第二存储单元,用于存储所述数据块。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述计算单元,还用于采用预设哈希算法对待存储键值进行哈希计算,得到待存储哈希值;
所述获取单元,还用于获取所述待存储键值的简要信息和所述待存储哈希值对应的哈希分桶;
所述装置还包括:
插入单元,用于在所述待存储哈希值对应的哈希分桶的简要信息序列中存储所述待存储键值的简要信息,在所述待存储哈希值对应的哈希分桶的数据块中与所述待存储键值的简要信息对应的位置存储所述待存储键值。
本发明的另一方面,提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方面和任一可能的实现方式的方法。
本发明的另一方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上所述的方面和任一可能的实现方式的方法。
由上述技术方案可知,本申请实施例在进行数据查询时,先获取待查询内容的哈希值,之后,获取所述哈希值对应的数据单元和所述待查询内容的简要信息,然后,一次并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,在数据单元中存在与所述待查询内容的简要信息相同的简要信息时,再根据所述待查询内容和数据单元中存在的所述相同的简要信息的存储内容是否相同,来确定该数据单元中是否存储有所述待查询内容,通过并行查询方式提高了查找效率和速度,利用本申请实施例进行拉链式哈希表中的键值查询时,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,提高了查找效率和速度,节省了成本。
另外,采用本申请所提供的技术方案,通过对拉链式哈希表的每个哈希分桶增加一个简要信息序列,包括分别于所在哈希分桶的数据块中各键值对应的简要信息,通过并行查询方式提高了拉链式哈希表中的键值查找效率和速度,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,节省了成本。
另外,采用本申请所提供的技术方案,基于同一个哈希算法和待查询键值,得到所述哈希值及对应的哈希分桶和简要信息,能够节省计算资源,提高计算效率。
另外,采用本申请所提供的技术方案,使用单指令流多数据流(singleinstructionmultiple data,SIMD)指令并行比较所述哈希值的简要信息与所述对应的哈希分桶中简要信息序列中的多个简要信息是否相同,充分利用SIMD指令的并行计算能力提高了拉链结构的查找效率和速度。
另外,采用本申请所提供的技术方案,简要信息序列的大小为8的整数倍,简要信息序列中各简要信息的大小为1个字节,能够进一步充分利用SIMD指令的并行计算能力,节省计算资源,提高计算效率。
另外,采用本申请所提供的技术方案,拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储,能够降低存储开销,提升存储效率。
另外,采用本申请所提供的技术方案,对于只读拉链式哈希表,哈希分桶还包括数据块索引,所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列,能够进一步减少所需使用的存储空间,大大提升存储效率。
另外,采用本申请所提供的技术方案,可以将简要信息序列和数据块分级存储,将哈希分桶中简要信息序列存储在第一存储单元中,将哈希分桶中的数据块存储在第二存储单元中,能够在保证查询性能的情况下降低存储成本。
另外,采用本申请所提供的技术方案,哈希分桶数据合并后,拉链式哈希表在低冲突率和一定范围内的高冲突率下(平均冲突率不超过SIMD指令等并行指令宽度)有着稳定的性能表现,可以充分节约哈希分桶的存储空间。
上述方面或可能的实现方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。附图仅仅用于更好地理解本方案,不构成对本申请的限定。其中:
图1为本申请一实施例提供的数据查询方法的流程示意图;
图2为本申请一实施例中提供的哈希表的存储结构示意图;
图3为本申请另一实施例中提供的哈希表的存储结构示意图;
图4为本申请又一实施例中提供的哈希表的存储结构示意图;
图5为本申请另一实施例提供的数据查询方法的流程示意图;
图6为本申请一实施例提供的数据查询装置的结构示意图;
图7为本申请另一实施例提供的数据查询装置的结构示意图;
图8为本申请又一实施例提供的数据查询装置的结构示意图;
图9是用来实现本申请实施例提供的数据查询方法的电子设备的示意图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中所涉及的终端可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)、个人电脑(Personal Computer,PC)、MP3播放器、MP4播放器、可穿戴设备(例如,智能眼镜、智能手表、智能手环等)、智能家居设备(例如,智能音箱设备、智能电视、智能空调等)等。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本申请一实施例提供的数据查询方法的流程示意图,如图1所示。
101、获取待查询内容的哈希值(Hash Code,也称为哈希地址或者哈希码)。
可选地,在本实施例的一个可能的实现方式中,可以采用预设哈希算法对待查询内容进行哈希计算,得到所述待查询内容的哈希值。本申请实施例中的哈希算法可以是任意的哈希函数,例如可以包括但不限不限于直接定址法、平方取中法、除留余数法、随机数法等对应的函数,本实施例对此不进行特别限定。
102、获取所述哈希值对应的数据单元所述待查询内容的简要信息。
103、并行比较所述简要想信息与所述数据单元中的多个简要信息是否相同。
104、根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容。
若所述待查询内容与所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容相同,则说明从所述数据单元中查询到该待查询内容;否则,若所述待查询内容与所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容不相同,则说明从所述数据单元中未查询到该待查询内容,可以返回未查询到该待查询内容的查询结果消息,或者不返回任何消息。
需要说明的是,101~104的执行主体的部分或全部可以为位于本地终端的应用,或者还可以为设置在位于本地终端的应用中的插件或软件开发工具包(SoftwareDevelopment Kit,SDK)等功能单元,或者还可以为位于网络侧服务器中的处理引擎,或者还可以为位于网络侧的分布式系统,例如,网络侧的搜索服务器中的处理引擎或者分布式系统等,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的本地程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行限定。
这样,获取所述哈希值对应的数据单元和所述待查询内容的简要信息后,一次并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,在数据单元中存在与所述待查询内容的简要信息相同的简要信息时,再根据所述待查询内容和数据单元中存在的所述相同的简要信息的存储内容是否相同,来确定该数据单元中是否存储有所述待查询内容,通过并行查询方式提高了查找效率和速度,利用本申请实施例进行拉链式哈希表中的键值查询时,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,提高了查找效率和速度,节省了成本。
可选地,在本实施例的一个可能的实现方式中,101中的待查询内容和103中的存储内容分别为键值(key),所述数据单元为拉链式哈希表中的所述哈希分桶,每个拉链式哈希表包括一个或多个哈希分桶,每个哈希分桶分别用于存储哈希值相同的键值及其简要信息。具体来说,每个哈希分桶分别包括一个数据块(kv_pair[])和一个简要信息序列,数据块用于存储哈希值相同的键值,简要信息序列包括与同一数据单元的数据块中各存储内容分别对应的简要信息。相应地,103中,即并行比较所述简要信息与所述简要信息序列中的多个简要信息是否相同。
其中,哈希分桶中的数据块可以采用链表、树等结构实现。可选地,在本实施例的一个可能的实现方式中,所述数据块的数据结构例如包括但不限于以下任意一种:链表,动态数组,静态数组,跳表,队列,栈,树,堆,图,散列表,等等任意可遍历的数据结构,本实施例对此不进行特别限定。数据块采用链表结构实现时,该数据块也可以称为单链表。
其中,在数据块采用动态数组之类支持随机访问的拉链数据结构时,在哈希掩码匹配成功后可以跳过大部分无需比较的数据元素,节省比较计算资源和成本。
其中的简要信息序列可以采用一个数组结构实现,可以称为哈希掩码数组(mask[]),相应地,简要信息序列中的各简要信息作为数组中的一个元素,可以称为哈希掩码(mask[i])。本实施例对简要信息序列的具体实现方式不进行特别限定。
可选地,在本实施例的一个可能的实现方式中,根据103的比较结果,若所述简要信息序列中存在与待查询键值的简要信息相同的简要信息,在104中,比较所述相同的简要信息的键值是否与所述待查询键值相同,若所述相同的简要信息的键值与所述待查询键值相同,确定所述拉链式哈希表中存储有所述待查询键值。否则,若根据103的比较结果,所述简要信息序列中不存在与所述待查询键值的简要信息相同的元素,则不再执行104,即不再比较所述相同的待查询键值的键值是否与所述待查询键值相同,无需对拉链结构进行代价昂贵的逐一顺序查找和键值匹配,节省了成本。
可选地,在本实施例的一个可能的实现方式中,在101中,可以采用预设哈希算法对待查询键值进行哈希计算,得到获取待查询键值的哈希值,在102中,可以基于所述预设哈希算法和所述待查询键值,获取所述哈希值对应的哈希分桶和所述待查询键值的简要信息。
这样,基于同一个哈希算法和待查询键值,得到待查询键值的哈希值及对应的哈希分桶、以及待查询键值的简要信息,能够节省计算资源,提高计算效率。
在一个具体的实现方式中,可以将所述哈希值对所述拉链式哈希表包括的哈希分桶总数取模,得到所述哈希值对应的哈希分桶的分桶标识(ID),以便获取该分桶ID所标识的哈希分桶。其中,分桶ID也可以称为分桶编号,用于唯一标识拉链式哈希表中的一个分桶,本实施例对此不进行特别限定。
在一个具体的实现方式中,可以以所述哈希值的高N位作为所述哈希值的简要信息,其中,N为大于0的整数,例如,N的取值可以为8,即以所述哈希值的高8位作为所述待查询键值的简要信息。
例如,可以先采用预设哈希算法对待查询键值key进行哈希计算,得到一个64位的哈希值,将该哈希值对哈希分桶总数128取模,得到分桶ID,取该哈希值的高8位作为该待查询键值的简要信息。
在一个具体的实现方式中,103中,可以使用SIMD指令并行比较所述待查询键值的简要信息与所述对应的哈希分桶中简要信息序列中的多个简要信息是否相同。
本方案中,使用SIMD指令并行比较所述待查询键值的简要信息与所述对应的哈希分桶中简要信息序列中的多个简要信息是否相同,能够充分利用SIMD指令的并行计算能力提高了拉链结构的查找效率和速度。
可选地,在本实施例的一个可能的实现方式中,简要信息序列的大小为8的整数倍,例如可以为8、16、32等等8的整数倍,本实施例对此不进行特别限定。
可选地,在本实施例的一个可能的实现方式中,所述简要信息序列中各元素(即简要信息)的大小可以为1个字节,以便充分利用SIMD指令的并行计算能力。
这样,能够进一步充分利用SIMD指令的并行计算能力,节省计算资源,提高计算效率。
图2为本申请一实施例中提供的哈希表的存储结构示意图。如图2所示,为一个示例性内容的哈希表的存储结构。其中,000、001、…、0128为哈希分桶的分桶ID。
可选地,在本实施例的一个可能的实现方式中,所述哈希分桶还可以包括数据块指针。所述拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储,从而能够降低存储开销,提升存储效率。其中,L的取值为大于0且小于所述拉链式哈希表包括的哈希分桶总数M的整数。
基于本实施例提供的拉链式哈希表结构,可以将部分拉链(包括数据块指针、数据块和简要信息序列)分别对应合并在一起以降低存储开销,提升存储效率,当拉链过长时再将拉链分裂。由于主要是简要信息匹配对哈希冲突增加的容忍程度比较高,简要信息序列中元素数为1或者8,简要信息匹配的计算复杂度相同,因此,将部分拉链(包括数据块指针、数据块和简要信息序列)合并在一起对查询性能的影响并不大,可以使用拉链合并、动态分裂的方法提升存储效率。
图3为本申请另一实施例中提供的哈希表的存储结构示意图。如图3所示,图2中分桶ID为054和126的两个分桶的数据块指针、数据块、简要信息序列分别对应合并存储。
当上述拉链式哈希表不需要再增、删、改数据时,该拉链式哈希表可以设置为只读拉链式哈希表,可以将该只读拉链式哈希表合并成更为紧凑的数据结构。
可选地,在本实施例的一个可能的实现方式中,所述拉链式哈希表为只读拉链式哈希表,哈希分桶还包括数据块索引。所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列。
这样,能够进一步减少所需使用的存储空间,大大提升存储效率,并且,由于局部性的存在,能够充分利用CPU高速缓存(cache),合并存储后,访问性能会得到提升;
其次,合并成固定大小分块序列化存储的数据块和简要信息序列后,哈希分桶中可以不必存储数据块指针,只存储对应的数据块索引(block index)即可,由于存储数据块索引所需的存储空间小于存储数据块指针所需的存储空间,例如,在常见64位平台上,每个分桶的数据块指针需要8字节的存储空间,而在分桶数<256时存储数据块索引仅需1字节,从而能大大减少焊锡分桶使用的存储空间;
另外,虽然合并成固定大小分块序列化存储的数据块和简要信息序列后丢失了每个分桶的拉链大小,但由于充分利用了SIMD指令的并行计算能力,基于简要信息序列在数据块内查找的成本很低,从当前分桶的数据块查询到下一个分桶的数据块,在SIMD指令下浪费的计算成本并不高,可以充分节省辅助数据结构的浪费。
图4为本申请又一实施例中提供的哈希表的存储结构示意图。如图4所示,只读拉链式哈希表中的全部哈希分桶的数据块、简要信息序列分别对应合并成大小为16的序列化存储的数据块kv_pair[16]和简要信息序列mask[16]。
可选地,在本实施例的一个可能的实现方式中,针对只读拉链式哈希表,103中,具体可以选取所述对应的哈希分桶中简要信息序列中预设数量的简要信息作为当前简要信息,例如使用SIMD指令,并行比较所述哈待查询键值的简要信息与所述当前简要信息;若所述当前简要信息中不存在与所述待查询键值的简要信息相同的元素,选取所述对应的哈希分桶中简要信息序列中下一预设数量的简要信息作为当前简要信息,执行并行比较所述待查询键值的简要信息与所述当前简要信息的操作,直至所述当前简要信息中存在与所述简要信息相同的简要信息或者读取到所述对应的哈希分桶的下一个哈希分桶,即实际查询范围是[当前分桶的数据块,下一个分桶的数据块]。
上述图2-图4所示示例中数据块的数据结构采用动态数组,然而,本领域技术人员基于本申请实施例的记载,可以知悉数据块采用其他数据结构的实现,本申请实施例不再赘述。
可选地,在本实施例的一个可能的实现方式中,可以将哈希分桶中简要信息序列存储在第一存储单元中,将哈希分桶中的数据块存储在第二存储单元中。
这样,将简要信息序列和数据块分级存储,将简要信息序列存储在第一存储单元中,例如将简要信息序列存储在访问速度较快的内存中,将数据块存储在第二存储单元中,例如将数据块存储在硬盘或者固态驱动器(Solid State Drive,SSD)中,能够在保证查询性能的情况下降低存储成本。
图5为本申请另一实施例提供的数据查询方法的流程示意图。如图5所示,在上述实施例的基础上,还可以包括:
201、采用预设哈希算法对待存储键值进行哈希计算,得到待存储哈希值。
202、获取所述待存储键值的简要信息和所述待存储哈希值对应的哈希分桶。
203、在所述待存储哈希值对应的哈希分桶的简要信息序列中存储所述待存储键值的简要信息,在所述待存储哈希值对应的哈希分桶的数据块中与所述待存储键值的简要信息对应的位置存储所述待存储键值。
这样,实现了对待存储键值及其简要信息的存储,以便于后续查询。
本申请所提供的技术方案,获取所述哈希值对应的数据单元和所述待查询内容的简要信息,然后,一次并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,在数据单元中存在与所述待查询内容的简要信息相同的简要信息时,再根据所述待查询内容和数据单元中存在的所述相同的简要信息的存储内容是否相同,来确定该数据单元中是否存储有所述待查询内容,通过并行查询方式提高了查找效率和速度,利用本申请实施例进行拉链式哈希表中的键值查询时,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,提高了查找效率和速度,节省了成本。
另外,采用本申请所提供的技术方案,通过对拉链式哈希表的每个哈希分桶增加一个简要信息序列,包括分别于所在哈希分桶的数据块中各键值对应的简要信息,通过并行查询方式提高了拉链式哈希表中的键值查找效率和速度,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,节省了成本。
另外,采用本申请所提供的技术方案,基于同一个哈希算法和待查询键值,得到所述哈希值及对应的哈希分桶和简要信息,能够节省计算资源,提高计算效率。
另外,采用本申请所提供的技术方案,使用单指令流多数据流(singleinstructionmultiple data,SIMD)指令并行比较所述哈希值的简要信息与所述对应的哈希分桶中简要信息序列中的多个简要信息是否相同,充分利用SIMD指令的并行计算能力提高了拉链结构的查找效率和速度。
另外,采用本申请所提供的技术方案,简要信息序列的大小为8的整数倍,简要信息序列中各简要信息的大小为1个字节,能够进一步充分利用SIMD指令的并行计算能力,节省计算资源,提高计算效率。
另外,采用本申请所提供的技术方案,拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储,能够降低存储开销,提升存储效率。
另外,采用本申请所提供的技术方案,对于只读拉链式哈希表,哈希分桶还包括数据块索引,所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列,能够进一步减少所需使用的存储空间,大大提升存储效率。
另外,采用本申请所提供的技术方案,可以将简要信息序列和数据块分级存储,将哈希分桶中简要信息序列存储在第一存储单元中,将哈希分桶中的数据块存储在第二存储单元中,能够在保证查询性能的情况下降低存储成本。
另外,采用本申请所提供的技术方案,哈希分桶数据合并后,拉链式哈希表在低冲突率和一定范围内的高冲突率下(平均冲突率不超过SIMD指令等并行指令宽度)有着稳定的性能表现,可以充分节约哈希分桶的存储空间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图6为本申请一实施例提供的数据查询装置的结构示意图,如图6所示。本实施例的数据查询装置300可以包括计算单元301、获取单元302、第一比较单元303和第二比较单元304。其中,计算单元301,用于获取待查询内容的哈希值;获取单元302,用于获取所述哈希值对应的数据单元和所述待查询内容的简要信息;其中,每个所述数据单元用于存储哈希值相同的内容;第一比较单元303,用于并行比较所述简要信息与所述数据单元中的多个简要信息是否相同;第二比较单元304,第二比较单元,用于根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容。。
需要说明的是,本实施例所提供的数据查询装置的执行主体的部分或全部可以为位于本地终端的应用,或者还可以为设置在位于本地终端的应用中的插件或软件开发工具包(Software Development Kit,SDK)等功能单元,或者还可以为位于网络侧服务器中的处理引擎,或者还可以为位于网络侧的分布式系统,例如,网络侧的搜索服务器中的处理引擎或者分布式系统等,本实施例对此不进行特别限定。
可以理解的是,所述应用可以是安装在终端上的本地程序(nativeApp),或者还可以是终端上的浏览器的一个网页程序(webApp),本实施例对此不进行限定。
可选地,在本实施例的一个可能的实现方式中,所述待查询内容和所述存储内容分别为键值;所述数据单元为拉链式哈希表中的所述哈希分桶;其中,每个所述哈希分桶包括数据块和简要信息序列,所述简要信息序列包括分别与所述数据块中各存储内容对应的简要信息。
可选地,在本实施例的一个可能的实现方式中,所述获取单元302,基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值的对应的哈希分桶和和所述待查询键值的简要信息。
可选地,在本实施例的一个可能的实现方式中,所述获取单元302,具体用于将所述哈希值对所述拉链式哈希表包括的哈希分桶总数取模,得到所述哈希值对应的哈希分桶的分桶标识,以便获取所述分桶标识所标识的哈希分桶。
可选地,在本实施例的一个可能的实现方式中,所述获取单元302,具体用于以所述哈希值的高N位作为所述待查询键值的简要信息,其中,N为大于0的整数。
可选地,在本实施例的一个可能的实现方式中,第一比较单元303,具体用于使用单指令流多数据流SIMD指令并行比较所述待查询键值的简要信息与所述简要信息序列中的多个简要信息是否相同。
可选地,在本实施例的一个可能的实现方式中,所述简要信息序列的大小为8的整数倍;所述简要信息序列中各元素的大小为1个字节。
可选地,在本实施例的一个可能的实现方式中,所述数据块的数据结构包括以下任意一种:链表,动态数组,静态数组,跳表,队列,栈,树,堆,图,散列表。
图7为本申请另一实施例提供的数据查询装置的结构示意图。如图7所示,与在上述实施例的基础上,所述数据查询装置还可以包括:第三存储单元305,用于存储所述拉链式哈希表。
可选地,在本实施例的一个可能的实现方式中,所述数据单元还包括数据块指针;所述拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储于所述第三存储单元中,其中,L的取值为大于0且小于所述拉链式哈希表包括的哈希分桶总数M的整数。
可选地,在本实施例的另一个可能的实现方式中,所述拉链式哈希表为只读拉链式哈希表,所述哈希分桶还包括数据块索引;
所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列存储于所述第三存储单元中。
可选地,在本实施例的一个可能的实现方式中,所述第一比较单元303,选取所述对应的哈希分桶中序列简要信息序列中预设数量的简要信息作为当前简要信息,并行比较所述待查询键值的简要信息与所述当前简要信息是否相同;若所述当前简要信息中不存在与所述待查询键值的简要信息相同的简要信息,选取所述对应的哈希分桶中简要信息序列中下一预设数量的简要信息作为当前简要信息,执行所述并行比较所述待查询键值的简要信息与所述当前简要信息是否相同的操作,直至所述当前简要信息中存在与所述待查询键值的简要信息相同的简要信息或者读取到所述对应的哈希分桶的下一个哈希分桶。
图8为本申请又一实施例提供的数据查询装置的结构示意图。如图8所示,在图5所示实施例的基础上,所述数据查询装置还可以包括:第一存储单元306,用于存储所述简要信息序列;第二存储单元307,用于存储所述数据块。
可选地,在本实施例的一个可能的实现方式中,所述计算单元301,还用于采用预设哈希算法对待存储键值进行哈希计算,得到待存储哈希值;所述获取单元302,还用于获取所述待存储键值的简要信息和所述待存储哈希值对应的哈希分桶。再参见图6或图7,所述数据查询装置还可以包括:插入单元308,用于在所述待存储哈希值对应的哈希分桶的简要信息序列中存储所述待存储键值的简要信息,在所述待存储哈希值对应的哈希分桶的数据块中与所述待存储键值的简要信息对应的位置存储所述待存储键值。
根据本申请的实施例,本申请还提供了一种电子设备和一种存储有计算机指令的非瞬时计算机可读存储介质。
其中,一个实施例的电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一实施例所述的方法。
一个实施例的存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求上述任一实施例所述的方法。
如图9所示,是用来实现本申请实施例提供的语音控制指令的处理方法的电子设备的示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图9所示,该电子设备包括:一个或多个处理器401、存储器402,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面(GUI)的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图9中以一个处理器401为例。
存储器402即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据查询方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据查询方法。
存储器402作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及单元,如本申请实施例中的数据查询方法对应的程序指令/单元(例如,附图6所示的计算单元301、获取单元302、第一比较单元303和第二比较单元304)。处理器401通过运行存储在存储器402中的非瞬时软件程序、指令以及单元,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的语音控制指令的处理方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据实现本申请实施例提供的数据查询方法的电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至实现本申请实施例提供的数据查询方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
数据查询方法的电子设备还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图9中以通过总线连接为例。
输入装置403可接收输入的数字或字符信息,以及产生与实现本申请实施例提供的数据查询方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置404可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用专用集成电路(ASIC)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,阴极射线管(CRT)或者液晶显示器(LCD)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,获取所述哈希值对应的数据单元和所述待查询内容的简要信息,然后,一次并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,在数据单元中存在与所述待查询内容的简要信息相同的简要信息时,再根据所述待查询内容和数据单元中存在的所述相同的简要信息的存储内容是否相同,来确定该数据单元中是否存储有所述待查询内容,通过并行查询方式提高了查找效率和速度,利用本申请实施例进行拉链式哈希表中的键值查询时,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,提高了查找效率和速度,节省了成本。
另外,采用本申请所提供的技术方案,通过对拉链式哈希表的每个哈希分桶增加一个简要信息序列,包括分别于所在哈希分桶的数据块中各键值对应的简要信息,通过并行查询方式提高了拉链式哈希表中的键值查找效率和速度,无需对拉链结构进行代价昂贵的逐一顺序查找和内容匹配,节省了成本。
另外,采用本申请所提供的技术方案,基于同一个哈希算法和待查询键值,得到所述哈希值及对应的哈希分桶和简要信息,能够节省计算资源,提高计算效率。
另外,采用本申请所提供的技术方案,使用单指令流多数据流(singleinstructionmultiple data,SIMD)指令并行比较所述哈希值的简要信息与所述对应的哈希分桶中简要信息序列中的多个简要信息是否相同,充分利用SIMD指令的并行计算能力提高了拉链结构的查找效率和速度。
另外,采用本申请所提供的技术方案,简要信息序列的大小为8的整数倍,简要信息序列中各简要信息的大小为1个字节,能够进一步充分利用SIMD指令的并行计算能力,节省计算资源,提高计算效率。
另外,采用本申请所提供的技术方案,拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储,能够降低存储开销,提升存储效率。
另外,采用本申请所提供的技术方案,对于只读拉链式哈希表,哈希分桶还包括数据块索引,所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列,能够进一步减少所需使用的存储空间,大大提升存储效率。
另外,采用本申请所提供的技术方案,可以将简要信息序列和数据块分级存储,将哈希分桶中简要信息序列存储在第一存储单元中,将哈希分桶中的数据块存储在第二存储单元中,能够在保证查询性能的情况下降低存储成本。
另外,采用本申请所提供的技术方案,哈希分桶数据合并后,拉链式哈希表在低冲突率和一定范围内的高冲突率下(平均冲突率不超过SIMD指令等并行指令宽度)有着稳定的性能表现,可以充分节约哈希分桶的存储空间。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (26)
1.一种数据查询方法,其特征在于,包括:
获取待查询内容的哈希值;
获取所述哈希值对应的数据单元和所述待查询内容的简要信息;其中,每个所述数据单元用于存储哈希值相同的内容,所述待查询内容为待查询键值,所述待查询内容的简要信息为所述待查询键值的哈希值的高N位,N为大于0的整数;
并行比较所述简要信息与所述数据单元中的多个简要信息是否相同;
根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容。
2.根据权利要求1所述的方法,其特征在于,所述存储内容为键值;所述数据单元为拉链式哈希表中的哈希分桶;
其中,每个所述哈希分桶包括数据块和简要信息序列,所述简要信息序列包括分别与所述数据块中各存储内容对应的简要信息。
3.根据权利要求2所述的方法,其特征在于,所述获取所述哈希值对应的数据单元和所述待查询内容的简要信息,包括:
基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值的对应的哈希分桶和所述待查询键值的简要信息。
4.根据权利要求3所述的方法,其特征在于,所述基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值对应的哈希分桶,包括:
将所述哈希值对所述拉链式哈希表包括的哈希分桶总数取模,得到所述哈希值对应的哈希分桶的分桶标识,以便获取所述分桶标识所标识的哈希分桶。
5.根据权利要求2所述的方法,其特征在于,所述数据块的数据结构包括以下任意一种:链表,动态数组,静态数组,跳表,队列,栈,树,堆,图,散列表。
6.根据权利要求2-5中任一项所述的方法,其特征在于,所述并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,包括:
使用单指令流多数据流SIMD指令并行比较所述待查询键值的简要信息与所述简要信息序列中的多个简要信息是否相同。
7.根据权利要求6所述的方法,其特征在于,所述简要信息序列的大小为8的整数倍;
所述简要信息序列中各元素的大小为1个字节。
8.根据权利要求2-5中任一项所述的方法,其特征在于,所述哈希分桶还包括数据块指针;
所述拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储,其中,L的取值为大于0且小于所述拉链式哈希表包括的哈希分桶总数M的整数。
9.根据权利要求2-5中任一项所述的方法,其特征在于,所述拉链式哈希表为只读拉链式哈希表,所述哈希分桶还包括数据块索引;
所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列。
10.根据权利要求9所述的方法,其特征在于,所述并行比较所述简要信息与所述数据单元中的多个简要信息是否相同,包括:
选取所述对应的哈希分桶中简要信息序列中预设数量的简要信息作为当前简要信息,并行比较所述待查询键值的简要信息与所述当前简要信息是否相同;
若所述当前简要信息中不存在与所述待查询键值的简要信息相同的简要信息,选取所述对应的哈希分桶中简要信息序列中下一预设数量的简要信息作为当前简要信息,执行所述并行比较所述待查询键值的简要信息与所述当前简要信息是否相同的操作,直至所述当前简要信息中存在与所述待查询键值的简要信息相同的简要信息或者读取到所述对应的哈希分桶的下一个哈希分桶。
11.根据权利要求2-5中任一项所述的方法,其特征在于,所述简要信息序列存储在第一存储单元中,所述数据块存储在第二存储单元中。
12.根据权利要求2-5中任一项所述的方法,其特征在于,还包括:
采用预设哈希算法对待存储键值进行哈希计算,得到待存储哈希值;
获取所述待存储键值的简要信息和所述待存储哈希值对应的哈希分桶;
在所述待存储哈希值对应的哈希分桶的简要信息序列中存储所述待存储键值的简要信息,在所述待存储哈希值对应的哈希分桶的数据块中与所述待存储键值的简要信息对应的位置存储所述待存储键值。
13.一种数据查询装置,其特征在于,包括:
计算单元,用于获取待查询内容的哈希值;
获取单元,用于获取所述哈希值对应的数据单元和所述待查询内容的简要信息;其中,每个所述数据单元用于存储哈希值相同的内容,所述待查询内容为待查询键值,所述待查询内容的简要信息为所述待查询键值的哈希值的高N位,N为大于0的整数;
第一比较单元,用于并行比较所述简要信息与所述数据单元中的多个简要信息是否相同;
第二比较单元,用于根据所述待查询内容、和所述数据单元中存在的与所述待查询内容具有相同简要信息的存储内容,确定所述数据单元中是否存储有所述待查询内容。
14.根据权利要求13所述的装置,其特征在于,所述存储内容为键值;
所述数据单元为拉链式哈希表中的哈希分桶;
其中,每个所述哈希分桶包括数据块和简要信息序列,所述简要信息序列包括分别与所述数据块中各存储内容对应的简要信息。
15.根据权利要求14所述的装置,其特征在于,所述获取单元,具体用于
基于所述待查询键值、和获取所述待查询键值的哈希值采用的预设哈希算法,获取所述哈希值的对应的哈希分桶和所述待查询键值的简要信息。
16.根据权利要求15所述的装置,其特征在于,所述获取单元,具体用于
将所述哈希值对所述拉链式哈希表包括的哈希分桶总数取模,获取所述哈希值对应的哈希分桶的分桶标识,以便获取所述分桶标识所标识的哈希分桶。
17.根据权利要求14-16中任一项所述的装置,其特征在于,所述数据块的数据结构包括以下任意一种:链表,动态数组,静态数组,跳表,队列,栈,树,堆,图,散列表。
18.根据权利要求14-16中任一项所述的装置,其特征在于,第一比较单元,具体用于
使用单指令流多数据流SIMD指令并行比较所述待查询键值的简要信息与所述简要信息序列中的多个简要信息是否相同。
19.根据权利要求14-16中任一项所述的装置,其特征在于,所述简要信息序列的大小为8的整数倍;
所述简要信息序列中各元素的大小为1个字节。
20.根据权利要求14-16中任一项所述的装置,其特征在于,所述装置还包括:
第三存储单元,用于存储所述拉链式哈希表;
所述数据单元还包括数据块指针;所述拉链式哈希表中任意L个哈希分桶的数据块指针、数据块和简要信息序列分别对应合并存储于所述第三存储单元中,其中,L的取值为大于0且小于所述拉链式哈希表包括的哈希分桶总数M的整数。
21.根据权利要求14-16中任一项所述的装置,其特征在于,所述装置还包括:
第三存储单元,用于存储所述拉链式哈希表;
所述拉链式哈希表为只读拉链式哈希表,所述哈希分桶还包括数据块索引;
所述只读拉链式哈希表中的全部哈希分桶的数据块和简要信息序列分别对应合并成固定大小分块序列化存储的数据块和简要信息序列存储于所述第三存储单元中。
22.根据权利要求21所述的装置,其特征在于,所述第一比较单元,用于
选取所述对应的哈希分桶中简要信息序列中预设数量的简要信息作为当前简要信息,并行比较所述待查询键值的简要信息与所述当前简要信息是否相同;
若所述当前简要信息中不存在与所述待查询键值的简要信息相同的简要信息,选取所述对应的哈希分桶中简要信息序列中下一预设数量的简要信息作为当前简要信息,执行所述并行比较所述待查询键值的简要信息与所述当前简要信息是否相同的操作,直至所述当前简要信息中存在与所述待查询键值的简要信息相同的简要信息或者读取到所述对应的哈希分桶的下一个哈希分桶。
23.根据权利要求14-16中任一项所述的装置,其特征在于,还包括:
第一存储单元,用于存储所述简要信息序列;
第二存储单元,用于存储所述数据块。
24.根据权利要求14-16中任一项所述的装置,其特征在于,所述计算单元,还用于采用预设哈希算法对待存储键值进行哈希计算,得到待存储哈希值;
所述获取单元,还用于获取所述待存储键值的简要信息和所述待存储哈希值对应的哈希分桶;
所述装置还包括:
插入单元,用于在所述待存储哈希值对应的哈希分桶的简要信息序列中存储所述待存储键值的简要信息,在所述待存储哈希值对应的哈希分桶的数据块中与所述待存储键值的简要信息对应的位置存储所述待存储键值。
25.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
26.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-12中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911235112.4A CN111177476B (zh) | 2019-12-05 | 2019-12-05 | 数据查询方法、装置、电子设备及可读存储介质 |
EP20166721.9A EP3832493B1 (en) | 2019-12-05 | 2020-03-30 | Method, apparatus, electronic device and readable storage medium for data query |
US16/846,288 US20210173840A1 (en) | 2019-12-05 | 2020-04-11 | Method, apparatus, electronic device and readable storage medium for data query |
JP2020092732A JP7047228B2 (ja) | 2019-12-05 | 2020-05-27 | データ照会方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911235112.4A CN111177476B (zh) | 2019-12-05 | 2019-12-05 | 数据查询方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177476A CN111177476A (zh) | 2020-05-19 |
CN111177476B true CN111177476B (zh) | 2023-08-18 |
Family
ID=70189664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911235112.4A Active CN111177476B (zh) | 2019-12-05 | 2019-12-05 | 数据查询方法、装置、电子设备及可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210173840A1 (zh) |
EP (1) | EP3832493B1 (zh) |
JP (1) | JP7047228B2 (zh) |
CN (1) | CN111177476B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10802890B2 (en) * | 2015-07-20 | 2020-10-13 | Oracle International Corporation | System and method for multidimensional search with a resource pool in a computing environment |
CN112131218B (zh) * | 2020-09-04 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种基因对比的哈希查表方法、装置、设备及存储介质 |
CN114519125A (zh) * | 2020-11-19 | 2022-05-20 | 北京达佳互联信息技术有限公司 | 数据写入方法、装置及服务器 |
CN112416626B (zh) * | 2020-12-02 | 2023-06-06 | 中国联合网络通信集团有限公司 | 一种数据处理方法和装置 |
CN113342813B (zh) * | 2021-06-09 | 2024-01-26 | 南京冰鉴信息科技有限公司 | 键值数据处理方法、装置、计算机设备及可读存储介质 |
US20230185670A1 (en) * | 2021-12-13 | 2023-06-15 | Scality, S.A. | Method and apparatus for monitoring storage system replication |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070117009A (ko) * | 2006-06-07 | 2007-12-12 | 박동민 | 불특정 다수가 콘텐츠를 제공하는 콘텐츠 서비스에 있어해쉬와 콘텐츠 인식 기술을 융합한 콘텐츠 식별, 저작권관리, 요금 결제 및 정산 방법 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
WO2015025401A1 (ja) * | 2013-08-22 | 2015-02-26 | 株式会社日立製作所 | データベース管理システム及びデータベース管理方法 |
CN104536958A (zh) * | 2014-09-26 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种复合索引方法,及装置 |
CN106033420A (zh) * | 2015-03-11 | 2016-10-19 | 杭州华三通信技术有限公司 | 哈希表的处理方法及装置 |
CN106326475A (zh) * | 2016-08-31 | 2017-01-11 | 中国科学院信息工程研究所 | 一种高效的静态哈希表实现方法及系统 |
CN104025520B (zh) * | 2012-12-25 | 2017-04-26 | 华为技术有限公司 | 查找表的创建方法、查询方法、控制器、转发设备和系统 |
CN107515901A (zh) * | 2017-07-24 | 2017-12-26 | 中国科学院信息工程研究所 | 一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质 |
WO2018099107A1 (zh) * | 2016-12-02 | 2018-06-07 | 深圳市中兴微电子技术有限公司 | 一种哈希表管理的方法和装置、计算机存储介质 |
CN108509543A (zh) * | 2018-03-20 | 2018-09-07 | 福州大学 | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 |
CN110175174A (zh) * | 2019-05-24 | 2019-08-27 | 广州市百果园信息技术有限公司 | 一种数据查询方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093099B2 (en) * | 2002-12-12 | 2006-08-15 | Alacritech, Inc. | Native lookup instruction for file-access processor searching a three-level lookup cache for variable-length keys |
JP2009251725A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。 |
US9069810B2 (en) * | 2012-07-25 | 2015-06-30 | International Business Machines Corporation | Systems, methods and computer program products for reducing hash table working-set size for improved latency and scalability in a processing system |
US9659046B2 (en) * | 2013-07-31 | 2017-05-23 | Oracle Inernational Corporation | Probing a hash table using vectorized instructions |
US9626428B2 (en) * | 2013-09-11 | 2017-04-18 | Advanced Micro Devices, Inc. | Apparatus and method for hash table access |
EP2858024A1 (en) * | 2013-10-01 | 2015-04-08 | Enyx SA | An asset management device and method in a hardware platform |
US10706101B2 (en) * | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
-
2019
- 2019-12-05 CN CN201911235112.4A patent/CN111177476B/zh active Active
-
2020
- 2020-03-30 EP EP20166721.9A patent/EP3832493B1/en active Active
- 2020-04-11 US US16/846,288 patent/US20210173840A1/en not_active Abandoned
- 2020-05-27 JP JP2020092732A patent/JP7047228B2/ja active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070117009A (ko) * | 2006-06-07 | 2007-12-12 | 박동민 | 불특정 다수가 콘텐츠를 제공하는 콘텐츠 서비스에 있어해쉬와 콘텐츠 인식 기술을 융합한 콘텐츠 식별, 저작권관리, 요금 결제 및 정산 방법 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
CN104025520B (zh) * | 2012-12-25 | 2017-04-26 | 华为技术有限公司 | 查找表的创建方法、查询方法、控制器、转发设备和系统 |
WO2015025401A1 (ja) * | 2013-08-22 | 2015-02-26 | 株式会社日立製作所 | データベース管理システム及びデータベース管理方法 |
CN104536958A (zh) * | 2014-09-26 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种复合索引方法,及装置 |
CN106033420A (zh) * | 2015-03-11 | 2016-10-19 | 杭州华三通信技术有限公司 | 哈希表的处理方法及装置 |
CN106326475A (zh) * | 2016-08-31 | 2017-01-11 | 中国科学院信息工程研究所 | 一种高效的静态哈希表实现方法及系统 |
WO2018099107A1 (zh) * | 2016-12-02 | 2018-06-07 | 深圳市中兴微电子技术有限公司 | 一种哈希表管理的方法和装置、计算机存储介质 |
CN107515901A (zh) * | 2017-07-24 | 2017-12-26 | 中国科学院信息工程研究所 | 一种链式日志存储结构及其哈希索引结构、数据操作方法及服务器、介质 |
CN108509543A (zh) * | 2018-03-20 | 2018-09-07 | 福州大学 | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 |
CN110175174A (zh) * | 2019-05-24 | 2019-08-27 | 广州市百果园信息技术有限公司 | 一种数据查询方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
面向外包空间数据库的范围查询验证;胡晓燕;王静宇;李海荣;;计算机应用(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
JP2021089704A (ja) | 2021-06-10 |
US20210173840A1 (en) | 2021-06-10 |
EP3832493B1 (en) | 2023-07-19 |
EP3832493A1 (en) | 2021-06-09 |
JP7047228B2 (ja) | 2022-04-05 |
CN111177476A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177476B (zh) | 数据查询方法、装置、电子设备及可读存储介质 | |
KR102154757B1 (ko) | 콜경로 파인더 | |
CN112269789B (zh) | 存储数据的方法和装置、以及读取数据的方法和装置 | |
CN111241108B (zh) | 基于键值对kv系统的索引方法、装置、电子设备和介质 | |
CN111259107B (zh) | 行列式文本的存储方法、装置以及电子设备 | |
US11132362B2 (en) | Method and system of optimizing database system, electronic device and storage medium | |
EP3816817A1 (en) | Method and apparatus for importing data into graph database, electronic device and medium | |
CN112528067A (zh) | 图数据库的存储方法、读取方法、装置及设备 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
US10262081B2 (en) | Method and apparatus for improved database searching | |
CN111177479B (zh) | 获取关系网络图中节点的特征向量的方法以及装置 | |
CN115617859A (zh) | 基于知识图谱集群的数据查询方法和装置 | |
CN111292223B (zh) | 图计算的处理方法、装置、电子设备及存储介质 | |
CN111782633B (zh) | 数据处理方法、装置及电子设备 | |
US11036710B2 (en) | Scalable selection management | |
CN111506499B (zh) | 一种小程序中参数可用性检测方法、装置以及电子设备 | |
CN111523000B (zh) | 用于导入数据的方法、装置、设备以及存储介质 | |
CN111506737B (zh) | 图数据处理方法、检索方法、装置及电子设备 | |
CN113032402B (zh) | 存储数据和获取数据的方法、装置、设备和存储介质 | |
CN111506268B (zh) | 代码文件存储方法、装置和电子设备 | |
JP7161563B2 (ja) | ネットワークデータの処理方法、ネットワークデータ処理装置、電子機器、記憶媒体、及びプログラム | |
CN111538854B (zh) | 搜索方法及装置 | |
CN112507100B (zh) | 一种问答系统的更新处理方法和装置 | |
CN113568761B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113220710B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |