异构数据源的查询方法及装置与流程

文档序号:17586941发布日期:2019-05-03 21:24阅读:229来源:国知局
本发明涉及大数据
技术领域
:,尤其涉及一种异构数据源的查询方法及装置。
背景技术
::随着计算机网络的迅猛发展和数据爆炸,各大企业业务信息系统变的庞大而又复杂,业务类型呈现多样化、多元化的发展,如何使用这些数据量巨大、类型丰富的数据,发挥数据本身价值将面临着挑战。这些数据分散在不同的业务系统的不同的存储设备里,业务系统处理数据通常只是针对本存储内部的数据进行读取、使用,而且完全依赖底层的数据存储软件,业务系统在使用这些数据时会碰到以下问题:异构数据源查询语法多样,没有统一的查询语法,无法有效进行跨数据源的数据查询;数据之间的交互和集成成为瓶颈,数据模型的异构性增强,异构数据查询的高效性,成为迫切需要解决的问题;跨系统的业务数据关联查询困难,经常需要复制数据,造成大量资源浪费,无法进行有效的关联查询。针对以上问题,现有方案通常是首先将数据全部复制到一个数据源中,然后进行数据关联查询,这种方案存在以下缺陷:会造成大量存储和网络资源浪费,同时数据量较大时搬数据占用时间较长,查询效率很低;而且,现有方案仅支持已知数据模型的查询,当面对非结构化或是半结构化等数据模型未知的情况,现有方案不能支持查询;此外,当两种数据源数据格式不一致时,可能发生查询错误。技术实现要素:本发明提供的异构数据源的查询方法及装置,能够有效提升异构数据源的查询效率。第一方面,本发明提供一种异构数据源的查询方法,包括:数据接入模块通过内部的数据源访问插件,实现数据源数据的抽取,为数据查询模块提供数据输入;所述数据查询模块接收查询语句,根据访问接口模块提供的统一查询语法对所述查询语句进行解析,并构造各节点执行的查询操作队列,形成数据查询流水线,完成数据查询。可选地,所述数据查询流水线的初始操作为数据访问算子,所述数据查询模块从数据源中抽取查询请求需要的数据,提交给后续的操作队列,所抽取的数据划分为数据页,属于同一节点的数据页汇总为一个数据分片,作为计算的最小数据单元,在流水线中流转。可选地,当所述数据查询流水线为节点内部流水线时,所述方法还包括:所述数据查询模块通过节点内的流水线依次遍历所有本地查询操作队列,针对每一个操作,从上一个操作取一个数据对象,进行查询,并将结果交给下一个操作执行。可选地,当所述数据查询流水线为节点间流水线时,所述方法还包括:所述数据查询模块为每一个节点启动一个数据抽取任务,主动向上一个查询过程的节点拉数据,取到数据后放入待处理数据队列中,交给后续操作执行。可选地,当存在异构数据源的数据关联或聚合查询时,所述方法还包括:所述数据查询模块按照关联列、分组列对抽取的数据进行数据划分得到数据页,多个节点的数据页合并成为一个数据分片,在数据分片内部进行关联和聚合查询后,再由查询节点进行各分片查询结果汇总。第二方面,本发明提供一种异构数据源的查询装置,包括数据接入模块、数据查询模块和访问接口模块,其中,所述数据接入模块,用于通过内部的数据源访问插件,实现数据源数据的抽取,为所述数据查询模块提供数据输入;所述数据查询模块,用于接收查询语句,根据所述访问接口模块提供的统一查询语法对所述查询语句进行解析,并构造各节点执行的查询操作队列,形成数据查询流水线,完成数据查询。可选地,所述数据查询流水线的初始操作为数据访问算子,所述数据查询模块,用于从数据源中抽取查询请求需要的数据,提交给后续的操作队列,所抽取的数据划分为数据页,属于同一节点的数据页汇总为一个数据分片,作为计算的最小数据单元,在流水线中流转。可选地,当所述数据查询流水线为节点内部流水线时,所述数据查询模块,用于通过节点内的流水线依次遍历所有本地查询操作队列,针对每一个操作,从上一个操作取一个数据对象,进行查询,并将结果交给下一个操作执行。可选地,当所述数据查询流水线为节点间流水线时,所述数据查询模块,用于为每一个节点启动一个数据抽取任务,主动向上一个查询过程的节点拉数据,取到数据后放入待处理数据队列中,交给后续操作执行。可选地,当存在异构数据源的数据关联或聚合查询时,所述数据查询模块,用于按照关联列、分组列对抽取的数据进行数据划分得到数据页,多个节点的数据页合并成为一个数据分片,在数据分片内部进行关联和聚合查询后,再由查询节点进行各分片查询结果汇总。本发明实施例提供的异构数据源的查询方法及装置,定义了统一查询语法,有效的解决了异构数据源统一查询的问题,支持对结构化数据、半结构化数据、非结构化数据的关联和聚合等查询;对异构数据源的关联、聚合等查询提供了优化方法,提升了异构数据源的查询效率;数据源接入框架可以对接更多类型的数据源,实现更多类型异构数据源的查询。附图说明图1为本发明一实施例提供的异构数据源的查询方法的流程图;图2为本发明实施例提供的异构数据源的查询装置的结构框图;图3为本发明另一实施例提供的异构数据源的查询方法的执行过程示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种异构数据源的查询方法,如图1所示,所述方法包括:s11、数据接入模块通过内部的数据源访问插件,实现数据源数据的抽取,为数据查询模块提供数据输入。s12、所述数据查询模块接收查询语句,根据访问接口模块提供的统一查询语法对所述查询语句进行解析,并构造各节点执行的查询操作队列,形成数据查询流水线,完成数据查询。本发明实施例提供的异构数据源的查询方法,定义了统一查询语法,有效的解决了异构数据源统一查询的问题,支持对结构化数据、半结构化数据、非结构化数据的关联和聚合等查询;对异构数据源的关联、聚合等查询提供了优化方法,提升了异构数据源的查询效率;数据源接入框架可以对接更多类型的数据源,实现更多类型异构数据源的查询。下面对本发明实施例异构数据源的查询方法进行详细说明。本发明实施例提供统一查询语法进行异构数据源的关联、聚合等查询,可以支持关系型数据库、并行数据库、列数据库、分布式文件系统等异构数据源的跨库查询。本发明实施例可以通过图2所示的异构数据源的查询装置来实现,所述异构数据源的查询装置包括数据接入模块、数据查询模块和访问接口模块。下面对各个模块分别进行说明。数据接入模块通过数据源访问插件,实现数据源数据的抽取,为数据查询部分提供数据输入。数据接入模块封装了接入框架,实现不同数据源的数据访问,获取数据模型信息,执行数据抽取。数据接入框架为结构化、半结构化、非结构化数据类型的关联查询提升支撑。数据源接入框架提供数据源数据模型、数据读取、分片等功能,通过实现定制化插件实现异构数据源的查询。每一个异构数据源均需实现对应的接口函数,构造数据源访问插件,框架中的接口如下:getconnection:获取连接对象;closeconnection:关闭对象并释放资源;getschemanames:获取数据库或schema名称;gettablehandle:获取表句柄,包含表名称、统计信息等;getcolumns:获取字段名称、类型等;getsplits:获取分片信息;setsplits:设置分片信息、分片执行器;buildstmt:构造执行计划并执行;getresult:获取查询数据。数据查询模块依托于访问接口模块内部的统一查询语法实现,用于接收查询语句,并对语句进行解析,并构造各节点执行的查询操作队列,形成数据查询流水线。流水线的初始操作为数据访问算子,从数据源中抽取查询请求需要的数据,提交给后续的操作队列。抽取的数据会划分为数据页,属于同一节点的数据页汇总为一个数据分片,作为计算的最小数据单元,在流水线中流转。查询分为节点内部流水线和节点间流水线,节点内的流水线依次遍历所有本地查询操作队列,针对每一个操作,从上一个操作取一个数据对象,进行查询,并将结果交给下一个操作执行。当数据操作涉及多个节点的数据时,比如分组求和,需要进行节点间流水线查询,数据查询模块为每一个节点启动一个数据抽取的任务,主动向上一个查询过程的节点拉数据,取到数据后放入待处理数据队列中,交给后续操作执行,由此完成整个数据查询过程,将最终结果返回。访问接口模块内部的统一查询语法支持数据查询、数据抽取、数据转换等功能。其中select涵盖了数据查询、数据抽取、排序等基本操作;transform包含所有数据转换的操作,包括时间操作函数、字符串操作函数、数值运算等内容;aggs包含支持的聚合分组函数,例如求和sum、均值avg等。其中表名前增加数据源名称用于区分不同数据源的表,语法形式可以如下所示:为减少抽取的数据量,减少网络传输开销,查询中将单个数据源内部的过滤、聚合、关联操作下放到底层数据源执行,执行结果的数据量相比于直接抽取全部数据大大降低,并且能够有效利用底层数据源的索引特性,降低数据抽取的时间。当存在异构数据源的数据关联或聚合查询时,需要通过查询节点进行各节点执行结果的汇总,由此会造成查询节点的瓶颈问题。如图3所示,查询模块针对此种查询,按照关联列、分组列对抽取的数据进行数据划分得到数据页,多个节点的数据页合并成为一个数据分片,在数据分片内部进行关联和聚合查询后,再由查询节点进行各分片查询结果汇总,由此,由多个节点完成主要的关联和聚合过程,相对于由一个查询节点来完成关联和聚合过程,充分利用了集群资源,避免单个节点瓶颈问题,并且极大提升了查询结果的汇总性能。另外,对于无需由查询节点进行汇总的查询类型,查询节点接收到底层执行节点的部分结果即可返回查询结果,无需等到接收所有结果再返回,极大的提升了查询的响应速度。本发明定义的统一查询语法,有效的解决了异构数据源统一查询的问题,支持对结构化数据、半结构化数据、非结构化数据的关联和聚合等查询;本发明对异构数据源的关联、聚合等查询提供了优化方法,提升了异构数据源的查询效率;本发明提供的数据源接入框架,可以对接更多类型的数据源,实现更多类型异构数据源的查询。通过对查询执行计划优化,将对原始数据的过滤、常量、聚合等操作下放到异构数据源中进行,利用底层数据源的特性,减少抽取的数据量,降低网络传输开销、关联或合并计算开销;将需要在计算节点进行合并的操作,按照关联列或聚合列进行数据分片,按分片进行关联和合并计算,提升查询效率,避免计算节点成为瓶颈。本发明实施例还提供一种异构数据源的查询装置,如图2所示,所述装置包括数据接入模块、数据查询模块和访问接口模块,其中,所述数据接入模块,用于通过内部的数据源访问插件,实现数据源数据的抽取,为所述数据查询模块提供数据输入;所述数据查询模块,用于接收查询语句,根据所述访问接口模块提供的统一查询语法对所述查询语句进行解析,并构造各节点执行的查询操作队列,形成数据查询流水线,完成数据查询。可选地,所述数据查询流水线的初始操作为数据访问算子,所述数据查询模块,用于从数据源中抽取查询请求需要的数据,提交给后续的操作队列,所抽取的数据划分为数据页,属于同一节点的数据页汇总为一个数据分片,作为计算的最小数据单元,在流水线中流转。可选地,当所述数据查询流水线为节点内部流水线时,所述数据查询模块,用于通过节点内的流水线依次遍历所有本地查询操作队列,针对每一个操作,从上一个操作取一个数据对象,进行查询,并将结果交给下一个操作执行。可选地,当所述数据查询流水线为节点间流水线时,所述数据查询模块,用于为每一个节点启动一个数据抽取任务,主动向上一个查询过程的节点拉数据,取到数据后放入待处理数据队列中,交给后续操作执行。可选地,当存在异构数据源的数据关联或聚合查询时,所述数据查询模块,用于按照关联列、分组列对抽取的数据进行数据划分得到数据页,多个节点的数据页合并成为一个数据分片,在数据分片内部进行关联和聚合查询后,再由查询节点进行各分片查询结果汇总。本发明实施例提供的异构数据源的查询装置,定义了统一查询语法,有效的解决了异构数据源统一查询的问题,支持对结构化数据、半结构化数据、非结构化数据的关联和聚合等查询;对异构数据源的关联、聚合等查询提供了优化方法,提升了异构数据源的查询效率;数据源接入框架可以对接更多类型的数据源,实现更多类型异构数据源的查询。本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1