CN109271409B - 一种基于容器资源分配的数据库分片执行方法 - Google Patents
一种基于容器资源分配的数据库分片执行方法 Download PDFInfo
- Publication number
- CN109271409B CN109271409B CN201811336227.8A CN201811336227A CN109271409B CN 109271409 B CN109271409 B CN 109271409B CN 201811336227 A CN201811336227 A CN 201811336227A CN 109271409 B CN109271409 B CN 109271409B
- Authority
- CN
- China
- Prior art keywords
- container
- database
- query
- fragmentation
- resources
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于容器资源分配的数据库分片执行方法,涉及数据库语句分片技术领域,本发明包括如下步骤:S1查询语句预分片:任务调度组件将查询语句传入数据库,数据库计算出执行计划,任务调度组件根据执行计划对查询语句进行预分片;S2调整查询语句预分片结果:容器管理组件查询各物理节点的可用资源,任务调度组件根据返回的可用资源信息,调整预分片结果;S3申请并启动容器资源:容器管理组件申请在物理节点部署包含对应资源的容器,启动对应容器,将预分片结果分发到对应容器中;S4执行实际查询任务,本发明提前获取数据库中的执行计划以及现有容器资源情况,自动对查询语句进行分片处理,实现最大化利用现有资源,提高了资源利用率。
Description
技术领域
本发明涉及数据库语句分片技术领域,更具体的是涉及一种基于容器资源分配的数据库分片执行方法。
背景技术
现有技术中,当直接对数据库中的大表进行查询时,例如查询显示某张表内的所有信息(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:各容器再将各自查询任务执行状况进行结果汇总,发送给任务调度组件,容器管理组件再次申请容器资源,将汇总操作分配到容器资源中,直至查询任务全部执行完毕。
本实施例通过预先获知数据库的执行计划和现有容器资源情况,对二者进行合理协调统筹,自动对操作语句进行分片处理,通过对查询语句进行初分片和精调整,基于分布处理的思想使得分片结果契合现有的物理计算资源,最大程度利用现有资源,操作语句的实时性大幅上升,极大提高了资源利用率。
以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
Claims (5)
1.一种基于容器资源分配的数据库分片执行方法,其特征在于,包括如下步骤:
S1:查询语句预分片
任务调度组件将应用层中输入的数据库查询语句传入数据库,数据库计算出执行计划,并将执行计划返回至任务调度组件,任务调度组件根据执行计划对查询语句进行预分片;
S2:调整查询语句预分片结果
容器管理组件查询各物理节点的可用资源,并将各物理节点的可用资源信息返回至任务调度组件,任务调度组件根据返回的可用资源信息,调整预分片结果;
S3:申请并启动容器资源
容器管理组件按照调整后的预分片结果,申请在物理节点部署包含对应资源的容器,申请通过后启动对应容器,并将调整后的预分片结果分发到各对应容器中;
S4:执行实际查询任务
各容器收到对应的预分片结果后,作为查询任务实际的发起者,将查询任务发送到数据库完成查询任务。
2.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S1中应用层输入的数据库查询语句为DQL。
3.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S1中的执行计划包括预计执行规模、预计开销和预计时间信息。
4.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S2中容器管理组件查询各物理节点的可用资源,包括可用内存、CPU使用率信息。
5.根据权利要求1所述的一种基于容器资源分配的数据库分片执行方法,其特征在于,所述S4具体包括如下步骤:
S4.1:将查询任务发送到数据库中;
S4.2:数据库执行查询语句,并返回查询结果至对应容器;
S4.3:各容器再将各自查询任务执行状况进行结果汇总,发送给任务调度组件,容器管理组件再次申请容器资源,将汇总操作分配到容器资源中,直至查询任务全部执行完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811336227.8A CN109271409B (zh) | 2018-11-08 | 2018-11-08 | 一种基于容器资源分配的数据库分片执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811336227.8A CN109271409B (zh) | 2018-11-08 | 2018-11-08 | 一种基于容器资源分配的数据库分片执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271409A CN109271409A (zh) | 2019-01-25 |
CN109271409B true CN109271409B (zh) | 2021-11-02 |
Family
ID=65192553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811336227.8A Active CN109271409B (zh) | 2018-11-08 | 2018-11-08 | 一种基于容器资源分配的数据库分片执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271409B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112087472B (zh) * | 2019-06-13 | 2022-11-29 | 中国移动通信集团浙江有限公司 | 基于实时水位的批量任务调度方法、装置及平台 |
CN114676291B (zh) * | 2022-03-30 | 2024-01-09 | 苏州浪潮智能科技有限公司 | 一种数据库系统及数据库系统的控制方法 |
CN115994037A (zh) * | 2023-03-23 | 2023-04-21 | 天津南大通用数据技术股份有限公司 | 一种集群数据库负载均衡方法及装置 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187937A (zh) * | 2007-10-30 | 2008-05-28 | 北京航空航天大学 | 网格环境下模式复用的异构数据库访问和集成方法 |
CN101937498A (zh) * | 2010-09-13 | 2011-01-05 | 武汉达梦数据库有限公司 | 用于共享外包数据库的数据完整性验证方法 |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102542027A (zh) * | 2011-12-22 | 2012-07-04 | 北京航空航天大学深圳研究院 | 一种基于关系模式学习本体的数据集成系统的构建方法 |
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103136350A (zh) * | 2013-02-01 | 2013-06-05 | 江苏易合大成网络科技有限公司 | 一种在系统平台上运行多个应用的方法及装置 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
CN103927331A (zh) * | 2014-03-21 | 2014-07-16 | 珠海多玩信息技术有限公司 | 数据查询方法、装置及系统 |
CN105574052A (zh) * | 2014-11-06 | 2016-05-11 | 中兴通讯股份有限公司 | 数据库查询方法及装置 |
CN106934036A (zh) * | 2017-03-15 | 2017-07-07 | 衡阳师范学院 | 一种网络学习资源聚合查询的方法和系统 |
CN107122443A (zh) * | 2017-04-24 | 2017-09-01 | 中国科学院软件研究所 | 一种基于Spark SQL的分布式全文检索系统及方法 |
CN107679399A (zh) * | 2017-10-19 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于容器的恶意代码检测沙盒系统及检测方法 |
CN107798017A (zh) * | 2016-09-07 | 2018-03-13 | 南京中兴新软件有限责任公司 | 分布式数据库中的执行计划信息生成方法和系统 |
CN108228597A (zh) * | 2016-12-14 | 2018-06-29 | 深圳市优朋普乐传媒发展有限公司 | 数据库访问方法和装置 |
CN108519911A (zh) * | 2018-03-23 | 2018-09-11 | 上饶市中科院云计算中心大数据研究院 | 一种基于容器的集群管理系统中资源的调度方法和装置 |
CN108563509A (zh) * | 2018-04-28 | 2018-09-21 | 北京京东金融科技控股有限公司 | 数据查询实现方法、装置、介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180293165A1 (en) * | 2017-04-07 | 2018-10-11 | Hewlett Packard Enterprise Development Lp | Garbage collection based on asynchronously communicated queryable versions |
-
2018
- 2018-11-08 CN CN201811336227.8A patent/CN109271409B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101187937A (zh) * | 2007-10-30 | 2008-05-28 | 北京航空航天大学 | 网格环境下模式复用的异构数据库访问和集成方法 |
CN101937498A (zh) * | 2010-09-13 | 2011-01-05 | 武汉达梦数据库有限公司 | 用于共享外包数据库的数据完整性验证方法 |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102542027A (zh) * | 2011-12-22 | 2012-07-04 | 北京航空航天大学深圳研究院 | 一种基于关系模式学习本体的数据集成系统的构建方法 |
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103136350A (zh) * | 2013-02-01 | 2013-06-05 | 江苏易合大成网络科技有限公司 | 一种在系统平台上运行多个应用的方法及装置 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
CN103927331A (zh) * | 2014-03-21 | 2014-07-16 | 珠海多玩信息技术有限公司 | 数据查询方法、装置及系统 |
CN105574052A (zh) * | 2014-11-06 | 2016-05-11 | 中兴通讯股份有限公司 | 数据库查询方法及装置 |
CN107798017A (zh) * | 2016-09-07 | 2018-03-13 | 南京中兴新软件有限责任公司 | 分布式数据库中的执行计划信息生成方法和系统 |
CN108228597A (zh) * | 2016-12-14 | 2018-06-29 | 深圳市优朋普乐传媒发展有限公司 | 数据库访问方法和装置 |
CN106934036A (zh) * | 2017-03-15 | 2017-07-07 | 衡阳师范学院 | 一种网络学习资源聚合查询的方法和系统 |
CN107122443A (zh) * | 2017-04-24 | 2017-09-01 | 中国科学院软件研究所 | 一种基于Spark SQL的分布式全文检索系统及方法 |
CN107679399A (zh) * | 2017-10-19 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于容器的恶意代码检测沙盒系统及检测方法 |
CN108519911A (zh) * | 2018-03-23 | 2018-09-11 | 上饶市中科院云计算中心大数据研究院 | 一种基于容器的集群管理系统中资源的调度方法和装置 |
CN108563509A (zh) * | 2018-04-28 | 2018-09-21 | 北京京东金融科技控股有限公司 | 数据查询实现方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109271409A (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271409B (zh) | 一种基于容器资源分配的数据库分片执行方法 | |
US10558672B1 (en) | System and method for executing queries on multi-graphics processing unit systems | |
DE112016001075B4 (de) | Verteiltes speichern und abrufen von datensätzen | |
CN107329814B (zh) | 一种基于rdma的分布式内存数据库查询引擎系统 | |
CN105049268B (zh) | 分布式计算资源分配系统和任务处理方法 | |
US9197703B2 (en) | System and method to maximize server resource utilization and performance of metadata operations | |
US9239741B2 (en) | System and method for flexible distributed massively parallel processing (MPP) | |
WO2020211300A1 (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
US9712646B2 (en) | Automated client/server operation partitioning | |
CN110874271B (zh) | 一种海量建筑图斑特征快速计算方法及系统 | |
CN104599032A (zh) | 一种面向资源管理的分布式内存电网构建方法及系统 | |
CN109918450B (zh) | 基于分析类场景下的分布式并行数据库及存储方法 | |
US8849745B2 (en) | Decision support methods and apparatus | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
CN104699723A (zh) | 数据交换适配器、异构系统之间数据同步系统和方法 | |
CN106953910A (zh) | 一种Hadoop计算存储分离方法 | |
CN105677761A (zh) | 一种数据切分的方法及系统 | |
CN103761146A (zh) | 一种MapReduce动态设定slots数量的方法 | |
CN107402926A (zh) | 一种查询方法以及查询设备 | |
CN109828790B (zh) | 一种基于申威异构众核处理器的数据处理方法和系统 | |
CN103810238A (zh) | 一种基于异步处理的大数据量Excel文件导出方法 | |
CN112000287A (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
CN111258978A (zh) | 一种数据存储的方法 | |
CN102685219B (zh) | San存储系统中通过动态扩容提高存储资源利用率的方法 | |
CN105786918B (zh) | 基于数据载入存储空间的数据查询方法和装置 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220524 Address after: 610041 No. 1, floor 4, building 1, No. 2, Xinyuan south 2nd Road, high tech Zone, Chengdu, Sichuan Patentee after: Chengdu sobei video cloud computing Co.,Ltd. Address before: No.2, south 2nd Road, Xinyuan, high tech Zone, Chengdu, Sichuan 610000 Patentee before: Chengdu Sobey Digital Technology Co.,Ltd. |