CN117909416A - 面向分布式数据库的自调节分区键推荐系统及方法 - Google Patents
面向分布式数据库的自调节分区键推荐系统及方法 Download PDFInfo
- Publication number
- CN117909416A CN117909416A CN202410098314.3A CN202410098314A CN117909416A CN 117909416 A CN117909416 A CN 117909416A CN 202410098314 A CN202410098314 A CN 202410098314A CN 117909416 A CN117909416 A CN 117909416A
- Authority
- CN
- China
- Prior art keywords
- data
- future
- management system
- workload
- database management
- 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
- 238000005192 partition Methods 0.000 title claims abstract description 106
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000000638 solvent extraction Methods 0.000 claims abstract description 40
- 238000012544 monitoring process Methods 0.000 claims abstract description 14
- 230000008859 change Effects 0.000 claims abstract description 12
- 238000003066 decision tree Methods 0.000 claims abstract description 12
- 238000005070 sampling Methods 0.000 claims description 27
- 238000007477 logistic regression Methods 0.000 claims description 17
- 238000013528 artificial neural network Methods 0.000 claims description 12
- 238000012549 training Methods 0.000 claims description 10
- 230000010076 replication Effects 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 8
- 230000000306 recurrent effect Effects 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000013459 approach Methods 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 239000013598 vector Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 238000007637 random forest analysis Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供面向分布式数据库的自调节分区键推荐系统及方法,涉及分布式关系型数据库技术领域。该系统包括:工作负载预测模块用于获取历史工作负载预测并预测未来工作负载,判断未来工作负载的特征是否发生变化;数据监测模块用于计算并监测每次事务执行完毕后数据库系统中各个表的大小降序排序是否发生变化以及各个表的相对大小权重是否超过预设值;代价估计模块用于根据基于决策树的XGBoost模型构建的预测模型来估计在数据分区方式下SQL查询语句的执行时间;分区键推荐模块用于根据未来工作负载为数据库管理系统中的每张表确定对应的分区方案,重新部署数据库管理系统中的数据;提高了分布式数据库管理系统的全局性能。
Description
技术领域
本发明涉及分布式关系型数据库技术领域,尤其涉及一种面向分布式数据库的自调节分区键推荐系统及方法。
背景技术
随着信息技术的飞速发展,企业和组织在日常运营中会产生大量的数据,而这些数据往往需要被存储、管理和查询,这就推动了数据库技术的不断进步。传统集中式数据库往往依托于高端硬件且无法横向拓展,容易达到性能上限,存在I/O、存储等瓶颈。而分布式数据库系统因其自身的横向扩展性和高可用性成为处理大规模数据的关键工具。然而,如何有效地管理和提升分布式数据库系统的性能仍是一个复杂的问题,尤其是在面对不断变化的工作负载和数据的情况下。
分布式数据库系统通过将数据分布在多个节点上来提高系统自身性能和系统的可扩展性。其中每个节点都用于存储部分数据,在查询数据时需要节点之间相互协同工作。但分布式数据库系统也带来了新的问题,比如在执行连接操作时,如果需要连接的数据分布在不同的节点上,这就需要将参与连接的数据传输到同一个节点上才能进行计算,而数据在节点间的传输就会带来网络中的通信代价,从而降低分布式数据库系统的性能。此时需要通过合理的数据分区使参与连接的数据尽可能地位于同一节点上,仅在节点间传输中间结果,以减少查询时数据传输和节点之间的通信负担,提高查询效率。因此,数据分区的设计和动态管理至关重要,而分区键的选择更是直接影响了数据库的查询性能;随着时间的推移,工作负载和数据可能会发生变化,导致最初选择的分区键不再适用于当前的情况。由于企业中应用的工作负载通常是动态的,在不同时间段会有不同的查询模式和数据访问模式,如果数据库无法适应这种动态变化,就可能产生由于性能瓶颈带来的资源浪费。
传统的分布式数据库系统通常采用静态的数据分区方法,即在数据库的初始化阶段或架构设计阶段选择分区键,并假定这个选择在整个数据库的生命周期内都是最优的。这种静态分区的方法存在明显的局限性,即一旦选择了分区键,通常就是固定不变的,这意味着该数据库系统难以适应工作负载和数据的动态变化。而随着企业的发展,往往会引入新的业务场景,这就需要重新考虑数据分区的最优选择;同时,传统的静态分区方法通常采用以主键为分区键的方式,并没有考虑工作负载。
发明内容
针对上述现有技术的不足,本发明提出了一种面向分布式数据库的自调节分区键推荐系统及方法,旨在设计一个可以识别不同业务场景,实时监测工作负载、数据变动并根据工作负载预测结果和数据监测结果自动优化数据分区配置的分区键管理系统。
本发明一方面提出了一种面向分布式数据库的自调节分区键推荐系统,该系统包括:工作负载预测模块、分区键推荐模块、数据监测模块和代价估计模块;
所述工作负载预测模块,用于获取数据库管理系统的历史工作负载,并根据历史工作负载预测未来工作负载,判断未来工作负载的特征是否发生变化,若是则将未来工作负载发送到分区键推荐模块,若否则结束本次事务执行;
所述数据监测模块,用于计算并监测每次事务执行完毕后数据库系统中各个表的大小降序排序是否发生变化以及各个表的相对大小权重是否超过预设值,若是则运行代价估计模块;若否则认为事务执行结束并重新按照表大小进行降序排序;
所述代价估计模块,用于根据基于决策树的XGBoost模型构建的预测模型来估计在数据分区方式下SQL查询语句的执行时间;
所述分区键推荐模块,用于根据未来工作负载为数据库管理系统中的每张表确定对应的分区方案,并对数据库管理系统进行重分区,重新部署数据库管理系统中的数据;
本发明另一方面提出了一种面向分布式数据库的自调节分区键推荐方法,该方法包括如下步骤:
步骤1:获取数据库管理系统的历史工作负载并转化为历史查询模板,对历史查询模板进行聚类,并预测未来任意一段时间内的未来查询模板的聚类数据是否发生变化,若是则生成未来工作负载,若否则结束本次事务执行;
步骤2:获取数据库管理系统中所有表的大小并进行降序排序,并计算每个表在数据库管理系统中的相对大小权重;
步骤3:构建SQL查询语句,为待分区的数据选择分区方式并执行SQL查询语句,生成数据分布状态并记录SQL查询语句的执行时间,采用基于决策树的XGBoost模型构建预测模型,估计SQL查询语句的运行时间;
步骤4:获取未来工作负载,根据未来工作负载为数据库管理系统中的每张表确定分区方案,并对数据库管理系统进行重分区,重新部署数据库管理系统中的数据;
步骤5:每次事务执行完毕后,重新执行步骤2,并判断某个表的相对大小权重变化是否超过预设值以及该表排序位次与上一次事务执行后的该表排序位次相比是否发生变化,若是则执行步骤3;若否则结束本次事务执行;
所述步骤1进一步包括:
步骤1.1:获取数据库管理系统的历史工作负载,并将数据库管理系统中的历史工作负载转化为历史查询模板;
步骤1.2:对于每个历史查询模板,记录该历史查询模板到达数据库管理系统的时间,并统计在一个时间周期内的各历史查询模板对应的SQL语句条数;
步骤1.3:在每个时间周期内采用聚类算法对历史查询模板按照语义进行聚类,得到历史查询模板的聚类数据;
步骤1.4:根据历史查询模板的聚类数据,采用逻辑回归LR模型和循环神经网络RNN模型预测未来任意一段时间内的未来查询模板的聚类数据;
步骤1.5:根据预测到的未来查询模板的聚类数据,求解未来查询模板的到达率,并判断未来查询模板的到达率是否发生变化,若是则生成未来工作负载,若否则结束本次事务执行;
所述将数据库中的历史工作负载转化为历史查询模板的过程包括:将历史工作负载中所有查询语句中的常数项替换为抽象符号,并将所有的关键字转换成大写形式,得到历史查询模板;
所述语义指的是访问相同的表、使用相同的谓词的查询模板;所述聚类数据,包括:聚类得到的集群中心、所有集群中包含的历史查询模板的数量以及该集群对应的时间周期;
所述采用逻辑回归LR模型和循环神经网络RNN模型预测未来任意一段时间内的未来工作负载的聚类数据的过程为:将历史查询模板的聚类数据分别输入逻辑回归LR模型和循环神经网络RNN模型中进行预测,输出两组预测结果并计算平均值,得到未来任意一段时间内的未来查询模板的聚类数据,其中所述预测结果包括:未来任意一段时间内的周期个数、加入未来查询模板后的集群中心以及集群中未来查询模板的数量;
所述步骤3进一步包括:
步骤3.1:采用基于拉丁立方采样和简单随机采样方法混合的混合采样方法对数据库管理系统中的表及表中的数据类型相同的属性进行综合采样,构建SQL查询语句;
步骤3.2:将待分区的数据导入到数据库管理系统,并选择不同的数据分区方式分别执行SQL查询语句,生成数据分布状态并记录在不同数据分区方式下SQL查询语句的执行时间;
步骤3.3:构建分区数据集,包括SQL查询语句、数据分布状态和与该数据分布状态对应的SQL查询语句的运行时间;
步骤3.4:采用基于决策树的XGBoost模型作为预测模型,利用分区数据集训练预测模型,得到训练好的预测模型,利用训练好的预测模型估计SQL查询语句的运行时间;
所述数据分区方式,包括:全表复制和分区键分区方式;
所述步骤4进一步包括:
步骤4.1:在数据库管理系统中寻找用于全表复制的表;
步骤4.2:获取未来工作负载并构建无向多重图,确定数据分区方案;
步骤4.3:按照数据分区方案,对数据库管理系统进行重分区,重新部署数据库管理系统中的数据;
所述步骤4.2进一步包括:
步骤4.2.1:将未来工作负载中参与连接的表作为顶点,当存在任意两个表中有一对属性参与连接时,就在表示这两个表的两个顶点间加一条边;当存在任意两个表中有若干对属性参与连接时,就在表示这两个表的两个顶点间加若干条边;
步骤4.2.2:根据未来工作负载中参与连接的表和表中参与连接的属性构建新的SQL查询语句,将数据库管理系统中当前的数据分布状态和新的SQL查询语句输入训练好的预测模型中,并将新的SQL查询语句的执行时间作为对应边上的权重,重复上述步骤,直至确定图中所有边的权重为止,构建无向多重图;
步骤4.2.3:计算未来工作负载中每个表中的每个参与连接的属性的权重;
步骤4.2.4:将每条边对应的属性的权重相加作为该条边的最终权重;
步骤4.2.5:将图中所有边按最终权重从大到小的顺序进行排序,构成一个可选择边的集合,同时初始化一个空集作为用于存放选择出来的边的结果集合;
步骤4.2.6:每次从可选择集合中选择最终权重最大的边放到结果集合中,并将该边上对应的属性作为与该边两个顶点对应的表的分区键,并从可选择集合中去掉与该边两个顶点相连的所有边;重复当前步骤,直到可选择集合为空结束;
步骤4.2.7:确定分区方案,包括:对步骤4.1中选择的表进行全表复制;对步骤4.2.6中新的结果集合进行遍历,遍历该集合中的边并将边上的属性作为该边的两个顶点对应的表的分区键;对于未来工作负载中剩余未分配分区键的表,选择该表的主键作为分区键。
采用上述技术方案所产生的有益效果在于:
(1)提升工作负载预测的准确性:针对数据分区问题,本发明方法将工作负载中参与连接的具有相同表和属性的查询模板看作语义相同的模板,通过引入逻辑回归(Logistic regression,LR)模型和循环神经网络(Recurrent Neural Network,RNN)模型的组合实现了对历史模板到达率的高效预测;同时,RNN模型能够更好地捕捉非线性系统的复杂模式,从而显著提升工作负载预测的准确性。
(2)具有实时适应性和动态调整能力:当本发明提出的面向分布式数据库的自调节分区键推荐系统一旦预测到未来一段时间内查询模板的到达率发生变化,该系统就会实时触发分区键推荐模块的重新运行;使得该系统具备对工作负载动态变化的敏感性,使得分布式数据库能够实时适应动态变化的查询需求,始终保持系统的性能高效。
(3)提升分布式数据库的全局性能:本发明方法通过重新寻找合适的分区键,有效地调整了分布式数据库底层数据的分区,进而提高了分布式数据库的全局性能,包括:查询效率的提升、数据分布的优化、以及整体分布式数据库在当前工作负载下更高的性能水平。
附图说明
图1为本实施方式中面向分布式数据库的自调节分区键推荐系统的结构图;
图2为本实施方式中面向分布式数据库的自调节分区键推荐方法的流程图;
图3为本实施方式中工作负载预测模块的工作流程图;
图4为本实施方式中数据监测模块的工作流程图;
图5为本实施方式中代价估计模块的工作流程图;
图6为本实施方式中分区键推荐模块的工作流程图。
具体实施方式
为了便于理解本申请,下面结合附图和实施方式,对本发明的具体实施方式作进一步详细描述。以下实施方式用于说明本发明,但不用来限制本发明的范围。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。
本实施方式的一种面向分布式数据库的自调节分区键推荐系统,如图1所示,该系统包括:工作负载预测模块、分区键推荐模块、数据监测模块和代价估计模块;其中,所述工作负载预测模块的输出端与所述分区键推荐模块的输入端连接,所述数据监测模块依次连接所述代价估计模块和所述分区键推荐模块;
所述工作负载预测模块,用于获取数据库管理系统的历史工作负载,并根据历史工作负载预测未来工作负载,判断未来工作负载的特征是否发生变化,若是则将未来工作负载发送到分区键推荐模块,若否则结束本次事务执行。
所述数据监测模块,用于计算并监测每次事务执行完毕后数据库系统中各个表的大小排序是否发生变化以及各个表的相对大小权重是否超过预设值,若是则运行代价估计模块;若否则认为事务结束并重新按照表大小进行降序排序。
在本实施方式中,按照数据库系统中各个表的大小降序排序,判断每一次事务执行后的排序结果是否发生变化且是否有一个或多个表占数据库总大小的权重变化大于预设的3%,若是则运行代价估计模块;若否则认为事务结束并重新按照表大小进行降序排序。
所述代价估计模块,用于根据基于决策树的XGBoost模型构建的预测模型来估计在选定的数据分区方式下SQL查询语句的执行时间。
所述分区键推荐模块,用于根据未来工作负载为数据库管理系统中的每张表确定对应的分区方案,并对数据库管理系统进行重分区,重新部署数据库管理系统中的数据。
本实施方式的一种面向分布式数据库的自调节分区键推荐方法,如图2所示,该方法包括如下步骤:
步骤1:获取数据库管理系统的历史工作负载并转化为历史查询模板,对历史查询模板进行聚类,并预测未来任意一段时间内的未来查询模板的聚类数据是否发生变化,若是则生成未来工作负载,若否则结束本次事务执行。
在本实施方式中,如图3所示,为寻找优化的分区配置,使用数据库管理系统(Database Management System,DBMS)中的历史工作负载来预测未来工作负载的特征;首先将获取的历史工作负载中的查询语句转化为历史查询模板,降低计算复杂度和存储开销。同时,记录历史查询模板的到达率,即历史查询模板在一段时间内到达的频率。然后,根据历史查询模板访问的表和历史查询模板使用的谓词,对历史查询模板进行聚类,进一步压缩工作负载。最终利用逻辑回归模型和循环神经网络模型来预测未来查询模板的集群中心及集群中所含的查询模板数量是否发生变化。
步骤1.1:获取数据库管理系统的历史工作负载,并将数据库管理系统中的历史工作负载转化为历史查询模板。
在本实施方式中,通过Python3合理地设置数据的来源以及数据的去向,如通过读取工作负载、读取查询模板等方式获取数据,以及利用获取的历史工作负载对未来工作负载进行预测等数据去向,实现面向分布式数据库的自调节分区键推荐方法。
所述将数据库中的历史工作负载转化为历史查询模板的过程包括:将历史工作负载中所有查询语句中的常数项替换为抽象符号,并将所有的关键字转换成大写形式,得到历史查询模板;
在本实施方式中,历史工作负载是历史查询语句的集合,利用历史工作负载中的查询语句完成历史查询模板的转换,将Where语句中的常数替换为抽象符号,例如将查询语句“SELECT*FROM a WHERE b=5;”转化成查询模板“SELECT*FROM a WHERE id=$;”。
步骤1.2:对于每个历史查询模板,记录该历史查询模板到达数据库管理系统的时间,并统计在一个时间周期内的各历史查询模板对应的SQL语句条数。
在本实施方式中,统计一个时间周期内的各历史查询模板对应的结构化查询语言(Structured Query Language,SQL)的语句条数,其中时间周期的长短与待办理的业务和查询语句的数量有关,具体的时间周期长短根据应用的业务场景调整,比如有的业务是以天为周期;有的业务是以小时为周期。
步骤1.3:在每个时间周期内采用聚类算法对历史查询模板按照语义进行聚类,得到历史查询模板的聚类数据。
所述语义指的是访问相同的表、使用相同的谓词的查询模板。
所述聚类数据,包括:聚类得到的集群中心、所有集群中包含的历史查询模板的数量以及该集群对应的时间周期。
在本实施方式中,对工作负载进行预测的目的是在发现未来工作负载特征有变化时,通过推荐出合适的数据分区来调整数据在数据库中的底层分布,从而提升数据库的查询效率。由于数据分区关心的是查询语句访问的表和使用的谓词,故将访问相同的表、使用相同谓词的查询模板视为语义相同的模板。
在本实施方式中,采用一种具有噪声的基于密度的聚类方法(Density-BasedSpatial Clustering of Applications with Noise,DBSCAN)对历史查询模板按照语义进行聚类,DBSCAN是一种无监督的机器学习聚类算法。对于任意一个时间周期,在采用聚类算法对历史查询模板按照语义进行聚类的过程中,计算待聚类点与聚类生成的集群中心点的距离,决定将待聚类点归入某个集群或新生成一个集群,直至所有历史查询模板都完成聚类;其中待聚类点指的是待聚类的历史查询模板的向量表示,所述待聚类点可以通过自然语言处理技术(Natural Language Processing,NLP)和文本嵌入技术将该历史查询模板对应的SQL语句的文本数据映射为向量表示得到;也可以通过对历史查询模板访问的表和使用的谓词进行0-1编码得到历史查询模板的向量表示;所述聚类中心点可以通过计算集群中所有向量表示在每个向量维度上的均值得到。
对于每个待聚类的历史查询模板,将该历史查询模板的向量表示与任意集群中心点的向量表示的余弦值作为相似分数,分别计算该历史查询模板与所有集群中心点的相似分数,并判断出所有大于设定阈值的相似分数;将该历史查询模板分配给所有大于设定阈值的相似分数中最大相似分数对应的集群,重新计算该集群的集群中心点;当该历史查询模板与所有集群中心点之间的相似分数均小于设定阈值或者该历史查询模板是第一个到达数据库管理系统的查询模板,则根据该历史查询模板创建新集群并将该查询模板视为新集群的唯一成员。
在聚类的同时,记录每一个集群中包含的历史查询模板的数量。
步骤1.4:根据历史查询模板的聚类数据,采用逻辑回归(Logistic regressionLR)模型和循环神经网络(Recurrent Neural Network,RNN)模型预测未来任意一段时间内的未来查询模板的聚类数据。
在本实施方式中,采用了两种不同的预测模型,分别是逻辑回归模型和循环神经网络模型,其中逻辑回归模型是一种简单的线性模型,该模型具备封闭解,无需额外优化步骤即可找到全局最优解;而循环神经网络模型及其变体长短时记忆网络(Long Short-TermMemory,LSTM)模型在预测非线性系统的模式方面表现出色。LSTM包含输入门、遗忘门、细胞状态、和输出门等组件,这些组件协同工作以决定是否保留较旧的信息,并确定何时将其输出到网络中,从而使网络能够自动学习时间序列中数据点的周期性和重复趋势。
在实际应用中,同时运行逻辑回归模型和LSTM模型,将它们的预测结果进行均值计算,计算的结果作为最终的预测结果。这种双模型的融合可以充分发挥两者的优势,提高整体的预测性能。逻辑回归模型能够快速收敛到全局最优解,而LSTM模型则能够更好地捕捉非线性关系,从而提供更为准确的预测。将历史查询模板的聚类数据分别输入逻辑回归LR模型和循环神经网络RNN模型中进行预测,输出两组预测结果并计算平均值,得到未来任意一段时间内的未来查询模板的聚类数据,其中所述预测结果包括:未来任意一段时间内的周期个数、加入未来查询模板后的集群中心以及集群中未来查询模板的数量。
步骤1.5:根据预测到的未来查询模板的聚类数据,求解未来查询模板的到达率,并判断未来查询模板的到达率是否发生变化,若是则生成未来工作负载,若否则结束本次事务执行。
在本实施方式中,当预测到未来查询模板的聚类数据中的未来查询模板的集群中心及集群中所含的查询模板数量发生变化时,意味着未来工作负载的特征也发生了变化,此时需要使用人员根据应用场景和数据量判断是否需要重新寻找合适的数据分区方式;若使用人员判断未来工作负载的特征变化较大,即未来工作负载的特征超出使用人员规定的合理范围时,需要重新进行数据分区并根据预测到的未来查询模板的聚类数据求解未来查询模板的到达率,利用未来查询模板的向量表示得到未来查询模板及其数量和到达的时间周期,进而推断出未来查询模板的到达率。
步骤2:获取数据库管理系统中所有表的大小并进行降序排序,并计算每个表在数据库管理系统中的相对大小权重。
在本实施方式中,如图4所示,利用SQL语句获取数据库管理系统数据库中所有表的大小,将数据库管理系统中的表按照表的大小进行降序排序,并计算每个表在数据库管理系统中的相对大小权重,其中每个表在数据库管理系统中的相对大小权重由表的大小除以数据库管理系统中所有表的大小之和得到。
步骤3:构建SQL查询语句,为待分区的数据选择分区方式并执行SQL查询语句,生成数据分布状态并记录SQL查询语句的执行时间,采用基于决策树的XGBoost模型构建预测模型,估计SQL查询语句的运行时间;
步骤3.1:采用基于拉丁立方采样和简单随机采样方法混合的混合采样方法对数据库管理系统中的表及表中的数据类型相同的属性进行综合采样,构建SQL查询语句。
在本实施方式中,根据拉丁立方采样的理念将每个表视为一个维度,首先,在数据库管理系统中通过简单随机采样选择两个表,然后使用简单随机采样方法从每个选中的表中各选择一个属性,从而获得两个表以及对应的两个属性的采样结果;基于上述采样结果构建SQL查询语句,即SELECT*FROM A,B WHERE A.a=B.b;其中FROM字段包括采样得到的两个表,分别为表A和表B,WHERE字段则使用采样得到的两个属性进行等值连接,分别为属性a和属性b;需要注意的是所述两个属性的数据类型需要一致。
步骤3.2:将待分区的数据导入到数据库管理系统,并选择不同的数据分区方式分别执行SQL查询语句,生成数据分布状态并记录在不同数据分区方式下SQL查询语句的执行时间。
所述数据分区方式,包括:全表复制和分区键分区方式。
在本实施方式中,如图5所示,通过官方文档获取分布式关系型数据库管理系统中分区键的属性类型,并根据分区键的属性类型分析该数据库管理系统中的表结构,得到每张表中可用作分区键的属性列表。采用基于拉丁超立方采样和简单随机采样混合的混合采样方法,对数据库中分区键的属性的列表进行采样,为每个表选择一个属性作为分区键,根据选择的分区键构建用于数据分区的SQL查询语句,执行该语句生成数据分区状态。值得注意的是,全表复制也被看作一种数据分区方式,在采样过程中,将全表复制作为每个表的一个候选分区方式纳入分区键的属性列表中。在采用基于拉丁超立方采样和简单随机采样混合的混合采样方法,对数据库中分区键的属性的列表进行采样时,如果从分区键的属性列表中选择了全表复制,就对该表进行全表复制;如果从分区键的属性列表中选择了某个属性,就将该属性作为分区键进行数据分区。将数据按照数据分区方式存储到数据库管理系统后的数据状态称为数据分布状态。
步骤3.3:构建分区数据集,包括SQL查询语句、数据分布状态和与该数据分布状态对应的SQL查询语句的运行时间。
步骤3.4:采用基于决策树的XGBoost模型作为预测模型,利用分区数据集训练预测模型,得到训练好的预测模型,利用训练好的预测模型估计SQL查询语句的运行时间。
在本实施方式中,如图6所示,将数据分布状态和SQL查询语句作为预测模型的输入,将与该数据分布状态对应的SQL查询语句的运行时间作为预测模型的输出。由于数据分布状态、SQL查询语句和数据库管理系统的性能之间的映射关系并非简单的线性关系,且在实际收集数据过程中由于硬件、网络等不稳定因素的影响,会出现噪声较大的问题。在噪声过大的问题上,非线性支持向量机(Nonlinear Support Vector Machine,NLSVM)和随机森林(Random Forest,RF)容易发生过拟合;同时,虽然神经网络具有强大的表达能力,也可以学习非常复杂的映射关系,但在训练时需要规模足够大的数据集,否则也容易发生过拟合。而基于决策树的XGBoost模型在随机森林模型的基础上进一步提升,在代价函数中引入了正则项以降模型方差,防止过拟合的产生;同时基于决策树的XGBoost模型对代价函数进行了二阶泰勒展开,得到一阶和二阶导数,充分利用更多信息,提高模型准确性。此外,基于CPU的并行计算使得该模型在学习速率和精度上有了进一步提升。将分区数据集按照9:1的比例划分为训练集和测试集,设定训练轮次为2000次,将训练集输入预测模型进行训练,得到完成训练的预测模型,再利用测试集来评估完成训练的预测模型的性能,得到训练好的预测模型。由于本实施方式中的估计SQL查询语句的运行时间属于回归问题,所以选择常用的平均方差(Mean squared error,MSE)作为评估标准,MSE的值越低表示预估连接代价越接近真实连接带代价,模型的准确性越高。
步骤4:获取未来工作负载,根据未来工作负载为数据库管理系统中的每张表确定分区方案,并对数据库管理系统进行重分区,重新部署数据库管理系统中的数据。
在本实施方式中,未来工作负载由使用人员直接提供或根据历史工作负载预测得到,即步骤1中生成的未来工作负载。
步骤4.1:在数据库管理系统中寻找用于全表复制的表;
所述全表复制的表需要同时满足以下三个条件:
条件1:最大表大小>10×最小表大小;
条件2:最小表大小×数据节点数目<0.05*数据库总大小;
条件3:(数据节点数目-1)>表参与连接的数目;
其中最大表大小:表示数据库管理系统中表大小最大的表的大小;最小表大小:表示数据库管理系统中表大小最小的表的大小;数据节点数目:表示数据库管理系统中数据节点的数量;数据库总大小:是数据库管理系统中所有表的大小之和;表参与连接的数目:指的是在满足条件1和条件2的情况下,该表参与连接的数目。
步骤4.2:获取未来工作负载并构建无向多重图,确定数据分区方案;
步骤4.2.1:将未来工作负载中参与连接的表作为顶点,当存在任意两个表中有一对属性参与连接时,就在表示这两个表的两个顶点间加一条边;当存在任意两个表中有若干对属性参与连接时,就在表示这两个表的两个顶点间加若干条边。
步骤4.2.2:根据未来工作负载中参与连接的表和表中参与连接的属性构建新的SQL查询语句,将数据库管理系统中当前的数据分布状态和新的SQL查询语句输入训练好的预测模型中,并将输出结果作为对应边上的权重,重复上述步骤,直至确定图中所有边的权重为止,构建无向多重图。
在本实施方式中,将某条边连接的顶点作为FROM子句中的表,将该条边对应的一对属性所构建的等值连接作为WHERE字段的条件,构建SQL查询语句,然后将数据库管理系统当前的数据分布状态和构建的SQL查询语句输入训练好的预测模型中,并将输出结果作为对应边上的权重,重复上述步骤,直至确定图中所有边的权重为止。
步骤4.2.3:计算未来工作负载中每个表中的每个参与连接的属性的权重。
所述参与连接的属性的权重为该属性所在的表的大小与该属性所在的以该表为顶点的边的权重之和在该表所有边的权重之和中占比的乘积。
步骤4.2.4:将每条边对应的属性的权重相加作为该条边的最终权重。
步骤4.2.5:将图中所有边按最终权重从大到小的顺序进行排序,构成一个可选择边的集合,同时初始化一个空集作为用于存放选择出来的边的结果集合。
步骤4.2.6:每次从可选择集合中选择最终权重最大的边放到结果集合中,并将该边上对应的属性作为与该边两个顶点对应的表的分区键,并从可选择集合中去掉与该边两个顶点相连的所有边;重复当前步骤,直到可选择集合为空结束的,得到新的结果集合。
步骤4.2.7:构建分区方案,包括:对步骤4.1中选择的表进行全表复制;对步骤4.2.6中新的结果集合进行遍历,遍历该集合中的边并将边上的属性作为该边的两个顶点对应的表的分区键;对于未来工作负载中剩余未分配分区键的表,选择该表的主键作为分区键。
在本实施方式中,由于每次从可选择集合中选择最终权重最大的边放到结果集合中,并将该边上对应的属性作为与该边两个顶点对应的表的分区键,并从可选择集合中去掉与该边两个顶点相连的所有边,所以在去边的过程中会出现未遍历就被去除的边及其对应的顶点,即在未来工作负载中处出现剩余未分配分区键的表,此时选择该表的主键作为分区键进行数据分区。
步骤4.3:按照数据分区方案,对数据库管理系统进行重分区,重新部署数据库管理系统中的数据。
步骤5:每次事务执行完毕后,重新执行步骤2,并判断某个表的相对大小权重变化是否超过预设值以及该表排序位次与上一次事务执行后的该表排序位次相比是否发生变化,若是则执行步骤3;若否则结束本次事务执行。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
Claims (10)
1.一种面向分布式数据库的自调节分区键推荐系统,其特征在于,该系统包括:工作负载预测模块、分区键推荐模块、数据监测模块和代价估计模块;
所述工作负载预测模块,用于获取数据库管理系统的历史工作负载,并根据历史工作负载预测未来工作负载,判断未来工作负载的特征是否发生变化,若是则将未来工作负载发送到分区键推荐模块,若否则结束本次事务执行;
所述数据监测模块,用于计算并监测每次事务执行完毕后数据库系统中各个表的大小降序排序是否发生变化以及各个表的相对大小权重是否超过预设值,若是则运行代价估计模块;若否则认为事务执行结束并重新按照表大小进行降序排序;
所述代价估计模块,用于根据基于决策树的XGBoost模型构建的预测模型来估计在数据分区方式下SQL查询语句的执行时间;
所述分区键推荐模块,用于根据未来工作负载为数据库管理系统中的每张表确定对应的分区方案,并对数据库管理系统进行重分区,重新部署数据库管理系统中的数据。
2.一种面向分布式数据库的自调节分区键推荐方法,基于权利要求1所述系统实现,其特征在于,该方法包括如下步骤:
步骤1:获取数据库管理系统的历史工作负载并转化为历史查询模板,对历史查询模板进行聚类,并预测未来任意一段时间内的未来查询模板的聚类数据是否发生变化,若是则生成未来工作负载,若否则结束本次事务执行;
步骤2:获取数据库管理系统中所有表的大小并进行降序排序,并计算每个表在数据库管理系统中的相对大小权重;
步骤3:构建SQL查询语句,为待分区的数据选择分区方式并执行SQL查询语句,生成数据分布状态并记录SQL查询语句的执行时间,采用基于决策树的XGBoost模型构建预测模型,估计SQL查询语句的运行时间;
步骤4:获取未来工作负载,根据未来工作负载为数据库管理系统中的每张表确定分区方案,并对数据库管理系统进行重分区,重新部署数据库管理系统中的数据;
步骤5:每次事务执行完毕后,重新执行步骤2,并判断某个表的相对大小权重变化是否超过预设值以及该表排序位次与上一次事务执行后的该表排序位次相比是否发生变化,若是则执行步骤3;若否则结束本次事务执行。
3.根据权利要求2所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述步骤1进一步包括:
步骤1.1:获取数据库管理系统的历史工作负载,并将数据库管理系统中的历史工作负载转化为历史查询模板;
步骤1.2:对于每个历史查询模板,记录该历史查询模板到达数据库管理系统的时间,并统计在一个时间周期内的各历史查询模板对应的SQL语句条数;
步骤1.3:在每个时间周期内采用聚类算法对历史查询模板按照语义进行聚类,得到历史查询模板的聚类数据;
步骤1.4:根据历史查询模板的聚类数据,采用逻辑回归LR模型和循环神经网络RNN模型预测未来任意一段时间内的未来查询模板的聚类数据;
步骤1.5:根据预测到的未来查询模板的聚类数据,求解未来查询模板的到达率,并判断未来查询模板的到达率是否发生变化,若是则生成未来工作负载,若否则结束本次事务执行。
4.根据权利要求3所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述将数据库中的历史工作负载转化为历史查询模板的过程包括:将历史工作负载中所有查询语句中的常数项替换为抽象符号,并将所有的关键字转换成大写形式,得到历史查询模板。
5.根据权利要求3所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述语义指的是访问相同的表、使用相同的谓词的查询模板;所述聚类数据,包括:聚类得到的集群中心、所有集群中包含的历史查询模板的数量以及该集群对应的时间周期。
6.根据权利要求3所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述采用逻辑回归LR模型和循环神经网络RNN模型预测未来任意一段时间内的未来工作负载的聚类数据的过程为:将历史查询模板的聚类数据分别输入逻辑回归LR模型和循环神经网络RNN模型中进行预测,输出两组预测结果并计算平均值,得到未来任意一段时间内的未来查询模板的聚类数据,其中所述预测结果包括:未来任意一段时间内的周期个数、加入未来查询模板后的集群中心以及集群中未来查询模板的数量。
7.根据权利要求2所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述步骤3进一步包括:
步骤3.1:采用基于拉丁立方采样和简单随机采样方法混合的混合采样方法对数据库管理系统中的表及表中的数据类型相同的属性进行综合采样,构建SQL查询语句;
步骤3.2:将待分区的数据导入到数据库管理系统,并选择不同的数据分区方式分别执行SQL查询语句,生成数据分布状态并记录在不同数据分区方式下SQL查询语句的执行时间;
步骤3.3:构建分区数据集,包括SQL查询语句、数据分布状态和与该数据分布状态对应的SQL查询语句的运行时间;
步骤3.4:采用基于决策树的XGBoost模型作为预测模型,利用分区数据集训练预测模型,得到训练好的预测模型,利用训练好的预测模型估计SQL查询语句的运行时间。
8.根据权利要求7所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述数据分区方式,包括:全表复制和分区键分区方式。
9.根据权利要求8所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述步骤4进一步包括:
步骤4.1:在数据库管理系统中寻找用于全表复制的表;
步骤4.2:获取未来工作负载并构建无向多重图,确定数据分区方案;
步骤4.3:按照数据分区方案,对数据库管理系统进行重分区,重新部署数据库管理系统中的数据。
10.根据权利要求9所述的面向分布式数据库的自调节分区键推荐方法,其特征在于,所述步骤4.2进一步包括:
步骤4.2.1:将未来工作负载中参与连接的表作为顶点,当存在任意两个表中有一对属性参与连接时,就在表示这两个表的两个顶点间加一条边;当存在任意两个表中有若干对属性参与连接时,就在表示这两个表的两个顶点间加若干条边;
步骤4.2.2:根据未来工作负载中参与连接的表和表中参与连接的属性构建新的SQL查询语句,将数据库管理系统中当前的数据分布状态和新的SQL查询语句输入训练好的预测模型中,并将新的SQL查询语句的执行时间作为对应边上的权重,重复上述步骤,直至确定图中所有边的权重为止,构建无向多重图;
步骤4.2.3:计算未来工作负载中每个表中的每个参与连接的属性的权重;
步骤4.2.4:将每条边对应的属性的权重相加作为该条边的最终权重;
步骤4.2.5:将图中所有边按最终权重从大到小的顺序进行排序,构成一个可选择边的集合,同时初始化一个空集作为用于存放选择出来的边的结果集合;
步骤4.2.6:每次从可选择集合中选择最终权重最大的边放到结果集合中,并将该边上对应的属性作为与该边两个顶点对应的表的分区键,并从可选择集合中去掉与该边两个顶点相连的所有边;重复当前步骤,直到可选择集合为空结束;
步骤4.2.7:确定分区方案,包括:对步骤4.1中选择的表进行全表复制;对步骤4.2.6中新的结果集合进行遍历,遍历该集合中的边并将边上的属性作为该边的两个顶点对应的表的分区键;对于未来工作负载中剩余未分配分区键的表,选择该表的主键作为分区键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410098314.3A CN117909416A (zh) | 2024-01-24 | 2024-01-24 | 面向分布式数据库的自调节分区键推荐系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410098314.3A CN117909416A (zh) | 2024-01-24 | 2024-01-24 | 面向分布式数据库的自调节分区键推荐系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909416A true CN117909416A (zh) | 2024-04-19 |
Family
ID=90685073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410098314.3A Pending CN117909416A (zh) | 2024-01-24 | 2024-01-24 | 面向分布式数据库的自调节分区键推荐系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117909416A (zh) |
-
2024
- 2024-01-24 CN CN202410098314.3A patent/CN117909416A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yuan et al. | Automatic view generation with deep learning and reinforcement learning | |
Hilderman et al. | Knowledge discovery and measures of interest | |
US6138115A (en) | Method and system for generating a decision-tree classifier in parallel in a multi-processor system | |
Volkovs et al. | Continuous data cleaning | |
Beyer et al. | How to analyse evolutionary algorithms | |
US20040111410A1 (en) | Information reservoir | |
Thirumuruganathan et al. | Approximate query processing using deep generative models | |
Chen et al. | A survey of approximate quantile computation on large-scale data | |
Shi et al. | Learned index benefits: Machine learning based index performance estimation | |
Ge et al. | A skip-list approach for efficiently processing forecasting queries | |
Li et al. | Online indices for predictive top-k entity and aggregate queries on knowledge graphs | |
US11762831B2 (en) | Adaptive sparse indexing in cloud-based data warehouses | |
Fang et al. | A query-level distributed database tuning system with machine learning | |
Bachoc et al. | Gaussian field on the symmetric group: Prediction and learning | |
CN117909416A (zh) | 面向分布式数据库的自调节分区键推荐系统及方法 | |
Wang et al. | Cardinality estimation using normalizing flow | |
Li et al. | dbET: Execution Time Distribution-based Plan Selection | |
Andreichikov et al. | Genetic Algoritms for the Synthesis of Innovative Engineering Solutions | |
Chu et al. | P-IOC-FPMine: an association rule mining algorithm for item constraints based on the MapReduce framework | |
Bagui et al. | A review of data mining algorithms on Hadoop's MapReduce | |
Hasan | Approximate Query Processing Using Deep Learning and Database Techniques | |
El Abri et al. | Learning probabilistic relational models with (partially structured) graph databases | |
Li et al. | ALECE: An Attention-based Learned Cardinality Estimator for SPJ Queries on Dynamic Workloads (Extended) | |
Yang et al. | An efficient parallel topic-sensitive expert finding algorithm using spark | |
Wu et al. | Automatic Database Index Tuning: A Survey |
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 |