CN115221155A - 数据分片方法、装置、电子设备和存储介质 - Google Patents

数据分片方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN115221155A
CN115221155A CN202110410435.3A CN202110410435A CN115221155A CN 115221155 A CN115221155 A CN 115221155A CN 202110410435 A CN202110410435 A CN 202110410435A CN 115221155 A CN115221155 A CN 115221155A
Authority
CN
China
Prior art keywords
data
stored
clustering result
initial
target clustering
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
Application number
CN202110410435.3A
Other languages
English (en)
Inventor
杨猛
肖昕璐
宋蕾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Group Liaoning Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Liaoning Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Group Liaoning Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202110410435.3A priority Critical patent/CN115221155A/zh
Publication of CN115221155A publication Critical patent/CN115221155A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations

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)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据分片方法、装置、电子设备和存储介质。该方法包括:获取初始哈希环上的多个待存储数据;对各待存储数据进行聚类,得到各待存储数据的目标聚类结果;对于每个目标聚类结果,计算目标聚类结果中各特征向量的均值;针对各目标聚类结果,基于均值,以及目标聚类结果的预设权重,确定各待存储数据的资源占用指标;基于各待存储数据的资源占用指标,更新初始哈希环上各待存储数据的存储位置。采用本申请的数据分片方法,可实现将数据均衡的分配到每个数据存储节点,保证每个数据存储节点的系统资源相对均衡,解决传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜的问题,从而提升数据分片效率及系统性能。

Description

数据分片方法、装置、电子设备和存储介质
技术领域
本申请涉及数据处理技术,具体涉及一种数据分片方法、装置、电子设备和存储介质。
背景技术
随着互联网时代的高速发展,运营商时时刻刻都产生海量的数据,对这些数据的存储基本是利用分布式的存储方式,具体的是将数据进行分片,然后将数据存储在各个存储节点上。利用数据分片的方式将数据存储在各个存储节点上,大多采用哈希表方式(即hash方式)和一致性哈希表方式(即一致性hash方式)。
目前,利用hash方式对数据进行存储是根据记录的数据的关键值将记录映射到表中的一个槽(slot)。hash数据分片方式按照数据的某一特征(key)来计算哈希值,并将哈希值与系统中的存储节点建立映射关系,从而将哈希值不同的数据分布到不同的存储节点上。利用一致性hash方式对数据进行存储是将数据按照特征值映射到一个首尾相接的hash环上,同时也将存储节点映射到这个环上。对于数据,从数据在环上的位置开始,顺时针找到的第一个存储节点即为数据的存储节点。
上述基于hash方式对数据进行分片存储的方式,当加入或删除一个存储节点的时候,大量的数据需要移动,原始数据的特征值分布不均匀,导致大量的数据可能集中到一个存储节点上,导致存储节点之间的负载不均衡。基于一致性hash方式,在增加存储节点的时候,只能分摊一个已存在存储节点的压力;同样,在其中一个存储节点无法使用的时候,该存储节点的压力也会被全部转移到下一个存储节点,会出现数据倾斜的现象,即个别存储节点数据存储量过大,个别存储节点数据存储量过小,存储节点之间的负载不均衡的问题,影响系统性能。
发明内容
本申请实施例的目的是提供一种数据分片方法、装置、电子设备和存储介质,以实现将数据自适配均衡的分配到每个数据存储节点,保证每个数据存储节点的系统资源相对均衡,解决传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜的问题,从而提升数据分片效率及系统性能。
本申请的技术方案如下:
第一方面,提供了一种数据分片方法,该方法包括:
获取初始哈希环上的多个待存储数据;
对各所述待存储数据进行聚类,得到各所述待存储数据的目标聚类结果;
对于每个目标聚类结果,计算所述目标聚类结果中各特征向量的均值;
针对各目标聚类结果,基于所述均值,以及所述目标聚类结果中各特征向量的预设权重,确定各所述待存储数据的资源占用指标;
基于各所述待存储数据的资源占用指标,更新所述初始哈希环上各所述待存储数据的存储位置。
第二方面,提供了一种数据分片装置,该装置包括:
信息获取模块,用于获取初始哈希环上多个待存储数据,以及各所述待存储数据所对应的各特征向量;
目标聚类结果确定模块,用于对各所述待存储数据进行聚类,得到各所述待存储数据的目标聚类结果;
均值确定模块,用于针对每个目标聚类结果,计算所述目标聚类结果中各特征向量的均值;
资源占用指标确定模块,用于针对各目标聚类结果,基于所述均值,以及所述目标聚类结果中各特征向量的预设权重,确定各所述待存储数据的资源占用指标;
数据分片存储模块,用于基于各所述待存储数据的资源占用指标,更新所述初始哈希环上各所述待存储数据的存储位置。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现本申请任一实施例所述的数据分片方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现本申请任一实施例所述的数据分片方法的步骤。
本申请的实施例提供的技术方案至少带来以下有益效果:
本申请实施例提供的数据分片方法,通过对获取初始哈希环上的多个待存储数据进行聚类,得到目标聚类结果,针对各目标聚类结果,以及各目标聚类结果中各待存储数据的特征向量,计算各目标聚类结果中各特征向量的均值,对各待存储数据的特征向量进行综合评估,综合权衡系统资源,解决现有技术中评估维度单一的问题。此外,本申请基于各待存储数据的资源占用指标,更新初始哈希环上各待存储数据的存储位置。如此将待存储数据根据其自身的资源占用指标自适配均衡的分配到每个存储节点,保证每个存储节点的系统资源相对均衡,通过更新初始哈希环上各待存储数据的存储位置,解决了传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜、存储节点之间的负载不均衡的问题,从而提升数据分片效率及系统性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是现有技术提供的利用hash方式进行数据分片的方式示意图
图2是现有技术提供的利用hash方式进行数据分片时,增加一个存储节点,各待存储数据的迁移示意图;
图3是现有技术提供的利用一致性hash方式进行数据分片的方式示意图;
图4是本申请实施例提供的一种数据分片方法的流程示意图一;
图5是本申请实施例提供的一种数据分片方法的流程示意图二;
图6是本申请实施例提供的对各待存储数据进行聚类的流程示意图;
图7是本申请实施例提供的计算各待存储数据的资源占用指标的流程示意图;
图8是本申请实施例提供的一种数据分片装置的结构示意图;
图9是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的例子。
为了更好的理解本申请的技术方案,首先介绍一下本方案的背景技术,对现在的海量数据的存储基本是利用分布式的存储方式,具体的是将数据进行分片,然后将数据存储在各个存储节点上。利用数据分片的方式将数据存储在各个存储节点上,大多采用哈希表方式(即hash方式)和一致性哈希表方式(即一致性hash方式)。
数据分片是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的存储节点上,分片算法的优劣,直接影响数据存储的性能。
下面介绍一下利用现有的hash方式和一致性hash方式如何实现数据分片:
1、hash方式
哈希表是最为常见的数据结构,根据记录(或者对象)的关键值将记录映射到表中的一个槽(slot),便于快速访问。hash数据分片方式按照待存储数据的某一特征(key)来计算哈希值,并将哈希值与系统中的存储节点建立映射关系,从而将哈希值不同的待存储数据分布到不同的存储节点上。
如选择待存储数据的id作为数据分片的key,假设Nodei为第i的存储节点,Nodenum为存储节点总数,根据如下公式(1)可确定各待存储数据的存储节点:
Nodei=key%Nodenum
假设有3个存储节点,Nodenum=3,根据上述公式(1),将某一待存储数据的key对3取余,当Nodei的计算结果为0,将该待存储数据存储在Node0这个存储节点上,当Nodei的计算结果为1,将该待存储数据存储在Node1,以此类推,可得到如图1所述的hash算法分片结果的示意图。
从上述计算方式可以看到,按照hash方式做数据分片,映射关系非常简单,需要管理的待存储数据也非常之少,只需要记录存储节点的数目以及hash方式就行了。
但上述hash方式的缺点也非常明显:当加入或者删除一个节点的时候,大量的待存储数据需要移动,迁移成本过高。比如在这里增加一个节点Node3,按照上述公式(1)的计算方法,各待存储数据就会对应发生迁移,即各待存储数据的存储节点就会发生变化,具体的迁移结果如图2所示。这样在待存储数据的特征值分布不均匀的情况下,可能导致大量的待存储数据集中到一个存储节点上,造成存储节点上的待存储数据不均衡的问题,即存储节点之间的负载不均衡的问题。
2、一致性hash方式
一致性hash是将待存储数据按照特征值映射到一个首尾相接的hash环上,同时也将存储节点映射到这个环上。对于某一个待存储数据,从该待存储数据在环上的位置开始,顺时针找到的第一个节点即为该待存储数据的存储节点。这里仍然以上述的待存储数据为例,假设id的范围为[0,1000],Node0,Node1,Node2在环上的位置分别是100,400,800,其中id在[800,1000]和[0,100]内的待存储数据存储在Node0,id在[100,400]内的待存储数据存储在Node1,id在[400,800]内的待存储数据存储在Node2,那么hash环示意图与待存储数据的分布可如图3所示。
通过图3可以看到,相比于上述的hash方式,一致性hash方式需要维护的待存储数据额外包含了存储节点在环上的位置,但这个数据量也是非常小的。
一致性hash在增加或者删除存储节点的时候,受到影响的待存储数据是比较有限的,比如这里增加一个节点Node3,其在环上的位置为600,因此,原来Node2负责的范围段[400,800],现在负责范围段[400,600],而范围段[600,800]由Node3负责,因此只需要将记录R2(id:759),R3(id:607)从Node2,迁移到Node3
不难发现一致性hash方式在增加或者删除存储节点的时候只会影响到hash环上相应的存储节点,不会发生大规模的数据迁移。
但是一致性hash算法存在一些缺点:首先,一致性hash方式在增加节点的时候,只能分摊一个已存在存储节点的压力。同样,在其中一个存储节点无法使用的时候,该存储节点的压力也会被全部转移到下一个存储节点,会出现数据倾斜的现象,即个别存储节点数据存储量过大,个别存储节点数据存储量过小,这样会造成部分存储节点性能出现瓶颈,会影响存储系统整体性能。其次,一致性hash算法仅仅根据待存储数据的hash值进行分配,没有综合考虑其他维度,如读写频率、使用频率和数据大小等维度,也会造成数据倾斜。
为了解决上述hash方式和一致性hash方式在数据分片时,造成的各存储节点的负载不均衡,本申请提供了一种数据分片方法,以解决现有技术中在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜的问题,应用本申请提供的数据分片方法可实现将待存储数据自适配均衡的分配到每个数据存储节点,保证每个数据存储节点的系统资源相对均衡,从而提升数据分片效率及系统性能。
下面详细介绍本申请提供的数据分片方法。
在一个示例中,为了解决现有技术中在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜的问题,本申请提供了一种数据分片方法。
参见图4,本申请实施例提供的一种数据分片方法,具体可以包括以下步骤:
S110、获取初始哈希环上的多个待存储数据。
初始哈希环可以是如图3中的哈希环。
在储存哈希环上具有多个待存储数据,这多个待存储数据已预先存储在初始哈希环上,具体的预先存储过程在后续实施例再详细说明,这里不过多介绍。
S120、对各待存储数据进行聚类,得到各待存储数据的目标聚类结果。
目标聚类结果可以是对各待存储数据进行聚类后,所得到的各待存储数据的聚类结果。
在得到初始哈希环上的各待存储数据后,可对各待存储数据进行聚类,具体的可以是对k-mean算法进行改进,利用改进后的k-mean算法来对各待存储数据来进行聚类,得到各待存储数据的目标聚类结果。具体的利用改进后的k-mean算法来对各待存储数据来进行聚类,在后续实施例再详细描述,这里不过多介绍。
S130、对于每个目标聚类结果,计算目标聚类结果中各特征向量的均值。
特征向量可以是用于表征各待存储数据的向量。
针对各目标聚类结果中的每个待存储数据,每个待存储数据均具有预设数量的特征向量。
在一个示例中,特征向量可以但不限于是:查询频率、更新频率、待存储数据大小、待存储数据字段数量、查询待存储数据的用户数和待存储数据的响应平均时间。
在一个示例中,可以是以天为时间单元,计算一天内各待存储数据的查询频率、更新频率、待存储数据大小、待存储数据字段数量、查询待存储数据的用户数和待存储数据的响应平均时间。
在一个示例中,查询频率可以是一天内该待存储数据被查询的次数。
在一个示例中,更新频率可以是一天内该待存储数据被更新的次数。
在一个示例中,待存储数据大小可以是该待存储数据所占磁盘的大小。
在一个示例中,待存储数据字段数量可以是该待存储数据的字段的数量。
在一个示例中,查询待存储数据的用户数可以是一天内该待存储数据被多少用户查询。
在一个示例中,待存储数据的响应平均时间可以是操作该待存储数据的平均响应时间。
在得到目标聚类结果后,对于每一个目标聚类结果而言,可计算该目标聚类结果中各特征向量的均值。
通过获取待存储数据的多个特征向量,解决了现有技术中仅针对待存储数据的主键的特征值来进行评估待存储数据的范围段,而导致的评估维度单一造成数据倾斜的问题,通过本申请中的多个特征向量,来多维度评估待存储数据的范围段,使待存储数据的范围段的评估更加精确。
S140、针对各目标聚类结果,基于均值,以及目标聚类结果中各特征向量的预设权重,确定各待存储数据的资源占用指标。
预设权重可以是预先设置的各目标聚类结果中各特征向量的权重。
资源占用指标可以是得到的各待存储数据占用系统资源的大小,具体的可以是各待存储数据的所占用的节点计算资源、存储资源和网络资源的大小。
在得到每个目标聚类结果的各特征向量的均值后,根据该均值,以及预先设置的各目标聚类结果中各特征向量的预设权重,可确定各特征向量所对应的资源占用指标,将得到的各特征向量所对应的资源占用指标进行加权计算,即可得到该目标聚类结果中各待存储数据的资源占用指标。
S150、基于各待存储数据的资源占用指标,更新初始哈希环上各待存储数据的存储位置。
当得到各待存储数据的资源占用指标后,可根据各待存储数据的资源占用指标,来更新初始哈希环上各待存储数据的存储位置。
在一个示例中,具体的更新初始哈希环上各待存储数据的存储位置,可以是使更新后的在初始哈希环上的各存储节点上的各待存储数据的资源占用指标的总和相差不大,即基于每个存储节点存储权重相同原则,将待存储数据自适配均衡的分配到每个存储节点,保证每个存储节点的系统资源相对均衡。
并且,预先已根据一致性哈希算法将各待存储数据存储在了初始哈希环上,当根据各待存储数据的资源占用指标,对初始哈希环上的各待存储数据的存储位置进行更新时,只需对应更新需要调整的待存储数据即可,不需待存储数据的大量迁移,例如,以图3为例,待存储数据已预先存储在初始哈希环上,如图3所示,当计算各待存储数据的资源占用指标后,若需要将R0和R5进行调换位置,才可使各存储节点上的负载均衡,则只需将R0和R5进行调换位置即可,这样相比不预先将各待存储数据存储在初始哈希环上,而是直接根据计算的各待存储数据的资源占用指标,来将各待存储数据对应存储在哈希环上,减少了数据的移动量,解决了现有技术中数据分片过程中数据移动量过大的问题。
本申请的技术方案,通过对获取的初始哈希环上的多个待存储数据进行聚类,得到目标聚类结果,针对各目标聚类结果,以及各目标聚类结果中各待存储数据的特征向量,计算各目标聚类结果中各特征向量的均值,对各待存储数据的特征向量进行综合评估,综合权衡系统资源,解决现有技术中评估维度单一的问题,针对各目标聚类结果,基于均值,以及目标聚类结果中各特征向量的预设权重,确定各待存储数据的资源占用指标,基于资源占用指标,更新初始哈希环上各待存储数据的存储位置。这样对初始的一致性哈希算法进行改进,基于每个存储节点存储权重相同原则,将待存储数据自适配均衡的分配到每个存储节点,保证每个存储节点的系统资源相对均衡,通过更新初始哈希环上各待存储数据的存储位置,解决了传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜、存储节点之间的负载不均衡的问题,从而提升数据分片效率及系统性能。
在一个示例中,在获取初始哈希环上的各待存储数据之前,需要先将各待存储数据存储在初始哈希环上,为了将各待存储数据存储在初始哈希环上,作为本申请的另一种实现方式,本申请提供了数据分片方法的另一种可实施方式,具体参见如下实施例。
请参见图5,本申请提供的数据分片方法的另一种实现方式具体包括以下步骤:
S210、获取各待存储数据的主键。
主键可以是待存储数据的主键。具体的待存储数据的格式是key:value的形式,这里的主键即为待存储数据的key。
在对各待存储数据进行存储之前,首先要获取各待存储数据的主键。
S220、对主键进行哈希码值计算,得到各待存储数据所对应的哈希码值。
获取到各待存储数据的主键后,对主键进行哈希码值hashcode计算,得到各待存储数据所对应的哈希码值。
在一个示例中,具体的对主键进行哈希码值计算,得到各待存储数据所对应的哈希码值,可依照如下公式进行计算,得到哈希码值,该哈希码值时一个整数值。
s[0]*31n-1+s[1]*31n-2+…+s[n-1];
其中,s[i]为待存储数据的主键,i为1、2、……、n-1;初始哈希环上的存储节点为2的32次方,这里的31即对应于32,因为从1到31n-1即为32个数。
对应的,对主键进行哈希码值计算,得到各待存储数据所对应的哈希码值的实现代码可以如下:
Figure BDA0003023928020000091
Figure BDA0003023928020000101
S230、对哈希码值进行哈希计算,得到各待存储数据所对应的哈希值。
在得到各待存储数据对应的哈希码值后,对哈希码值进行哈希hash计算,即可得到各待存储数据所对应的哈希值。
对应的,对哈希码值进行哈希计算,得到各待存储数据所对应的哈希值的实现代码可以如下:
Figure BDA0003023928020000102
S240、基于哈希值,将各待存储数据分配至初始哈希环上所对应的存储节点中。
根据上述得到的各待存储数据对应的哈希值,可将各待存储数据分配在初始哈希环上所对应的存储节点上。
在一个示例中,具体的将各待存储数据分配在初始哈希环上所对应的存储节点上可依据现有技术中一致性hash算法中将待存储数据存储在哈希环上的方式,这里不再详细描述。
通过以上一致性hash算法,将任意待存储数据的主键映射成唯一的0~232-1中的一个数据,将待存储数据分配到对应的数据槽(存储节点)中,如hashvalue值为N的待存储数据映射到N的数据槽中。
S250、获取初始哈希环上的多个待存储数据。
S260、对各待存储数据进行聚类,得到各待存储数据的目标聚类结果。
S270、对于每个目标聚类结果,计算目标聚类结果中各特征向量的均值。
S280、针对各目标聚类结果,基于均值,以及目标聚类结果中各特征向量的预设权重,确定各待存储数据的资源占用指标。
S290、基于各待存储数据的资源占用指标,更新初始哈希环上各待存储数据的存储位置。
在一个示例中,上述步骤S250-S290与上述实施例中的步骤S110-S150相同,为了简要起见,这里不再详细描述。
本申请实施例的技术方案,通过对获取的各待存储数据的主键进行哈希码值计算,得到各待存储数据对应的哈希码值,然后对哈希码值进行哈希计算,得到各待存储数据对应的哈希值,基于各哈希值,将各待存储数据分配至初始哈希环上的各存储节点上,这样以便后续可根据各待存储数据的资源占用指标对初始哈希环上的各待存储数据的存储位置进行更新。
在一个示例中,为了对初始哈希环上的各待存储数据进行聚类,可对现有的k-mean算法进行改进,利用改进后的k-mean算法来对各待存储数据进行聚类。
为了实现对初始哈希环上的各待存储数据进行聚类,作为本申请的另一种可实现方式,本申请实施例还提供了数据分片方法的另一种可实施方式,具体可以是对初始哈希环上的各待存储数据进行聚类的方式,具体的可以参见以下实施例。
针对步骤S260可以具体包括以下步骤:
S2601、基于各待存储数据、各待存储数据的数量和预设聚类数量,确定多个聚类节点。
预设聚类数量可以是预先设置的聚类的结果的数量。例如可以是预先设置将所有的待存储数据聚成多少个类。
聚类节点可以是各聚类的节点。例如,有6个待存储数据,将这6个待存储数据聚成2类,则聚类节点有2个,根据这2个聚类节点可将这6个待存储数据进行聚类,具体的可以是计算各待存储数据到这2个聚类节点的距离,待存储数据距离哪个聚类节点较近,则将该待存储数据分到该聚类节点的类中。
根据各待存储数据、各待存储数据的数量和预设聚类数量,可确定多个聚类节点,具体的可以是根据如下方式来确定各聚类节点:
a、假设xi={a1,a2,a3...a6}为一个待分类项,这里的xi为一个待存储数据,而每个a为xi的一个特征向量,具体的可以是:a1=1天内查询频率;a2=1天内更新频率;a3=待存储数据大小;a4=待存储数据字段数量;a5=1天内查询该待存储数据的用户数;a6=1天内待存储数据的响应平均时间。
b、本申请计划将待存储数据集分成5个聚类,即预设聚类的数量为5,假设聚类节点集合为C={C1,C2,C3,C4,C5},其中,每个C代表一个聚类节点。针对如果k-means聚类算法聚类节点选取过于密集,对聚类结果造成不准确的缺点,采用一种优化聚类节点选取方式,具体选取方法如下:
第一个聚类节点的确定:选取所有待存储数据的中心点作为初始聚类节点C1,基于如下公式计算初始聚类节点C1
Figure BDA0003023928020000121
其中,xall为全部待存储数据的集合,Sall为全部待存储数据的数量,
第二个聚类节点的选取:在xall中选取距离C1最远的待存储数据作为C2,保证各聚类节点选取相对分散,具体的计算方式如下:
Figure BDA0003023928020000122
其中,Xi为全部待存储数据的集合中的任意一个待存储数据,
Figure BDA0003023928020000123
为xall中的待存储数据与C1的距离。
即遍历xall中的待存储数据,选取距离C1最远的待存储数据作为C2
同理,根据上述C2的计算公式,可计算第三个聚类节点,具体的可以是在xall中选取距离C1和C2最远的待存储数据。
同理,计算第四个聚类节点,具体的可以是在xall中选取距离C1、C2和C3最远的待存储数据。
同理,计算第五个聚类节点,具体的可以是在xall中选取距离C1、C2、C3和C4最远的待存储数据。
根据上述计算方式,可计算得到各聚类节点。
S2602、计算各待存储数据到各聚类节点的第一欧式距离。
第一欧式距离可以是各待存储数据到各聚类节点的欧式聚类。
计算出各聚类节点后,可计算各待存储数据到各聚类节点的第一欧式距离,以便后续基于该第一欧式聚类,来对各待存储数据进行聚类。
S2603、将各待存储数据放入该待存储数据所对应的所述第一欧式距离最小的聚类中,得到各待存储数据的初始聚类结果。
初始聚类结果可以是基于第一欧式距离,对各待存储数据进行聚类后所得到的各待存储数据的聚类结果。
在得到各待存储数据到各聚类节点的第一欧式距离后,可将各待存储数据放入该待存储数据所对应的所述第一欧式距离最小的聚类中,即对于每个待存储数据而言,计算得到该待存储数据到各聚类节点的第一欧式距离后,该待存储数据到各聚类节点的第一欧式距离哪个小,就将该待存储数据放入到该聚类节点对应的聚类中
在一个示例中,具体的例如,待存储数据A到各聚类节点的第一欧式距离分别为1、2、3、4和5,这5个第一欧式距离中,待存储数据A到第一个聚类节点的第一欧式距离最小(第一欧式距离为1),则将该待存储数据放入第一个聚类节点(即第一欧式聚类为1的那个聚类节点)所对应的聚类中。
这样根据上述方式,即可将各待存储数据进行聚类,得到各待存储数据的初始聚类结果。
具体的计算各待存储数据到各聚类节点的第一欧式距离可以是基于如下公式进行计算:
Figure BDA0003023928020000131
其中,Xi为任意一个待存储数据,Ck为各聚类节点,其中,k为1、2、3、4、5;
Figure BDA0003023928020000132
为某一个待存储数据到某一个聚类节点的第一欧式距离。
根据上述公式,可分别计算每个待存储数据到聚类中心C={C1,C2,C3,C4,C5}的第一欧式距离,分别为disXiC1、disXiC2、disXiC3、disXiC4、disXiC5,根据选取disXiCk最小化的原则,将各待存储数据划分到距离聚类中心欧式距离最小的聚类中,最终形成5个聚类结果,即得到5个初始聚类结果如下:S={S1,S2,S3,S4,S5},其中,Si为初始聚类结果。
在得到初始聚类结果后,基于初始聚类结果重复执行以下步骤,直至各待存储数据所属的聚类不发生变化,得到各待存储数据的目标聚类结果:
S2604、针对每个初始聚类结果,计算初始聚类结果中的各待存储数据到各初始聚类结果的中心点的第二欧式距离,将各待存储数据放入该待存储数据所对应的第二欧式距离最小的聚类中。
第二欧式距离为针对每个初始聚类结果,计算得到的初始聚类结果中的各待存储数据到各初始聚类结果的中心点的欧式距离。例如,对于5个初始聚类结果中的每个初始聚类结果,比如针对初始聚类结果S1而言,首先计算出5个初始聚类结果的中心点,然后分别计算S1中的各待存储数据到各初始聚类结果的中心点的欧式距离,该欧式距离即为第二欧式距离。
在得到初始聚类结果后,针对每个初始聚类结果,计算初始聚类结果中的各待存储数据到各初始聚类结果的中心点的第二欧式距离,并基于第二欧式距离最小的原则,将各待存储数据放入该待存储数据所对应的第二欧式距离最小的聚类中。
在一个示例中,得到初始聚类结果后,再从各初始聚类结果中选取新的中心点,对各待存储数据重新聚类,这样是为了避免聚类不够准确的情况。
在本申请实施例中,计算第二欧式距离的计算方式同上述第一欧式距离的计算公式,为了简洁起见,这里不再赘述。
当根据第二欧式距离,将各待存储数据放入该待存储数据所对应的第二欧式距离最小的聚类中后,再获取新的各聚类结果的中心点,然后计算各待存储数据到新的各聚类结果的中心点的欧式距离,基于欧式距离最小的原则,对该待存储数据进行聚类。即重复执行步骤S2603,直至各聚类中的各待存储数据不发生变化为止,则聚类结束。
本申请实施例的技术方案,通过根据各待存储数据、各待存储数据的数量和预设聚类数量,确定多个聚类节点;然后计算各待存储数据到各聚类节点的第一欧式距离;基于第一欧式距离最小的原则,得到各待存储数据的初始聚类结果;重复执行针对每个初始聚类结果,计算初始聚类结果中的各待存储数据到各初始聚类结果的中心点的第二欧式距离,将各待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中的步骤,直至各待存储数据所属的聚类不发生变化,得到各待存储数据的目标聚类结果,这样通过一种改进k-means聚类算法,改进各聚类接点的选取方法,使聚类算法更加精准,根据特征向量的计算结果,将所有待存储数据进行聚类,得到精确的目标聚类结果,以便后续可基于该精确的目标聚类结果,计算各目标聚类中的各待存储数据的特征向量的均值。
上述实施例详细介绍了对各待存储数据进行聚类的方法,为了使本领域技术人员更加明白如何针对初始聚类结果得到目标聚类结果,作为本申请的另一种可实施方式,本申请还提供了一种数据分片方法,具体的可以是如何针对初始聚类结果得到目标聚类结果的方式,具体参见如下实施例。
针对步骤S2604可以具体包括以下步骤:
S26041、针对每个初始聚类结果,基于初始聚类结果中各待存储数据对应的特征向量,以及初始聚类结果中各待存储数据的数量,确定初始聚类结果的中心点。
在得到初始聚类结果后,可根据初始聚类结果中各待存储数据对应的特征向量,以及初始聚类结果中各待存储数据的数量,来确定初始聚类结果的中心点,具体的可以是参照如下方式确定各初始聚类结果的中心点:
针对第一个初始聚类结果而言,假设S1={x1,x2,...xk},其中,S1为第一个初始聚类结果,xi为S1这个初始聚类结果中的各待存储数据,则该初始聚类结果S1的中心点的计算公式如下:
Figure BDA0003023928020000151
其中,xi为向量形式,具体的可以是由该待存储数据所对应的各特征向量所组成的,k为初始聚类结果S1中待存储数据的数量。
根据上述公式可计算出第一个初始聚类结果S1的中心点。同样的,基于与上述公式同样的计算方法,可计算得到其他4个初始聚类结果的中心点,即C2-new、C3-new、C4-new和C5-new
S26042、分别计算各待存储数据到各初始聚类结果的中心点的第二欧式距离。
在得到各初始聚类结果的中心点后,可根据计算各待存储数据到各初始聚类结果的中心点的第二欧式距离。具体的第二欧式距离的计算方式同上述实施例中第一欧式距离的计算方式,这里不再详细赘述。
S26043、将各待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中。
在得到各待存储数据到各初始聚类结果的中心点的第二欧式距离后,可基于第二欧式距离最小的原则,将各待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中,这样对各待存储数据进行了重新聚类。
重复执行上述步骤S26041-S26043,直至各待存储数据所属的聚类不发生变化,则确定聚类结束,得到目标聚类结果。
本申请实施例的技术方案,通过重复执行上述步骤S26041-S26043,直至各待存储数据所属的聚类不发生变化,则确定聚类结束,这样可得到精确地目标聚类结果,以便后续可基于该精确的目标聚类结果,计算各目标聚类中的各待存储数据的特征向量的均值。
在一个示例中,在对各待存储数据进行聚类前,首先需要获取到各待存储数据的各特征向量,在获取到各待存储数据的各特征向量后,可能存在两个特征向量代表的待存储数据的特征属性是相同的情况,这时需要对各特征向量进行筛选,以筛选掉相同特征属性的特征向量,以减少计算量,提高计算效率,节省硬件计算资源。
为了对各特征向量进行筛选,以筛选掉相同特征属性的特征向量,以减少计算量,提高计算效率,节省硬件计算资源,本申请实施例还提供了另一种数据分片方法,具体的可以是对各特征向量的筛选,具体可参见如下实施例。
参见图6,利用改进的k-mean算法来对各待存储数据进行聚类的方式具体如下步骤:
1、特征向量的选取
在本申请实施例中,针对每个待存储数据而言,以天为单位,选取每个待存储数据的特征向量,具体的可以是选取的一天内各待存储数据的查询频率、更新频率、待存储数据大小、待存储数据字段数量、查询待存储数据的用户数和待存储数据的响应平均时间这6个特征向量。
需要说明的是,上述选取的6个特征向量只是本申请实施例的举例,本领域技术人员应该知道,本申请实施例中的特征向量并不局限于上述提到的这6个特征向量,任何可代表待存储数据的特征属性的向量均可作为本申请实施例的特征向量,即任何可代表待存储数据的特征属性的向量均在本申请实施例的保护范围之列。
2、特征向量的计算
选取了各特征向量后,可针对各特征向量进行统计计算,得到每个待存储数据的各特征向量的数值。
具体的例如可以得到如下表1中的各特征向量的数值:
表1:最终样本示例
Figure BDA0003023928020000171
需要说明的是,上述表1中的各特征向量的数值仅是作为一个示例来进行说明,并不代表特征向量只能为这个数值,各特征向量的数值是根据实际应用时所统计得到的一天内的特征向量的数值。
3、特征向量的筛选
在得到各特征向量的数值后,可能存在两个特征向量所代表的特征属性一致,因此需对特征向量进行筛选,具体的筛选过程如下:
对上述表1中的样本集,任意两个特征向量进行相关性分析,其中两个特征向量间的相关系数公式如下所示:
Figure BDA0003023928020000172
其中,ρXY表示两个特征向量的相似度;X,Y表示两个特征向量;D(X)表示X这个特征向量的数值的方差,D(Y)表示Y这个特征向量的数值的方差,Cov(X,Y)表示X和Y两个特征向量的数值的协方差矩阵。
在上述公式中,ρXY越大,代表X和Y两个特征向量越相似。
根据上述公式计算查询频率、更新频率、数据大小、待存储数据字段数量、查询待存储数据的用户数和待存储数据的响应平均时间中任意两个特征向量之间相关性,将相关系数ρXY大于或等于一定阈值(例如阈值可以是0.9)的特征向量只选其一,ρXY越大说明特征向量之间相关性越强,特征向量选取原则是找相关性不大的向量,形成最终的样本集。
4、利用改进k-means聚类算法训练模型
在对各特征向量进行筛选后,可利用筛选后的特征向量,基于改进k-means聚类算法训练模型,利用该模型得到各待存储数据的目标聚类结果。
(1)利用步骤3中筛选后的特征向量,计算每一个待存储数据1天内的查询频率、更新频率、数据大小、待存储数据的字段数量、查询该待存储数据的用户数、待存储数据的响应平均时间,作为此次模型训练的样本集。
(2)样本集划分,8:2的比例分为训练集和测试集。
(3)对训练集的待存储数据应用采用改进的k-menas聚类算法,算法具体步骤如上述实施例中的S1201-S1204。基于上述实施例中的S1201-S1204,得到目标聚类结果,具体的例如可以是得到如下表2所示的目标聚类结果:
表2:聚类后样本示例
Figure BDA0003023928020000181
本申请实施例的技术方案,通过对各特征向量进行筛选,以筛选掉相同特征属性的特征向量,减少了计算量,提高计算效率,节省硬件计算资源。
上述实施例中对各特征向量进行了筛选,并基于筛选后的特征向量,基于改进的k-mean算法对待存储数据进行了聚类,得到目标聚类结果。为了使各存储节点上存储的待存储数据所占资源(资源占用指标)一致,在得到目标聚类结果后,需要计算目标聚类结果中各待存储数据所占资源,具体的可参见如下实施例。
为了使各存储节点上存储的待存储数据所占资源一致,需要计算目标聚类结果中各待存储数据所占资源,本申请还提供了数据分片方法的另一种可实施方式,具体的是计算目标聚类结果中各待存储数据所占资源。
参见图7,计算目标聚类结果中各待存储数据所占资源具体如下步骤:
1、计算各目标聚类结果的各特征向量的均值。
2、计算各特征向量的均值的排名。
3、基于预设的目标聚类结果中各特征向量的权重及均值的排名,计算每个待存储数据的资源占用指标。
4、基于每个待存储数据的资源占用指标,自适配均衡分片。
利用上述方式,可得到每个待存储数据的资源占用指标,基于每个待存储数据的资源占用指标,可对初始哈希环上的各待存储数据的存储位置进行更新,以使初始哈希环上的各存储节点上的各待存储数据所占资源的总和一致,达到各存储节点上的负载均衡的效果。
为了详细介绍计算目标聚类结果中各特征向量的均值,本申请还提供了数据分片方法的另一种可实施方式,具体的可以参见如下实施例。
在一个示例中,可采用如下方式计算目标聚类结果中各特征向量的均值,即步骤S270可包括如下步骤:
S2701、针对每个当前目标聚类结果,基于当前目标聚类结果中各待存储数据的特征向量所对应的特征向量值,确定当前目标聚类结果中各特征向量的均值。
在一个示例中,当前目标聚类结果可以是当前要计算的目标聚类结果,例如,目标聚类结果一共有5个聚类结果,当前要计算第1个聚类结果,则第1个聚类结果为当前目标聚类结果。
假设对于当前目标聚类结果S1,S1具有多个多个待存储数据,即S1={x1,x2,...xk},每个待存储数据xi具有6个特征向量,即xi={a1,a2,a3...a6},每个待存储数据xi均是用其对于的特征向量的值来表示的,即每个待存储数据xi均是一个多维的向量。则S1中的特征向量a1的均值计算公式如下:
Figure BDA0003023928020000191
其中,k为S1中待存储数据的数量。
同理可以计算S1a2、S1a3、S1a4、S1a5、S1a6;S2a1、S2a2、S2a3、S2a4、S2a5、S2a6;..........;S5a1、S5a2、S5a3、S5a4、S5a5、S5a6。这样即可得到每个目标聚类结果中各特征向量的均值。
通过获取待存储数据的多个特征向量,解决了现有技术中仅针对待存储数据的主键的特征值来进行评估待存储数据的范围段,而导致的评估维度单一造成数据倾斜的问题,通过本申请中的多个特征向量,来多维度评估待存储数据的范围段,使待存储数据的范围段的评估更加精确。
为了详细介绍计算每个待存储数据的资源占用指标,本申请还提供了数据分片方法的另一种可实施方式,具体的可以参见如下实施例。
在一个示例中,可采用如下方式计算每个待存储数据的资源占用指标,即步骤S280可包括如下步骤:
S2801、基于各目标聚类结果中各特征向量的均值,按均值大小进行排序,得到各目标聚类结果的排名结果。
在得到各目标聚类结果中各特征向量的均值后,对均值按均值的大小进行排序,得到各目标聚类结果的排序结果。
具体的,针对每个目标聚类结果而言,可按各特征向量{a1,a2,a3...a6}的均值大小进行排序,得到各目标聚类结果中的各特征向量的排名,例如可得到表3。
表3:各目标聚类结果中的各特征向量的排名
Figure BDA0003023928020000201
各目标聚类结果中的各特征向量的排名,在本申请中的具有以下几个含义:
(1)特征向量得分越高,说明特征向量对资源需求量越高;
(2)查询频率高,对计算资源的需求量大,所以排名得分高(即靠前);
(3)更新频率高,对计算资源的需求量大,所以得分高;
(4)数据大小越大,对存储资源需求量大,所以得分高;
(5)数据字段数量多,对存储资源需求量大,所以得分高;
(6)查询该数据的用户数多,说明该数据属于高频数据,所以得分高;
(7)数据响应平均时间长,说明该数据延时高,故需要资源打,所以得分高。
基于以上原则,各特征向量的排名可最终如下表4所示:
表4:各特征向量的最终排名
Figure BDA0003023928020000211
S2802、针对每个当前目标聚类结果,基于当前目标聚类结果中各特征向量的排名结果,以及当前目标聚类结果中各特征向量的预设权重,确定当前目标聚类结果中各待存储数据的资源占用指标。
当前目标聚类结果可以是当前要计算的目标聚类结果。
预设权重可以是预先设置的各目标聚类结果中各特征向量的权重。针对每个目标聚类结果而言,各特征向量的预设权重可以如下表5所示:
表5:特征向量的预设权重评估
Figure BDA0003023928020000212
Figure BDA0003023928020000221
需要说明的是,上述表5所列举的各特征向量的预设权重只是本申请实施例的一个示例,并不代表本申请中的各特征向量的预设权重就是上述表5中的预设权重。在本申请实施例中,各特征向量的预设权重具体的可以根据用户需求自行设置,这里不做限定。
得到各目标聚类结果中各特征向量的排名后,针对每个当前目标聚类结果,基于当前目标聚类结果中各特征向量的排名结果,以及当前目标聚类结果中各特征向量的预设权重,确定当前目标聚类结果中各待存储数据的资源占用指标。具体的可以是根据当前目标聚类结果中各特征向量的排名结果,以及当前目标聚类结果中各特征向量的预设权重,得到当前目标聚类结果中各特征向量的权重,对当前目标聚类结果中各特征向量的权重进行加权计算,即可得到当前目标聚类结果中各待存储数据的资源占用指标。
需要说明的是,因为计算当前目标聚类结果中各待存储数据的资源占用指标时是根据当前目标聚类结果中各特征向量的排名结果,以及当前目标聚类结果中各特征向量的预设权重,得到当前目标聚类结果中各特征向量的权重,当前目标聚类结果中的各待存储数据均具有同样的特征向量,这样计算得到当前目标聚类结果中各特征向量的权重后,对当前目标聚类结果中各特征向量的权重进行加权计算,得到当前目标聚类结果的权重,即当前目标聚类结果中各待存储数据的资源占用指标,因此,针对一个目标聚类结果而言,该目标聚类结果中的各待存储数据的资源占用指标是相同的。
在一个示例中,一个目标聚类结果中的各待存储数据的资源占用指标计算公式如下:
资源占用指标=∑该目标聚类结果中各特征向量的预设权重*均值排名。
本申请实施例的技术方案,提出一种全新的待存储数据的资源占用指标的计算方式,具体的是通过基于各目标聚类结果中各特征向量的均值,按均值大小进行排序,得到各目标聚类结果的排名结果,针对每个当前目标聚类结果,基于当前目标聚类结果中各特征向量的排名结果,以及当前目标聚类结果中各特征向量的预设权重,确定当前目标聚类结果中各待存储数据的资源占用指标,这样通过综合权衡待存储数据的资源占用指标,不同分类的待存储数据有不同的权重,根据特征向量的预设权重及目标聚类结果中各特征向量的排名,计算得到每个待存储数据的资源占用指标,以便后续可基于该资源占用指标,更新初始哈希环上各待存储数据的存储位置,确保初始哈希环上的各存储节点上的负载均衡。
在上述实施例中,经过计算得到了各待存储数据的资源占用指标,为了使初始哈希环上的各存储节点上的负载均衡,需要基于各待存储数据的资源占用指标,来更新初始哈希环上各待存储数据的存储位置。
在一个示例中,在得到了各待存储数据的资源占用指标,为了使初始哈希环上的各存储节点上的负载均衡,本申请实施例还提供了数据分片方法的另一种可实施方式,具体可参见如下实施例。
为了使初始哈希环上的各存储节点上的负载均衡,步骤S290具体可以包括如下步骤:
S2901、获取初始哈希环上各存储节点,以及各存储节点所对应的存储权重。
存储权重可以是当前初始哈希环上的各存储节点上的负载的权重。具体的可以是当前时刻初始哈希环上的各存储节点上的负载的资源占用指标总和。
在得到各待存储数据的资源占用指标后,可获取初始哈希环上的各存储节点,以及各存储节点所对应的存储权重。
S2902、基于各待存储数据的资源占用指标,以及存储权重,更新初始哈希环上各待存储数据的存储位置,以使各存储节点之间的存储权重的差值小于或等于预设差值阈值。
预设差值阈值可以是预先设置的各存储节点之间的存储权重的差值的阈值。
获取各待存储数据的资源占用指标、初始哈希环上的各存储节点和各存储节点所对应的存储权重后,可基于各待存储数据的资源占用指标、初始哈希环上的各存储节点和各存储节点所对应的存储权重来更新初始哈希环上各待存储数据的存储位置,以使各存储节点之间的存储权重的差值小于或等于预设差值阈值,这样基于每个存储节点存储权重相同原则,将待存储数据自适配均衡的分配到每个存储节点,可使每个存储节点的系统资源相对均衡,通过更新初始哈希环上各待存储数据的存储位置,解决了传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜、存储节点之间的负载不均衡的问题,从而提升数据分片效率及系统性能。
本申请实施例的技术方案,通过获取初始哈希环上各存储节点,以及各存储节点所对应的存储权重,基于各待存储数据的资源占用指标,以及存储权重,更新初始哈希环上各待存储数据的存储位置,以使各存储节点之间的存储权重的差值小于或等于预设差值阈值,这样基于每个存储节点存储权重相同原则,将待存储数据自适配均衡的分配到每个存储节点,可使每个存储节点的系统资源相对均衡,通过更新初始哈希环上各待存储数据的存储位置,解决了传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜、存储节点之间的负载不均衡的问题,从而提升数据分片效率及系统性能。
基于上述实施例提供的数据分片方法,相应的,本申请还提供了数据分片装置的具体实施方式,请参见以下实施例。
首先参见图8,本申请实施例提供数据分片装置包括如下模块:
信息获取模块410,用于获取初始哈希环上多个待存储数据,以及各所述待存储数据所对应的各特征向量;
目标聚类结果确定模块420,用于对各所述待存储数据进行聚类,得到各所述待存储数据的目标聚类结果;
均值确定模块430,用于针对每个目标聚类结果,计算所述目标聚类结果中各特征向量的均值;
资源占用指标确定模块440,用于针对各目标聚类结果,基于所述均值,以及所述目标聚类结果中各特征向量的预设权重,确定各所述待存储数据的资源占用指标;
数据分片存储模块450,用于基于各所述待存储数据的资源占用指标,更新所述初始哈希环上各所述待存储数据的存储位置。
本申请实施例的技术方案,通过目标聚类结果确定模块对信息获取模块获取的初始哈希环上的多个待存储数据进行聚类,得到目标聚类结果,基于均值确定模块针对各目标聚类结果,以及各目标聚类结果中各待存储数据的特征向量,计算各目标聚类结果中各特征向量的均值,对各待存储数据的特征向量进行综合评估,综合权衡系统资源,解决现有技术中评估维度单一的问题,基于资源占用指标确定模块针对各目标聚类结果,基于均值,以及目标聚类结果中各特征向量的预设权重,确定各待存储数据的资源占用指标,基于数据分片存储模块基于资源占用指标,更新初始哈希环上各待存储数据的存储位置。这样对初始的一致性哈希算法进行改进,基于每个存储节点存储权重相同原则,将待存储数据自适配均衡的分配到每个存储节点,保证每个存储节点的系统资源相对均衡,通过更新初始哈希环上各待存储数据的存储位置,解决了传统算法在数据分片过程中数据移动量过大、评估维度单一造成数据倾斜、存储节点之间的负载不均衡的问题,从而提升数据分片效率及系统性能。
作为本申请的一种实现方式,为了详细描述对各待存储数据的聚类,上述目标聚类结果确定模块420还可以具体包括:
聚类节点确定单元,用于基于各所述待存储数据、各所述待存储数据的数量和预设聚类数量,确定多个聚类节点;
第一欧式距离确定单元,用于计算各所述待存储数据到各聚类节点的第一欧式距离;
初始聚类结果确定单元,用于将各所述待存储数据放入该待存储数据所对应的所述第一欧式距离最小的聚类中,得到各待存储数据的初始聚类结果;
目标聚类结果确定单元,用于重复执行以下步骤,直至各所述待存储数据所属的聚类不发生变化,得到各待存储数据的目标聚类结果:针对每个初始聚类结果,计算所述初始聚类结果中的各所述待存储数据到各初始聚类结果的中心点的第二欧式距离,将各所述待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中。
作为本申请的一种实现方式,为了详细描述目标聚类结果确定单元对初始聚类结果的重复聚类过程,上述目标聚类结果确定单元还可以具体包括:
中心点确定子单元,用于针对每个初始聚类结果,基于所述初始聚类结果中各所述待存储数据对应的特征向量,以及所述初始聚类结果中各所述待存储数据的数量,确定所述初始聚类结果的中心点;
第二欧式距离确定子单元,用于分别计算各所述待存储数据到各初始聚类结果的中心点的第二欧式距离;
聚类子单元,用于将各所述待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中。
在一个示例中,针对各目标聚类结果中的每个所述待存储数据,每个所述待存储数据均具有预设数量的特征向量。
作为本申请的一种实现方式,为了详细描述目标聚类结果中各特征向量的均值的确定,上述均值确定模块430还可以具体包括:
均值确定单元,用于针对每个当前目标聚类结果,基于所述当前目标聚类结果中各所述待存储数据的特征向量所对应的特征向量值,确定所述当前目标聚类结果中各特征向量的均值。
作为本申请的一种实现方式,为了详细描述各待存储数据的资源占用指标的确定方法,上述资源占用指标确定模块440还可以具体包括:
排名结果确定单元,用于基于各目标聚类结果中各特征向量的均值,按所述均值大小进行排序,得到各目标聚类结果中各特征向量的排名结果;
资源占用指标确定单元,用于针对每个当前目标聚类结果,基于所述当前目标聚类结果中各特征向量的排名结果,以及所述当前目标聚类结果中各特征向量的预设权重,确定所述当前目标聚类结果中各所述待存储数据的资源占用指标。
作为本申请的一种实现方式,为了详细描述各待存储数据存储到初始哈希环上的存储过程,上述装置还可以包括:
主键获取模块,用于获取各待存储数据的主键;
哈希码值确定模块,用于对所述主键进行哈希码值计算,得到各所述待存储数据所对应的哈希码值;
哈希值确定模块,用于对所述哈希码值进行哈希计算,得到各所述待存储数据所对应的哈希值;
存储模块,用于基于所述哈希值,将各所述待存储数据分配至所述初始哈希环上所对应的存储节点中。
作为本申请的一种实现方式,为了详细描述更新各待存储数据在初始哈希环上的存储位置,上述数据分片存储模块450还可以包括:
节点获取单元,用于获取所述初始哈希环上各存储节点,以及各存储节点所对应的存储权重;
数据分片存储单元,用于基于各所述待存储数据的资源占用指标,以及所述存储权重,更新所述初始哈希环上各所述待存储数据的存储位置,以使各存储节点之间的存储权重的差值小于或等于预设差值阈值。
本申请实施例提供的数据分片装置,可以用于执行上述各方法实施例提供的数据分片方法,其实现原理和技术效果类似,为简介起见,在此不再赘述。
基于同一发明构思,本申请实施例还提供了一种电子设备。
图9是本申请实施例提供的一种电子设备的结构示意图。如图9所示,电子设备可以包括处理器501以及存储有计算机程序或指令的存储器502。
具体地,上述处理器501可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器502可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器502可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器502可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器502可在综合网关容灾设备的内部或外部。在特定实施例中,存储器502是非易失性固态存储器。在特定实施例中,存储器502包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器501通过读取并执行存储器502中存储的计算机程序指令,以实现上述实施例中的任意一种数据分片方法。
在一个示例中,电子设备还可包括通信接口503和总线510。其中,如图9示,处理器501、存储器502、通信接口503通过总线510连接并完成相互间的通信。
通信接口503,主要用于实现本发明实施例中各模块、设备、单元和/或设备之间的通信。
总线510包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线510可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该电子设备可以执行本发明实施例中的数据分片方法,从而实现图4-图7任一描述的数据分片方法。
另外,结合上述实施例中的数据分片方法,本发明实施例可提供一种可读存储介质来实现。该可读存储介质上存储有程序指令;该程序指令被处理器执行时实现上述实施例中的任意一种数据分片方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种数据分片方法,其特征在于,所述方法包括:
获取初始哈希环上的多个待存储数据;
对各所述待存储数据进行聚类,得到各所述待存储数据的目标聚类结果;
对于每个目标聚类结果,计算所述目标聚类结果中各特征向量的均值;
针对各目标聚类结果,基于所述均值,以及所述目标聚类结果中各特征向量的预设权重,确定各所述待存储数据的资源占用指标;
基于各所述待存储数据的资源占用指标,更新所述初始哈希环上各所述待存储数据的存储位置。
2.根据权利要求1所述的方法,其特征在于,所述对各所述待存储数据进行聚类,得到各待存储数据的目标聚类结果,包括:
基于各所述待存储数据、各所述待存储数据的数量和预设聚类数量,确定多个聚类节点;
计算各所述待存储数据到各聚类节点的第一欧式距离;
将各所述待存储数据放入该待存储数据所对应的所述第一欧式距离最小的聚类中,得到各待存储数据的初始聚类结果;
重复执行以下步骤,直至各所述待存储数据所属的聚类不发生变化,得到各待存储数据的目标聚类结果:
针对每个初始聚类结果,计算所述初始聚类结果中的各所述待存储数据到各初始聚类结果的中心点的第二欧式距离,将各所述待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中。
3.根据权利要求2所述的方法,其特征在于,所述针对每个初始聚类结果,计算所述初始聚类结果中的各所述待存储数据到各初始聚类结果的中心点的第二欧式距离,将各所述待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中,包括:
针对每个初始聚类结果,基于所述初始聚类结果中各所述待存储数据对应的特征向量,以及所述初始聚类结果中各所述待存储数据的数量,确定所述初始聚类结果的中心点;
分别计算各所述待存储数据到各初始聚类结果的中心点的第二欧式距离;
将各所述待存储数据放入该待存储数据所对应的所述第二欧式距离最小的聚类中。
4.根据权利要求1所述的方法,其特征在于,针对各目标聚类结果中的每个所述待存储数据,每个所述待存储数据均具有预设数量的特征向量;
所述针对各目标聚类结果,计算所述目标聚类结果中各特征向量的均值,包括:
针对每个当前目标聚类结果,基于所述当前目标聚类结果中各所述待存储数据的特征向量所对应的特征向量值,确定所述当前目标聚类结果中各特征向量的均值。
5.根据权利要求1所述的方法,其特征在于,所述针对各目标聚类结果,基于所述均值,以及所述目标聚类结果中各特征向量的预设权重,确定各所述待存储数据的资源占用指标,包括:
基于各目标聚类结果中各特征向量的均值,按所述均值大小进行排序,得到各目标聚类结果中各特征向量的排名结果;
针对每个当前目标聚类结果,基于所述当前目标聚类结果中各特征向量的排名结果,以及所述当前目标聚类结果中各特征向量的预设权重,确定所述当前目标聚类结果中各所述待存储数据的资源占用指标。
6.根据权利要求1所述的方法,其特征在于,在所述获取初始哈希环上的多个待存储数据之前,所述方法还包括:
获取各待存储数据的主键;
对所述主键进行哈希码值计算,得到各所述待存储数据所对应的哈希码值;
对所述哈希码值进行哈希计算,得到各所述待存储数据所对应的哈希值;
基于所述哈希值,将各所述待存储数据分配至所述初始哈希环上所对应的存储节点中。
7.根据权利要求1所述的方法,其特征在于,所述基于各所述待存储数据的资源占用指标,更新所述初始哈希环上各所述待存储数据的存储位置,包括:
获取所述初始哈希环上各存储节点,以及各存储节点所对应的存储权重;
基于各所述待存储数据的资源占用指标,以及所述存储权重,更新所述初始哈希环上各所述待存储数据的存储位置,以使各存储节点之间的存储权重的差值小于或等于预设差值阈值。
8.一种数据分片装置,其特征在于,所述装置包括:
信息获取模块,用于获取初始哈希环上多个待存储数据,以及各所述待存储数据所对应的各特征向量;
目标聚类结果确定模块,用于对各所述待存储数据进行聚类,得到各所述待存储数据的目标聚类结果;
均值确定模块,用于针对每个目标聚类结果,计算所述目标聚类结果中各特征向量的均值;
资源占用指标确定模块,用于针对各目标聚类结果,基于所述均值,以及所述目标聚类结果中各特征向量的预设权重,确定各所述待存储数据的资源占用指标;
数据分片存储模块,用于基于各所述待存储数据的资源占用指标,更新所述初始哈希环上各所述待存储数据的存储位置。
9.一种电子设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-7任一所述的数据分片方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-7任一所述的数据分片方法的步骤。
CN202110410435.3A 2021-04-16 2021-04-16 数据分片方法、装置、电子设备和存储介质 Pending CN115221155A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110410435.3A CN115221155A (zh) 2021-04-16 2021-04-16 数据分片方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110410435.3A CN115221155A (zh) 2021-04-16 2021-04-16 数据分片方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115221155A true CN115221155A (zh) 2022-10-21

Family

ID=83604333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110410435.3A Pending CN115221155A (zh) 2021-04-16 2021-04-16 数据分片方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115221155A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509463A (zh) * 2022-11-15 2022-12-23 北京云成金融信息服务有限公司 一种基于数据中台的均衡化数据存储方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509463A (zh) * 2022-11-15 2022-12-23 北京云成金融信息服务有限公司 一种基于数据中台的均衡化数据存储方法及系统

Similar Documents

Publication Publication Date Title
CN111143597A (zh) 图像检索方法、终端及存储装置
CN112308345A (zh) 通信网络负荷预测方法、装置及服务器
CN115023697A (zh) 数据查询方法、装置及服务器
CN110378389A (zh) 一种Adaboost分类器计算机创建装置
CN116150125A (zh) 结构化数据生成模型的训练方法、装置、设备及存储介质
CN115221155A (zh) 数据分片方法、装置、电子设备和存储介质
CN115358308A (zh) 一种大数据实例约简方法、装置、电子设备及存储介质
CN114610825A (zh) 关联网格集的确认方法、装置、电子设备及存储介质
CN111090401B (zh) 存储设备性能预测方法及装置
CN112203324A (zh) 一种基于位置指纹库的mr定位方法及装置
CN111160385B (zh) 海量位置点聚合的方法、装置、设备及存储介质
CN111414528B (zh) 确定设备标识的方法、装置、存储介质及电子设备
CN117407921A (zh) 基于必连和勿连约束的差分隐私直方图发布方法及系统
CN111984652B (zh) 一种位图数据中空闲块的查找方法及相关组件
CN114791912A (zh) 一种数据处理方法、系统、电子设备及存储介质
CN113988670A (zh) 综合性企业信用风险预警方法及系统
CN110083438B (zh) 事务分发方法、装置、设备和存储介质
CN117251508B (zh) 一种借据批量入账方法、装置、设备及存储介质
CN113194426B (zh) 一种指纹库的更新方法、装置、设备及计算机存储介质
CN116541252B (zh) 一种机房故障日志数据处理方法及装置
CN115269126B (zh) 一种基于余弦相似度的云平台反亲和调度系统
CN113141357B (zh) 一种用于优化网络入侵检测性能的特征选择方法和系统
CN115102909B (zh) 一种基于ihho-fcm算法的网络流量分类方法
CN110781194B (zh) 应用程序的表数据处理方法、装置、电子设备及存储介质
Hamilton et al. An evolutionary approach for constructing multi-stage classifiers

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