CN103714073A - 数据查询的方法和装置 - Google Patents
数据查询的方法和装置 Download PDFInfo
- Publication number
- CN103714073A CN103714073A CN201210375556.XA CN201210375556A CN103714073A CN 103714073 A CN103714073 A CN 103714073A CN 201210375556 A CN201210375556 A CN 201210375556A CN 103714073 A CN103714073 A CN 103714073A
- Authority
- CN
- China
- Prior art keywords
- data
- external data
- distributed intelligence
- inquiry request
- access plan
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24524—Access plan code generation and invalidation; Reuse of access plans
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
Abstract
本发明公开了一种在无共享数据库中查询数据的方法和装置。所述方法包括:获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,并包含对外部数据的期望分布的定义;基于所述优化的访问计划获取与期望分布相关的数据分布信息;将数据分布信息传送给外部数据源,使得外部数据源按照数据分布信息将外部数据进行分割和返回;以及按照所述优化的访问计划对分割的外部数据进行查询相关处理。所述装置与方法对应。根据本发明的方法和装置,允许定义外部数据的期望分布,并使得外部数据源按照该期望分布来分割和返回外部数据,由此避免数据查询中跨节点的数据访问,提高数据查询的效率。
Description
技术领域
本发明涉及数据库查询,更具体地,涉及一种在无共享数据库中进行数据查询的方法和装置。
背景技术
数据库用于按照数据结构来组织、存储和管理数据。随着信息技术的发展,需要存储和处理的数据量越来越大,这对数据库提出了更高的要求。为了适应于海量数据的存储和管理,数据库的构成由简单的单个存储设备扩展为多个存储设备的集群。并且,数据库还可以与外部数据源相结合,共同提供数据的存储、管理和查询,从而进一步扩展数据库的应用。
外部数据源可以通过各种数据存储***来实现,包括集中式数据存储***,分布式存储***。分布式存储***的例子包括网络文件***NFS,Hadoop文件***HDFS等等。许多外部数据源并不支持标准API来进行数据存取,因此,通常需要利用用户定义函数UDF(user defined function)来执行外部数据查询,将数据从外部数据源取入到数据库。
图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示出根据本发明实施例的数据查询装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图3示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图。图3显示的计算机***/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
下面结合具体实施例描述本发明的构思和实现方式。根据本发明的实施例,为了避免无共享数据库在执行数据查询过程中对数据的再分配,允许在查询请求中对有待从外部数据源获取的数据的期望分布进行定义,并且,数据库引擎所创建的UDF实体可以从针对查询请求生成的访问计划中获取到期望的数据分布。于是,UDF实体可以将相应的数据分布信息发送给外部数据源,并指示外部数据源按照该数据分布信息对所查询的数据进行分割和返回。如此,从外部数据源返回的数据就具有预期的数据分布,从而可以直接与数据库中的数据进行连接,而不必进行重新分配。
现在参看图4,示出根据本发明一个实施例的数据查询方法。如图4所示,该实施例的数据查询方法包括以下步骤:在步骤41,获取查询请求,针对该查询请求生成优化的访问计划(access plan),其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;步骤42,基于所述优化的访问计划获取与外部数据的期望分布相关的数据分布信息;在步骤43,将所述数据分布信息传送给所述外部数据源,使得所述外部数据库按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及,在步骤44,按照优化的访问计划对所述分割的外部数据进行查询相关处理。下面结合具体例子描述上述各个步骤的执行方式。
首先,在步骤41,在无共享数据库中获取查询请求,该查询请求涉及存储在外部数据源中的外部数据。为了从外部数据源获得外部数据,查询请求包含相应的UDF。为了避免在数据库中对外部数据进行再分配,本发明的实施例允许在查询请求中定义外部数据的期望分布。
一般地,查询请求通常还涉及存储在无共享数据库中的内部数据,并包含关联条件,用于定义内部数据和外部数据之间的关联关系。在对内部数据和外部数据进行关联查询的情况下,一般地,所定义的外部数据的期望分布与内部数据和外部数据之间的关联条件相关。
下面示出一个示例性查询请求的SQL代码。
在以上的示例性查询请求中,t1是存储于无共享数据库节点上的本地数据,即以上描述的内部数据。语句table(pget('/home/username/udf/file'))as t2(…)包含了一个UDF,即pget('/home/username/udf/file')。该UDF用于从外部数据源的特定位置读取数据。根据上述语句的定义,通过UDF从外部数据源读取的数据被组织为表t2。因此,t2由存储在外部数据源中的数据构成,对应于上述的外部数据。接着,语句t1.stock_id=t2.stock and(t1.pn=1 or t1.pn=0)定义了t1和t2的关联条件。此外,根据本发明的实施例,允许在查询请求中包含对外部数据的期望分布的定义,即语句SPLIT BY(stock)AS TABLE t1。具体地,该语句定义了外部数据t2的预期分布,即,使得t2的数据按照stock进行分割,分割方式与t1的分布相同。可以看到,所定义的预期分布与t1和t2之间的关联条件相关。
可以理解,以上描述的SQL代码只是查询请求的一个具体例子。查询请求的形式和内容并不限于该具体例子所示。在其他实施例中,查询请求可以用其他语言和代码形式来实现。相应地,对外部数据的期望分布的定义也可以采用其他关键词来标识。
在一个实施例中,查询请求仅涉及外部数据;在如上述代码所示的例子中,查询请求涉及外部数据和内部数据。在其他例子中,查询请求还可以涉及更多的数据(例如,除以上的表t1,t2之外的更多的表t3,t4等),定义更加复杂的关联条件(例如,t3和t4共同与t2关联,同时t2与t1关联,等等)。在此情况下,对外部数据的期望分布的定义也可能更加复杂。不过,对于可能的更加复杂的查询请求和分布定义,数据查询的执行过程与以上的例子相似。下面描述具体的执行过程。
在获得如上所述的查询请求之后,数据库引擎对查询请求进行编译和分析,进而生成访问计划。如本领域技术人员所知,数据库引擎包括编译器和优化器,其中编译器对查询请求的代码进行编译和解析,而优化器基于解析后的数据结构生成适用于该查询请求的访问计划。访问计划定义了查询的具体执行方式和执行路径,例如按什么顺序访问表,使用哪些索引,以及用何种方法来连接数据等等。具体而言,编译器首先对查询请求进行编译和语法解析,输出一个逻辑树形式的数据结构。该逻辑树中每一个节点表示查询中进行的一个操作,例如读取某个表,进行内部连接(inner join)等。基于这样的数据结构,优化器执行优化处理。一般地,优化器首先将树形结构上的逻辑操作转化为物理操作,从而产生初步访问计划。然后,优化器估算每个访问计划的执行成本,从而产生一个优化的访问计划。
对于前述的查询请求来说,编译器和优化器在现有技术的基础上进一步执行与数据分布定义相关的处理。具体地,上述查询请求中包含了对外部数据的期望分布的定义。相应地,编译器在编译该查询请求时需要识别该期望分布的定义,并将其包含在树形数据结构中。于是,查询请求中定义的期望数据分布被包含在初步访问计划中。进一步地,在优化阶段,优化器考虑该数据分布而对访问计划进行优化,从而产生优化的访问计划。一般地,查询请求中定义的外部数据的期望分布旨在减小或避免查询过程中跨节点的数据访问。更具体地,在查询请求涉及内部数据和外部数据的情况下,定义的外部数据的期望分布与外部数据和内部数据的关联条件相关,旨在便于数据的同区连接(co-locatedjoin)。同区连接是指,数据不必经由数据库中节点之间的通信就可以实现的连接。一般地,在需要连接的数据位于数据库同一节点的情况下,数据可以直接进行同区连接。因此,在考虑了查询请求中定义的数据分布的情况下,优化器选择同区连接的执行路径作为优化的访问计划。
下面结合以上的示例性查询代码描述上述执行过程。如前所述,查询请求中包含语句SPLIT BY(stock)AS TABLE t1,用以定义期望的数据分布。通过对该语句进行编译和解析,数据库引擎获知,通过UDF从外部数据源获取的表t2的数据将会被分割。具体地,从并行执行的UDF实体pget()取回的数据将会基于表的列(stock)被分份。分份的规则与表t1相同。基于这样的数据分布定义,优化器产生优化的访问计划,其中指定在t1和t2的列之间进行同区连接。
在查询请求仅涉及外部数据的情况下,优化器基于各个备选路径的执行成本,并考虑定义的期望数据分布来执行优化,产生优化的访问计划。该优化的访问计划能够减小或避免查询过程中跨节点的数据访问。
在生成优化的访问计划之后,数据库引擎开始按照访问计划来执行查询请求。在执行查询请求的过程中,数据库引擎开启和创建用于从外部数据源获取外部数据的UDF实体。通过对UDF的修改,可以使得UDF实体基于执行的访问计划获取与外部数据的期望分布相关的数据分布信息,也就是执行图4的步骤42。
具体地,在一个实施例中,UDF实体通过调用运行时中扩展的接口函数来获取正在执行的访问计划中的信息,由此获得上述数据分布信息。数据分布信息用于反映查询请求中定义的期望的数据分布。
对于以上示例性查询代码的例子,在优化的访问计划中可以体现对t2的数据分布的定义,即,根据t1的列分布将t2按照列进行分割。具体地,UDF实体可以通过调用扩展的API函数String getSplitBaseTableName()获得表t1的名字,通过调用int[]get SplitBaseColIndices()获得要分割的表t2的列的索引。基于调用返回的信息,UDF实体获得与t2相关的数据分布信息。可以理解,对于查询请求中包含的不同的数据分布定义,UDF实体调用的具体的接口函数也会有所不同。例如,在另一个例子中,查询请求仅涉及外部数据,并定义将外部数据按照某配置文件的设定进行分割。此时,UDF实体需要调用其他函数来获得上述配置文件的信息,例如配置文件的访问路径、名称、内容等。
在获取到上述数据分布信息之后,在步骤43,UDF实体将所述数据分布信息传送给外部数据源,使得外部数据库按照所述数据分布信息分割外部数据,并且并行地返回分割的外部数据。可以理解,在现有技术中,UDF实体作用为数据库引擎创建的与外部数据源的接口,用于与外部数据源通信。为了获取外部数据源中存储的外部数据,UDF实体向外部数据源发出查询指令,其中包含外部数据的信息。相应地,外部数据源根据接收的查询指令准备外部数据。在此基础上,在步骤43中,UDF实体进一步地在查询指令中包含外部数据的数据分布信息,并指示外部数据源按照所传送的数据分布信息将外部数据进行分割和返回。于是,外部数据源在UDF实体的指示下,准备外部数据,根据数据分布信息将外部数据进行分割,并且同样地根据数据分布信息将分割的外部数据并行地返回多个UDF实体。
在一个实施例中,UDF实体发送给外部数据源的数据分布信息包含直接的分割规则和返回规则。例如,在一个例子中,数据分布信息指定外部数据源将外部数据构成的表按照列进行分割,并且将第i列数据返回给数据库的第i个节点上的UDFi。对于这样的数据分布信息,外部数据源可以在UDF实体的指示下,根据分割规则对外部数据进行分割,并将分割的外部数据并行地分别返回到返回规则所指定的UDF。
在另一实施例中,UDF实体发送给外部数据源的数据分布信息涉及指向其他数据的索引信息。此时,外部数据源需要首先根据该索引信息获取数据内容,才能确定外部数据的目标分布。例如,在以上示例性代码的例子中,UDF实体在数据分布信息中包含有表t1的名字,并指示外部数据源按照t1的列分布对t2的数据进行分割和返回。于是,外部数据源需要反过来访问无共享数据库,根据t1的索引信息(例如名字)获取t1的分布情况,然后才能确定如何分布t2。在一个例子中,t1的列分布通过一个哈希函数来确定。也就是,假定t1的第i列中的数据存储在无共享数据库中第j个节点上,那么可以通过对i进行哈希运算来确定j。在这样的情况下,外部数据源还需要获取该哈希函数以确定表t1的列分布作为t2的目标分布。进而,外部数据源可以根据t2的目标分布将分割的t2的各个列中的数据分别返回到不同节点的UDF。
在一个实施例中,UDF实体可以首先对获得的涉及索引信息的数据分布信息进行处理,使其包含直接的分割规则和返回规则,然后再将处理的数据分布信息发送给外部数据源。例如,对于以上包含t1和t2示例性代码的例子,UDF实体可以对t1的列进行哈希运算,获得各个列的存储位置,将列与存储位置之间的对应关系作为直接返回规则包含在数据分布信息中传送给外部数据源,使得外部数据源可以基于数据分布信息直接对外部数据进行分割和返回。
可以理解,数据分布信息还可以具有其他形式,包含更多内容。然而,不管其具体形式如何,数据分布信息旨在使得外部数据源能够获知外部数据的目标分布状态,并按照该目标分布状态来对外部数据进行分割和返回。于是,运行在数据库各个节点上的UDF实体可以分别并行地从外部数据源获得返回的外部数据。进一步地,各个UDF实体可以将获得的外部数据传递到数据库引擎。基于获得的外部数据,数据库引擎可以按照优化的访问路径执行数据查询的相关处理,即执行步骤44。
如前所述,数据库引擎已经生成了针对查询请求的优化的访问计划,该优化的访问计划考虑了外部数据的期望分布,因此能够减小或避免查询过程中跨节点的数据访问。另一方面,外部数据源从UDF实体获得了反映上述期望数据分布情况的数据分布信息,并由此对外部数据进行了分割和返回。于是,从外部数据源返回的外部数据的实际分布与查询请求中定义的期望分布相一致,也符合优化的访问计划的预期。因此,在步骤44中,数据库引擎可以按照之前生成的优化的访问计划对于获得的外部数据进行查询相关处理,从而不必在节点之间传递外部数据。在查询请求涉及外部数据和内部数据的情况下,优化的访问计划选择便于内部数据与外部数据同区连接的执行路径。此时,步骤44中执行的查询相关处理包括根据查询请求中的关联条件对内部数据和外部数据进行同区连接。在一个实施例中,上述查询相关处理还包括对查询的数据进行组织、呈现等其他常规处理。
图5示出在本发明一个实施例中数据查询涉及的各个实体的操作时序,该操作时序图从另一个角度描述了图4的数据查询方法。如图5所示,首先,数据库引擎接收查询请求,基于该查询请求生成优化的访问计划。然后,在执行该访问计划时,数据库引擎开启或创建UDF实体。UDF实体通过调用运行时提供的接口函数向数据库引擎请求数据分布信息。相应地,数据库引擎通过读取访问计划的信息,向UDF实体返回所请求的数据分布信息。于是,UDF实体向外部数据源发送外部数据读取指令,且一并附上上述数据分布信息。这使得外部数据源按照UDF的指示准备数据,并根据数据分布信息将外部数据进行分割和返回。于是,UDF实体获取到从外部数据源返回的分割的外部数据。接着,UDF实体将获得的外部数据传送回数据库引擎,由此,数据库引擎对获取的数据进行查询相关处理。
图6示出执行图4和图5的方法的效果图。图6所示的数据库的结构与图2相同,均是由无共享的多个节点构成,并且,为了从外部数据源读取数据,在每个节点都创建了一个UDF实体。不同的是,通过执行本发明实施例的方法,UDF实体从数据库引擎获取数据分布信息,以此反映查询请求中定义的外部数据的期望分布,该期望分布旨在减小或避免数据库节点间的数据访问,也就是免于节点间的数据传递和再分配。进一步地,UDF实体将这样的数据分布信息传送给外部数据源,使其知晓期望的数据分布。于是,外部数据源在UDF实体的指示下,根据数据分布信息将外部数据进行预先分割,并且并行地将分割的外部数据返回到各个UDF实体。如此,从外部数据源返回的外部数据具有期望的数据分布。对于这样具有期望分布的外部数据,每个UDF实体只需要将获得的外部数据的一部分返回给数据库引擎就可以在节点内进行数据的查询处理(包括与内部数据的连接),而不必如图2所示跨节点对外部数据进行再分配。
可以理解,在无共享数据库结构中,各个节点上的UDF实体可以并行地工作。在一个实施例中,每个UDF实体都向外部数据源传送上述数据分布信息。在另一实施例中,选择UDF实体中的一部分执行数据分布信息的传送。例如,在一个例子中,固定地选择特定UDF实体(例如内部节点上运行的UDF实体)向外部数据源传送数据分布信息;在另一例子中,利用最先与外部数据源建立连接的UDF实体来传送数据分布信息。本领域技术人员也可以采用其他方式确定用于传送数据分布信息的UDF实体,只要使得外部数据源能够通过一个或多个UDF实体获得数据分布信息。
通过以上的描述可以理解,在本发明的实施例中,允许在查询请求中定义外部数据的期望分布,该期望分布旨在减小或消除数据查询中跨节点的数据访问。进一步地,通过UDF实体将反映该期望分布的数据分布信息传送到外部数据源,由此使得外部数据源根据数据分布信息对外部数据进行预先分割。于是,从外部数据源返回的数据具有期望的分布。因此,基于该期望的分布,数据的查询处理不涉及跨节点的数据访问,从而避免了在数据库节点之间重新分配外部数据。
基于同一发明构思,本发明的实施例还提供了用于数据查询的装置。图7示出根据本发明实施例的数据查询装置的框图。如图7所示,数据查询装置总体表示为700。具体地,装置700包括:访问计划生成单元71,配置为获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;数据分布信息获取单元72,配置为基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;数据分布信息传送单元73,配置为将所述数据分布信息传送给外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及查询处理执行单元74,配置为按照所述优化的访问计划对分割的外部数据进行查询相关处理。
在一个实施例中,所述查询请求还涉及存储在无共享数据库中的内部数据,并包括所述内部数据和外部数据的关联条件,所述外部数据的期望分布与所述关联条件相关。
在一个实施例中,所述访问计划生成单元71配置为,识别对外部数据的期望分布的定义,并将其包含在初步访问计划中;以及考虑所述期望分布而对初步访问计划进行优化,以获得优化的访问计划。
在一个实施例中,所述数据分布信息获取单元72配置为,通过调用运行时中扩展的接口函数来获取优化的访问计划的信息,基于获取的优化的访问计划的信息获取所述数据分布信息。
在一个实施例中,传送给外部数据源的数据分布信息包含直接的分割规则和返回规则,使得所述外部数据源根据分割规则对外部数据进行分割,根据返回规则返回分割的外部数据。
在一个实施例中,传送给外部数据源的数据分布信息涉及指向其他数据的索引信息,使得所述外部数据源首先根据该索引信息获取所述其他数据的内容,据此确定外部数据的目标分布,然后基于所述外部数据的目标分布将外部数据进行分割和返回。
在一个实施例中,所述数据分布信息获取单元72所获取的数据分布信息涉及指向其他数据的索引信息,所述数据分布信息传送单元73配置为,对所述数据分布信息进行处理,使其包含直接的分割规则和返回规则,然后将处理的数据分布信息发送给所述外部数据源。
在一个实施例中,所述查询处理执行单元74配置为,对所述内部数据和分割的外部数据进行同区连接。
在一个实施例中,上述访问计划生成单元71和查询处理执行单元74包含在数据库引擎中,或通过数据库引擎来实现;上述数据分布信息获取单元72和数据分布信息传送单元73包含在UDF实体中或通过UDF实体来实现。
在一个实施例中,上述装置700集成或嵌入在现有的数据库管理***中。在另一实施例中,上述装置700作为独立的装置与数据库管理***通信。
通过本发明实施例的方法和装置,通过定义外部数据的期望分布避免数据查询中跨节点的数据访问,从而提高数据查询的效率。
本领域技术人员可以理解,附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种在无共享数据库中查询数据的方法,包括:
获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;
基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;
将所述数据分布信息传送给所述外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及
按照所述优化的访问计划对所述分割的外部数据进行查询相关处理。
2.根据权利要求1所述的方法,其中所述查询请求还涉及存储在所述无共享数据库中的内部数据,并包括所述外部数据和内部数据的关联条件,所述外部数据的期望分布与所述关联条件相关。
3.根据权利要求1所述的方法,其中所述针对查询请求生成优化的访问计划包括:
识别所述对外部数据的期望分布的定义,并将其包含在初步访问计划中;以及
考虑所述期望分布而对所述初步访问计划进行优化,以获得优化的访问计划。
4.根据权利要求1所述的方法,其中获取所述数据分布信息包括:通过调用运行时中扩展的接口函数来获取所述优化的访问计划的信息,基于获取的优化的访问计划的信息获取所述数据分布信息。
5.根据权利要求1-4中任一项所述的方法,其中所述数据分布信息包含直接的分割规则和返回规则,使得所述外部数据源根据分割规则对外部数据进行分割,根据返回规则返回分割的外部数据。
6.根据权利要求1-4中任一项所述的方法,其中所述数据分布信息涉及指向其他数据的索引信息,使得所述外部数据源首先根据该索引信息获取所述其他数据的内容,据此确定外部数据的目标分布,然后基于所述外部数据的目标分布将外部数据进行分割和返回。
7.根据权利要求1-4中任一项所述的方法,其中所述数据分布信息涉及指向其他数据的索引信息,所述将数据分布信息传送给外部数据源包括,首先对所述数据分布信息进行处理,使其包含直接的分割规则和返回规则,然后将处理的数据分布信息发送给所述外部数据源。
8.根据权利要求2所述的方法,其中对外部数据进行查询相关处理包括:对所述内部数据和分割的外部数据进行同区连接,所述同区连接是在所述无共享数据库中同一节点之内进行的连接。
9.一种在无共享数据库中查询数据的装置,包括:
访问计划生成单元,配置为获取查询请求,针对该查询请求生成优化的访问计划,其中所述查询请求涉及存储在外部数据源中的外部数据,所述查询请求还包含对外部数据的期望分布的定义;
数据分布信息获取单元,配置为基于所述优化的访问计划获取与所述外部数据的期望分布相关的数据分布信息;
数据分布信息传送单元,配置为将所述数据分布信息传送给所述外部数据源,使得所述外部数据源按照所述数据分布信息将外部数据进行分割,并且并行地返回分割的外部数据;以及
查询处理执行单元,配置为按照所述优化的访问计划对所述分割的外部数据进行查询相关处理。
10.根据权利要求9所述的装置,其中所述查询请求还涉及存储在所述无共享数据库中的内部数据,并包括所述外部数据和内部数据的关联条件,所述外部数据的期望分布与所述关联条件相关。
11.根据权利要求9所述的装置,其中所述访问计划生成单元配置为:
识别所述对外部数据的期望分布的定义,并将其包含在初步访问计划中;以及
考虑所述期望分布而对所述初步访问计划进行优化,以获得优化的访问计划。
12.根据权利要求9所述的装置,其中所述数据分布信息获取单元配置为:通过调用运行时中扩展的接口函数来获取所述优化的访问计划的信息,基于获取的优化的访问计划的信息获取所述数据分布信息。
13.根据权利要求9-12中任一项所述的装置,其中所述数据分布信息包含直接的分割规则和返回规则,使得所述外部数据源根据分割规则对外部数据进行分割,根据返回规则返回分割的外部数据。
14.根据权利要求9-12中任一项所述的装置,其中所述数据分布信息涉及指向其他数据的索引信息,使得所述外部数据源首先根据该索引信息获取所述其他数据的内容,据此确定外部数据的目标分布,然后基于所述外部数据的目标分布将外部数据进行分割和返回。
15.根据权利要求9-12中任一项所述的装置,其中所述数据分布信息获取单元所获取的数据分布信息涉及指向其他数据的索引信息,所述数据分布信息传送单元配置为,对所述数据分布信息进行处理,使其包含直接的分割规则和返回规则,然后将处理的数据分布信息发送给所述外部数据源。
16.根据权利要求10所述的装置,其中所述查询处理执行单元配置为:对所述内部数据和分割的外部数据进行同区连接,所述同区连接是在所述无共享数据库中同一节点之内进行的连接。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210375556.XA CN103714073B (zh) | 2012-09-29 | 2012-09-29 | 数据查询的方法和装置 |
US13/965,393 US9146959B2 (en) | 2012-09-29 | 2013-08-13 | Database query in a share-nothing database architecture |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210375556.XA CN103714073B (zh) | 2012-09-29 | 2012-09-29 | 数据查询的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103714073A true CN103714073A (zh) | 2014-04-09 |
CN103714073B CN103714073B (zh) | 2017-04-12 |
Family
ID=50386192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210375556.XA Active CN103714073B (zh) | 2012-09-29 | 2012-09-29 | 数据查询的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9146959B2 (zh) |
CN (1) | CN103714073B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462351A (zh) * | 2014-12-05 | 2015-03-25 | 河海大学 | 一种面向MapReduce范型的数据查询模型与方法 |
CN113032446A (zh) * | 2019-12-24 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 一种分布式查询***的数据处理方法和装置 |
Families Citing this family (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776325B2 (en) | 2013-11-26 | 2020-09-15 | Ab Initio Technology Llc | Parallel access to data in a distributed file system |
US9715515B2 (en) * | 2014-01-31 | 2017-07-25 | Microsoft Technology Licensing, Llc | External data access with split index |
US9607073B2 (en) * | 2014-04-17 | 2017-03-28 | Ab Initio Technology Llc | Processing data from multiple sources |
WO2015178910A1 (en) * | 2014-05-22 | 2015-11-26 | Hewlett-Packard Development Company, Lp | User defined function, class creation for external data source access |
CN105337923B (zh) * | 2014-05-26 | 2019-07-12 | 腾讯科技(北京)有限公司 | 数据分发方法和***及数据发送装置和数据接收装置 |
US10528596B2 (en) | 2014-09-26 | 2020-01-07 | Oracle International Corporation | System and method for consistent reads between tasks in a massively parallel or distributed database environment |
US10387421B2 (en) | 2014-09-26 | 2019-08-20 | Oracle International Corporation | System and method for generating size-based splits in a massively parallel or distributed database environment |
US10078684B2 (en) | 2014-09-26 | 2018-09-18 | Oracle International Corporation | System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment |
US10394818B2 (en) | 2014-09-26 | 2019-08-27 | Oracle International Corporation | System and method for dynamic database split generation in a massively parallel or distributed database environment |
US10180973B2 (en) * | 2014-09-26 | 2019-01-15 | Oracle International Corporation | System and method for efficient connection management in a massively parallel or distributed database environment |
US10089377B2 (en) * | 2014-09-26 | 2018-10-02 | Oracle International Corporation | System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment |
US10380114B2 (en) | 2014-09-26 | 2019-08-13 | Oracle International Corporation | System and method for generating rowid range-based splits in a massively parallel or distributed database environment |
US10089357B2 (en) * | 2014-09-26 | 2018-10-02 | Oracle International Corporation | System and method for generating partition-based splits in a massively parallel or distributed database environment |
US11243958B2 (en) * | 2015-12-31 | 2022-02-08 | Teradata Us, Inc. | Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11416528B2 (en) * | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US9792326B1 (en) * | 2016-10-31 | 2017-10-17 | International Business Machines Corporation | Dynamically switching between execution paths for user-defined functions |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
US11169995B2 (en) | 2017-11-21 | 2021-11-09 | Oracle International Corporation | Relational dictionaries |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US11048815B2 (en) * | 2018-08-06 | 2021-06-29 | Snowflake Inc. | Secure data sharing in a multi-tenant database system |
US11379450B2 (en) | 2018-10-09 | 2022-07-05 | Oracle International Corporation | Relational method for transforming unsorted sparse dictionary encodings into unsorted-dense or sorted-dense dictionary encodings |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11200234B2 (en) * | 2019-06-14 | 2021-12-14 | Oracle International Corporation | Non-disruptive dynamic ad-hoc database catalog services |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
CN112434037A (zh) * | 2020-11-24 | 2021-03-02 | 京东方科技集团股份有限公司 | 数据处理方法、处理装置、数据处理设备和存储介质 |
US11782918B2 (en) * | 2020-12-11 | 2023-10-10 | International Business Machines Corporation | Selecting access flow path in complex queries |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353818B1 (en) * | 1998-08-19 | 2002-03-05 | Ncr Corporation | Plan-per-tuple optimizing of database queries with user-defined functions |
WO2005098655A2 (en) * | 2004-02-21 | 2005-10-20 | Datallegro, Inc. | Ultra-shared-nothing parallel database |
US7447680B2 (en) * | 2004-07-29 | 2008-11-04 | International Business Machines Corporation | Method and apparatus for optimizing execution of database queries containing user-defined functions |
CN100573524C (zh) * | 2007-07-31 | 2009-12-23 | 武汉大学 | 一种高效、透明的分布式空间数据库查询方法 |
US7769732B2 (en) | 2007-08-27 | 2010-08-03 | International Business Machines Corporation | Apparatus and method for streamlining index updates in a shared-nothing architecture |
US20090112792A1 (en) | 2007-10-25 | 2009-04-30 | Eric Lawrence Barsness | Generating Statistics for Optimizing Database Queries Containing User-Defined Functions |
US7856382B2 (en) | 2007-12-31 | 2010-12-21 | Teradata Us, Inc. | Aggregate user defined function (UDF) processing for multi-regression |
US7774311B2 (en) * | 2008-07-17 | 2010-08-10 | International Business Machines Corporation | Method and apparatus of distributing data in partioned databases operating on a shared-nothing architecture |
US8150836B2 (en) * | 2008-08-19 | 2012-04-03 | Teradata Us, Inc. | System, method, and computer-readable medium for reducing row redistribution costs for parallel join operations |
US8046373B2 (en) | 2009-01-25 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Structured parallel data intensive computing |
US8266101B1 (en) * | 2009-07-16 | 2012-09-11 | Binpeng Shuai | Share nothing database cluster and real time synchronization by signaling |
CN102033889B (zh) * | 2009-09-29 | 2012-08-22 | 熊凡凡 | 分布式数据库并行处理*** |
US10289611B2 (en) | 2010-04-30 | 2019-05-14 | Teradata Us, Inc. | Global and persistent memory for user-defined functions in a parallel database |
US8768973B2 (en) | 2010-05-26 | 2014-07-01 | Pivotal Software, Inc. | Apparatus and method for expanding a shared-nothing system |
US20120130963A1 (en) | 2010-11-24 | 2012-05-24 | Teradata Us, Inc. | User defined function database processing |
WO2012103920A1 (en) * | 2011-01-31 | 2012-08-09 | Telefonaktiebolaget L M Ericsson (Publ) | Distributed database |
-
2012
- 2012-09-29 CN CN201210375556.XA patent/CN103714073B/zh active Active
-
2013
- 2013-08-13 US US13/965,393 patent/US9146959B2/en not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
刘宇明: "基于DB2的数据库性能调优研究", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
徐丽萍等: "并行数据库查询优化技术研究", 《华中科技大学学报(自然科学版)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462351A (zh) * | 2014-12-05 | 2015-03-25 | 河海大学 | 一种面向MapReduce范型的数据查询模型与方法 |
CN104462351B (zh) * | 2014-12-05 | 2018-07-24 | 河海大学 | 一种面向MapReduce范型的数据查询模型与方法 |
CN113032446A (zh) * | 2019-12-24 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 一种分布式查询***的数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20140095470A1 (en) | 2014-04-03 |
CN103714073B (zh) | 2017-04-12 |
US9146959B2 (en) | 2015-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103714073A (zh) | 数据查询的方法和装置 | |
US11567956B2 (en) | Background format optimization for enhanced queries in a distributed computing cluster | |
US11580070B2 (en) | Utilizing metadata to prune a data set | |
US9336284B2 (en) | Client-side statement routing in distributed database | |
CN107463632B (zh) | 一种分布式NewSQL数据库***和数据查询方法 | |
US8700660B2 (en) | Client-side statement routing for partitioned tables | |
US9037677B2 (en) | Update protocol for client-side routing information | |
US7103590B1 (en) | Method and system for pipelined database table functions | |
US11675785B2 (en) | Dynamic asynchronous traversals for distributed graph queries | |
US9697254B2 (en) | Graph traversal operator inside a column store | |
US9460173B2 (en) | Method and system for metadata driven processing of federated data | |
US20120066205A1 (en) | Query Compilation Optimization System and Method | |
CN105718593A (zh) | 一种数据库查询优化方法及*** | |
US20170011090A1 (en) | Parallelizing sql on distributed file systems | |
JP2007534087A (ja) | 部分的クエリーキャッシング | |
CN104063486A (zh) | 一种大数据分布式存储方法和*** | |
JP2005267612A (ja) | 暗黙の述部を使用する改良されたクエリ・オプティマイザ | |
EP3688551B1 (en) | Boomerang join: a network efficient, late-materialized, distributed join technique | |
US9569519B2 (en) | Client-side directed commands to a loosely coupled database | |
US20210034616A1 (en) | Query optimization | |
US11727063B2 (en) | Parallel partition-wise insert sub-select | |
Zhu et al. | Hydb: Access optimization for data-intensive service | |
WO2020147807A1 (en) | Bucketizing data into buckets for processing by code modules |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |