CN112835907A - 多次散列存储方法及*** - Google Patents
多次散列存储方法及*** Download PDFInfo
- Publication number
- CN112835907A CN112835907A CN202110182691.1A CN202110182691A CN112835907A CN 112835907 A CN112835907 A CN 112835907A CN 202110182691 A CN202110182691 A CN 202110182691A CN 112835907 A CN112835907 A CN 112835907A
- Authority
- CN
- China
- Prior art keywords
- hash
- bucket
- hash bucket
- result information
- data
- 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.)
- Pending
Links
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- 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)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种多次散列存储方法及***,包括:步骤S1:根据素数散列桶构造信息,获取素数散列桶构造结果信息;步骤S2:根据素数散列桶构造结果信息,进行散列桶层级管理,获取散列桶层级管理结果信息;步骤S3:根据散列桶层级管理结果信息,进行散列存储,获取散列存储结果信息。本发明主要可应用在对海量数据进行分片存储的场景中,如数据库分库分表、搜索引擎数据分片等,可保障分片数据的有限量及检索效率。
Description
技术领域
本发明涉及数据分散存储技术领域,具体地,涉及一种多次散列存储方法及***。
背景技术
目前较多的为传统的散列存储机制,但传统的散列存储机制存在以下问题:
1、选取哈希桶的数量不合适的话可能会导致数据分布不均匀,出现哈希冲突
2、无法扩展,当一个哈希桶数据过多的话,会导致数据检索性能下降
3、如果新增哈希桶的话需要进行数据移动来达到数据均匀的目的,对于海量数据而言存在数据移动的代价
当需要将大量数据分散存储,快速检索时,常用的方法为采用散列算法将数据打散存到多个散列桶存储,现有技术亟需一种多次散列存储方法及***。
专利文献CN109416694A公开了一种用于使用资源有效索引来与内容存储库中的键值条目进行交互的键值存储***。索引提供包括多个散列桶的数据结构。每个散列桶包括散列桶单元的链表。键值存储***基于其创建时间以分布式方式在存储器中索引存储库与辅助索引存储库之间存储散列桶单元的每个链表中的散列条目。键值存储***还被配置为按时间顺序存储链接的散列桶单元的特定集合中的散列条目以反映其创建时间。索引还包括影响键值存储***的性能的各种可调参数。该专利在流程构造和技术性能上仍然有待提高的空间。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种多次散列存储方法及***。
根据本发明提供的一种多次散列存储方法,包括:步骤S1:根据素数散列桶构造信息,获取素数散列桶构造结果信息;步骤S2:根据素数散列桶构造结果信息,进行散列桶层级管理,获取散列桶层级管理结果信息;步骤S3:根据散列桶层级管理结果信息,进行散列存储,获取散列存储结果信息。
优选地,所述步骤S1包括:
步骤S1.1:将散列桶的数量取素数,保障数据key或hash值取余后尽可能均匀的被分布在每个个桶中。
优选地,所述步骤S2包括:
步骤S2.1:采用散列桶层级管理实现散列桶扩展.
优选地,所述步骤S3包括:
步骤S3.1:当数据需要存储时,按照散列层级的散列因子对数据key或hash值取余来定位每一层的散列桶;
如果散列桶已扩展则继续向下一层寻找,最终找到目标散列桶存储数据;
优选地,所述步骤S3还包括:
步骤S3.2:当检索时按照数据热度从下层往上层逐层在对应的散列桶中检索。
根据本发明提供的一种多次散列存储***,包括:模块M1:根据素数散列桶构造信息,获取素数散列桶构造结果信息;模块M2:根据素数散列桶构造结果信息,进行散列桶层级管理,获取散列桶层级管理结果信息;模块M3:根据散列桶层级管理结果信息,进行散列存储,获取散列存储结果信息。
优选地,所述模块M1包括:
模块M1.1:将散列桶的数量取素数,保障数据key或hash值取余后尽可能均匀的被分布在每个个桶中。
优选地,所述模块M2包括:
模块M2.1:采用散列桶层级管理实现散列桶扩展.
优选地,所述模块M3包括:
模块M3.1:当数据需要存储时,按照散列层级的散列因子对数据key或hash值取余来定位每一层的散列桶;
如果散列桶已扩展则继续向下一层寻找,最终找到目标散列桶存储数据;
优选地,所述模块M3还包括:
模块M3.2:当检索时按照数据热度从下层往上层逐层在对应的散列桶中检索。
与现有技术相比,本发明具有如下的有益效果:
1、本发明在散列桶基础上实现了可多层扩展的均匀散列桶,可以实现海量数据的散列存储扩展而无需进行数据迁移;
2、本发明中,哈希桶采用素数,素数的数学特性会使得数据的哈希值被均匀分布在所有的哈希桶中,消除了哈希冲突,采用如5、7、11、13、17等数量的哈希桶;
3、本发明采用哈希桶管理机制管理所有的哈希桶状态,包括未扩展、已扩展,当哈希桶数据达到一定数量后可以扩展出下一级哈希桶;
4、本发明采用哈希桶扩展技术,将当前哈希桶扩展到下一级哈希桶,采用下一级素数作为新的哈希桶的数量,新的数据将会进入下一级哈希桶存储,无需移动数据,解决了哈希桶扩展及数据移动的问题;
5、本发明主要可应用在对海量数据进行分片存储的场景中,如数据库分库分表、搜索引擎数据分片等,可保障分片数据的有限量及检索效率。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明中的整体流程示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
采用散列算法将数据分散在散列桶中存储的方案面临两个问题:如何保证数据在散列桶间的均匀性、数据量越来越大时散列桶如何扩展。
一种多次散列存储方法运用三个方法解决以上问题:素数散列桶、散列桶层级管理、散列存储
1、素数散列桶:散列桶的数量取素数,如5、7、11、13、17等,素数的数学特性可以保障数据key或hash值取余后尽可能均匀的被分布在每个个桶中(尤其是KEY如果有序的话)。
2、散列桶层级管理:尽管素数能够保障数据尽量均匀,但一旦某个散列桶中的数据量过大也会影响检索效率,这时就需要增加散列桶来分散数据,本发明采用散列桶层级管理实现散列桶扩展,具体方法为:寻找当前需要扩展的散列桶所在层级素数S1的下一个素数S2,将S2作为当前需要扩展的散列桶的下一层级,创建S2个新的散列桶,将需要新存储到当前散列桶的数据存储到S2个新的散列桶中,按照此方法可以将需要扩展的散列桶继续向下扩展下去。该方法需要为每个散列桶按路径编号,并记录散列桶的状态(是否已扩展)。
3、散列存储:当数据需要存储时,按照散列层级的散列因子对数据key或hash值取余来定位每一层的散列桶,如果散列桶已扩展则继续向下一层寻找,最终找到目标散列桶存储数据;当检索时按照数据热度从下层往上层逐层在对应的散列桶中检索。这种方法虽然有时需要多层检索,但由于每个散列桶数据量有限,实际上可以保障检索时间。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种多次散列存储方法,其特征在于,包括:
步骤S1:根据素数散列桶构造信息,获取素数散列桶构造结果信息;
步骤S2:根据素数散列桶构造结果信息,进行散列桶层级管理,获取散列桶层级管理结果信息;
步骤S3:根据散列桶层级管理结果信息,进行散列存储,获取散列存储结果信息。
2.根据权利要求1所述的一种多次散列存储方法,其特征在于,所述步骤S1包括:
步骤S1.1:将散列桶的数量取素数,保障数据key或hash值取余后尽可能均匀的被分布在每个个桶中。
3.根据权利要求1所述的一种多次散列存储方法,其特征在于,所述步骤S2包括:
步骤S2.1:采用散列桶层级管理实现散列桶扩展。
4.根据权利要求1所述的一种多次散列存储方法,其特征在于,所述步骤S3包括:
步骤S3.1:当数据需要存储时,按照散列层级的散列因子对数据key或hash值取余来定位每一层的散列桶;
如果散列桶已扩展则继续向下一层寻找,最终找到目标散列桶存储数据。
5.根据权利要求4所述的一种多次散列存储方法,其特征在于,所述步骤S3还包括:
步骤S3.2:当检索时按照数据热度从下层往上层逐层在对应的散列桶中检索。
6.一种多次散列存储***,其特征在于,包括:
模块M1:根据素数散列桶构造信息,获取素数散列桶构造结果信息;
模块M2:根据素数散列桶构造结果信息,进行散列桶层级管理,获取散列桶层级管理结果信息;
模块M3:根据散列桶层级管理结果信息,进行散列存储,获取散列存储结果信息。
7.根据权利要求6所述的一种多次散列存储***,其特征在于,所述模块M1包括:
模块M1.1:将散列桶的数量取素数,保障数据key或hash值取余后尽可能均匀的被分布在每个个桶中。
8.根据权利要求6所述的一种多次散列存储***,其特征在于,所述模块M2包括:
模块M2.1:采用散列桶层级管理实现散列桶扩展。
9.根据权利要求6所述的一种多次散列存储***,其特征在于,所述模块M3包括:
模块M3.1:当数据需要存储时,按照散列层级的散列因子对数据key或hash值取余来定位每一层的散列桶;
如果散列桶已扩展则继续向下一层寻找,最终找到目标散列桶存储数据。
10.根据权利要求9所述的一种多次散列存储***,其特征在于,所述模块M3还包括:
模块M3.2:当检索时按照数据热度从下层往上层逐层在对应的散列桶中检索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110182691.1A CN112835907A (zh) | 2021-02-08 | 2021-02-08 | 多次散列存储方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110182691.1A CN112835907A (zh) | 2021-02-08 | 2021-02-08 | 多次散列存储方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835907A true CN112835907A (zh) | 2021-05-25 |
Family
ID=75933419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110182691.1A Pending CN112835907A (zh) | 2021-02-08 | 2021-02-08 | 多次散列存储方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835907A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591608A (zh) * | 2024-01-19 | 2024-02-23 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483605A (zh) * | 2009-02-25 | 2009-07-15 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN102609487A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种面向列存储的桶内索引哈希连接方法 |
CN109416694A (zh) * | 2016-07-11 | 2019-03-01 | 微软技术许可有限责任公司 | 包括资源有效索引的键值存储*** |
CN110083601A (zh) * | 2019-04-04 | 2019-08-02 | 中国科学院计算技术研究所 | 面向键值存储***的索引树构建方法及*** |
CN111443899A (zh) * | 2020-04-17 | 2020-07-24 | 广州汇量信息科技有限公司 | 一种元素处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-02-08 CN CN202110182691.1A patent/CN112835907A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483605A (zh) * | 2009-02-25 | 2009-07-15 | 北京星网锐捷网络技术有限公司 | 数据报文的存储、查找方法和装置 |
CN102609487A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种面向列存储的桶内索引哈希连接方法 |
CN109416694A (zh) * | 2016-07-11 | 2019-03-01 | 微软技术许可有限责任公司 | 包括资源有效索引的键值存储*** |
CN110083601A (zh) * | 2019-04-04 | 2019-08-02 | 中国科学院计算技术研究所 | 面向键值存储***的索引树构建方法及*** |
CN111443899A (zh) * | 2020-04-17 | 2020-07-24 | 广州汇量信息科技有限公司 | 一种元素处理方法、装置、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591608A (zh) * | 2024-01-19 | 2024-02-23 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
CN117591608B (zh) * | 2024-01-19 | 2024-04-30 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
JP6025149B2 (ja) | データを管理するシステムおよび方法 | |
US8806175B2 (en) | Hybrid hash tables | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
AU608872B2 (en) | Device for enabling concurrent access of indexed sequential data files | |
CN107153707B (zh) | 一种针对非易失内存的哈希表构建方法及*** | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
US20130297613A1 (en) | Indexing based on key ranges | |
EP2735978A1 (en) | Storage system and management method used for metadata of cluster file system | |
US20080228783A1 (en) | Data Partitioning Systems | |
EP1159692A1 (en) | Tiered hashing for data access | |
JPH07191891A (ja) | 多次元データを格納しかつアクセスするコンピュータ方法及び格納構造 | |
US6745198B1 (en) | Parallel spatial join index | |
CN107153512A (zh) | 一种数据迁移方法和装置 | |
CN110597805B (zh) | 一种内存索引结构处理方法 | |
US10055442B2 (en) | Efficient updates in non-clustered column stores | |
CN114116612B (zh) | 一种基于b+树索引归档文件的存取方法 | |
CN115718819A (zh) | 一种索引构建方法、数据读取方法及索引构建装置 | |
CN112835907A (zh) | 多次散列存储方法及*** | |
CN113094336B (zh) | 基于Cuckoo哈希的文件***目录管理方法及*** | |
CN114090637A (zh) | 数据存取方法、装置、设备及存储介质 | |
Jensen et al. | Optimality in external memory hashing | |
CN116204130A (zh) | 一种键值存储***和键值存储***的管理方法 | |
KR101368441B1 (ko) | 데이터베이스의 공간 재사용 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
GB2504894B (en) | Data storage system |
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 |