数据的分片存储方法、装置及系统制造方法及图纸

技术编号:14400806 阅读:96 留言:0更新日期:2017-01-11 13:40
本申请涉及分布式领域,尤其设计分布式分片存储技术。在一种分布式存储系统数据的分片存储方法中,确定待存储数据所要存储的M个数据节点,获取所述待存储数据的N个副本,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片。然后将待存储数据存储到M个存储节点中,即将X个数据分片中的每个数据分片的N个副本分别存储于N个存储节点中,使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以的整数商。b本申请提供了一种分布式数据分片存储的方法,提高了数据的可用性,以及当节点故障时数据恢复的效率。

【技术实现步骤摘要】

本专利技术实施例涉及分布式存储领域,更具体地,涉及一种分布式存储系统中数据的分片存储方法、装置以及系统。
技术介绍
随着信息技术的快速发展,信息系统数据库中的数据量越来越大。为了满足大数据量的存储需求,在多台服务器上运行的分布式存储系统得到了广泛的应用。在分布式存储系统中,多台服务器上分别运行了多个数据库系统。数据进行存储时,需要先将数据进行分片(sharding),再将不同的数据分片交由不同的服务器进行存储。分片是一种水平扩展(horizontalscaling)的方式,把一个大的数据集分散到多个数据节点上,所有的数据节点将组成一个逻辑上的数据库来存储这个大的数据集。分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上。采用数据分片进行数据存储,可以突破单节点服务器的I/O能力限制,解决数据库拓展性的问题。同时,为了保证数据和服务的高可用性,往往需要为分布式数据库提供必要的容错机制,对各个数据分片进行冗余备份。通过将同一数据分片的多个副本存储在不同的服务器上,可以避免由于单个服务器不可用时造成的数据分片丢失。在现有技术中,通常采用交叉备份的方式来对分布式存储系统中的数据分片进行备份。数据分片的分片数量一般与存储节点数量相同,从而将每个数据分片的主分片分别存储于每个存储节点上,而将备份分片存储于与主分片所不同的另外任意两个存储节点上。例如,表1列举了一种常见的将主数据及两份备份数据存储在6个数据节点的存储策略,其中,数据分为A-F共六个数据分片,每个数据分片包含一个主数据以及两个备份数据。存储节点数据分片节点1ACD节点2BAC节点3CAF节点4DBE节点5EDF节点6FBE表1在现有技术中,通过将主分片与备份分片分别存储在不同的存储节点上,可以保证当一个存储节点故障时,该数据分片不会损失,而只有当同一数据分片所在的全部数据节点都产生故障时,该数据片才会损失。但是,当同一数据分片所在的全部数据节点都产生故障时,可能会出现两个数据分片的主备数据存储在了相同的多个节点的情况,例如,在表1的例子中,数据分片A和数据分片C均存储在了节点1、2、3中,当该3个数据节点出现故障时,数据分片A和C均会丢失。此外,当单个节点发生故障后,需要通过数据恢复来形成新的节点,而在数据恢复时,并发恢复的效率不高,例如在表1的例子中,当节点6发生故障后,最多分别通过一个存储有F、B、E数据分片的节点,例如节点3、4、5来并发实现数据恢复,而其他节点则不可参与恢复。
技术实现思路
有鉴于此,本专利技术提供了一种分布式存储系统中数据的分片存储方法、装置以及系统,提高了数据备份的可用性,以及数据恢复的效率。第一方面,本专利技术的实施例提供了一种数据的分片存储方法。方法包括确定待存储数据所要存储到的M个数据节点,并获取待存储数据的N个副本,其中,副本数数据的分片存储方法N为待存储数据的原始数据和备份数据的份数的总和,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片,从而每个数据分片都有N个数据分片副本。将待存储数据的N个副本存储到M个存储节点中,即将X个数据分片中每个数据分片的N个数据分片副本分别存储于N个存储节点中。其中,使得副本存储在相同的N个存储节点中的数据分片副本的数量最小,具体的,使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以的整数商(整数商指不完全商或部分商,例如,X为10,为3时,整数商P为3)。由此,由于在相同的N个存储节点中的数据分片副本的数量最小,使得当任意N个存储节点同时发生故障时,可能造成的最大的数据损失最小,相对于现有技术而言,降低了数据损失比例,提高了数据备份的可用性。同时,由于每个数据分片的副本均匀分布在不同的节点上,当某一节点故障时,存储于该节点上的数据分片可以通过存储于多个不同的节点相应的副本进行恢复,从而提高并发恢复的效率。在一种可能的设计中,对副本进行分时,分片数X基于最佳分片基数Y进行取值,其中分片数X可以等于或小于所述最佳分片基数Y与系数K的乘积,其中K为大于或者等于1的整数。在该种设计的一种实现方式中,X的取值小于Y与K的乘积,此时,X的取值越接近Y与K的乘积时,当N个存储节点同时发生故障时,可能造成的最大的数据损失量占总存储数据量的比例越小。在该种设计的一种实现方式中,X的取值为Y与K的乘积,此时,当N个存储节点同时发生故障时,可能造成的最大的数据损失量占总存储数据量的比例最小。在该种设计的一种实现方式中,确定待存储数据的分片数X时,可以根据分布式存储系统的负载均衡需求,确定系数K。其中,K的值越大,待存储数据的均衡负载程度越高。在一种可能的设计中,根据当前分布式存储系统的均衡负载情况,确定所述待存储数据的分片数X。当需要提高待存储数据在分布式存储系统中的均衡负载程度时,可以取较大分片数X,从而获得更小的数据粒度,提高均衡负载程度。在一种可能的设计中,根据待存储数据的安全需求确定待存储数据的副本数N,其中,所述副本数N的值越大,所能够满足的所述待存储数据的安全需要越高,即要损失一个数据分片,需要同时发生故障的节点数量更多。在一种可能的设计中,根据所述待存储数据的数据类型和数据类型与副本数的对应关系,确定所述待存储数据的副本数N。从而对不同类型的数据提供更加灵活的数据可用性保障。在一种可能的设计中,将待存储数据存储到存储节点中时,从M个数据节点中选出N个数据节点的的种数据节点的组合方式;确定分片数X除以所得的商P以及余数Q;在所述种所述数据节点的组合方式种中选择Q种数据节点的组合方式用于存储P+1个数据分片,其余个数据节点的组合方式用于存储P个数据分片,其中,每个数据分片的N个副本分别存储在要存储的数据节点的组合方式中N个不同的数据节点上。第二方面,本专利技术实施例提供了一种确定分布式存储系统中数据分片的方法,方法包括确定待存储数据所要存储到的M个数据节点以及获取待存储数据的副本数N,从而确定待存储数据的分片数X。其中,等于或小于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数。X的取值越接近Y与K的乘积时,当N个存储节点同时发生故障时,可能造成的最大的数据损失量占总存储数据量的比例越小。当X的取值为Y与K的乘积时,可能造成的最大的数据损失量占总存储数据量的比例最小。在一种可能的设计中,根据分布式存储系统的负载均衡需求,确定系数K,其中,所述系数K为大于或等于1的整数,所述K的值越大,待存储数据的负载均衡程度越高。分片数X等于或小于在一种可能的设计中,确定分片数X后,确定将待存储数据存储到所述M个存储节点中的存储策略,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以的整数商。在该设计的一种可能的实现方式中,确定存储策略的具体方式为:确定N个所述待存储数据副本存储于M个所述数据节点时,从M个数据节点中选出N个数据节点的的种数据节点的组合方式;确定分片数X除以所得的商P以及余数Q;在所述种所述数据节点的组合方式种中选择Q种数据节点的组合方式用于存储P+1个数据分片,其余个数本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/62/201610659118.html" title="数据的分片存储方法、装置及系统原文来自X技术">数据的分片存储方法、装置及系统</a>

【技术保护点】
一种数据的分片存储方法,其特征在于,所述方法包括:确定待存储数据所要存储到的M个存储节点;获取所述待存储数据的N个副本,其中所述N个副本包括所述待存储数据的原始数据和所述原始数据的N‑1个备份数据,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片,以使得每个数据分片具有N个数据分片副本,N小于或等于M;将所述待存储数据的N个副本存储到所述M个存储节点,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以的整数商。

【技术特征摘要】
1.一种数据的分片存储方法,其特征在于,所述方法包括:确定待存储数据所要存储到的M个存储节点;获取所述待存储数据的N个副本,其中所述N个副本包括所述待存储数据的原始数据和所述原始数据的N-1个备份数据,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片,以使得每个数据分片具有N个数据分片副本,N小于或等于M;将所述待存储数据的N个副本存储到所述M个存储节点,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以的整数商。2.根据权利要求1所述方法,其特征在于,所述将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片具体包括:根据所述副本数N和所述存储节点数M,确定所述待存储数据的最佳分片基数Y,所述最佳分片基数所述待存储数据的分片数X等于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数;将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片。3.根据权利要求1所述方法,其特征在于,所述将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片具体包括:根据所述副本数N和所述存储节点数M,确定所述待存储数据的最佳分片基数Y,所述最佳分片基数根据所述最佳分片基数Y,获取所述待存储数据的分片数X,所述待存储数据的分片数X小于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数;将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片。4.根据权利要求2或3所述方法,其特征在于,所述系数K根据所述分布式存储系统的负...

【专利技术属性】
技术研发人员:王华琼高超
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1