一种云计算环境下的无共享数据库集群并行查询处理方法技术

技术编号:7541564 阅读:231 留言:0更新日期:2012-07-13 05:39
本发明专利技术公开了一种云计算环境下的无共享数据库集群并行查询处理方法,包括以下步骤:第一步:对查询计划进行分割,得到由各数据节点分别执行的切片;第二步:各数据节点分别进行切片处理,得到各数据节点的哈希连接;第三步:各数据节点通过聚合汇总数据流动,在控制节点进行哈希聚合,得到查询结果集。本发明专利技术利用节点数据流动操作,使查询执行过程中数据可以在各节点之间流动,完成并发执行查询过程,大幅度提升了执行速度。

【技术实现步骤摘要】

本专利技术涉及一种数据库并行查询方法,尤其涉及,属于数据库集群系统

技术介绍
随着企业及政府信息化的不断深入,数据库应用的复杂性日益增强,迫切需要解决海量数据处理、海量数据存储以及高可扩展性的问题,以便为业务支撑系统提供良好的数据存储、查询服务。但是,传统的单节点数据库无法从根本上满足上述需求。为此,人们借鉴计算机集群(将一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作)的技术理念,将多个数据库连接起来组成数据库集群系统。数据库集群系统(DatabaseCluster System,简称DBCS)将集群技术与数据库系统相结合,是一组完整的、自治的计算处理单元(节点),每个节点均有独自的CPU、内存以及磁盘等硬件资源,运行独立的操作系统和自治的数据库系统。各个节点通过高速专用网络或者商业通用网络互连,彼此协同计算,作为统一的数据库系统提供并行事务处理服务。目前,在数据库领域有两种数据库集群一种是无共享(SiareNothing)数据库集群,另一种是共享磁盘Chare Disk)数据库集群。随着数据库技术的发展和云计算技术的兴起,无共享数据库集群以其并行性好等优点,在云计算领域获得广泛应用。数据库查询服务是这些数据库集群系统中运行频率最高的应用场景之一。在申请号为2010102771 . 9的中国专利技术专利申请中,公开了一种分布式数据库的并行查询方法。 该方法中,首先设置查询代理模块,使查询代理模块直接接收外部模块的查询命令;其次设置多个与查询代理模块相关联的查询核心模块,查询核心模块通过分解任务提供对数据多维的粒度查询,提高整体的响应速度,查询核心模块通过多线程技术,多并发查询数据库, 充分发挥商用数据库的高吞吐量、高并发的特点,同时对多线程进行协调控制,查询流程管理;第三,采用分批数据返回的形式并采用预读机制,提高响应速度。该方法通过对查询任务“分而治之”的思想,由查询核心模块多并发发起查询,优先返回查询速度快的粒度数据, 从而达到了系统整体查询性能显著提升的效果,可以满足绝大多数应用系统快速查询的需要。
技术实现思路
本专利技术所要解决的技术问题在于提供。为实现上述的专利技术目的,本专利技术采用下述的技术方案,其特征在于包括以下步骤第一步对查询计划进行分割,得到由各数据节点分别执行的切片;第二步各数据节点分别进行切片处理,得到各数据节点的哈希连接;第三步各数据节点通过聚合汇总数据流动,在控制节点进行哈希聚合,得到查询结果集。其中较优地,在所述第二步中,各数据节点的切片处理包括以下步骤步骤1) 一个数据节点扫描第一表,得到第一哈希表,然后扫描第二表,与第一哈希表进行哈希连接,得到第一数据集;步骤2)另一个数据节点扫描第三表,得到第三哈希表,然后扫描第四表,与第三哈希表进行哈希连接,得到第二数据集;步骤幻所述另一个数据节点基于所述第一数据集和所述第二数据集进行哈希连接。或者,各数据节点的切片处理采用以下步骤步骤11) 一个数据节点扫描第一表,得到第一哈希表,然后扫描第二表,与第一哈希表进行哈希连接,得到第一数据集,并将第二表通过广播数据流动操作或者重新分布数据流动操作,发送给其他数据节点;步骤12)另一个数据节点扫描第三表,基于接收到的所述第二表和扫描的第三表,得到第三哈希表,然后扫描第四表,与第三哈希表进行哈希连接,得到第二数据集;步骤1 所述另一个数据节点基于所述第一数据集和所述第二数据集进行哈希连接。其中较优地,所述第三步中,各个数据节点对第二步中得到的所述哈希连接进行哈希聚合和排序后,再通过所述聚合汇总数据流动操作,发送给所述控制节点。本专利技术利用节点数据流动操作,使查询执行过程中数据可以在各节点之间流动, 从而使每一个数据节点都获得所需要的全部数据,完成并发执行查询过程。因为对查询语句进行并行查询支持处理,所以大幅度提升了执行速度。附图说明下面结合附图和具体实施方式对本专利技术作进一步的详细说明。图1为本专利技术的具体实施例中,节点数据流动的示意图;图2为本专利技术的具体实施例中,所使用的查询计划树的示意图。具体实施例方式在云计算环境下,无共享数据库集群中的数据是分片存储的,每一个数据节点只有一部分数据。在某些SQL语句的执行过程中,有些数据节点需要对包括其他节点数据在内的全部数据进行操作才能完成查询计划。为此,本专利技术通过在数据节点的查询计划树的适当地方插入节点数据流动操作,使查询执行过程中数据可以在各节点之间流动,从而使每一个数据节点都获得所需要的全部数据,完成并发执行查询过程。下面对此展开具体的说明。在作为本专利技术具体实施例的某个无共享数据库集群中,包括控制节点和一到多个数据节点。每个数据节点负责存储数据,接受访问计划并执行,然后返回计划处理结果。 用户的数据首先以比较均勻的方式,例如采用哈希(hash,也称散列)分布方式或者范围 (range)分布方式等分别存放在每个数据节点上。控制节点接受客户端的查询请求,分析请求并生成查询计划,分发查询计划给数据节点,以使各数据节点并发执行查询。为了实现最大化的并行查询,本专利技术将查询计划分割成不同的切片,用于各个数据节点执行,并在切片中加入适当的数据流动操作,以使各个数据节点能够得到所需的全部数据来执行查询。每个切片都是查询计划的一部分,并能够独立在各个数据节点上工作。 部分切片中包含的执行内容比传统数据库查询过程多了一步操作数据流动。对查询计划的分割切片是按照计划中的数据流动操作来做的。一个数据流动操作涉及的双方位于不同的切片中。前已述及,有些数据节点的查询计划必须要拥有其他数据节点的数据才能完成, 为此在该数据节点的查询计划切片的适当地方插入节点数据流动操作,使查询执行过程中所需的数据在各节点间流动,如此每一个数据节点均可获得所需要的全部数据,同时也保证了查询操作都是在每个数据节点上单独执行的。需要说明的是,并不是所有的查询计划都需要有数据流动操作,例如查询系统表信息等就不需要。在本专利技术中,数据流动包括三种类型A 聚合汇总数据流动,是指每个数据节点将哈希连接(join)后的数据发到一个单节点上,通常是发到控制节点进行合并。B 重新分布数据流动,即重分发数据流动,是指利用哈希连接(join)的列值的哈希值的不同,将筛选后的数据在其他数据节点上重新分布。C 广播数据流动,即一个数据节点向多个节点广播需要发送的数据。重新分布数据流动是向特定少数数据节点发送数据,广播数据流动是向多个节点发送数据。之所以需要广播数据流动和重新分布数据流动,是因为每个数据节点上都只保存了一部分数据,出现不同数据节点之间做连接(join)操作的时候,需要将自己的数据向其他数据节点发送。有了这两个操作,就能保证所有的连接(join)操作都是在每个数据节点上单独执行的。聚合汇总数据流动是在每个数据节点单独执行好查询计划后,将数据发往控制节点上,然后由控制节点整合返回给客户端。广播数据流动能够保证所有情况下单个数据节点上查询的数据完整性,有的情况下只需要做重新分布数据操作就能保证单个数据节点上查询的数据完整性。在云计算环境下,无共享数据库集群是一个分布式存储的数据库。对于用户来讲, 随时需要从这些分布式存储的数据库中得到完整的数据。聚合汇总数据流动就是为了保证返回给用户的数本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:李睿峰王殿成冯玉李祥凯冷建全
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

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

1
相关领域技术