CN114064706A - 数据存储方法、装置及服务器 - Google Patents
数据存储方法、装置及服务器 Download PDFInfo
- Publication number
- CN114064706A CN114064706A CN202111348729.4A CN202111348729A CN114064706A CN 114064706 A CN114064706 A CN 114064706A CN 202111348729 A CN202111348729 A CN 202111348729A CN 114064706 A CN114064706 A CN 114064706A
- Authority
- CN
- China
- Prior art keywords
- data
- range
- parameter
- information
- partition
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据存储方法、装置及服务器,首先获取待存储数据以及待存储数据的分布键参数;其中,分布键参数包括待存储数据的范围信息及次要信息;然后基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;进而基于分区键参数中的第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元。该方式基于数据的范围信息使数据在各个分布存储单元均匀存储,从而提高了数据的查询和读取效率。
Description
技术领域
本发明涉及分布式存储技术领域,尤其是涉及一种数据存储方法、装置及服务器。
背景技术
相关技术中,通常采用范围分区或哈希分区的方式对数据进行分布式存储。然而,采用范围分区需要预先知道键值值域范围及其分布情况,否则可能出现某些范围集中而某些范围稀疏导致各个分布存储单元的数据分布不均匀,导致数据的读取及查询过程效率较低;对多段信息的健值,采用哈希分区虽然可以使得各个分布存储单元的数据分布均匀,但如果要查询多段信息中的部分信息,需要将所有分布存储单元的数据进行合并查询,导致数据查询效率较低。
发明内容
有鉴于此,本发明的目的在于提供一种数据存储方法、装置及服务器,以基于数据的范围信息使数据在各个分布存储单元均匀存储,从而提高数据的查询和读取效率。
第一方面,本发明实施例提供了一种数据存储方法,包括:获取待存储数据以及待存储数据的分布键参数;分布键参数包括待存储数据的范围信息及次要信息;基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;分区键参数包括第一参数;第一参数通过对范围信息进行哈希运算确定;基于第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元;分布存储单元组包括多个分布存储单元。
进一步地,基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数的步骤,包括:通过预设的哈希算法对范围信息进行哈希运算,得到分区键参数的第一参数;将第一参数、范围信息以及次要信息进行字符串拼接,得到待存储数据的分区键参数。
进一步地,上述分布存储单元组包括设定数量的分布存储单元;分区范围包括每个分布存储单元对应的子范围;方法还包括:确定通过预设的哈希算法对范围信息进行运算得到的第一参数的数值范围;基于设定数量以及数值范围,确定分布存储单元的子范围。
进一步地,上述分区范围包括每个分布存储单元对应的子范围;基于第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元的步骤,包括:在分区范围中查找包括第一参数的子范围;将待存储数据存储至查找到的子范围对应到的分布存储单元。
进一步地,上述方法还包括:获取数据查询请求;数据查询请求包括待查询范围信息;基于待查询范围信息,确定数据查询请求对应的查询数据。
进一步地,基于待查询范围信息,确定数据查询请求对应的查询数据的步骤,包括:通过哈希算法计算待查询范围信息对应的第一参数;对待查询范围信息对应的第一参数以及范围信息进行字符串拼接,得到查询数据对应的分布键下限;将分布键下限与预设的最大字符进行字符串拼接,得到查询数据对应的分布键上限;从分布存储单元获取分布键处于分布键下限以及分布键上限之间的数据,将获取到的数据确定为数据查询请求对应的查询数据。
进一步地,上述数据查询请求还包括待查询次要信息;对待查询范围信息对应的第一参数以及范围信息进行字符串拼接,得到查询数据对应的分布键下限的步骤,包括:对待查询范围信息对应的第一参数、范围信息以及次要信息进行字符串拼接,得到查询数据对应的分布键下限。
第二方面,本发明实施例还提供一种数据存储装置,包括:数据获取模块,用于获取待存储数据以及待存储数据的分布键参数;分布键参数包括待存储数据的范围信息及次要信息;参数生成模块,用于基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;分区键参数包括第一参数;第一参数通过对范围信息进行哈希运算确定;存储模块,用于基于第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元;分布存储单元组包括多个分布存储单元。
第三方面,本发明实施例还提供一种服务器,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述方法。
第四方面,本发明实施例还提供机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述方法。
本发明实施例带来了以下有益效果:
本发明实施例提供了一种数据存储方法、装置及服务器,首先获取待存储数据以及待存储数据的分布键参数;其中,分布键参数包括待存储数据的范围信息及次要信息;然后基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;进而基于分区键参数中的第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元。该方式基于数据的范围信息使数据在各个分布存储单元均匀存储,从而提高了数据的查询和读取效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的流程图;
图2为本发明实施例提供的另一种数据存储方法的原理示意图;
图3为本发明实施例提供的一种数据存储装置的结构示意图;
图4为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
范围分区是数据库中的一种数据分布方式。根据某个键值(key)的值域范围划分分区,使数据分布到分布式存储系统中的不同数据节点上。优点是按键值范围查询时,数据库系统可以定位到某一节点甚至某一节点上的某个文件块上,查询响应速度快,对集群的影响小。其限制在于必须预先知道键值值域范围及其分布情况,否则可能出现某些范围集中而某些范围稀疏导致数据分布不均匀。上述缺点在数据治理时要接入各种系统值域不确定的键值时更为不利。一些数据库产品中预先不知道键值范围也可以使用范围分区,数据会写入同一节点上的文件中,然后在文件达到预设大小限制时根据某些算法按键值范围进行分块,再把分块在各个节点上迁移,以达到均衡的目的。但迁移会造成大量额外的IO开销。写入也会因为这种设计而出现集中在某一节点上,尤其是当大批量写入数据的键值相对有序时,按范围分出的文件块即使迁入其他节点也只是把压力转移到了下一个节点中。
哈希分区(hash partition)是哈希(hash)在数据库中一个简单的应用,哈希分区的原理就是,利用hash函数对某个键值(key)进行hash运算,然后根据hash值确定哈希分区将其分布到分布式存储系统中不同的数据节点上。现有哈希分区的方法对Key在各数据节点上的分布随意,确保了数据在预先确定数目的分区中的平均分布,不用关注键值值域的分布。哈希分区根据键值把数据均匀分布到了各个节点,但是范围查询需要对所有节点查询并合并,同样范围查询带来的资源消耗和响应速度比范围分区要差。
基于此,本发明实施例提供的一种数据存储方法、装置以及电子设备,可以用于各种数据存储场景中。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种数据存储方法进行详细介绍。
本发明实施例提供了一种数据存储方法,如图1所示,该方法包括如下步骤:
步骤S100,获取待存储数据以及待存储数据的分布键参数;分布键参数包括待存储数据的范围信息及次要信息。
其中,上述分布键参数可以由待存储数据的范围信息及多个次要信息按照预设顺序进行字符串拼接得到,该范围信息通常处于首位。
步骤S102,基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;分区键参数包括第一参数;第一参数通过对范围信息进行哈希运算确定。
具体而言,可以通过预设的哈希算法对范围信息进行哈希运算,得到分区键参数的第一参数,然后将第一参数、范围信息以及次要信息进行字符串拼接,得到待存储数据的分区键参数。
因为哈希算法的实现十分多样,需要说明的是此处应用的哈希算法需要注意必须满足以下两点要求。
1)连续或者有序的原始数据的哈希值要是非连续分布的。
2)以原始数据的长度,其哈希值不能局限在结果值数据类型的部分区键内。例如哈希运算结果值是4字节整数,但是原始数据长度较短,计算出的值只能分布在2字节范围内,此时应当调小哈希值的长度至2字节。
步骤S104,基于第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元;分布存储单元组包括多个分布存储单元。
通常来说,上述分布存储单元组包括设定数量的分布存储单元;分区范围包括每个分布存储单元对应的子范围。各个分布存储单元的子范围可以通过以下方式确定:首先基于哈希算法,确定通过预设的哈希算法对范围信息进行运算得到的第一参数的数值范围;基于设定数量以及数值范围,确定分布存储单元的子范围。通常来说可以将数值范围按照设定数量进行平分,得到子范围,并分配给各个分布存储单元。
在将待存储数据存储至范围信息对应的分布存储单元的过程中,可以在分区范围中查找包括第一参数的子范围;然后将待存储数据存储至查找到的子范围对应到的分布存储单元。
在对数据进行存储后,还可以基于数据查询请求返回对应的数据。通常在获取数据查询请求后,其中,数据查询请求包括待查询范围信息,再基于待查询范围信息,确定数据查询请求对应的查询数据。
在具体实现过程中,确定数据查询请求对应的查询数据通常通过以下方式:通过哈希算法计算待查询范围信息对应的第一参数;对待查询范围信息对应的第一参数以及范围信息进行字符串拼接,得到查询数据对应的分布键下限;将分布键下限与预设的最大字符进行字符串拼接,得到查询数据对应的分布键上限;从分布存储单元获取分布键处于分布键下限以及分布键上限之间的数据,将获取到的数据确定为数据查询请求对应的查询数据。
如果上述数据查询请求还包括待查询次要信息时,需要对待查询范围信息对应的第一参数、范围信息以及次要信息进行字符串拼接,得到查询数据对应的分布键下限。
本发明实施例提供了一种数据存储方法,首先获取待存储数据以及待存储数据的分布键参数;其中,分布键参数包括待存储数据的范围信息及次要信息;然后基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;进而基于分区键参数中的第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元。该方式基于数据的范围信息使数据在各个分布存储单元均匀存储,从而提高了数据的查询和读取效率。
本发明实施例还提供了另一种数据存储方法。该方法通过计算定长的哈希前缀来改进范围分区,目的是:
1解决范围分区面对有序数据的写入热点问题。
2解决分区键值域不确定情况下无法预分区的问题。
3在满足上述两点情况下,保留范围分区范围查询时的性能优势。
为方便起见,以下统一把分布存储单元称为分区,实际不同系统数据分布的单元包括但不限于分区,分块,分片,节点或其包含关系的组合,都可以应用本方案。
结合图2所示的内容,该方法包括如下要点:
1分布键信息构成设计。
分布键信息=范围信息+次要信息1+次要信息2+...次要信息x;
确定键中的范围信息,范围信息放在分布键的首位,可以不影响范围信息确定情况下次要信息的范围查询。上面所述各信息,左面信息和右面信息的关系是1对n。这种键的信息构成常见于HBase的rowkey和MongoDB的_id设计。
2定长前缀串计算。
定长前缀串=f(范围信息);
对范围信息进行哈希运算,把运算结果值转为一个定长串。此处定长串可以是十进制,16进制,base64或者其他,只要注意是高位补0的定长串即可。
哈希在计算机领域算是常识,能够实现此处效果的不少,而且实现方式不复杂,可根据具体需要选择。
可选的,用哈希值再对分区数取模运算,把结果值作为定长串,此值同时有分区号的含义。好处在于大部分场景下,分区数一般远小于哈希值最大值的大小,定长前缀串计算中提到的问题可以忽略。坏处在于此方案在增加分区时除了重新规划分区范围,还要重新计算定长前缀,然后再进行数据重新分布,带来额外开销。
因为哈希运算的特性,相同范围信息的定长前缀串一定相同。定长前缀串决定了数据在存储系统的位置,因为存储系统的不同包括但不限于文件块,分区,节点等。相同范围信息的数据存储聚集分布,不同范围信息的数据散列分布。
3生成分区键。
key=定长前缀串+范围信息+次要信息1+次要信息2+...次要信息x;
+号的意思是拼接前后的字符串,实际中非定长的串拼接要加分隔符。
4预设分区范围。
各分区的分区范围为计算定长前缀串的哈希值数值范围按分区数等分。无论原始的范围信息的值域分布如何,只要计算定长前缀串的计算方法确定,此处分区范围已事先确定。
此处解决了通常情况下范围分区需要知道值域范围的缺点。
在可以不预先指定范围的数据库系统的范围分区下,此处解决了范围分区写入时的性能瓶颈,可以达到和哈希分区一样的均匀分布效果。
5范围查询方法。
5.1根据范围信息进行查询。
首先根据上述2中的方式算出定长前缀;将查询key范围设定为:查询key>定长前缀+范围信息and key<定长前缀+最大字符;即可查询出指定范围信息下的所有数据。
5.2根据范围信息及次要信息进行范围查询。
首先根据上述2中的方式算出定长前缀;将查询key范围设定为:查询key>定长前缀+范围信息_次要信息and key<定长前缀+范围信息+次要信息+最大字符;即可查询出指定范围信息下响应次要信息下的所有数据。
6增加或者减少分区数。
分区数发生改变时,需要依据4重新生成分区范围,然后存储系统依据新的分区范围进行分区数据的再分布。
因为是范围分区,此处查询数据库系统会定位到一个分区节点或某一节点的具体某一文件块上,查询响应速度快,大大降低了集群的负载。
举例说明对上述方法进行说明:
分布键信息为:主要范围信息为人员person_id,为方便说明次要信息只有一个为访问visit_id。
定长前缀计算方法为:hash算法采用如下常见乘法哈希算法:
对长度为n的字符串Sn,其自左向右字符分别为Cn,Cn-1,...Ci,...C1;
hash(Sn)=hash(Sn-1)*31+Cn(S1=C1);采用hash(person_id)转16进制定长串,哈希值取2字节整数,则定长前缀串范围是0000-ffff。
预设分区范围:方便起见,假设有4个分区,因为定长前缀串的范围是0000-ffff,划分四个等分范围为:分区0(最小字符,4000)分区1[4000,8000)分区2[8000,c000)分区3[c000,最大字符)。
此处开始用最小字符结束用最大字符,而不是分别用0000+最小字符和ffff+最大字符,是为了涵盖全字符串范围,防止意外。
写入数据:假设有业务系统A有一批如下有序的数据需要写入(实际情况可能是有序,无序,相对有序,相对无序),此处为方便说明只取几条数据用于说明。数据只保留了person_id和visit_id,其他信息已经省略。假定person_id长度不固定,因此给写入数据的key采用分割符号‘|’。
为每条数据计算定长前缀及生成key,数据会落入相应分区。以person_id=0000001的计算为例:
其中字符0的ASCII码值为48,字符1为49。
hash(0000001)=hash(000001)*31+’0’=(hash(00001)*31+’0’)*31+’1’=...=44907686257
其16进制结果为a74b4e971,因为只取两字节,所以定长前缀串是e971。
表1
person_id | visit_id | 定长前缀串 | key | 分区 |
0000001 | 1 | e971 | e9710000001|1 | 分区3 |
0000001 | 2 | e971 | e9710000001|2 | 分区3 |
0000002 | 1 | 24b2 | 24b20000002|1 | 分区0 |
0000002 | 2 | 24b2 | 24b20000002|2 | 分区0 |
0000003 | 1 | 5ff3 | 5ff30000003|1 | 分区1 |
0000003 | 2 | 5ff3 | 5ff30000003|2 | 分区1 |
0000004 | 1 | 9b34 | 9b340000004|1 | 分区2 |
0000004 | 2 | 9b34 | 9b340000004|2 | 分区2 |
如上述表1所示,按person_id顺序排列的数据写入,只要哈希算法满足前文述条件,数据就会对person_id而言均匀写入系统各个分区,解决了顺序值大量写入造成的热点问题(即单个节点负载过高,而其他节点负载低)。
范围查询:例如要查询person_id为0000001的人的所有信息,计算定长前缀为e971,即查询[e9710000001|,e9710000001|+最大字符)范围内的信息,此区间在分区3[c000,最大字符)内,所以到分区3下寻找。此处要注意不能直接用前缀直接范围查询,因为哈希的性质,不同person_id会有相同哈希值。
如果此系统的范围分区下继续存在诸如文件块的划分。假设原来分区3下只有一个文件块,上述person_id为0000001的数据写入后,文件块大小超过预设值,文件块被原地拆分为两块,范围分别是块1[c000,e000)块2[e000,最大字符),那么此查询又会继续定位到分区3下的块2上。
同理,对于包含次要信息的范围查询,如果查询此人1访问次下的数据,即查询[e9710000001|1,e9710000001|1+最大字符)范围内的数据。访问次下如果还有一级或多级次要信息的情况以此类推。
以此类推,此类范围查询具备极高的速度,和极低的集群负载。
对数据治理要解决的多源数据问题:更进一步,数据治理通常要接入不同厂商的业务系统,person_id可能长度乃至构成字符集合完全不同,而上面举例的person_id是仅是数字组合。容易看出,无论业务厂商采用何种person_id,此方案的范围划分和范围查询没有变化,用此方案有极高的泛用性。
上述方法解决了通常情况下范围分区需要知道值域范围的缺点;并在可以不预先指定范围的数据库系统的范围分区下,此处避免了写入时的性能瓶颈,可以达到均匀分布效果;该方法具有良好的泛用性。针对不同源的有差异数据一致处理。由于该方法为是范围分区,此处范围查询数据库系统会定位到一个节点,某一分区,甚至某一节点的具体某一文件块上,查询响应速度极快,对整体集群资源占用极小。
综上所述,上述方法相比传统范围分区,具有更好的泛用性和更均衡的集群写入负载。无需预先知道键值的值域范围,无需考虑写入数据的键值顺序,对差异化的多源数据一致处理。相比传统哈希分区,在范围查询时极大提高了查询响应速度,极大降低了占用集群负载。
对应于上述方法实施例,本发明实施例还提供一种数据存储装置,如图3所示,该装置包括:
数据获取模块300,用于获取待存储数据以及待存储数据的分布键参数;分布键参数包括待存储数据的范围信息及次要信息;
参数生成模块302,用于基于预设的哈希算法、范围信息以及次要信息,生成待存储数据的分区键参数;分区键参数包括第一参数;第一参数通过对范围信息进行哈希运算确定;
存储模块304,用于基于第一参数以及预设的分布存储单元组的分区范围,将待存储数据存储至范围信息对应的分布存储单元;分布存储单元组包括多个分布存储单元。
本发明实施例提供的数据存储装置,与上述实施例提供的数据存储方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例还提供了一种服务器,参见图4所示,该服务器包括处理器130和存储器131,该存储器131存储有能够被处理器130执行的机器可执行指令,该处理器130执行机器可执行指令以实现上述数据存储方法。
进一步地,图4所示的服务器还包括总线132和通信接口133,处理器130、通信接口133和存储器131通过总线132连接。
其中,存储器131可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口133(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线132可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器130可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器130中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器130可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器131,处理器130读取存储器131中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述数据存储方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的数据存储方法及装置和服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取待存储数据以及所述待存储数据的分布键参数;所述分布键参数包括所述待存储数据的范围信息及次要信息;
基于预设的哈希算法、所述范围信息以及所述次要信息,生成所述待存储数据的分区键参数;所述分区键参数包括第一参数;所述第一参数通过对所述范围信息进行哈希运算确定;
基于所述第一参数以及预设的分布存储单元组的分区范围,将所述待存储数据存储至所述范围信息对应的分布存储单元;所述分布存储单元组包括多个分布存储单元。
2.根据权利要求1所述的方法,其特征在于,基于预设的哈希算法、所述范围信息以及所述次要信息,生成所述待存储数据的分区键参数的步骤,包括:
通过预设的哈希算法对所述范围信息进行哈希运算,得到所述分区键参数的第一参数;
将所述第一参数、所述范围信息以及所述次要信息进行字符串拼接,得到所述待存储数据的分区键参数。
3.根据权利要求1所述的方法,其特征在于,所述分布存储单元组包括设定数量的分布存储单元;所述分区范围包括每个分布存储单元对应的子范围;所述方法还包括:
确定通过所述预设的哈希算法对所述范围信息进行运算得到的第一参数的数值范围;
基于所述设定数量以及所述数值范围,确定所述分布存储单元的子范围。
4.根据权利要求1所述的方法,其特征在于,所述分区范围包括每个分布存储单元对应的子范围;
基于所述第一参数以及预设的分布存储单元组的分区范围,将所述待存储数据存储至所述范围信息对应的分布存储单元的步骤,包括:
在所述分区范围中查找包括所述第一参数的子范围;
将所述待存储数据存储至查找到的所述子范围对应到的分布存储单元。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取数据查询请求;所述数据查询请求包括待查询范围信息;
基于所述待查询范围信息,确定所述数据查询请求对应的查询数据。
6.根据权利要求5所述的方法,其特征在于,基于所述待查询范围信息,确定所述数据查询请求对应的查询数据的步骤,包括:
通过哈希算法计算所述待查询范围信息对应的第一参数;
对所述待查询范围信息对应的第一参数以及所述范围信息进行字符串拼接,得到所述查询数据对应的分布键下限;
将所述分布键下限与预设的最大字符进行字符串拼接,得到所述查询数据对应的分布键上限;
从所述分布存储单元获取分布键处于所述分布键下限以及所述分布键上限之间的数据,将获取到的数据确定为所述数据查询请求对应的查询数据。
7.根据权利要求5所述的方法,其特征在于,所述数据查询请求还包括待查询次要信息;
对所述待查询范围信息对应的第一参数以及所述范围信息进行字符串拼接,得到所述查询数据对应的分布键下限的步骤,包括:
对所述待查询范围信息对应的第一参数、所述范围信息以及所述次要信息进行字符串拼接,得到所述查询数据对应的分布键下限。
8.一种数据存储装置,其特征在于,包括:
数据获取模块,用于获取待存储数据以及所述待存储数据的分布键参数;所述分布键参数包括所述待存储数据的范围信息及次要信息;
参数生成模块,用于基于预设的哈希算法、所述范围信息以及所述次要信息,生成所述待存储数据的分区键参数;所述分区键参数包括第一参数;所述第一参数通过对所述范围信息进行哈希运算确定;
存储模块,用于基于所述第一参数以及预设的分布存储单元组的分区范围,将所述待存储数据存储至所述范围信息对应的分布存储单元;所述分布存储单元组包括多个分布存储单元。
9.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111348729.4A CN114064706A (zh) | 2021-11-15 | 2021-11-15 | 数据存储方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111348729.4A CN114064706A (zh) | 2021-11-15 | 2021-11-15 | 数据存储方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064706A true CN114064706A (zh) | 2022-02-18 |
Family
ID=80272083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111348729.4A Pending CN114064706A (zh) | 2021-11-15 | 2021-11-15 | 数据存储方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064706A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521713A (zh) * | 2023-06-30 | 2023-08-01 | 北京奥星贝斯科技有限公司 | 一种数据查询的方法、装置、设备及存储介质 |
-
2021
- 2021-11-15 CN CN202111348729.4A patent/CN114064706A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521713A (zh) * | 2023-06-30 | 2023-08-01 | 北京奥星贝斯科技有限公司 | 一种数据查询的方法、装置、设备及存储介质 |
CN116521713B (zh) * | 2023-06-30 | 2023-09-12 | 北京奥星贝斯科技有限公司 | 一种数据查询的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107622091B (zh) | 一种数据库查询方法和装置 | |
JP6542909B2 (ja) | ファイル操作方法及び装置 | |
CN108846749B (zh) | 一种基于区块链技术的分片化的交易执行系统及方法 | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN106649401A (zh) | 分布式文件系统中的数据写入方法和装置 | |
WO2017016423A1 (zh) | 一种实时新增数据更新方法和装置 | |
CN111723073B (zh) | 数据存储处理方法、装置、处理系统以及存储介质 | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
CN111722918A (zh) | 业务标识码生成方法、装置、存储介质及电子设备 | |
CN111107042B (zh) | 报文解析方法、装置、计算机设备和存储介质 | |
CN114064706A (zh) | 数据存储方法、装置及服务器 | |
CN107562762B (zh) | 数据索引构建方法及装置 | |
CN109710542B (zh) | 一种满n叉树构建方法及装置 | |
CN109213774B (zh) | 数据的存储方法及装置、存储介质、终端 | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
WO2021147815A1 (zh) | 一种数据计算的方法及相关设备 | |
CN112069175B (zh) | 数据查询的方法、装置及电子设备 | |
CN113568877A (zh) | 一种文件合并方法、装置、电子设备及存储介质 | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
JP2001022621A (ja) | 多次元データベース管理システム | |
CN112468395B (zh) | 边界网关协议bgp路由的处理方法和装置 | |
CN117555903B (zh) | 一种数据处理方法、计算机设备及介质 | |
CN113191405B (zh) | 一种基于集成电路的带权超图的多级聚类方法及存储介质 | |
CN115982414B (zh) | 一种图数据处理与增量存储方法、装置及计算机设备 | |
CN113076178B (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 |