一种面向流水线结构化数据查询的数据库智能分区方法技术

技术编号:21891705 阅读:55 留言:0更新日期:2019-08-17 14:26
本发明专利技术公开了一种面向流水线结构化数据查询的数据库智能分区方法,解决了基于pipeline的查询上,广播地从其它存储节点获取执行pipeline所需的数据,网络传输开销大、查询执行时间长,查询性能差的问题。本发明专利技术方法包括:查询引擎根据SQL的查询请求经过物理计划的执行来处理该SQL查询请求,进行pipeline的划分,并将pipeline的划分情况上传至中心节点;中心节点采用在线k‑means聚类算法计算出存储引擎节点间最优的数据存储布局,其中,聚类结果中的每个簇对应一个存储节点;各存储节点利用增量方式存储当前最优数据布局的数据,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点仅保存新布局的数据。

An Intelligent Partitioning Method for Pipeline Structured Data Query

【技术实现步骤摘要】
一种面向流水线结构化数据查询的数据库智能分区方法
本专利技术涉及分布式数据库下基于机器学习的有利于pipeline执行的存储引擎存储节点之间数据partition策略
,具体涉及一种面向流水线结构化数据查询的数据库智能分区方法。
技术介绍
分布式数据库中,在查询引擎物理计划优化阶段已划分好pipeline的基础上,一个pipeline对应一个执行节点,每一个执行节点所需的数据都会广播地从除该执行节点所在的存储引擎节点之外的其它所有存储节点获取数据。如图1所示,如果执行节点1落在存储节点1上执行,那么该执行节点就会从除存储节点1之外的其它存储节点上广播地获取所需的数据。如某一pipeline执行所需A表a列的部分数据,但是pipeline所在的执行节点在执行节点1上,也就是存储节点1上,而A表a列的数据分散在所有存储节点,那么执行该pipeline就需要广播地从其它存储节点获取执行所需的数据。又如执行某pipeline需要A表的a,b,c列,a列在该pipeline所在的执行节点上,而b列,c列却不在该pipeline所在的执行节点上,那么该执行节点就需要广播地从其它的存储节点获取b列和c列的数据。然而,以上方式存在一些劣势:广播地从其它存储节点获取执行pipeline所需的数据,极大地增加了网络传输的开销,极大地增加了查询执行时间,进而影响了查询性能。
技术实现思路
本专利技术所要解决的技术问题是:基于pipeline的查询上,广播地从其它存储节点获取执行pipeline所需的数据,极大地增加了网络传输的开销,极大地增加了查询执行时间,进而影响了查询性能的问题。本专利技术提供了解决上述问题的一种面向流水线结构化数据查询的数据库智能分区方法,旨在分布式内存列式数据库下降低查询引擎与存储引擎之间的网络传输开销,给出了一种基于机器学习的有利于pipeline执行的存储引擎节点间数据的布局策略,以提升查询引擎中物理计划的执行速度,进而提升查询性能。本专利技术通过下述技术方案实现:一种面向流水线结构化数据查询的数据库智能分区方法,该方法包括:查询引擎根据SQL的查询请求经过物理计划的执行来处理该SQL查询请求,进行pipeline的划分,并将pipeline的划分情况上传至中心节点;中心节点根据查询引擎发送的pipeline划分情况,采用在线k-means聚类算法计算出存储引擎节点间最优的数据存储布局,即经常被划分为同一pipeline的列数据属于聚类结果中的同一个簇,亦即经常被划分为同一pipeline的列数据存储在同一物理存储节点;其中,在线k-means聚类结果中的每个簇对应一个存储节点;各存储节点利用增量方式存储当前最优数据布局的数据,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点便删除旧布局的数据,而保存新布局的数据。工作原理是:基于pipeline的查询上,广播地从其它存储节点获取执行pipeline所需的数据,网络传输的开销大,查询执行时间长,进而导致查询性能差。本专利技术采用上述方案利用机器学习的思路通过优化数据库存储引擎节点间数据布局来提高物理计划执行速度,进而提高查询性能。具体地,查询引擎根据SQL的查询请求经过物理计划的执行来处理该SQL查询请求,进行pipeline的划分,并将pipeline的划分情况上传至中心节;然后,中心节点根据查询引擎发送的pipeline划分情况,采用在线k-means聚类算法计算出存储引擎节点间最优的数据存储布局,即经常被划分为同一pipeline的列数据属于聚类结果中的同一个簇,亦即经常被划分为同一pipeline的列数据存储在同一物理存储节点;各存储节点利用增量方式存储当前最优数据布局的数据,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点便删除旧布局的数据,而保存新布局的数据。本专利技术方法使pipeline执行节点与所需数据的存储节点尽可能地落在同一物理机上,这样就会减少pipeline执行节点与其它存储节点之间的交互,以及数据传输的开销,进而提升系统的查询性能,并且若pipeline某执行节点所需的数据全部在其对应的存储引擎节点上,那么直接让该执行节点在其对应存储节点所在的物理机上执行,大大提升查询性能。进一步地,所述pipeline的划分,每一个pipeline的执行对应一个物理计划任务的执行,且一个pipeline对应一个执行节点。所述将pipeline的划分情况上传至中心节点,是由查询引擎的master节点将每次pipeline划分的情况汇报给中心节点,其中,汇报的内容包括:每个pipeline所含的列属性信息。还包括计时器,所述中心节点从收到查询请求起便由所述计时器执行计时。进一步地,所述采用在线k-means聚类算法计算出存储引擎节点间最优的数据存储布局,具体包括:通过中心节点收集与统计近段时间被划分为同一个pipeline的列属性信息,同时结合历史样本,采用在线k-means聚类算法进行聚类,结合存储引擎中各存储节点的现有资源和存储引擎的负载均衡对聚类出来的每个簇进行加权,并根据权重对簇降序排序,利用贪心算法生成存储引擎中各存储节点间最优的存储布局。其中:所述通过中心节点收集与统计近段时间被划分为同一个pipeline的列属性信息,中心节点统计的属性信息用数字向量表示,数字向量的长度等于存储引擎表中属性的数量,聚类数等于存储引擎中存储节点总数,聚类结果中的每个簇对应一个存储节点,样本之间的距离采用欧式距离。进一步地,各个存储引擎中的存储节点根据实时的数据布局信息,进行以最优的数据布局进行数据迁移,每个存储节点都按照最优布局以增量的方式进行数据的存储,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点便删除旧布局的数据,而保存新布局的数据。进一步地,还包括:将数据源中的数据通过数据导入系统导入到存储引擎各存储节点中,一列一列地将数据导入到各存储引擎节点上,导入过程中,让一列的所有数据落在一个存储节点上。本专利技术具有如下的优点和有益效果:1、本专利技术提出使用机器学习的思路通过优化数据库存储引擎节点间数据布局来提高物理计划执行速度,使pipeline执行节点与所需数据的存储节点尽可能地落在同一物理机上,这样就会减少pipeline执行节点与其它存储节点之间的交互,以及数据传输的开销,进而提高查询性能;2、本专利技术使用在线k-means聚类算法计算存储引擎节点间数据最优布局,通过中心节点收集与统计近段时间被划分为同一个pipeline的列属性信息,同时结合历史样本,采用在线k-means聚类算法进行聚类,结合存储引擎中各存储节点的现有资源和存储引擎的负载均衡对聚类出来的每个簇进行加权,并根据权重对簇降序排序,利用贪心算法生成存储引擎中各存储节点间最优的存储布局;3、本专利技术存储引擎节点使用增量的方式存储当前最优布局的数据,各个存储引擎中的存储节点根据实时的数据布局信息,进行以最优的数据布局进行数据迁移,每个存储节点都按照最优布局以增量的方式进行数据的存储,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点便删除旧布局的数据,而保存新布局的数据。附图说明此处所说明的附图用来提供对本专利技术实施例的进本文档来自技高网...

【技术保护点】
1.一种面向流水线结构化数据查询的数据库智能分区方法,其特征在于,该方法包括:查询引擎根据SQL的查询请求经过物理计划的执行来处理该SQL查询请求,进行pipeline的划分,并将pipeline的划分情况上传至中心节点;中心节点根据查询引擎发送的pipeline划分情况,采用在线k‑means聚类算法计算出存储引擎节点间最优的数据存储布局,其中,聚类结果中的每个簇对应一个存储节点;各存储节点利用增量方式存储当前最优数据布局的数据,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点便删除旧布局的数据,而保存新布局的数据。

【技术特征摘要】
1.一种面向流水线结构化数据查询的数据库智能分区方法,其特征在于,该方法包括:查询引擎根据SQL的查询请求经过物理计划的执行来处理该SQL查询请求,进行pipeline的划分,并将pipeline的划分情况上传至中心节点;中心节点根据查询引擎发送的pipeline划分情况,采用在线k-means聚类算法计算出存储引擎节点间最优的数据存储布局,其中,聚类结果中的每个簇对应一个存储节点;各存储节点利用增量方式存储当前最优数据布局的数据,直到各个存储节点上的数据皆按照最优的数据布局存储为止,每个存储节点便删除旧布局的数据,而保存新布局的数据。2.根据权利要求1所述的一种面向流水线结构化数据查询的数据库智能分区方法,其特征在于,所述pipeline的划分,每一个pipeline的执行对应一个物理计划任务的执行,且一个pipeline对应一个执行节点。3.根据权利要求1所述的一种面向流水线结构化数据查询的数据库智能分区方法,其特征在于,所述将pipeline的划分情况上传至中心节点,是由查询引擎的master节点将每次pipeline划分的情况汇报给中心节点,其中,汇报的内容包括:每个pipeline所含的列属性信息。4.根据权利要求1所述的一种面向流水线结构化数据查询的数据库智能分区方法,其特征在于,还包括计时器,所述中心节点从收到查询请求起便由所述计时器执行计时。5.根据权利要求1所述的一种面向流水线结构化数据查询的数据库智能分区方法,其特征在于,所述采用在线k-means聚类算法计算出存储引擎节点间最优的数据存储布局,具体包括:通过中心节点...

【专利技术属性】
技术研发人员:段翰聪刘长红姚入榕闵革勇梁戈
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1