数据查询的方法和装置制造方法及图纸

技术编号:9896419 阅读:83 留言:0更新日期:2014-04-09 22:32
本发明专利技术公开了一种在无共享数据库中查询数据的方法和装置。所述方法包括:获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,并包含对外部数据的期望分布的定义;基于所述优化的访问计划获取与期望分布相关的数据分布信息;将数据分布信息传送给外部数据源,使得外部数据源按照数据分布信息将外部数据进行分割和返回;以及按照所述优化的访问计划对分割的外部数据进行查询相关处理。所述装置与方法对应。根据本发明专利技术的方法和装置,允许定义外部数据的期望分布,并使得外部数据源按照该期望分布来分割和返回外部数据,由此避免数据查询中跨节点的数据访问,提高数据查询的效率。

【技术实现步骤摘要】
数据查询的方法和装置
本专利技术涉及数据库查询,更具体地,涉及一种在无共享数据库中进行数据查询的方法和装置。
技术介绍
数据库用于按照数据结构来组织、存储和管理数据。随着信息技术的发展,需要存储和处理的数据量越来越大,这对数据库提出了更高的要求。为了适应于海量数据的存储和管理,数据库的构成由简单的单个存储设备扩展为多个存储设备的集群。并且,数据库还可以与外部数据源相结合,共同提供数据的存储、管理和查询,从而进一步扩展数据库的应用。外部数据源可以通过各种数据存储系统来实现,包括集中式数据存储系统,分布式存储系统。分布式存储系统的例子包括网络文件系统NFS,Hadoop文件系统HDFS等等。许多外部数据源并不支持标准API来进行数据存取,因此,通常需要利用用户定义函数UDF(userdefinedfunction)来执行外部数据查询,将数据从外部数据源取入到数据库。图1示出在数据库与外部数据源相结合的系统中进行数据查询的示意图。在图1中,以Hadoop系统作为外部数据源的例子。为了在这样的系统中进行数据查询,首先用户侧向数据库管理引擎发出一个SQL查询请求。查询请求的代码可以如右侧所示。从右侧代码可以看到,为了获取Hadoop系统中的数据,在查询请求中包含了两个UDF,即jaqlSumit和hdfsRead,用以向Hadoop系统提出请求并从中取出数据。SQL查询请求中中间部分的代码段用于在Hadoop中进行数据查询。对于这样的查询请求,数据库引擎首先对其进行编译和分析。对于其中的UDF,数据库引擎开启单独的线程来运行UDF。因此,通常还将运行UDF的程序和线程称为UDF实体。在图1的例子中,数据库管理引擎于是创建了两个UDF实体,分别从外部数据源Hadoop系统读取数据。最后,数据库管理引擎将读取的数据进行组织,返回到用户接口。另一方面,如前所述,数据库可以由多个存储设备的集群构成。这样的集群可以有多种共享实现方式,例如内存共享,即多个设备的CPU共享同一片内存,CPU之间通过内部通讯机制进行通讯;磁盘共享,即每一个CPU使用自己的私有内存区域,但通过内部通讯机制直接访问所有磁盘系统;以及无共享,即每一个设备的CPU都有私有内存区域和私有磁盘空间,2个CPU不能访问相同磁盘空间,CPU之间的通讯通过网络连接。在以上的实现方式中,无共享的方式是数据库常用的典型架构。对于无共享架构的数据库来说,在与外部数据源相结合进行数据存储和查询的情况下,有可能产生数据再分配的问题。图2示出在无共享数据库与外部数据源相结合的系统中进行数据查询的示意图。如图2所示,数据库由无共享的多个设备构成,每个设备具有独立的CPU、内存和用于存储数据的磁盘。通常,也将每个设备称为数据库的一个节点,因此图2的数据库包含无共享的节点N1-N4。在这样的无共享数据库中,为了从外部数据源读取数据,通常在每个节点都创建一个UDF实体,利用所创建的多个UDF实体并行地执行外部数据读取。然而,由于数据库无法识别外部数据源中数据的分布,而外部数据源也无法知道期望的数据分布,因此,在数据库管理引擎通过UDF从外部数据源取得数据之后,需要对这些数据进行再分配。例如,在一个具体例子中,希望查询用户及其近期交易的信息,其中与用户相关的信息存储在数据库本地设备中,而交易信息存储在外部数据源中。为此,数据库引擎需要从外部数据源获得交易信息,然后将这些交易信息与对应的用户信息进行连接(join)。由于数据库各个节点之间无共享,数据库引擎需要将各个交易信息分别发送到存储有所对应的用户信息的特定节点中才能进行连接。例如,假定用户A的信息存储在节点N1中,而节点N2上的UDF实体获取到了用户A的交易信息,那么数据库引擎需要将N2上的UDF实体所获得的数据发送到N1中,才能使用户A与其交易信息相连接。可以理解,对于无共享架构的数据库来说,节点之间的通信会显著降低运行性能。因此,希望能够减少或者避免数据在数据库中的再分配,从而减小由节点间通信带来的性能劣化。
技术实现思路
鉴于以上所述的问题,提出本专利技术,旨在提供一种方案,能够减少或避免查询过程中数据在无共享数据库中的再分配。根据本专利技术的一个方面,提供了在无共享数据库中查询数据的方法,包括:获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;将所述数据分布信息传送给所述外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及按照所述优化的访问计划对所述分割的外部数据进行查询相关处理。根据本专利技术的另一个方面,提供了包括:访问计划生成单元,配置为获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;数据分布信息获取单元,配置为基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;数据分布信息传送单元,配置为将所述数据分布信息传送给外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及查询处理执行单元,配置为按照所述优化的访问计划对分割的外部数据进行查询相关处理。根据本专利技术的方法和装置,允许定义外部数据的期望分布,并使得外部数据源按照该期望分布来分割和返回外部数据,由此避免数据查询中跨节点的数据访问,提高数据查询的效率。附图说明通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。图1示出在数据库与外部数据源相结合的系统中进行数据查询的示意图;图2示出在无共享数据库与外部数据源相结合的系统中进行数据查询的示意图;图3示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框图;图4示出根据本专利技术一个实施例的数据查询方法的流程图;图5示出在本专利技术一个实施例中数据查询涉及的各个实体的操作时序;图6示出执行图4和图5的方法的效果图;以及图7示出根据本专利技术实施例的数据查询装置的框图。具体实施方式下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。所属
的技术人员知道,本专利技术可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本专利技术还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储本文档来自技高网
...
数据查询的方法和装置

【技术保护点】
一种在无共享数据库中查询数据的方法,包括:获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;将所述数据分布信息传送给所述外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及按照所述优化的访问计划对所述分割的外部数据进行查询相关处理。

【技术特征摘要】
1.一种在无共享数据库中查询数据的方法,包括:获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对有待从外部数据源获取的外部数据的期望分布的定义;基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;将所述数据分布信息传送给所述外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及按照所述优化的访问计划对所述分割的外部数据进行查询相关处理。2.根据权利要求1所述的方法,其中所述查询请求还涉及存储在所述无共享数据库中的内部数据,并包括所述外部数据和内部数据的关联条件,所述外部数据的期望分布与所述关联条件相关。3.根据权利要求1所述的方法,其中所述针对查询请求生成优化的访问计划包括:识别所述对外部数据的期望分布的定义,并将其包含在初步访问计划中;以及考虑所述期望分布而对所述初步访问计划进行优化,以获得优化的访问计划。4.根据权利要求1所述的方法,其中获取所述数据分布信息包括:通过调用运行时扩展的接口函数来获取所述优化的访问计划的信息,基于获取的优化的访问计划的信息获取所述数据分布信息。5.根据权利要求1-4中任一项所述的方法,其中所述数据分布信息包含直接的分割规则和返回规则,使得所述外部数据源根据分割规则对外部数据进行分割,根据返回规则返回分割的外部数据。6.根据权利要求1-4中任一项所述的方法,其中所述数据分布信息涉及指向其他数据的索引信息,使得所述外部数据源首先根据该索引信息获取所述其他数据的内容,据此确定外部数据的目标分布,然后基于所述外部数据的目标分布将外部数据进行分割和返回。7.根据权利要求1-4中任一项所述的方法,其中所述数据分布信息涉及指向其他数据的索引信息,所述将数据分布信息传送给外部数据源包括,首先对所述数据分布信息进行处理,使其包含直接的分割规则和返回规则,然后将处理的数据分布信息发送给所述外部数据源。8.根据权利要求2所述的方法,其中对外部数据进行查询相关处理包括:对所述内部数据和分割的外部数据进行同区连接,所述同区连接是在所述无共享数据库中同一节点之内进行的连接。9.一种在无共享数据库中查询数据的装置,包括:访问计划生成单元,配...

【专利技术属性】
技术研发人员:金毅张皖川郝庆运陈星
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

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

1