CN110851525A - 一种数据分片方法、相关设备及计算机存储介质 - Google Patents
一种数据分片方法、相关设备及计算机存储介质 Download PDFInfo
- Publication number
- CN110851525A CN110851525A CN201810824276.XA CN201810824276A CN110851525A CN 110851525 A CN110851525 A CN 110851525A CN 201810824276 A CN201810824276 A CN 201810824276A CN 110851525 A CN110851525 A CN 110851525A
- Authority
- CN
- China
- Prior art keywords
- target
- field
- user data
- target field
- characteristic 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.)
- Granted
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
本发明实施例提供了一种数据分片方法及相关设备,该方法通过配置对用户数据中关键字进行截取的截取方式,根据所述截取方式对获取的用户数据中的关键字进行截取,从而得到目标字段,然后根据哈希算法确定所述目标字段的目标特征值;然后根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。通过实施该方法,能够在无schema的数据库系统中,既能够使数据均匀的分配到各存储节点中,同时也可以将目标特征值相邻的用户数据存储在相同或者相邻的存储节点中。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据分片方法、相关设备及计算机存储介质。
背景技术
传统的集中式存储系统采用集中的存储服务器存放所有的数据,整个存储系统的所有业务均在存储服务器中进行,这样不仅会影响对数据的处理速度,同时也会存在单点故障的问题。分布式存储是将数据分散存储在多个独立的存储节点中,分布式存储不仅可以利用多个存储节点分担存储负荷,还能提高系统的可靠性、可扩展性以及存取效率。
分布式存储系统中,可以采用基于哈希(hash)算法或者基于范围(range)的方法对数据进行分片,以确定将数据存储到分布式存储系统中的哪个存储节点。基于哈希算法的数据分片方法能够将数据均匀的分配到不同的存储节点中,但是会打乱数据按关键字(key)的字典顺序排序的结果,导致数据不能按key的字典顺序分配到对应的节点中,从而影响按顺序读取数据时的性能,基于范围的数据分片方法可以使数据按key的字典顺序存放到不同的存储节点,但是会导致数据分布不均衡。
发明内容
本申请实施例公开了一种数据分片方法,通过配置对用户数据中关键字的处理方式,并结合hash分片以及range分片的方法,从而确定用户数据在分布式存储节点中的存储位置。
第一方面,本申请实施例提供一种数据分片方法,包括:
获取用户数据,其中,所述用户数据包括关键字;
对所述关键字进行截取,从而得到目标字段;
根据哈希算法确定所述目标字段的目标特征值;
根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。
在一可能的实施例中,对所述关键字进行截取,从而得到目标字段,包括:获取预设偏移量;根据所述预设偏移量对所述关键字进行截取,从而得到所述目标字段。
在一可能的实施例中,所述预设偏移量包括第一预设偏移量和第二预设偏移量,其中,所述第一预设偏移量用于截取第一目标字段,所述第二预设偏移量用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
在一可能的实施例中,所述关键字包括分隔符,对所述关键字进行截取,从而得到目标字段,包括:根据所述分隔符对所述关键字进行截取,从而得到所述目标字段。
在一可能的实施例中,所述分隔符包括第一组分隔符和第二组分割符,其中,所述第一组分隔符用于截取第一目标字段,所述第二组分隔符用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
在一可能的实施例中,用于存储所述用户数据的数据库为无schema定义的数据库,其中,无schema定义的数据库分布存储在多个存储节点中。
在一可能的实施例中,所述根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,包括:将所述目标特征值与所述关键字组合得到新关键字,根据所述新关键字,向所述目标特征值对应的存储节点发送所述用户数据。
第二方面,本申请实施例提供一种数据分片装置,包括:
通信单元,用于获取用户数据,其中,所述用户数据包括关键字;
处理单元,用于对所述关键字进行截取,从而得到目标字段;根据哈希算法确定所述目标字段的目标特征值;
所述通信单元还用于根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。
在一可能的实施例中,对所述关键字进行截取,从而得到目标字段,包括:获取预设偏移量;根据所述预设偏移量对所述关键字进行截取,从而得到所述目标字段。
在一可能的实施例中,所述预设偏移量包括第一预设偏移量和第二预设偏移量,其中,所述第一预设偏移量用于截取第一目标字段,所述第二预设偏移量用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
在一可能的实施例中,所述关键字包括分隔符,对所述关键字进行截取,从而得到目标字段,包括:根据所述分隔符对所述关键字进行截取,从而得到所述目标字段。
在一可能的实施例中,所述分隔符包括第一组分隔符和第二组分割符,其中,所述第一组分隔符用于截取第一目标字段,所述第二组分隔符用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
在一可能的实施例中,用于存储所述用户数据的数据库为无schema定义的数据库,其中,无schema定义的数据库分布存储在多个存储节点中。
在一可能的实施例中,所述处理单元,还用于将所述目标特征值添加到所述关键字最高位之前,从而得到新关键字;所述发送单元具体用于,根据所述新关键字,向所述目标特征值对应的存储节点发送所述用户数据。
第三方面,本申请实施例提供一种网络设备,包括执行如第一方面所述的方法的单元。
第四方面,本申请实施例提供一种网络设备,包括处理器、输入输出设备以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,所述输入输出设备用于在所述处理器的控制下与其他设备进行通信;其中,所述处理器执行所述指令时执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面所述的方法。
本申请实施例可以根据关键字的组成方式,设置预设偏移量或者分隔符进而根据预设偏移量或者分隔符对用户数据中的关键字进行截取,从而能够在无模式(schema)的数据库系统中,将具有特定意义的字段截取出来作为目标字段,并将截取得到的目标字段进行哈希运算得到目标特征值,再根据所述目标特征值结合range分片的方法将所述用户数据发送到目标特征值对应的存储节点,由于所述目标特征值是通过哈希运算得到,因此所述目标特征值能够在存储节点所对应的特征值范围内分布均匀,根据所述目标特征值结合range分片的方法将所述用户数据发送到目标特征值对应的存储节点,既能够使数据均匀的分配到各存储节点中,同时也可以将目标特征值相邻的用户数据存储在相同或者相邻的存储节点中。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种实现数据分片的系统示意图;
图2为本申请实施例提供的一种数据分片方法的流程示意图;
图3为本申请实施例提供的一种关键字的组成示意图;
图4为本申请实施例提供的一种按偏移量进行配置的配置界面的示意图;
图5为本申请实施例提供的一种根据偏移量对关键字进行截取的示意图;
图6为本申请实施例提供的另一种按偏移量进行配置的配置界面的示意图;
图7A-7B为本申请实施例提供的另一种根据偏移量对关键字进行截取的示意图;
图8为本申请实施例提供的一种按分隔符进行配置的配置界面的示意图;
图9为本申请实施例提供的另一种根据分隔符对关键字进行截取的示意图;
图10为本申请实施例提供的另一种按分隔符进行配置的配置界面的示意图;
图11A-11B为本申请实施例提供的另一种根据分割符对关键字进行截取的示意图;
图12本申请实施例提供的一种数据分片装置的结构示意图;
图13本申请实施例提供的一种网络设备的结构示意图;
图14本申请实施例提供的一种数据分片系统示意图。
具体实施方式
分布式存储系统能够把数据分散存储在多个存储节点中,为大规模存储提供高性能、高效率以及扩展性好的存储服务。在分布式存储系统中,数据需要分散存储在多个存储节点中,数据分片就是用来确定数据在多个存储节点中分布的技术。
数据分片是按照一定的规则,将集中的待存储的用户数据分布到不同的存储节点中,一般是根据key或者key的哈希值确定带存储的用户数据应该存储在多个存储节点中的哪个存储节点。其中,待存储的用户数据通常包括多个字段。例如,如表1所示,待存储的用户数据包括标识、姓名、住址、年龄、性别以及电话等。key可以由待存储的用户数据中的一个或者多个字段组成,比如,key可以由表1中的标识字段与姓名字段组合而成。
表1待存储的用户数据
标识 | 姓名 | 住址 | 年龄 | 性别 | 电话 |
A001 | Zhaosan | Guangdong | 21 | Male | 1333366xxxx |
A007 | Sunwu | Shanxi | 23 | Female | 1534521xxxx |
A016 | Lisi | Henan | 25 | Male | 1334521xxxx |
A025 | Fengguo | Hubei | 22 | Female | 1335921xxxx |
A033 | Wangwu | Guangdong | 23 | Female | 1682564xxxx |
A046 | Zhangli | Jiangxi | 23 | Male | 1883649xxxx |
A055 | Tangchao | Hainan | 24 | Female | 1895496xxxx |
续表1
A062 | Jiangshan | Xizang | 26 | Male | 1773618xxxx |
A082 | Xiehao | Gansu | 24 | Male | 1882167xxxx |
A094 | Litaibai | Shandong | 25 | Female | 1536492xxxx |
数据分片可以达到三个目的:一是数据分布均匀,即每一个存储节点中的数据量要尽可能相近;二是负载均衡,即每一个存储节点的读写请求量要尽可能接近;三是当增加或者减少存储节点时,需要迁移的数据量要尽可能少。数据分片方法可以包括hash分片以及range分片,下面以hash分片以及range分片的方法对数据分片进行说明。
在range分片方法中,每个存储节点负责一个或者多个区间,数据按照key所属的区间进行存储。举例来讲,假设有三个存储节点,编号分别为node0,node1和node2,若将上述表1用户数据中的标识字段作为key,上述三个存储节点负责的区间分别为node0(0,33]、node1(33,66]、node2(66,100],则根据range分片方法,上表中的用户数据在这三个节点中的存储情况如下表2所示:
表2数据存储情况
存储节点 | 节点存储的信息 |
node0 | A001、A007、A016、A025、A033 |
node1 | A046、A055、A066 |
node2 | A082、A094 |
由上表2可知,采用range分片方法,表1中的用户数据可以按照key值的字典顺序进行存储,但是数据在三个节点中的分布不均匀,进而会导致存储节点之间的负载不均衡。
基于哈希算法的hash分片是根据哈希算法计算key对应的特征值,并根据特征值与存储节点之间的映射关系,将用户数据分配到不同的存储节点中。例如,继续以表1中的用户数据为例进行说明,若将上述用户数据中的标识字段作为key,将每条用户数据的标识根据哈希算法计算得到每个标识对应的特征值,然后根据每个标识对应的特征值以及特征值与存储节点之间的映射关系,将每个特征值对应的标识所对应的用户数据存储到与该特征值存在映射关系的存储节点中。根据上述原理,若表1中用户数据的key根据哈希算法计算得到的特征值依次为:010、074、018、037、085、024、043、055、063以及091,若特征值010、085以及043与node0存在映射关系,特征值018、024、055以及091与node1存在映射关系,特征值074、037以及063与node2存在映射关系,则表1中的用户数据在根据hash分片后在三个节点中的存储关系如下表3所示:
表3数据存储情况
存储节点 | 节点存储的信息 |
node0 | A001、A033、A055 |
node1 | A016、A046、A062、A094 |
node2 | A007、A025、A082 |
由上表3可知,上述表1中的用户数据可以较为平均的分布于三个存储节点中,但是,表1中的用户数据是按照key值的字典顺序排列的,采用hash分片进行数据分片之后,用户数据虽然能够被均匀的分配到各个存储节点中进行存储,但是用户数据按照key值字典顺序排列的结果被打乱了。
针对上述两种方法中存在的问题,可以采用hash分片与range分片相结合的方法对数据进行分片,继续以表1中的用户数据为例进行说明,若选择{标识+姓名}作为key,在采用hash分片与range分片相结合的方法对数据进行分片时,首先只对key中的标识部分进行哈希运算,得到标识部分对应的特征值,然后将标识部分对应的特征值添加到对应的key的最高位前面组成新key,最后采用range分片的方法,根据新key将数据路由到对应的存储节点中。举例来讲,若有三个存储节点,三个存储节点负责的区间分别为node0(0,33]、node1(33,66]、node2(66,100],表1中用户数据的key根据哈希算法计算得到的特征值依次为:010、074、018、037、085、024、043、055、063以及091,则采用range分片的方法将用户数据路由到对应的节点后,表1中的用户数据在三个存储节点中的存储情况如表4所示。
表4数据存储关系表
存储节点 | 节点存储的信息 |
node0 | A001、A016、A046 |
node1 | A025、A055、A062、A082 |
node2 | A007、A033、A094 |
由于在根据新key进行路由时,位于新key前面的特征值对数据的路由起决定作用,而每个新key中的特征值是根据哈希算法得到,该特征值在(0,100]上分布均匀,则采用range分片的方法,根据新key进行路由时,既能使同一个标识对应的多条数据存储在同一个存储节点,又能使数据在各个节点分布均匀,还可以使特征值相邻的key对应的数据相邻存储。
但是,上述方案只适用于有模式(schema)的数据库系统,有schema的数据库系统能够感知字段的信息,即有schema的数据库系统能够感知上述举例中key是由标识字段与姓名字段组合而成,在采用hash分片与range分片相结合的方法对数据进行分片的过程中,能够识别出key中的标识字段进而能够只对标识字段进行哈希运算。而对于无schema的数据库系统,例如HBase、Google Bigtable以及MongoDB等,系统无法识别组成key的各字段所代表的信息,因此无法通过指定key中的某个具有特定意义的字段进行哈希运算,进而结合hash分片与range分片对数据进行分片。
针对上述问题,本申请实施例提供一种数据分片方法,如图1所示,该方法中,由管理员根据用户数据的key的组成方式,在管理终端的配置页面中配置对用户数据的key的处理方式,生成配置信息并将配置信息发送给管理服务器。当一个或者多个用户终端中的任意一个用户终端在获取用户数据之后,需要从管理服务器中获取所述配置信息,然后根据所述配置信息对key进行处理,最后再根据经过处理之后的key向存储节点发送所述用户数据。
具体的,请参见图2,图2是本申请实施例提供的一种数据分片方法的流程示意图,如图2所示,所述数据分片方法包括:
101、获取用户数据,其中,所述用户数据包括关键字;
102、对所述关键字进行截取,从而得到目标字段;
本申请实施例中,在对所述关键字进行截取时,既可以截取部分关键字作为所述目标字段,也可以截取全部字段作为目标字段,本申请实施例不做具体限制。
103、根据哈希算法确定所述目标字段的目标特征值;
对所述关键字进行截取得到所述目标字段之后,采用哈希算法,也称安全散列算法(Secure Hash Algorithm,SHA)对所述目标字段进行哈希运算,得到所述目标字段对应的固定长度的目标特征值。
可选地,所述SHA算法可以是消息摘要算法第五版(Message Digest Algorithm,MD5)、SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512等算法中的任意一种,本申请实施例不做具体限制。
104、根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。
本申请实施例中,上述步骤102对所述关键字进行截取,从而得到目标字段之前,所述方法还包括:从管理服务器获取配置信息,所述配置信息包括对所述关键字进行截取的截取方式、截取长度以及所选取的哈希算法。其中,所述配置信息为管理员根据key的组成方式进行设置的,key可以由待存储的用户数据中的一个或者多个字段组成,key的组成包括以下两种方式:
第一种方式中,如果需要存储的用户数据中有至少一类信息的字段长度是固定的,则在设计key时,可以将字段长度固定的一类信息与字段长度不固定的一类信息组合作为key,或者将多类字段长度固定的信息进行组合作为key。继续以表1中的数据为例进行说明,表1中,表示标识、年龄以及电话这三类信息的字段的字段长度固定,则在设计key时,如图3所示,图3中用户数据由多个字段组成,可以以{标识+住址}这两个字段的组合作为key,例如将A001Guangdong作为标识A001对应的用户数据的key,这样在读取用户数据时,由于表示标识的字段长度固定,在解析key的字段信息时,可以直接从前4个字节中提取出表示标识的字段,则剩余的字段即为表示姓名的字段;或者可以以{标识+年龄+电话}这三个字段的组合作为key,如A094251536492xxxx,由于表示这三类信息的字段长度都固定,这样在解析key字段信息时,可以根据各类信息的字段长度以及组合顺序进行分割,即可解析出key中包含的各类信息。
第二种方式中,在设计key时,可以采用分隔符连接key中表示不同类信息的字段作为key。继续以表1中的数据为例,若以{标识+姓名}这两个字段的组合作为key,则可以在这两个字段之间增加分隔符,例如将A001Zhaosan表示为A001^Zhaosan,这样在读取用户数据解析key字段信息时,可以直接根据分隔符对key进行分割,即可解析出key中包含的各类信息。
若采用上述第一种方式设计用户数据的key,则管理员根据用户数据的key设置所述配置信息时,所述配置信息中的截取方式可以为根据预设偏移量对key进行截取;若采用上述第二种方式设计用户数据的key,则管理员根据用户数据的key设置所述配置信息时,所述配置信息中的截取方式可以为根据分隔符对key进行截取。
在一种可能的实施例中,若采用上述第一种方式设计用户数据的key,则所述管理员在所述管理服务器提供的配置界面配置对所述key进行截取的截取方式以及截取长度,如图4所示,所述管理员在管理终端的配置界面选择截取方式为按偏移量截取,截取长度为从第i字节到第j字节,其中,i和j均为正整数,j大于i。在所述管理员配置完之后,所述管理终端生成如下配置信息:{interceptiontype:“offset”;properties:{start:i,stop:j}},并将所述配置信息发送给所述管理服务器。用户终端在获取所述用户数据之后,从所述管理服务器获取所述配置信息,并根据所述配置信息中的偏移量对所述用户数据中的key进行截取。如图5所示,图5为本申请实施例提供的一种根据偏移量对关键字进行截取的示意图,用户终端根据所述配置信息自用户数据的key的高位到低位截取预设偏移量的字节作为目标字段,若用户数据的key为A001B01234220180523,管理员配置的i等于1,j等于8,即所述配置信息中的预设偏移量为8,则根据配置信息,从key的最高位开始,截取的目标字段为A001B012。
在另一种可能的实施例中,若采用上述第一种方式设计用户数据的key,则所述管理员可以在所述管理服务器提供的配置界面配置对所述key进行截取的截取方式以及截取长度,如图6所示,所述管理员在管理终端的配置界面选择截取方式为按偏移量截取,截取长度为从第i字节到第j字节,以及第k字节到第m字节,其中,i,j,k和m均为正整数,j>i,m>k,即所述预设偏移量包括第一预设偏移量和第二预设偏移量,所述第一预设偏移量用于截取第一目标字段,所述第二预设偏移量用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。在所述管理员配置完之后,所述管理终端生成如下配置信息:{interceptiontype:“offset”;properties:{start:i,stop:j};{start:k,stop:m}},并将所述配置信息发送给所述管理服务器。用户终端在获取所述用户数据之后,从所述管理服务器获取所述配置信息,并根据所述配置信息中的偏移量对所述用户数据中的key进行截取。
可选地,如图7A所示,所述第一目标字段与所述第二目标字段可以包括重叠的部分,即i<k<j≤m或者i≤k<m≤j,例如,若管理员配置的i=1,j=6,k=4,m=7,即所述第一预设偏移量为从key的最高位开始的第一字节到第六字节,所述第二预设偏移量为从key的最高位开始的第四字节到第七字节,继续以用户数据的key为A001B01234220180523为例进行说明,则根据上述方法截取得到的第一目标字段为A001B0,第二目标字段为1B01,目标字段为A001B01B01。如图7B所示,所述第一预设偏移量与所述第二预设偏移量也可以不包括重叠的部分,即i<j<k<m,例如,所述第一预设偏移量为从key的最高位开始的第一字节到第四字节,所述第二预设偏移量为从key的最低位开始的第一字节到第八字节,继续以用户数据的key为A001B01234220180523为例进行说明,则根据上述方法截取得到的第一目标字段为A001,第二目标字段为20180523,目标字段为A00120180523。
在一种可能的实施例中,若采用上述第二种方式设计用户数据的key,则所述管理员在所述管理服务器提供的配置界面配置对所述key进行截取的截取方式以及截取长度,如图8所示,所述管理员在管理终端的配置界面选择截取方式为按分隔符截取,截取长度为从第i分隔符到第j分隔符,其中,i和j均为整数,j大于i,当i等于0时,表示从所述key的最高位开始截取。在所述管理员配置完之后,所述管理终端生成如下配置信息:{interceptiontype:“splitchars”;properties:{split:“$”,start:i,stop:j}},并将所述配置信息发送给所述管理服务器。用户终端在获取所述用户数据之后,从所述管理服务器获取所述配置信息,并根据所述配置信息中的截取长度对所述用户数据中的key进行截取。如图9所示,终端根据所述配置信息自用户数据的key中从高位到低位根据分隔符进行截取作为目标字段,若用户数据的key为A001^B012^342^20180523^,所述配置信息中的起始分隔符为第0分隔符,终止分割符为第2分隔符,则表示从key的最高位开始,截取第一分隔符之前的字段以及第二个分隔符之间的字段作为目标字段,根据该配置信息截取的目标字段为A001B012。
在另一种可能的实施例中,若采用上述第二种方式设计用户数据的key,则所述管理员可以在所述管理服务器提供的配置界面配置对所述key进行截取的截取方式以及截取长度,如图10所示,所述管理员在管理终端的配置界面选择截取方式为按偏移量截取,截取长度为从第i分隔符到第j分隔符,以及第k分隔符到第m分隔符,其中,i,j,k和m均为整数,j>i,m>k,当i等于0时,表示从所述key的最高位开始截取。即所述分隔符包括第一组分隔符以及第二组分隔符,其中,所述第一组分隔符用于截取第一目标字段,所述第二组分隔符用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段,在所述管理员配置完之后,所述管理终端生成如下配置信息:{interceptiontype:“splitchars”;properties:{split:“$”,start:i,stop:j};{split:“$”,start:k,stop:m}},并将所述配置信息发送给所述管理服务器。用户终端在获取所述用户数据之后,从所述管理服务器获取所述配置信息,并根据所述配置信息中的偏移量对所述用户数据中的key进行截取。
可选地,如图11A所示,所述第一目标字段与所述第二目标字段可以包括重叠的部分,即i<k<j≤m或者i≤k<m≤j,例如,若管理员配置的i=0,j=m=2,k=1,即所述配置信息中所述第一组分隔符的起始分隔符为第0分隔符,终止分隔符为第二分隔符,第二组分隔符的起始分隔符为第一分隔符,终止分隔符为第二分隔符,若用户数据的key为A001^B012^342^20180523^,则根据上述配置信息,截取得到的第一目标字段为A001B012,第二目标字段为B012,组合得到的目标字段为A001B012B012。如图11B所示,所述第一目标字段与所述第二目标字段为不相邻的目标字段,即i<j<k<m,例如,i=1,j=2,k=3,m=4,所述配置信息中第一组分割符的起始分隔符为第一分隔符,终止分割符为第二分隔符,第二组分割符的起始分隔符为第三分隔符,终止分隔符为第四分隔符,若用户数据的key为A001^B012^342^20180523^,则根据上述配置信息,截取得到的第一目标字段为B012,第二目标字段为20180523,组合得到的目标字段为B01220180523。
本申请实施例中,对所述关键字进行截取得到目标关键字之后,根据配置信息中所选取的哈希算法对目标字段进行哈希运算,得到目标特征值,再根据基于范围的数据分片方法,结合所述目标特征值,将所述用户数据分配到对应的存储节点中。
在一种可能的实施例中,对所述关键字进行截取得到目标关键字之后,根据配置信息中所选取的哈希算法对目标字段进行哈希运算,得到目标特征值,再将所述目标特征值添加到所述关键字最高位之前,从而得到新关键字,最后根据基于范围的数据分片方法,结合所述新关键字,将所述用户数据分配到对应的存储节点中。例如,若所述配置信息中所选取的哈希算法为R=H(S),其中,H表示所选取的哈希算法对应的哈希函数,S表示目标字段,R表示目标字段S经过哈希运算之后的目标特征值,若所述目标字段S为A001B012,经过哈希运算之后的目标特征值为R=H(A001B012)=5683,则新关键字为5683A001B012。
通过实施本申请实施例,管理员可以根据关键字的组成方式,设置预设偏移量或者分隔符进而根据预设偏移量或者分隔符对用户数据中的关键字进行截取,从而能够在无模式(schema)的数据库系统中,将具有特定意义的字段截取出来作为目标字段,并将截取得到的目标字段进行哈希运算得到目标特征值,再根据所述目标特征值结合range分片的方法将所述用户数据发送到目标特征值对应的存储节点,由于所述目标特征值是通过哈希运算得到,因此所述目标特征值能够在存储节点所对应的特征值范围内分布均匀,根据所述目标特征值结合range分片的方法将所述用户数据发送到目标特征值对应的存储节点,既能够使数据均匀的分配到各存储节点中,同时也可以将目标特征值相邻的用户数据存储在相同或者相邻的存储节点中。
请参见图12,图12为本申请实施例提供的一种数据分片装置的结构示意图,如图12所示,所述网络设备包括200至少包括:通信单元210和处理单元220。其中,
所述通信单元210,用于获取用户数据,其中,所述用户数据包括关键字;
处理单元220,用于对所述关键字进行截取,从而得到目标字段;并根据哈希算法确定所述目标字段的目标特征值;
所述通信单元210还用于根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。
本申请实施例中,所述通信单元210在获取用户数据,并从管理服务器获取用于对用户数据中的关键字key进行处理的配置信息之后,所述处理单元220根据所述配置信息对所述关键字进行截取,得到目标字段,并根据配置信息中选择的哈希算法对所述目标字段进行哈希运算得到所述目标字段的目标特征值,所述通信单元210根据所述目标特征值将所述用户数据发送到对应的存储节点。
具体地,上述网络设备200执行的各种操作的具体实现可参照上述方法实施例的具体操作,在此不再赘述。
请参见13,图13为本申请实施例提供的一种网络设备的结构示意图,所述网络设备包括300至少包括:处理器310、输入输出设备320以及存储器330,所述处理器310、输入输出设备320以及存储器330通过总线340相互连接,其中,
所述处理器310可以是中央处理器(central processing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
所述存储器330包括但不限于是随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)或可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM或者快闪存储器),该存储器330用于存储程序代码及数据,并可以将存储的数据传输给处理器310。
所述网络设备300中的处理器310用于读取存储器330中的相关指令执行以下操作:
处理器310控制输入输出设备320中接收用户数据,所述用户数据包括关键字;
处理器310对所述关键字进行截取,从而得到目标字段,并根据哈希算法确定所述目标字段的目标特征值;
处理器310控制输入输出设备320根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据;
该网络设备应用在如图14所示的数据分片系统中,图14所示的系统包括多个用户设备组成的用户设备集群(即上述网络设备)以及多个存储节点组成的存储节点集群,图14的系统可以向用户提供数据库云服务,其中存储节点集群可以为存储云服务。所述多个用户设备中任意一个或者多个用户设备的输入设备在接收到用户数据之后,从管理服务器获取配置信息,用户设备中的处理器根据所述配置信息,并调用存储器中存储的程序代码,并对所述用户数据中的关键字进行截取得到目标字段,并根据配置信息中选择的哈希算法对所述目标字段进行哈希运算得到所述目标字段的目标特征值,所述用户设备中的输出设备根据所述目标特征值将所述用户数据发送到对应的存储节点。
具体地,上述网络设备300执行的各种操作的具体实现可参照上述方法实施例的具体操作,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (16)
1.一种数据分片方法,其特征在于,包括:
获取用户数据,其中,所述用户数据包括关键字;
对所述关键字进行截取,从而得到目标字段;
根据哈希算法确定所述目标字段的目标特征值;
根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。
2.根据权利要求1所述的方法,其特征在于,对所述关键字进行截取,从而得到目标字段,包括:
获取预设偏移量;
根据所述预设偏移量对所述关键字进行截取,从而得到所述目标字段。
3.根据权利要求2所述的方法,其特征在于,所述预设偏移量包括第一预设偏移量和第二预设偏移量,其中,所述第一预设偏移量用于截取第一目标字段,所述第二预设偏移量用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
4.根据权利要求1所述的方法,其特征在于,所述关键字包括分隔符,对所述关键字进行截取,从而得到目标字段,包括:
根据所述分隔符对所述关键字进行截取,从而得到所述目标字段。
5.根据权利要求4所述的方法,其特征在于,所述分隔符包括第一组分隔符和第二组分割符,其中,所述第一组分隔符用于截取第一目标字段,所述第二组分隔符用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
6.根据权利要求1至5任一项权利要求所述的方法,其特征在于,用于存储所述用户数据的数据库为无schema定义的数据库,其中,无schema定义的数据库分布存储在多个存储节点中。
7.根据权利要求1至6任一项权利要求所述的方法,其特征在于,所述根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,包括:
将所述目标特征值与所述关键字组合得到新关键字,根据所述新关键字,向所述目标特征值对应的存储节点发送所述用户数据。
8.一种数据分片装置,其特征在于,包括:
通信单元,用于获取用户数据,其中,所述用户数据包括关键字;
处理单元,用于对所述关键字进行截取,从而得到目标字段;
根据哈希算法确定所述目标字段的目标特征值;
所述通信单元还用于根据所述目标字段的目标特征值,向所述目标特征值对应的存储节点发送所述用户数据,其中,不同的存储节点对应不同的特征值范围,所述目标特征值属于其中一个特征值范围。
9.根据权利要求8所述的装置,其特征在于,对所述关键字进行截取,从而得到目标字段,包括:
获取预设偏移量;
根据所述预设偏移量对所述关键字进行截取,从而得到所述目标字段。
10.根据权利要求9所述的装置,其特征在于,所述预设偏移量包括第一预设偏移量和第二预设偏移量,其中,所述第一预设偏移量用于截取第一目标字段,所述第二预设偏移量用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
11.根据权利要求8所述的装置,其特征在于,所述关键字包括分隔符,对所述关键字进行截取,从而得到目标字段,包括:
根据所述分隔符对所述关键字进行截取,从而得到所述目标字段。
12.根据权利要求11所述的装置,其特征在于,所述分隔符包括第一组分隔符和第二组分割符,其中,所述第一组分隔符用于截取第一目标字段,所述第二组分隔符用于截取第二目标字段,所述目标字段包括所述第一目标字段和所述第二目标字段。
13.根据权利要求8至12任一项所述的装置,其特征在于,用于存储所述用户数据的数据库为无schema定义的数据库,其中,无schema定义的数据库分布存储在多个存储节点中。
14.根据权利要求8至13任一项所述的装置,其特征在于,
所述处理单元,还用于将所述目标特征值与所述关键字组合得到新关键字;
所述发送单元具体用于,根据所述新关键字,向所述目标特征值对应的存储节点发送所述用户数据。
15.一种网络设备,其特征在于,包括处理器、以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,所述输入输出设备用于在所述处理器的控制下与其他设备进行通信;其中,所述处理器执行所述指令时执行如权利要求1至7任一项所述的方法。
16.一种非瞬态的计算机存储介质,所述计算机存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810824276.XA CN110851525B (zh) | 2018-07-24 | 2018-07-24 | 一种数据分片方法、相关设备及计算机存储介质 |
PCT/CN2019/080697 WO2020019749A1 (zh) | 2018-07-24 | 2019-03-30 | 一种数据分片方法、相关设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810824276.XA CN110851525B (zh) | 2018-07-24 | 2018-07-24 | 一种数据分片方法、相关设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851525A true CN110851525A (zh) | 2020-02-28 |
CN110851525B CN110851525B (zh) | 2022-08-26 |
Family
ID=69182120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810824276.XA Active CN110851525B (zh) | 2018-07-24 | 2018-07-24 | 一种数据分片方法、相关设备及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110851525B (zh) |
WO (1) | WO2020019749A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364251A (zh) * | 2020-12-03 | 2021-02-12 | 腾讯科技(深圳)有限公司 | 数据推荐方法、装置、电子设备及存储介质 |
CN113301084A (zh) * | 2020-06-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法以及装置 |
CN114253747A (zh) * | 2021-12-27 | 2022-03-29 | 北京宇信科技集团股份有限公司 | 一种分布式消息管理系统和方法 |
CN116346826A (zh) * | 2023-05-30 | 2023-06-27 | 工业富联(佛山)创新中心有限公司 | 数据库节点部署方法、装置、电子设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552695A (zh) * | 2020-06-04 | 2020-08-18 | 支付宝(杭州)信息技术有限公司 | 数据存储和查询的方法、装置以及机器可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170083518A1 (en) * | 2010-06-11 | 2017-03-23 | Oyokey Inc. | System and Method for Launching a Process Using a Keyword Identifier |
CN106844676A (zh) * | 2017-01-24 | 2017-06-13 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN107154957A (zh) * | 2016-12-29 | 2017-09-12 | 贵州电网有限责任公司铜仁供电局 | 基于虚拟环负载均衡算法的分布式存储控制方法 |
CN108153849A (zh) * | 2017-12-20 | 2018-06-12 | 杭州登虹科技有限公司 | 一种数据库表切分方法、装置、系统和介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724063B (zh) * | 2012-05-11 | 2016-12-07 | 北京邮电大学 | 日志采集服务器及数据包分发、日志聚类方法及网络 |
CN105100146B (zh) * | 2014-05-07 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置及系统 |
CN106503010B (zh) * | 2015-09-07 | 2019-11-26 | 北京国双科技有限公司 | 一种数据库更改写入分区的方法及装置 |
-
2018
- 2018-07-24 CN CN201810824276.XA patent/CN110851525B/zh active Active
-
2019
- 2019-03-30 WO PCT/CN2019/080697 patent/WO2020019749A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170083518A1 (en) * | 2010-06-11 | 2017-03-23 | Oyokey Inc. | System and Method for Launching a Process Using a Keyword Identifier |
CN107154957A (zh) * | 2016-12-29 | 2017-09-12 | 贵州电网有限责任公司铜仁供电局 | 基于虚拟环负载均衡算法的分布式存储控制方法 |
CN106844676A (zh) * | 2017-01-24 | 2017-06-13 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN108153849A (zh) * | 2017-12-20 | 2018-06-12 | 杭州登虹科技有限公司 | 一种数据库表切分方法、装置、系统和介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113301084A (zh) * | 2020-06-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法以及装置 |
CN112364251A (zh) * | 2020-12-03 | 2021-02-12 | 腾讯科技(深圳)有限公司 | 数据推荐方法、装置、电子设备及存储介质 |
CN112364251B (zh) * | 2020-12-03 | 2021-08-17 | 腾讯科技(深圳)有限公司 | 数据推荐方法、装置、电子设备及存储介质 |
CN114253747A (zh) * | 2021-12-27 | 2022-03-29 | 北京宇信科技集团股份有限公司 | 一种分布式消息管理系统和方法 |
CN114253747B (zh) * | 2021-12-27 | 2023-04-28 | 北京宇信科技集团股份有限公司 | 一种分布式消息管理系统和方法 |
CN116346826A (zh) * | 2023-05-30 | 2023-06-27 | 工业富联(佛山)创新中心有限公司 | 数据库节点部署方法、装置、电子设备及存储介质 |
CN116346826B (zh) * | 2023-05-30 | 2023-08-04 | 工业富联(佛山)创新中心有限公司 | 数据库节点部署方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110851525B (zh) | 2022-08-26 |
WO2020019749A1 (zh) | 2020-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851525B (zh) | 一种数据分片方法、相关设备及计算机存储介质 | |
CN106657213B (zh) | 文件传输方法和装置 | |
CN110019080B (zh) | 数据访问方法和装置 | |
CN109040227B (zh) | 基于区块链的业务请求响应方法、装置和计算机设备 | |
CN110019211A (zh) | 关联索引的方法、装置和系统 | |
CN109614402B (zh) | 多维数据查询方法和装置 | |
US10776361B2 (en) | Time series database search system | |
WO2020034810A1 (zh) | 搜索方法、装置、计算机设备和存储介质 | |
WO2021057253A1 (zh) | 数据分离存储方法、装置、计算机设备和存储介质 | |
CN111723073B (zh) | 数据存储处理方法、装置、处理系统以及存储介质 | |
CN114253979B (zh) | 一种报文处理方法、装置及电子设备 | |
EP3994586A1 (en) | Revealing content reuse using fine analysis | |
WO2020220540A1 (zh) | 基于点对点网络的数据存储方法、装置、介质及终端设备 | |
CN113886434A (zh) | 基于数据库集群的查询和存储方法、装置以及设备 | |
CN109753424B (zh) | Ab测试的方法和装置 | |
CN110737663A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN112052413A (zh) | Url模糊匹配方法、装置和系统 | |
CN106909557B (zh) | 内存集群的存储方法及装置、内存集群的读取方法及装置 | |
CN105988995A (zh) | 一种基于HFile批量加载数据的方法 | |
CN113312355A (zh) | 一种数据管理的方法和装置 | |
EP3926453A1 (en) | Partitioning method and apparatus therefor | |
CN116303343A (zh) | 数据分片方法、装置、电子设备及存储介质 | |
CN112639761B (zh) | 一种为数据建立索引的方法以及装置 | |
CN110705935B (zh) | 一种物流单据的处理方法和装置 | |
CN116028196A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220207 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |