一种基于容器资源分配的数据库分片执行方法

阅读: 评论:0

著录项
  • CN201811336227.8
  • 20181108
  • CN109271409A
  • 20190125
  • 成都索贝数码科技股份有限公司
  • 王熙;孙翔;温序铭
  • G06/F162453
  • G06/F162453 G06/F1628

  • 四川省成都市高新区新园南二路2号
  • 四川(51)
  • 成都弘毅天承知识产权代理有限公司
  • 何祖斌
摘要
本发明公开了一种基于容器资源分配的数据库分片执行方法,涉及数据库语句分片技术领域,本发明包括如下步骤:S1查询语句预分片:任务调度组件将查询语句传入数据库,数据库计算出执行计划,任务调度组件根据执行计划对查询语句进行预分片;S2调整查询语句预分片结果:容器管理组件查询各物理节点的可用资源,任务调度组件根据返回的可用资源信息,调整预分片结果;S3申请并启动容器资源:容器管理组件申请在物理节点部署包含对应资源的容器,启动对应容器,将预分片结果分发到对应容器中;S4执行实际查询任务,本发明提前获取数据库中的执行计划以及现有容器资源情况,自动对查询语句进行分片处理,实现最大化利用现有资源,提高了资源利用率。
权利要求

1.一种基于容器资源分配的数据库分片执行方法,其特征在于,包括如下步骤:

S1:查询语句预分片

任务调度组件将应用层中输入的数据库查询语句传入数据库,数据库计算出执行计划,并将执行计划返回至任务调度组件,任务调度组件根据执行计划对查询语句进行预分片;

S2:调整查询语句预分片结果

容器管理组件查询各物理节点的可用资源,并将各物理节点的可用资源信息返回至任务调度组件,任务调度组件根据返回的可用资源信息,调整预分片结果;

S3:申请并启动容器资源

容器管理组件按照调整后的预分片结果,申请在物理节点部署包含对应资源的容器,申请通过后启动对应容器,并将调整后的预分片结果分发到各对应容器中;

S4:执行实际查询任务

各容器收到对应的预分片结果后,作为查询任务实际的发起者,将查询任务发送到数据库完成查询任务。

2.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S1中应用层输入的数据库查询语句为DQL。

3.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S1中的执行计划包括预计执行规模、预计开销和预计时间等信息。

4.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S2中容器管理组件查询各物理节点的可用资源,包括可用内存、CPU使用率等信息。

5.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S2中任务调度组件根据返回的可用资源信息调整预分片结果的方法为:

若物理节点可用资源较少,则将该预分片的语句查询范围缩小;

若物理节点可用资源较多,则将该预分片的语句查询范围扩大;

若现有可用资源不足以完整执行查询语句,则暂缓不能执行的部分查询任务,待存在可用物理节点时,再次进行预分片结果调整。

6.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S4具体包括如下步骤:

S4.1:将查询任务发送到数据库中;

S4.2:数据库执行查询语句,并返回查询结果至对应容器;

S4.3:各容器再将各自查询任务执行状况进行结果汇总,发送给任务调度组件,容器管理组件再次申请容器资源,将汇总操作分配到容器资源中,直至查询任务全部执行完毕。

说明书
技术领域

本发明涉及数据库语句分片技术领域,更具体的是涉及一种基于容器资源分配的数据库分片执行方法。

现有技术中,当直接对数据库中的大表进行查询时,例如查询显示某张表内的所有信息(select*from A),主要存在两种问题:一方面数据的查询速度慢,难以满足实时性要求;另一方面数据量很大,单节点的内存中可能存放不下这么多查询结果,例如100万条数据。随着分布式集和容器技术的发展,应用和数据库都越来越倾向于部署于分布式集之中,以提高应用和数据的可用性和实时性。

数据库中也存在着一些数据分片的方法,比如MySQL的分表分区、NoSQL的分片方法,但这些方法都是以来数据索引实现的,没有考虑在应用端将查询语句进行有效拆分,数据库内的数据流量过大,对数据库内部处理速度和带宽要求很高,而应用层在实际处理中,往往需要自定义分区Read,一般通过设置自定义分区字段来控制。

而Spark中对SQL查询数据操作的MapReduce方法,是基于预定义RDD分区大小来指定的,相对来说比较死板,在系统设计时已经被写定了,无法根据现有容器(docker)资源对语句进行动态分片,对资源的利用效率较差。

本发明的目的在于:为了解决现有的数据库查询操作较死板,无法根据现有容器资源对语句进行动态分片,资源利用效率较差的问题,本发明提供一种基于容器资源分配的数据库分片执行方法,提前获取数据库中的执行计划以及现有容器资源情况,自动对查询语句进行分片处理,实现最大化利用现有资源,提高资源利用率。

本发明为了实现上述目的具体采用以下技术方案:

一种基于容器资源分配的数据库分片执行方法,包括如下步骤:

S1:查询语句预分片

任务调度组件将应用层中输入的数据库查询语句传入数据库,数据库计算出执行计划,并将执行计划返回至任务调度组件,任务调度组件根据执行计划对查询语句进行预分片;

S2:调整查询语句预分片结果

容器管理组件查询各物理节点的可用资源,并将各物理节点的可用资源信息返回至任务调度组件,任务调度组件根据返回的可用资源信息,调整预分片结果;

S3:申请并启动容器资源

容器管理组件按照调整后的预分片结果,申请在物理节点部署包含对应资源的容器,申请通过后启动对应容器,并将调整后的预分片结果分发到各对应容器中;

S4:执行实际查询任务

各容器收到对应的预分片结果后,作为查询任务实际的发起者,将查询任务发送到数据库完成查询任务。

进一步的,所述S1中应用层输入的数据库查询语句为DQL。

进一步的,所述S1中的执行计划包括预计执行规模、预计开销和预计时间等信息。

进一步的,所述S1中任务调度组件对查询语句进行预分片依据的预分片策略由人工设置。

进一步的,所述S2中容器管理组件查询各物理节点的可用资源,包括可用内存、CPU使用率等信息。

进一步的,所述S2中任务调度组件根据返回的可用资源信息调整预分片结果的方法为:

若物理节点可用资源较少,则将该预分片的语句查询范围缩小;

若物理节点可用资源较多,则将该预分片的语句查询范围扩大;

若现有可用资源不足以完整执行查询语句,则暂缓不能执行的部分查询任务,待存在可用物理节点时,再次进行预分片结果调整。

进一步的,所述S4具体包括如下步骤:

S4.1:将查询任务发送到数据库中;

S4.2:数据库执行查询语句,并返回查询结果至对应容器;

S4.3:各容器再将各自查询任务执行状况进行结果汇总,发送给任务调度组件,容器管理组件再次申请容器资源,将汇总操作分配到容器资源中,直至查询任务全部执行完毕。

本发明的有益效果如下:

1、本发明通过预先获知数据库的执行计划和现有容器资源情况,对二者进行合理协调统筹,自动对操作语句进行分片处理,通过对查询语句进行初分片和精调整,基于分布处理的思想使得分片结果契合现有的物理计算资源,最大程度利用现有资源,操作语句的实时性大幅上升,极大提高了资源利用率。

2、本发明根据数据库对未分片语句的执行计划来对查询语句进行分片,分片过程有章可循,可自动由不同的执行计划产生分片结果;同时很据分布式框架内现有可用的物理资源创建容器,将查询语句重新分散到各容器内的应用,由容器应用完成实际查询任务,系统流程灵活性很强。

图1是本发明的方法流程示意图。

为了本技术领域的人员更好的理解本发明,下面结合附图和以下实施例对本发明作进一步详细描述。

实施例1

如图1所示,本实施例提供一种基于容器资源分配的数据库分片执行方法,本实施例中的SQL为支持SQL92标准的数据库查询,不限于关系型数据库,本实施例的方法基于任务调度组件和容器管理组件,

任务调度模块:能够将查询语句送入数据库,获取数据库的执行计划;能够根据执行计划,对查询语句预分片;能够获取容器管理组件中的容器资源现状,并根据资源现状调整查询语句预分片结果;

容器管理组件:能够监控各物理节点的资源现状;能够在各物理节点中开启容器,并将查询语句片段分发到各容器之中;能够汇总各容器的语句操作结果,并将操作结果发送到任务调度组件;

一种基于容器资源分配的数据库分片执行方法,包括如下步骤:

S1:查询语句预分片

任务调度组件将应用层中输入的数据库查询语句传入数据库,查询语句为DQL,例如select*from A,数据库计算出执行计划,所述执行计划包括预计执行规模、预计开销和预计时间等信息,并将执行计划返回至任务调度组件,任务调度组件根据执行计划对查询语句进行预分片,预分片策略由人工设置,若执行计划返回A中包括5000条记录,则将查询语句划分为从A表的第0-1000条记录中查询、第1000-2000条记录中查询、第2000-3000条记录中查询、第3000-4000条记录中查询和第4000-5000条记录中查询;

S2:调整查询语句预分片结果

容器管理组件查询各物理节点的可用资源,包括可用内存、CPU使用率等信息,并将各物理节点的可用资源信息返回至任务调度组件,任务调度组件根据返回的可用资源信息,调整预分片结果,例如容器节点集包括5个节点,5个节点中的可用内存分别为500MB、500MB、1GB、2GB和500MB,假设1GB内存恰好执行1000条记录的查询和缓存任务,则任务调度组件根据返回的可用资源信息调整预分片结果的方法为:

若物理节点可用资源较少,则将该预分片的语句查询范围缩小,如节点可用内存为500MB,则将包含1000条记录的查询范围缩小为500;

若物理节点可用资源较多,则将该预分片的语句查询范围扩大,如节点可用内存为2GB,则将包含1000条记录的查询范围扩大为2000;

若现有可用资源不足以完整执行查询语句,如上述5个节点只能支持4500条记录范围的查询任务,则暂缓不能执行的500条记录的查询任务,待存在可用物理节点时,再次进行预分片结果调整;

S3:申请并启动容器资源

提前在物理节点中设置容器封装环境,以便容器在该环境下执行应用任务,容器管理组件按照调整后的预分片结果,申请在物理节点部署包含对应资源的容器,申请通过后启动对应容器,并将调整后的预分片结果分发到各对应容器中,如500条记录范围的查询任务分发到500MB内存的容器中;

S4:执行实际查询任务

各容器收到对应的预分片结果后,作为查询任务实际的发起者,将查询任务发送到数据库完成查询任务,具体包括如下步骤:

S4.1:将查询任务发送到数据库中;

S4.2:数据库执行查询语句,并返回查询结果至对应容器;

S4.3:各容器再将各自查询任务执行状况进行结果汇总,发送给任务调度组件,容器管理组件再次申请容器资源,将汇总操作分配到容器资源中,直至查询任务全部执行完毕。

本实施例通过预先获知数据库的执行计划和现有容器资源情况,对二者进行合理协调统筹,自动对操作语句进行分片处理,通过对查询语句进行初分片和精调整,基于分布处理的思想使得分片结果契合现有的物理计算资源,最大程度利用现有资源,操作语句的实时性大幅上升,极大提高了资源利用率。

以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

本文发布于:2023-04-15 00:17:01,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/86802.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图