CN117591608B - 基于分布式哈希的云原生数据库数据分片方法 - Google Patents
基于分布式哈希的云原生数据库数据分片方法 Download PDFInfo
- Publication number
- CN117591608B CN117591608B CN202410077606.9A CN202410077606A CN117591608B CN 117591608 B CN117591608 B CN 117591608B CN 202410077606 A CN202410077606 A CN 202410077606A CN 117591608 B CN117591608 B CN 117591608B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- matrix
- hash bucket
- data points
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 239000011159 matrix material Substances 0.000 claims abstract description 99
- 238000009826 distribution Methods 0.000 claims abstract description 39
- 238000013508 migration Methods 0.000 claims abstract description 35
- 230000005012 migration Effects 0.000 claims abstract description 35
- 238000013507 mapping Methods 0.000 claims abstract description 17
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 230000004308 accommodation Effects 0.000 claims description 9
- 230000000737 periodic effect Effects 0.000 claims description 8
- 238000010276 construction Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 8
- 238000013467 fragmentation Methods 0.000 description 7
- 238000006062 fragmentation reaction Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013523 data management Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 235000019633 pungent taste Nutrition 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据库技术领域,具体涉及基于分布式哈希的云原生数据库数据分片方法。所述方法包括:步骤1:创建一个数据矩阵来表示目标数据库中的数据点与将数据库中的数据切片后的哈希桶之间的关系;步骤2:对每个数据点进行哈希映射,为每个数据点分配一个哈希桶;步骤3:创建一个分配矩阵,用于记录数据点到哈希桶的分配情况;步骤4:基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度;步骤5:创建数据迁移矩阵;步骤6:对所有的迁移数据点,再次进行哈希映射,为每个迁移数据点分配新的哈希桶,在分配新的哈希桶时,将热点排除在外;然后更新分配矩阵。本发明显著改善分布式数据库系统的性能和可扩展性。
Description
技术领域
本发明属于数据库技术领域,具体涉及基于分布式哈希的云原生数据库数据分片方法。
背景技术
随着云计算和分布式系统的普及,大规模数据存储和管理的需求不断增长。云原生数据库系统的发展在这一领域发挥了关键作用,它们允许数据的高度分布和扩展,以满足不断增长的数据处理需求。然而,随着数据量的快速增加,数据分片(sharding)成为了管理数据的重要技术之一。本文将回顾现有的数据分片技术并指出其中存在的问题,然后介绍了一种新的基于分布式哈希的云原生数据库数据分片方法的发明,以解决这些问题。
在传统的数据库管理系统中,数据存储和查询通常集中在单一的服务器上,这在处理大规模数据时存在显著的性能瓶颈。为了解决这个问题,分布式数据库管理系统应运而生。在分布式数据库中,数据通常被分割成多个片段,每个片段被称为一个数据分片。数据分片的使用可以带来以下好处:
横向扩展性:通过将数据分布在多个节点上,可以实现系统的横向扩展,以满足不断增长的负载需求。
高可用性:将数据分散在多个地理位置的节点上,可以提高系统的可用性,避免单点故障。
负载均衡:合理分配数据分片可以实现负载均衡,确保每个节点的负载相对均匀。
在分布式数据库中,有多种方法用于数据分片,其中一些包括:基于范围的分片:这种方法将数据根据其键值范围划分为不同的分片。例如,可以将按照用户ID范围将用户数据分割成多个分片。然而,这种方法可能导致负载不均匀,因为某些范围可能比其他范围更热门。基于哈希的分片:这是一种常见的分片方法,其中数据的哈希值用于决定它属于哪个分片。哈希分片通常可以实现相对均匀的数据分布,但存在哈希碰撞的问题,即不同的数据可能映射到相同的分片,导致负载不均衡。基于复制的分片:这种方法将数据复制到多个分片上,以提高可用性。然而,数据复制会增加存储和维护的成本,并引入了数据一致性的挑战。
尽管已经存在多种数据分片方法,但现有技术中仍然存在一些问题:
负载不均衡:现有的数据分片方法中,如基于范围的分片和基于哈希的分片,仍然存在负载不均衡的问题。某些分片可能比其他分片更活跃,导致资源浪费和性能下降。
哈希碰撞:基于哈希的分片方法可能会导致哈希碰撞,即多个不同的数据映射到同一个分片上。这可能会导致分片中的数据分布不均匀。
动态负载管理:现有技术中缺乏动态负载管理的机制,无法实时适应不断变化的负载模式。这可能导致资源浪费和性能问题。
复制成本:基于复制的分片方法虽然提高了可用性,但也引入了额外的存储和维护成本,需要考虑一致性和数据同步的问题。
发明内容
本发明的主要目的在于提供基于分布式哈希的云原生数据库数据分片方法,通过创建数据矩阵,动态分配数据点到哈希桶,实现了数据分片的均匀性和负载均衡,同时采用动态负载管理和资源优化,确保系统具有高度的自适应性,降低资源成本,提高数据一致性和可用性,从而显著改善分布式数据库系统的性能和可扩展性。
本发明提供基于分布式哈希的云原生数据库数据分片方法,所述方法包括:
步骤1:创建一个数据矩阵来表示目标数据库中的数据点与将数据库中的数据切片后的哈希桶之间的关系;数据矩阵每一行代表一个数据点,每一列代表一个哈希桶;数据矩阵中的每个元素表示数据点与对应的哈希桶之间的关联强度;
步骤2:对每个数据点进行哈希映射,为每个数据点分配一个哈希桶;
步骤3:创建一个分配矩阵,用于记录数据点到哈希桶的分配情况;分配矩阵中每个元素表示数据点哈希映射到哈希桶的分配概率;
步骤4:基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度;若哈希桶的均匀程度超过设定的标准,则判断该哈希桶拥有过多的数据点,将该哈希桶定义为热点;
步骤5:创建数据迁移矩阵,若一个数据点属于一个热点,且该数据点的分配概率超过设定的阈值,则该数据点被标记为迁移数据点,将数据迁移矩阵中与该数据点对应的元素设置为1;
步骤6:对所有的迁移数据点,再次进行哈希映射,为每个迁移数据点分配新的哈希桶,在分配新的哈希桶时,将热点排除在外;然后更新分配矩阵。
进一步的,步骤1中,定义一个的矩阵/>,其中每一行/>代表一个数据点,每一列/>代表一个哈希桶;矩阵的元素/>代表数据点/>与哈希桶/>之间的关联强度;
;
其中,设定一个时间范围,在设定时间范围内,统计数据点查询哈希桶/>的次数,以及总查询次数,得到:
;/>是一个介于0和1之间的数,表示数据点/>对哈希桶/>的相对查询频率;矩阵/>为数据矩阵。
进一步的,步骤2具体包括:
步骤2.1:计算每个数据点的键的哈希值;/>为下标,表示第/>个数据点;
步骤2.2:定义一个随时间变化的周期扰动函数;/>为时间变量;和/>均为随机数;
步骤2.3:使用如下公式进行哈希映射:
;
其中,为通过哈希映射计算出的哈希桶的编号值,/>为Jump ConsistentHashing算法,使用如下公式进行表示:
。
进一步的,数据矩阵、分配矩阵和数据迁移矩阵的行数相等;数据矩阵、分配矩阵和数据迁移矩阵的列数相等。
进一步的,步骤3具体包括:构建分配矩阵;对于分配矩阵中的每个元素/>,使用如下公式计算得到:
;分配矩阵中每个元素/>表示数据点哈希映射到哈希桶的分配概率;其中,/>为非线性扩展参数。
进一步的,步骤4中基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度的方法包括:计算每个哈希桶的数据点总数;并计算/>的平均值和标准差:
。
进一步的,步骤4中若某个哈希桶的数据点的总数;其中/>是阈值参数;则该哈希桶被认为是热点;对于这些哈希桶,使用下面的公式来确定需要迁移的数据点数量/>:
;
其中,是介于0和1之间的比例因子。
进一步的,步骤6中使用如下公式,更新分配矩阵:
;
其中,为更新后的分配矩阵中的元素;/>为效用函数;/>为容纳量;/>为预设的分配比例值。
进一步的,所述容纳量使用如下公式计算:
;
其中,为容纳量阈值比例,取值范围为2到4。
进一步的,效用函数使用如下公式进行表示:
;
其中,为容纳量/>的均值;/>为调整系数,取值范围为0.4到0.8。
本发明的基于分布式哈希的云原生数据库数据分片方法,具有以下有益效果:本发明方法能够实现数据分片的均匀性和负载均衡。传统的分片方法,如基于范围的分片或基于哈希的分片,往往难以保证分片的数据量分布均匀。而本发明通过创建数据矩阵,动态分配数据点到哈希桶,并实时监测分片的均匀程度,能够确保每个哈希桶中的数据量相对平衡。这使得系统能够更有效地利用资源,降低了数据倾斜和负载不均衡带来的性能问题。本发明的方法通过在数据迁移时排除热点数据点,考虑了数据一致性和可用性的问题。数据一致性对于分布式数据库至关重要,因为数据分片可能导致分片之间的数据不一致。本发明通过确保热点数据点的一致性迁移,减少了数据不一致的风险,提高了系统的可用性和数据完整性。本发明的方法可以有效地降低系统资源成本。传统的复制分片方法会引入大量的存储和维护开销,而本发明通过动态负载管理,可以减少数据复制的需求,从而降低了存储和网络带宽成本。这对于云原生数据库系统来说,尤其具有重要意义,可以降低运营成本。最后但同样重要的是,本发明的方法通过引入数据矩阵和分配矩阵,将复杂的数据分片和负载均衡问题变得更加可管理。系统管理员和开发人员无需深入了解复杂的分布式算法和数据分片策略,就能够轻松实现高效的数据管理和负载均衡。这降低了技术复杂度,提高了系统的易用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的基于分布式哈希的云原生数据库数据分片方法的方法流程示意图。
具体实施方式
下面结合附图及本发明的实施例对本发明的方法作进一步详细的说明。
实施例1:基于分布式哈希的云原生数据库数据分片方法,所述方法包括:
步骤1:创建一个数据矩阵来表示目标数据库中的数据点与将数据库中的数据切片后的哈希桶之间的关系;数据矩阵每一行代表一个数据点,每一列代表一个哈希桶;数据矩阵中的每个元素表示数据点与对应的哈希桶之间的关联强度;
创建一个数据矩阵,以表示目标数据库中的数据点与将数据库中的数据切片后的哈希桶之间的关系。这个矩阵的目的是表示数据点与哈希桶之间的关联强度。关联强度表示了一个数据点与一个哈希桶之间的联系有多强。
针对目标数据库中的每个数据点,创建一行数据矩阵中的一行。每行代表一个数据点。为目标数据库中的每个哈希桶创建数据矩阵中的一列。每列代表一个哈希桶。数据矩阵中的每个元素表示数据点与对应的哈希桶之间的关联强度。这个关联强度的计算可以根据具体的算法来进行,通常可以基于数据点的属性、哈希桶的特性和数据点与哈希桶之间的距离等因素来确定。
通过分析关联强度,可以更精确地判断哪些数据点应该被放入哪些哈希桶中。这有助于实现更均匀的数据分片,避免了出现热点数据集中在某些哈希桶中的问题。通过了解数据点与哈希桶之间的关系,可以更好地分配查询负载,避免某些哈希桶过度负载,提高了负载均衡。基于数据矩阵,可以制定数据分片策略和数据迁移策略。例如,当检测到某个哈希桶中的数据点过多时,可以根据关联强度决定哪些数据点需要迁移,从而更有效地管理数据分片。
步骤2:对每个数据点进行哈希映射,为每个数据点分配一个哈希桶;
在这一步中,每个数据点都会经过哈希映射,被分配到一个特定的哈希桶。这个哈希映射的过程使用哈希函数来完成。哈希函数是一个数学函数,它将输入数据点映射到一个固定范围内的整数值(通常是哈希桶的索引)。哈希函数的选择非常重要,因为它应该具备以下特性:均匀性分布:好的哈希函数应该尽可能地将不同的输入数据均匀地映射到不同的哈希桶,以确保数据在哈希桶中均匀分布。确定性:相同的输入数据应该始终映射到相同的哈希桶,以保持数据的一致性。高效性:哈希函数应该快速计算,以减少映射的时间成本。低碰撞率:碰撞是指两个不同的输入数据映射到了同一个哈希桶的情况,好的哈希函数应该尽量避免碰撞。
通过选择适当的哈希函数,这个方法可以将数据点均匀地分散到不同的哈希桶中,实现了数据的分片。每个哈希桶负责存储一部分数据,这样可以将大型数据库分成多个小块,从而提高了数据库的查询和处理效率。
步骤3:创建一个分配矩阵,用于记录数据点到哈希桶的分配情况;分配矩阵中每个元素表示数据点哈希映射到哈希桶的分配概率;
在这一步,创建了一个分配矩阵,用于记录数据点到哈希桶的分配情况。分配矩阵的每个元素表示了一个数据点哈希映射到对应哈希桶的分配概率。这里的创造性在于引入了分配概率的概念。分配概率反映了每个数据点与每个哈希桶之间的关联程度。它可以根据数据点的特性和访问模式进行动态调整。对于常被访问的数据点,其分配概率可能会较高,而对于不常访问的数据点,分配概率较低。这种动态的分配概率可以帮助实现更好的负载均衡。
步骤4:基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度;若哈希桶的均匀程度超过设定的标准,则判断该哈希桶拥有过多的数据点,将该哈希桶定义为热点;过分析每个哈希桶中的数据点数量来评估数据的分布均匀程度。如果某个哈希桶中的数据点数量超过了设定的标准,就可以判断该哈希桶拥有过多的数据,被定义为热点。过识别热点哈希桶,可以避免这些哈希桶负载过重,从而提高整个系统的负载均衡性。负载均衡是确保数据库高性能的关键因素之一。如果某个节点或服务器出现故障,相关的数据分布可能会不均匀。步骤4可以帮助系统自动识别这种情况,从而触发数据迁移或重新分片的操作,以维护系统的可用性和稳定性。该步骤有助于系统自动适应不断变化的负载情况。当负载不均衡时,它可以触发相应的调整措施,以维持系统的效率和性能。
步骤5:创建数据迁移矩阵,若一个数据点属于一个热点,且该数据点的分配概率超过设定的阈值,则该数据点被标记为迁移数据点,将数据迁移矩阵中与该数据点对应的元素设置为1;
识别并迁移热点数据点可以将负载从过度负载的哈希桶分散到其他哈希桶,从而提高负载均衡,减少了系统中的热点。迁移数据点可以将热点数据分散到不同的位置,减少了对单个哈希桶的访问压力,提高了系统的整体性能。通过动态标记和迁移数据点,系统可以自适应地应对负载变化,保持性能的稳定性。
步骤6:对所有的迁移数据点,再次进行哈希映射,为每个迁移数据点分配新的哈希桶,在分配新的哈希桶时,将热点排除在外;然后更新分配矩阵。
对于所有被标记为迁移数据点的数据,使用哈希函数再次进行哈希映射。在分配新的哈希桶时,确保热点数据点不会被映射到与之前相同的热点哈希桶中,从而避免再次聚集。更新分配矩阵,以反映新的数据点分配情况。这可能涉及修改分配概率或关联强度等信息。通过重新分配热点数据点到新的哈希桶中,可以将负载均匀分散,减轻热点哈希桶的压力,提高负载均衡。将热点数据点排除在新的哈希桶中,确保它们不再聚集在一起,防止再次出现热点。通过更新分配矩阵,系统可以维护数据的一致性,确保数据点被正确映射到新的哈希桶中。
实施例2:步骤1中,定义一个的矩阵/>,其中每一行/>代表一个数据点,每一列/>代表一个哈希桶;矩阵的元素/>代表数据点/>与哈希桶/>之间的关联强度;
;
其中,设定一个时间范围,在设定时间范围内,统计数据点查询哈希桶/>的次数,以及总查询次数,得到:
;/>是一个介于0和1之间的数,表示数据点/>对哈希桶/>的相对查询频率;矩阵/>为数据矩阵。
基于查询次数的统计,矩阵可以量化数据点与哈希桶之间的关联强度。这里使用了相对查询频率的概念,即一个数据点/>对哈希桶/>的相对查询频率是在总查询次数中查询哈希桶/>的次数与总查询次数的比例。
首先,收集在设定的时间范围内数据点查询哈希桶/>的次数,以及总查询次数。根据收集到的数据,计算每个/>的值,用来表示数据点/>与哈希桶/>之间的相对查询频率。步骤1的作用在于构建了一个关联强度矩阵/>,该矩阵在数据库数据分片和负载均衡中具有重要作用:通过分析/>中的关联强度,可以更精确地决定哪些数据点应该与哪些哈希桶关联,从而实现更智能的数据分片。关联强度高的数据点可以分配到相关哈希桶,提高查询效率。基于相对查询频率,可以识别哪些哈希桶经常被查询,哪些不常被查询。这有助于负载均衡策略的制定,避免某些哈希桶过度负载。通过了解数据点的查询模式,系统可以优化查询计划,提高数据库性能,减少响应时间。总之,步骤1中的关联强度矩阵/>提供了有关数据点和哈希桶之间关系的量化信息,可用于优化数据库分片和负载均衡策略,以提高系统性能和效率。
实施例3:步骤2具体包括:
步骤2.1:计算每个数据点的键的哈希值;/>为下标,表示第/>个数据点;
步骤2.2:定义一个随时间变化的周期扰动函数;/>为时间变量;和/>均为随机数;
周期扰动函数是一个随时间变化的函数,由两个随机参数和/>控制。其中,/>用于控制扰动的振幅,而/>用于控制扰动的相位。函数中的/>是一个正弦函数,它是一个周期性函数,其值在 [-1, 1] 之间变化。正弦函数在不同的时间点会产生不同的值,因此可以引入时间变化的随机性。
周期扰动函数引入了随机性,使得哈希桶的选择在时间上具有不确定性。这有助于降低数据点分布的规律性,减少了出现热点数据和负载不均衡的可能性。由于扰动参数和/>都是随机数,并且随时间变化,系统可以根据时间来自适应地改变哈希映射。这意味着系统可以应对不同时间段内负载的变化,以及数据分布的不断演化。哈希函数在处理具有相同哈希键的数据点时,可能会产生碰撞,即它们被映射到相同的哈希桶。通过引入随机扰动,减少了相同哈希键数据点发生碰撞的机会,提高了哈希函数的性能。
总之,步骤2.2中的周期扰动函数增加了哈希映射的随机性和动态性,从而改善了数据库分片和负载均衡的效果。这个特性使系统更具弹性,可以适应不同的负载和数据分布情况,提高了数据库的性能和可伸缩性。
步骤2.3:使用如下公式进行哈希映射:
;
其中,为通过哈希映射计算出的哈希桶的编号值,/>为Jump ConsistentHashing算法,使用如下公式进行表示:
。
公式中的部分是Jump Consistent Hashing算法的核心。这个算法的原理如下:每个数据点都有一个哈希键/>,这个键的值通常是唯一的,用于表示数据点。JCH算法使用这个哈希键/>来计算数据点应该映射到的哈希桶编号。算法的关键思想是将哈希键/>转换成一个介于0和/>之间的整数,其中/>是哈希桶的总数。这个转换的过程通过公式中的分数来实现,它涉及哈希键/>、总数/>以及一个随机数/>。最终,取整数部分,得到数据点所属的哈希桶编号。步骤2.3中的公式的主要作用是将数据点映射到具体的哈希桶,从而实现数据分片和分布。通过哈希映射,每个数据点都被分配到一个特定的哈希桶,从而实现了数据的分片。这样可以确保数据均匀地分布在不同的哈希桶中。哈希映射算法的随机性和分散性有助于均衡负载。不同的数据点被映射到不同的哈希桶,避免了某个哈希桶过度负载的问题,提高了负载均衡性。哈希映射可以使查询数据点的效率提高,因为根据哈希键直接找到对应的哈希桶,而不需要全局搜索。
总之,步骤2.3中的哈希映射公式是实现数据分片和负载均衡的关键步骤,它确保了数据点的均匀分布和高效访问,是数据库系统中重要的技术之一。在这个步骤中,还引入了时间变化的周期扰动,增加了哈希分布的随机性,使系统更适应动态负载和数据分布的变化。
实施例4:数据矩阵、分配矩阵和数据迁移矩阵的行数相等;数据矩阵、分配矩阵和数据迁移矩阵的列数相等。
数据矩阵用于表示目标数据库中的数据点与哈希桶之间的关联强度。每一行代表一个数据点,每一列代表一个哈希桶。因此,数据矩阵的行数对应于数据点的数量,列数对应于哈希桶的数量。分配矩阵用于记录数据点到哈希桶的分配情况,其中每个元素表示数据点哈希映射到哈希桶的分配概率。分配矩阵的行数和列数也应该与数据矩阵相同,以确保每个数据点都有对应的分配概率。数据迁移矩阵用于标记需要迁移的数据点,其中每个元素表示一个数据点是否需要迁移。同样,数据迁移矩阵的行数和列数应与数据矩阵相等,以确保每个数据点都有相应的标记。通过保持这三个矩阵的维度一致,可以更方便地在不同的数据管理和迁移操作中进行对应和计算。这种一致性有助于确保数据的完整性和一致性,并简化了算法的设计和实现。因此,实施例4中的这个条件对于保证系统的正确性和可维护性非常重要。
实施例5:步骤3具体包括:构建分配矩阵;对于分配矩阵中的每个元素/>,使用如下公式计算得到:
;分配矩阵中每个元素/>表示数据点哈希映射到哈希桶的分配概率;其中,/>为非线性扩展参数。
分配矩阵用于记录数据点映射到哈希桶的分配概率。每个元素/>表示数据点分配到哈希桶/>的概率。公式中的分子 /> 包含两部分。第一部分是/>,它表示数据点/>与哈希桶/>的关联强度。第二部分/>引入了非线性扩展,可以增加关联强度的影响。公式中的分母/>是归一化项,用于确保分配概率的总和为1。通过对所有哈希桶的分配概率进行归一化,可以得到正确的分布概率。
步骤3的主要作用在于计算数据点分配到不同哈希桶的分配概率,这对于数据的智能分片和负载均衡至关重要。通过计算分配概率,可以确定每个数据点/>分配到每个哈希桶/>的可能性。这有助于实现智能的数据分片策略,将数据点分配到关联性更高的哈希桶中,提高了查询效率。计算分配概率可以帮助识别哈希桶之间的分配差异,从而有针对性地调整数据的分布,实现负载均衡。分配概率可以反映哈希桶的热度,有助于将热点数据均匀分布到不同的哈希桶中。引入非线性扩展参数/>可以根据关联强度的不同程度来调整分配概率。这允许更灵活地根据数据点与哈希桶之间的关系来分配数据,更好地适应不同数据分布的情况。
实施例6:步骤4中基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度的方法包括:计算每个哈希桶的数据点总数;并计算/>的平均值和标准差:
。
对于每个哈希桶,需要计算该哈希桶中包含的数据点的总数。这个总数反映了每个哈希桶的负载情况,即它包含多少数据点。平均值是所有哈希桶中数据点总数的平均值。通过将每个哈希桶的数据点总数相加并除以哈希桶的总数/>,可以得到平均值。标准差是数据点总数分布的离散程度的度量。它衡量了每个哈希桶的数据点总数与平均值之间的差异。标准差越小表示数据分布越均匀,标准差越大表示数据分布越不均匀。
步骤4中的方法的作用在于评估哈希桶中数据点的分布均匀程度,从而判断哪些哈希桶可能包含过多的数据点,需要进行数据迁移或负载均衡的操作。通过比较每个哈希桶的数据点总数与平均值,可以确定哪些哈希桶的负载超过了平均水平。这些哈希桶可能需要进一步的负载均衡操作,以避免过度负载。标准差/>可以帮助检测数据点分布的不均匀性。如果标准差较大,则表示数据点分布不均匀,可能存在热点数据。这有助于及早发现热点问题并采取措施解决。基于数据点分布均匀程度的评估,系统可以优化查询计划和数据分片策略,以提高数据库性能和响应时间。
实施例7:步骤4中若某个哈希桶的数据点的总数;其中/>是阈值参数;则该哈希桶被认为是热点;对于这些哈希桶,使用下面的公式来确定需要迁移的数据点数量/>:
;
其中,是介于0和1之间的比例因子。
该方法首先确定哪些哈希桶是热点。这是通过比较每个哈希桶的数据点总数与阈值/>来实现的。如果某个哈希桶的数据点总数超过了阈值,那么它被认为是热点哈希桶。对于被认为是热点的哈希桶,需要确定需要迁移的数据点数量/>。这是通过公式计算的,其中使用了比例因子/>和超过阈值的数据点总数与/>的差值。
首先,公式判断哪些哈希桶是热点。如果某个哈希桶的数据点总数超过了阈值,则该哈希桶被标记为热点。这有助于识别潜在的负载不均衡问题。对于被标记为热点的哈希桶,使用公式计算需要迁移的数据点数量/>。这个数量是根据热点哈希桶的负载超过阈值的程度来确定的。通过计算/>,可以确定需要从热点哈希桶中迁移多少数据点到其他哈希桶,以实现负载均衡。通过迁移数据点,可以将负载从热点哈希桶中分散到其他哈希桶,从而实现负载均衡。这有助于提高数据库系统的性能和可伸缩性,减少了热点哈希桶可能导致的查询延迟和性能下降问题。
实施例8:步骤6中使用如下公式,更新分配矩阵:
;
其中,为更新后的分配矩阵中的元素;/>为效用函数;/>为容纳量;/>为预设的分配比例值。
公式中的表示分配矩阵中的元素,它代表数据点/>分配到哈希桶/>的概率。这个概率是在分布式环境下动态调整的。效用函数/>用来衡量哈希桶/>的容纳量/>对于分配的效用或者可用性的度量。通常,效用函数可以根据哈希桶的负载情况、容量利用率等因素来定义。它反映了哈希桶的负载情况。/>是一个预设的参数,用于控制新分配概率和旧分配概率之间的权衡。它决定了新的分配概率在更新中的比例。较大的/>值表示更快的适应新情况,而较小的/>值表示更稳定的分配。通过公式中的/>和/>权衡项,可以动态地根据效用函数/>和容纳量/>来更新分配概率/>。这意味着分配概率会根据哈希桶的负载情况和容量利用率实时调整,以适应系统变化。公式的主要作用之一是实现负载均衡。当某个哈希桶的容量接近饱和或者效用函数表明它已经过载时,分配概率会相应地减小。这意味着系统会减少数据点分配到该哈希桶的可能性,以避免负载过重。这有助于维护系统的性能和可用性。通过合理地定义效用函数和调整/>的值,可以根据系统需求进行资源管理。这允许系统管理员或自动化算法根据实际情况来优化数据分布和负载均衡,以实现更好的资源利用。公式的动态性使系统能够适应不断变化的工作负载,从而提高了系统的可伸缩性。这种适应性有助于确保系统在不同条件下都能够有效地运行。
实施例9:所述容纳量使用如下公式计算:
;
其中,为容纳量阈值比例,取值范围为2到4。
容纳量是哈希桶的一个属性,用来表示哈希桶的容量或可容纳的数据点数量。这个容纳量是根据哈希桶内的数据点总数和其他参数来计算的。容纳量是哈希桶/>的容量估算,表示该哈希桶当前能够容纳的数据点数量。通过计算容纳量,可以估算哈希桶的容量状况。容纳量的计算可用于负载均衡的决策。如果某个哈希桶的容纳量/>接近饱和或者已经超过了预定的阈值,那么系统可以考虑采取负载均衡措施,如数据迁移,以确保数据分布在各个哈希桶之间更均匀。容纳量信息可以用于系统资源管理,帮助系统管理员或自动化算法决定是否需要增加或减少哈希桶的容量,以满足系统性能和资源需求。容纳量计算有助于监控哈希桶的容量利用情况。如果容纳量接近其极限,可能需要采取措施来预防数据丢失或性能下降。
实施例10:效用函数使用如下公式进行表示:
;
其中,为容纳量/>的均值;/>为调整系数,取值范围为0.4到0.8。
公式中的效用函数是一个 S 形曲线,其值介于0和1之间,根据容纳量/>的变化而变化。它采用了 Sigmoid 函数的形式。Sigmoid 函数是一种典型的 S 形曲线函数,它的特点是在输入值变化不大时,输出值变化缓慢,而在输入值远离中间值时,输出值变化迅速。这种函数常用于将输入映射到介于0和1之间的概率或概率类值。效用函数用来衡量哈希桶的容量利用情况。当容纳量/>接近均值/>时,效用函数值接近0.5,表示哈希桶的容量使用正常。当容纳量/>偏离均值/>时,效用函数值会逐渐趋近于0或1,取决于偏离的方向。这使得系统可以根据哈希桶的容量情况进行感知和评估。调整系数/>控制着效用函数曲线的陡峭程度。较小的/>值会导致效用函数曲线相对平滑,容纳量的小变化对效用值的影响相对较小。较大的/>值会导致效用函数曲线更陡峭,容纳量的小变化对效用值的影响更显著。通过调整/>,可以根据系统需求来控制容量利用率的感知程度。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些具体实施方式仅是举例说明,本领域的技术人员在不脱离本发明的原理和实质的情况下,可以对上述方法和系统的细节进行各种省略、替换和改变。例如,合并上述方法步骤,从而按照实质相同的方法执行实质相同的功能以实现实质相同的结果则属于本发明的范围。因此,本发明的范围仅由所附权利要求书限定。
Claims (8)
1.基于分布式哈希的云原生数据库数据分片方法,其特征在于,所述方法包括:
步骤1:创建一个数据矩阵来表示目标数据库中的数据点与将数据库中的数据切片后的哈希桶之间的关系;数据矩阵每一行代表一个数据点,每一列代表一个哈希桶;数据矩阵中的每个元素表示数据点与对应的哈希桶之间的关联强度;
步骤2:对每个数据点进行哈希映射,为每个数据点分配一个哈希桶;
步骤3:创建一个分配矩阵,用于记录数据点到哈希桶的分配情况;分配矩阵中每个元素表示数据点哈希映射到哈希桶的分配概率;
步骤4:基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度;若哈希桶的均匀程度超过设定的标准,则判断该哈希桶拥有过多的数据点,将该哈希桶定义为热点;
步骤5:创建数据迁移矩阵,若一个数据点属于一个热点,且该数据点的分配概率超过设定的阈值,则该数据点被标记为迁移数据点,将数据迁移矩阵中与该数据点对应的元素设置为1;
步骤6:对所有的迁移数据点,再次进行哈希映射,为每个迁移数据点分配新的哈希桶,在分配新的哈希桶时,将热点排除在外;然后更新分配矩阵;
步骤1中,定义一个的矩阵/>,其中每一行/>代表一个数据点,每一列/>代表一个哈希桶;矩阵的元素/>代表数据点/>与哈希桶/>之间的关联强度;
;
其中,设定一个时间范围,在设定时间范围内,统计数据点查询哈希桶/>的次数,以及总查询次数,得到:
;/>是一个介于0和1之间的数,表示数据点/>对哈希桶/>的相对查询频率;矩阵/>为数据矩阵;
步骤3具体包括:构建分配矩阵;对于分配矩阵中的每个元素/>,使用如下公式计算得到:
;分配矩阵中每个元素/>表示数据点哈希映射到哈希桶的分配概率;其中,/>为非线性扩展参数。
2.如权利要求1所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,步骤2具体包括:
步骤2.1:计算每个数据点的键的哈希值;/>为下标,表示第/>个数据点;
步骤2.2:定义一个随时间变化的周期扰动函数;/>为时间变量;和/>均为随机数;
步骤2.3:使用如下公式进行哈希映射:
;
其中,为通过哈希映射计算出的哈希桶的编号值,/>为Jump ConsistentHashing算法,使用如下公式进行表示:
;
其中,为一个随机数。
3.如权利要求2所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,数据矩阵、分配矩阵和数据迁移矩阵的行数相等;数据矩阵、分配矩阵和数据迁移矩阵的列数相等。
4.如权利要求3所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,步骤4中基于每个哈希桶的数据点的数量,计算所有哈希桶中的数据点的分布均匀程度的方法包括:计算每个哈希桶的数据点总数;并计算/>的平均值和标准差:
。
5.如权利要求4所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,步骤4中若某个哈希桶的数据点的总数;其中/>是阈值参数;则该哈希桶被认为是热点;对于这些哈希桶,使用下面的公式来确定需要迁移的数据点数量/>:
;
其中,是介于0和1之间的比例因子。
6.如权利要求5所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,步骤6中使用如下公式,更新分配矩阵:
;
其中,为更新后的分配矩阵中的元素;/>为效用函数;/>为容纳量;/>为预设的分配比例值。
7.如权利要求6所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,所述容纳量使用如下公式计算:
;
其中,为容纳量阈值比例,取值范围为2到4。
8.如权利要求7所述的基于分布式哈希的云原生数据库数据分片方法,其特征在于,效用函数使用如下公式进行表示:
;
其中,为容纳量/>的均值;/>为调整系数,取值范围为0.4到0.8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410077606.9A CN117591608B (zh) | 2024-01-19 | 2024-01-19 | 基于分布式哈希的云原生数据库数据分片方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410077606.9A CN117591608B (zh) | 2024-01-19 | 2024-01-19 | 基于分布式哈希的云原生数据库数据分片方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117591608A CN117591608A (zh) | 2024-02-23 |
CN117591608B true CN117591608B (zh) | 2024-04-30 |
Family
ID=89918832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410077606.9A Active CN117591608B (zh) | 2024-01-19 | 2024-01-19 | 基于分布式哈希的云原生数据库数据分片方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117591608B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325525A (en) * | 1991-04-04 | 1994-06-28 | Hewlett-Packard Company | Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time |
JP2003030040A (ja) * | 2001-07-12 | 2003-01-31 | Nec Commun Syst Ltd | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
CN105095212A (zh) * | 2014-04-22 | 2015-11-25 | 华为技术有限公司 | 创建哈希表的方法和设备 |
CN105117402A (zh) * | 2015-07-16 | 2015-12-02 | 中国人民大学 | 基于分段保序哈希的日志数据分片方法及装置 |
CN110489419A (zh) * | 2019-08-08 | 2019-11-22 | 东北大学 | 一种基于多层局部敏感哈希的k最近邻近似查询方法 |
CN112835907A (zh) * | 2021-02-08 | 2021-05-25 | 兴业数字金融服务(上海)股份有限公司 | 多次散列存储方法及系统 |
CN114661680A (zh) * | 2022-05-25 | 2022-06-24 | 蓝象智联(杭州)科技有限公司 | 一种私有数据隐匿共享方法 |
CN116303343A (zh) * | 2023-01-09 | 2023-06-23 | 天津南大通用数据技术股份有限公司 | 数据分片方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809722B2 (en) * | 2005-05-09 | 2010-10-05 | Like.Com | System and method for enabling search and retrieval from image files based on recognized information |
US20070288526A1 (en) * | 2006-06-08 | 2007-12-13 | Emc Corporation | Method and apparatus for processing a database replica |
CN103593477A (zh) * | 2013-11-29 | 2014-02-19 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
-
2024
- 2024-01-19 CN CN202410077606.9A patent/CN117591608B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325525A (en) * | 1991-04-04 | 1994-06-28 | Hewlett-Packard Company | Method of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum time |
JP2003030040A (ja) * | 2001-07-12 | 2003-01-31 | Nec Commun Syst Ltd | オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式 |
CN105095212A (zh) * | 2014-04-22 | 2015-11-25 | 华为技术有限公司 | 创建哈希表的方法和设备 |
CN105117402A (zh) * | 2015-07-16 | 2015-12-02 | 中国人民大学 | 基于分段保序哈希的日志数据分片方法及装置 |
CN110489419A (zh) * | 2019-08-08 | 2019-11-22 | 东北大学 | 一种基于多层局部敏感哈希的k最近邻近似查询方法 |
CN112835907A (zh) * | 2021-02-08 | 2021-05-25 | 兴业数字金融服务(上海)股份有限公司 | 多次散列存储方法及系统 |
CN114661680A (zh) * | 2022-05-25 | 2022-06-24 | 蓝象智联(杭州)科技有限公司 | 一种私有数据隐匿共享方法 |
CN116303343A (zh) * | 2023-01-09 | 2023-06-23 | 天津南大通用数据技术股份有限公司 | 数据分片方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
Sailesh Kumar .et al.Segmented hash: an efficient hash table implementation for high performance networking subsystems.ANCS '05: Proceedings of the 2005 ACM symposium on Architecture for networking and communications systems.2005,第91–103页. * |
哈希桶Variety-B树的数据流处理方法;王竹荣等;西安理工大学学报;20170330;第13-17页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117591608A (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102520110B1 (ko) | 데이터베이스 쿼리 처리를 향상시키기 위한 프루닝 인덱스 | |
US10083179B2 (en) | Adjusting extension size of a database table using a volatile database table attribute | |
US20160088072A1 (en) | Balancing load across cache servers in a distributed data store | |
Sait et al. | Cuckoo search based resource optimization of datacenters | |
US11113286B2 (en) | Generation of pruning index for pattern matching queries | |
US11016975B1 (en) | Scan set pruning for pattern matching queries | |
JP2005196602A (ja) | 無共有型データベース管理システムにおけるシステム構成変更方法 | |
WO2016162338A1 (en) | Load balancing for large in-memory databases | |
US11928108B2 (en) | Object dependency status tracking in a cloud system | |
Ma et al. | Dependency-aware data locality for MapReduce | |
CN105975345A (zh) | 一种基于分布式内存的视频帧数据动态均衡存储管理方法 | |
CN109976879B (zh) | 一种基于资源使用曲线互补的云计算虚拟机放置方法 | |
CN112765177B (zh) | 一种基于负载驱动的分布式图数据分割和复制方法 | |
US20220237192A1 (en) | Predictive resource allocation for distributed query execution | |
Liao et al. | Block placement in distributed file systems based on block access frequency | |
CN117591608B (zh) | 基于分布式哈希的云原生数据库数据分片方法 | |
Gao et al. | Compact, popularity-aware and adaptive hybrid data placement schemes for heterogeneous cloud storage | |
Guo et al. | Handling data skew at reduce stage in Spark by ReducePartition | |
KR102054068B1 (ko) | 그래프 스트림에 대한 실시간 분산 저장을 위한 분할 방법 및 분할 장치 | |
CN113282241A (zh) | 一种基于Ceph分布式存储的硬盘权重优化方法及装置 | |
CN116166755B (zh) | 一种搜索引擎数据库管理方法、装置及搜索引擎数据库 | |
KR102168464B1 (ko) | 인메모리 캐시를 관리하는 방법 | |
CN113282524B (zh) | 一种缓存分片的配置方法、装置以及存储介质 | |
Duan et al. | Improving Server Re-Consolidation for Datacenters via Resource Exchange and Load Adjustment | |
US20230222121A1 (en) | Clustering and compaction of materialized views on a database 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |