CN107003868B - 处理包含联合类型操作的查询 - Google Patents
处理包含联合类型操作的查询 Download PDFInfo
- Publication number
- CN107003868B CN107003868B CN201580062226.7A CN201580062226A CN107003868B CN 107003868 B CN107003868 B CN 107003868B CN 201580062226 A CN201580062226 A CN 201580062226A CN 107003868 B CN107003868 B CN 107003868B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- computer program
- aggregation
- aggregation operation
- 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.)
- Active
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/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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于SQL查询来生成计算机程序的方法,其包括:接收SQL查询,所述SQL查询包括对存储在第一数据源处的第一数据集的引用,并且包括对存储在与所述第一数据源不同的第二数据源处的第二数据集的引用;确定所述SQL查询包括两个或更多个命令,所述命令包括第一联合类型操作和第一聚合操作;确定所述SQL查询描述出应当对来自所述第一数据集的至少部分数据应用所述第一联合类型操作并且对来自所述第二数据集的至少部分数据应用所述第一联合类型操作;确定所述SQL查询描述出应当对由所述第一联合类型操作产生的数据应用所述第一聚合操作;以及生成所述计算机程序。
Description
优先权申明
本申请要求提交于2015年6月22日的美国专利申请14/746,188的优先权,后者要求提交于2014年11月14日的美国专利申请62/079,922的优先权,其全部内容通过引用而并入于此。
背景技术
本说明书涉及处理包括联合类型操作(union-type operation)的查询。
对数据源的查询指定了要从数据源检索的数据。查询可被提供给数据源(例如,数据库),并且与数据源相关联的数据处理系统(例如,数据库管理系统)可以返回由查询指定的数据。可以使用各种技术来解析查询以识别数据源中的由查询指定的数据。
发明内容
方面1是一种基于SQL查询来生成计算机程序的计算机实现方法,包括:接收SQL查询,所述SQL查询包括对存储在第一数据源处的第一数据集的引用,并且包括对存储在与所述第一数据源不同的第二数据源处的第二数据集的引用;确定所述SQL查询包括两个或更多个命令,所述命令包括第一联合类型操作和第一聚合操作;以及确定所述SQL查询描述出应当对来自所述第一数据集的至少部分数据应用所述第一联合类型操作并且对来自所述第二数据集的至少部分数据应用所述第一联合类型操作;确定所述SQL查询描述出应当对由所述第一联合类型操作产生的数据应用所述第一聚合操作;以及基于所述SQL查询来在第一系统上生成计算机程序,所述计算机程序被配置为:发送用于引导第二系统对来自所述第一数据集的一部分数据执行第二聚合操作的指令;从所述第二系统接收作为第一部分数据的汇总的特定数据集;以及对所述特定数据集和来自所述第二数据集的一部分数据的汇总执行第二联合类型操作。
方面2是如方面1所述的方法,其中,所述计算机程序还被配置为:发送用于引导第三系统对来自所述第二数据集的一部分数据执行第二聚合操作的指令;以及从所述第三系统接收作为第二部分数据的汇总的特定数据集。
方面3是如方面1或2所述的方法,其中,所述计算机程序包括:表示对作为第一部分数据的汇总和第二部分数据的汇总的数据集所应用的SQL查询的联合类型操作的第一组件,其中所述汇总各自包含比各自相应部分的数据更少的记录;以及表示所述第一数据集的第二组件,其中所述第二组件在被执行时使得发送所述指令。
方面4是如方面3所述的方法,其中,所述计算机程序还包括:表示所述第二数据集的第三组件和表示第三聚合操作的第四组件,其中所述第三组件的输出流向所述第四组件,并且所述第四组件的输出流向所述第一组件。
方面5是如方面3或4所述的方法,其中,所述第二组件的输出包括作为所述第一部分数据的汇总的特定数据集。
方面6是如方面3、4或5所述的方法,其中,表示所述第一数据源的组件发送所述指令,所述指令是在所述第一系统使数据被发送至用于执行所述计算机程序的系统之前进行的。
方面7是如方面1至6中任一项所述的方法,其中,所述指令包括SQL语句,所述SQL语句包括与所述第二聚合操作相对应的命令。
方面8是如方面1至7中任一项所述的方法,其中,基于所述SQL查询来生成计算机程序的步骤包括:基于所述SQL查询来生成查询计划;向所述查询计划添加对来自所述第一数据源的数据所应用的第二聚合操作;确定所述第一系统包括用于进行所述第二聚合操作的功能;向表示所述第一数据集的一部分查询计划附加用以进行所述第二聚合操作的指令;以及基于所述查询计划来生成所述计算机程序。
方面9是如方面1至8中任一项所述的方法,其中,所述第一聚合操作是最小值、最大值、求和或计数操作,并且所述第二聚合操作是与所述第一聚合操作相同类型的聚合操作。
方面10是如方面1至9中任一项所述的方法,其中,所述第一聚合操作是平均操作,并且所述第二聚合操作是求和操作或计数操作。
方面11是如方面1至10中任一项所述的方法,其中,还包括:基于所述第一聚合操作来确定所述第二聚合操作。
方面12是如方面11所述的方法,其中,基于所述第一聚合操作来确定所述第二聚合操作的步骤包括:确定在被进行时产生与所述第一聚合操作的输出等同的输出的操作序列;以及从所述操作序列中选择所述第二聚合操作。
方面13是如方面1至12中任一项所述的方法,其中,所述第一联合类型操作与所述第二联合类型操作具有相同的类型。
方面14是如方面1至13中任一项所述的方法,其中,所述第一系统包括基于图的处理系统,并且所述第二系统包括关系数据库管理系统。
所述方面中的一个或多个方面可以被单独地或组合地表示为系统或设备,或者表示为计算机可读存储装置,所述计算机可读存储装置用于存储包括在被计算机系统执行时进行该方面的操作的机器可读指令的计算机程序产品。作为一个示例,计算机可读存储装置可以存储包括在由计算机系统执行时进行根据第一至第十三方面中任一项所述的操作的机器可读指令的计算机程序产品。作为另一示例,包括一个或多个处理器的计算机系统可以包括用于存储计算机程序产品的计算机可读存储装置,所述计算机程序产品包括在由一个或多个处理器执行时进行根据第一至第十三方面中任一项所述的操作的机器可读指令。
各方面可以包括以下优点中的一个或多个。数据处理系统下推聚合操作以减少从数据源传输的数据量。与查询相对应的计算机程序可例如通过移除组件来简化。
根据以下描述和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1示出可以处理查询的数据处理系统。
图2示出数据处理系统的元件。
图3和图4示出查询计划。
图5和图6示出计算机程序。
图7和图8是流程图。
具体实施方式
数据处理系统可以将查询(诸如SQL查询)转换为诸如数据流图等的计算机程序。数据流图包括被执行时进行与查询的操作等同的操作(例如,数据处理操作)的组件。用于根据查询来生成计算机程序的系统可以确定一些操作可以由数据源(例如,数据库系统)执行。例如,可以通过指示数据源执行组件所表示的一个或多个操作来将计算机程序的组件“下推”至数据源,据此可以从计算机程序中除去该组件。例如,计算机程序可以通过向数据源发送(当在数据源处执行时进行操作的)SQL语句来指示数据源执行操作。
SQL查询(亦称为SQL语句)使用由结构化查询语言(SQL)定义的命令和句法。一般来说,查询是用于指定该查询中所指示的一个或多个数据集中的数据的子集的语句。指定的子集可以由用于处理查询的系统返回给用于发出该查询的系统。由查询指定并且响应于查询而返回的数据通常是存储在查询所指示的数据集中的总数据的一部分。SQL查询的示例可以是“SELECT last_name FROM current_customers”。该SQL查询包括操作SELECT,该操作指示执行查询的系统根据SELECT操作的自变量来检索数据。在SQL的句法中,自变量是作为诸如数据库表等的数据集的“current_customers”和作为数据库表的列的“last_name”。当系统解释查询并执行查询的操作时,系统将响应于查询而返回last_name列的数据(例如,包含在last_name列中的数据的每个部分)。在通过引用而并入于此的ISBN 978-0470229064的由Alex Kriegel和Boris Trukhnov在2008年4月7日发表的“SQL Bible,2ndEdition”中详细描述了SQL。
有时,查询可以包括对来自两个或更多个数据源的记录的组合所执行的操作。例如,查询可以包括联合类型操作。联合类型操作生成包括来自两个或更多个数据源的记录的数据集,并且提供该数据集作为输出。换句话说,联合类型操作将来自两个或更多个源的数据组合为单个数据集。术语“联合”(例如,SQL中的UNION命令)通常是指在提供输出之前移除两个数据源中重复的数据元素的联合类型操作,而“联合所有”(例如,SQL中的UNIONALL命令)通常是指在提供输出之前移除两个数据源中重复的数据元素的联合类型操作。例如,如果两个数据集各自包含电话号码并且两个数据集都包含表示电话号码“555-1212”的数据元素,则“联合”操作将仅输出表示电话号码“555-1212”的一个数据元素,而“联合所有”操作将输出表示电话号码“555-1212”的两个数据元素。
在联合类型操作之后,查询还可以包括聚合操作(例如,诸如SUM、COUNT、AVG、MIN或MAX等的操作)。聚合操作(有时称为聚合功能或汇总操作)提供了汇总输入数据的输出数据,使得输出数据的大小通常比输入数据小得多。如果在联合类型操作之后,查询包括聚合操作,则生成计算机程序的系统可以将聚合操作置于联合类型操作之前,这是因为进行聚合操作仅需要从数据源所接收到的数据的汇总。此外,如果任何或所有数据源已被确定为本地支持聚合操作,则置于联合类型操作之前的聚合操作可被下推至其各自相关联的数据源中。这通常减少了从数据源传输的数据量,因为计算机程序仅接收将以其它方式从一些或所有数据源所接收的数据的汇总。
作为一个现实世界的例子,电话公司可以存储追溯60天的电话呼叫记录。该公司可以具有包含最近7天的电话记录的数据存储以及包含剩余53天记录的另一数据存储。对所有60天记录执行的查询可以包括联合类型操作,并且聚合操作可被下推至一个或全部两个数据存储。此外,包含最近7天电话记录的数据存储可以是关系数据库,并且包含剩余53天记录的数据存储可以是除关系数据库以外的数据存储类型,例如平面文件。聚合操作仍可被下推至包含最近7天电话记录的关系数据库。
图1示出可以处理查询102以生成由查询102指定的结果104的数据处理系统100。结果104基于从查询102所引用的数据源110、120所接收到的数据106。数据处理系统100响应于该数据处理系统100基于查询103所生成的指令114、124来接收数据106。
查询102用于检索被确定为由查询指定的数据。
一种类型的查询102是结构化查询语言(SQL)查询。SQL查询(亦称为SQL语句)使用由结构化查询语言定义的命令和句法。响应于查询而返回数据的资源的典型示例是关系数据库。关系数据库是一个或多个数据库表的集合以及管理诸如解释SQL查询、从表读取数据、向表写入数据以及执行其它种类数据处理功能等的数据处理操作的系统。数据库表是排列在a)各自表示记录的行和b)各自表示存储在行中的数据的类别的列中的数据的集合。例如,名为“current_customers”的数据库表可以具有各自表示业务的当前客户的行,并且可以具有表示数据的类别(诸如客户的名称、客户的地址、客户最近购买的产品等)的列。
数据源110、120在数据处理系统100的外部。在数据处理系统100的外部是指资源不是数据处理系统100的组件之一。(图2中详细示出数据处理系统100的一些组件。)例如,数据源110、120可以是使用网络(例如,因特网)进行通信的设施。数据处理系统100通过向网络发送数据并从网络接收数据来与数据源110、120进行通信。
如图所示,数据处理系统100可以接收包括对多个数据源110、120的引用101、103的查询102。数据源110、120各自包含一个或多个数据集。例如,数据源110、120可以包括诸如数据库表、数据文件或存储在例如有形、非暂时性计算机可读介质的存储介质上的其它数据结构等的数据集。
此外,数据源通常由与该数据源相关联的系统来管理。例如,如果数据源是包含数据库表的关系数据库(或数据库表的集合),则关系数据库可以由关系数据库管理系统(RDBMS)管理。引用101、103可以是识别数据源的任何信息。在一些示例中,引用101、103是数据源110、120的字母数字“名称”。
关系数据库管理系统(RDBMS)是用于处理涉及创建并修改存储在关系数据库中的数据的指令的系统。RDBMS包括用于解释查询并返回查询所指定的数据的功能。解释查询和返回查询所指定的数据的组合有时称为执行查询。例如,一些RDBMS实现包括引擎,该引擎a)解析SQL查询、b)识别由结构化查询语言定义的操作、c)识别命令的自变量以及d)根据自变量进行(例如,执行)操作。
如上所述,SQL查询“SELECT last_name FROM current_customers”包括操作SELECT,该操作指示RDBMS根据SELECT操作的自变量来检索数据。自变量是作为RDBMS所管理的数据库表的“current_customers”和作为数据库表的列的“last_name”。当RDBMS解释查询并执行查询的操作时,RDBMS将响应于查询而返回last_name列的数据(例如,包含在last_name列中的数据的每个部分)。
数据处理系统100基于查询102而生成计算机程序108(有时称为数据处理程序)。例如,可以使用将查询当作输入并产生数据流图作为输出的引擎(例如,形成数据处理系统100的子系统的引擎)来生成计算机程序108。尽管此处使用数据流图作为示例,但计算机程序可以是包括程序代码的任何种类的程序,所述程序代码可被执行用于进行程序代码所表示的指令。
以这种方式,诸如图1所示的计算机程序108等的计算机程序在被执行时可例如通过诸如RDBMS等的数据库管理系统来产生与相应查询102的执行相同的输出。因此,可以使用诸如SQL等的查询语言来编写查询102。然而,进行相应数据处理操作的系统(例如,数据处理系统100的子系统)可以执行计算机程序108,以便执行与执行查询102但不执行计算机程序108的系统(例如,RDBMS)将执行的操作等同的操作。当我们说两个操作等同时,意思是当提供相同的输入数据时,这两个操作产生基本上相同的输出数据。例如,当提供有相同的输入数据时,两个操作可以产生完全相同的输出数据。例如,提供有相同输入数据的两个操作可以产生仅在数据格式化方面不同的输出数据,例如,一个操作可以产生逗号分隔的输出数据,并且等同的操作可以产生制表符分隔的以其它方式与逗号分隔的输出数据相同的输出数据。
在一些示例中,查询102的一些操作可以由计算机程序108进行,并且查询102的一些操作可被下推至数据源110、120。这时,意思是数据处理系统100识别查询102中的可由管理数据源110、120的系统112、122中的一个或多个所执行的操作。然后,数据处理系统100可以生成在由系统112、122执行时使系统112、122执行与数据处理系统100所识别的操作等同的操作的指令114、124。计算机程序108可被配置为在被执行时向系统112、122发送指令114、124。指令114、124可以是可由系统112、122执行的任何格式的指令。
在一些示例中,基于数据源110、120的已知特性,数据处理系统100已知数据源110、120的各个能力。例如,如果数据处理系统100使用SQL语句与数据源110之一进行通信,则数据处理系统100已知数据源110能够处理SQL语句。利用该信息,数据处理系统100可以识别可表示为SQL语句并因此被下推至数据源110的其它操作。
在一些示例中,下推的操作是聚合操作105。因为聚合操作105接受数据并产生数据的汇总,所以聚合操作105通常产生比输入数据的量少的输出数据。出于这个原因,由管理数据源110、120的系统112、122来进行与聚合操作105相对应的操作通常更有效。以这种方式,数据处理系统100仅接收来自每个数据源110、120的汇总数据116、126。如果通过数据处理系统100上执行的计算机程序108来执行与聚合操作105相对应的操作,则汇总数据116、126通常是比从数据源110、120传输的数据106更少量的数据。此外,聚合操作通常可被表示为SQL语句或SQL语句的一部分,因此聚合操作是可被下推至能够处理SQL语句的系统(例如,RDBMS)的操作的示例。以这种方式,从每个数据源110、120返回的数据106是存储在各个数据源中的一部分数据的汇总,而不是该一部分数据(例如,数据库表的一部分或者如由查询102所指定的其它数据体的一部分)本身。
如图3和4中详细所示,即使在查询102中联合类型操作位于聚合操作105之前,聚合操作105也可被下推。
图2示出可以用于解释查询102并生成与查询102相对应的计算机程序108的数据处理系统100的元件。
查询102由用于生成与该查询102相对应的查询计划132的查询计划器130接收。例如,数据处理系统100可以向查询计划器130提供查询102。查询计划是在执行查询时可以执行的操作(例如,数据处理操作)的描述。例如,操作可以是例如由数据库管理系统进行的数据库操作。这些操作还可以采取其它形式。数据库操作有时被称为数据库功能或数据库任务。
查询计划可以描述一个可能的操作安排,即使其它操作安排或不同的操作集将实现相同的结果。查询计划器是可以基于与查询有关的信息和与查询所使用的数据源有关的信息来生成查询计划的系统。
在一些安排中,操作能够按各种顺序执行,同时仍提供等同的输出。正因如此,查询计划器可以具有确定最佳查询计划的功能。例如,最佳查询计划可以是描述用于以最少时间量执行查询、或者使用最少量的诸如数据存储空间等的数据库资源、或者以其它方式在已由数据库系统所识别的约束内完成查询的操作的安排的查询计划。查询计划器的用于确定最佳查询计划的功能可以包括用于对许多可能的查询计划进行评分或评级的功能,并且还可以包括用于以最佳或有效的配置来重新安排可能的查询计划的功能。
单个查询可以被执行多次,并且每次执行可以具有唯一的最佳查询计划。例如,数据库表内的数据可以在查询的两次执行之间发生变化。在该示例中,针对第一次查询执行而生成的查询计划中描述的操作在第二次查询执行期间可能比第一次执行期间需要更多或更少的执行时间。在这种情况下,不同的操作安排可能更适合第二次查询执行,例如,相同操作的不同安排或不同操作的安排。考虑到数据库表的瞬时状态,可以针对第二次查询执行而生成针对该查询所优化的查询计划。
查询计划132由计算机程序生成引擎140接收。计算机程序生成引擎140生成计算机程序108,该计算机程序108在被执行时进行与查询102相对应的操作。例如,查询102包含由结构化查询语言定义的一个或多个操作以及与操作相关联的自变量。在该示例中,计算机程序108包含与SQL查询的操作等同的可执行功能,并且当执行计算机程序108时,基于相同的自变量而执行该计算机程序108。
计算机程序生成引擎140分析查询计划132以判断在生成计算机程序108之前是否应该改变查询计划132所表示的操作。因为计算机程序108是基于查询计划132而生成的,所以计算机程序生成引擎140可以在继续生成计算机程序108之前使用分析结果来修改查询计划132。例如,查询计划132可以包括联合类型操作,然后是聚合操作。如果在生成计算机程序108之前应该改变查询计划132所表示的操作,则计算机程序生成引擎140可以修改查询计划132以将聚合操作置于联合类型操作之前。这在图3和4中进一步详细地示出。
当计算机程序生成引擎140生成计算机程序时,由于对直接从数据源接收到的数据执行聚合操作(例如,数据在聚合操作之前未受到任何操作),所以计算机程序生成引擎140可以将聚合操作识别为下推至数据源的候选。然后,计算机程序生成引擎140可以判断管理数据源110、120的系统112、122中的任一个或全部两者是否能够执行与聚合操作等同的操作。如果第一系统112能够执行与聚合操作等同的操作,则计算机程序生成引擎140将计算机程序108配置为向第一系统112发送指令114,从而指示第一系统112执行与聚合操作等同的操作并将汇总数据返回给计算机程序。如果第二系统122能够执行与聚合操作等同的操作,则计算机程序生成引擎140将计算机程序108配置为向第二系统122发送指令124,从而指示第二系统122执行与聚合操作等同的操作并将汇总数据返回给计算机程序。
在一些实现中,计算机程序108包括数据流图142。数据流图是包含表示要对输入数据执行的操作的组件以及组件间的表示数据流动的链接(有时称为节点)的计算机程序。组件所表示的操作通过处理输入数据来生成基于输入数据的输出数据。如果组件链接到其它组件,则该组件可以向该其它组件提供输入数据并从该其它组件接收输出数据,其中,两个组件之间的每个链接表示数据从一个组件向另一个组件的流动。图的组件的子集(例如,图的一个或多个组件)有时称为图的子图。当通过基于图的处理系统来执行数据流图时,执行各个组件(例如,执行计算机程序或计算机程序的一部分)并且进行该组件所表示的操作。在执行期间,数据流图接收处理后(例如,通过数据流图的组件的操作而进行操作)的输入数据以生成输出数据。在一些示例中,数据流图的一些或所有组件各自与用于调用可执行程序代码的信息相关联,以执行与该组件相关联的操作。例如,组件可以与包含用于进行与组件相关联的操作(例如,处理和输出数据)的计算机可执行指令的计算机可读存储器中所存储的计算机程序的引用相关联。在一些示例中,数据流图的一些或所有组件各自与用于使数据可用于程序代码的信息相关联。例如,组件可以与可被调用以将数据递送至与组件相关联的可执行程序的函数调用相关联,或者组件可以与可接收被递送至与组件相关联的可执行程序的数据的网络端口相关联,或者组件可以与用于将数据递送至与组件相关联的可执行程序的另一种技术相关联。以这种方式,每个组件可以接收、处理并输出数据。
在通过引用而并入于此的标题为“Managing Parameters for Graph-BasedApplications”的美国公布2007/0011668中详细描述了基于图的系统的一个示例。在通过引用而并入于此的标题为“Executing Computations Expressed as Graphs”的美国专利5,966,072中描述了一种用于执行基于图的计算的系统。此外,数据流图的组件可以替代查询102的操作。在通过引用而并入于此的标题为“Managing Data Queries”的美国公布2011/0179014A1以及标题为“Managing Data Queries”的美国公布2012/0284255A1中进一步描述了根据这种替代的技术。在一些实现中,数据流图可以由查询102产生。
在一些实现中,计算机程序108可以配置有参数。例如,参数可以是可被改变以改变程序行为的值。作为具体示例,参数可以是“filename”并且该参数的值可以是文件在文件系统中的位置。参数的值可以改变为不同文件的位置,以将程序配置为访问不同的文件。同一程序的两个实例可以配置有不同的参数值,这将改变同一程序的两个实例的行为。
执行引擎150接收计算机程序108。然后,执行引擎150执行计算机程序108,例如进行与计算机程序108相关联的程序代码所指定的指令。在被执行时,计算机程序108生成指令114、124并将指令114、124发送至用于管理数据源110、120的系统112、122。
在一些实现中,例如,如果计算机程序108是数据流图,则执行引擎150包括专门的操作系统,有时称为图操作系统。图操作系统是能够执行数据流图的各个组件背后的操作的计算机程序。例如,如果数据流图的组件表示数据处理系统要进行的操作,则图操作系统的任务是指示数据处理系统进行该操作。
在将指令114、124发送至用于管理数据源110、120的系统112、122之后,计算机程序108从数据源110、120接收汇总数据116、126。然后,执行引擎150在执行计算机程序108时使用汇总数据116、126来产生查询102的结果104。以这种方式,数据处理系统100可以执行查询102以生成由该查询指定的结果104。
图3示出以SQL编写的查询200以及表示该查询的查询计划210的图形表示。例如,查询200可以是图1和2所示的查询102的示例,并且查询计划210可以是图2所示的查询计划132的示例。查询200用于计算在名为“波士顿(Boston)”和“纽约(New York)”的两个数据源(例如,关系数据库表)中所找到的名为“价格(price)”的列中的最大值。这两个数据源由查询200中的自变量202、204来识别。查询200还要求执行名为“GROUP BY hotel_chain”的操作,该操作根据输出的列之一(此处为hotel_chain列)来对输出的数据进行分组。作为一个现实世界的例子,该查询可以用于获得波士顿酒店数据库和纽约酒店数据库这两者中所记录的酒店房间的最大(“max”)价格。当执行查询时,联合(例如,组合)来自这两个数据源的数据并按照酒店连锁对其进行分组。然后,识别并返回每个酒店连锁的酒店房间的最大价格。
查询计划210包括两个数据源212、214的识别,其中两个数据源212、214各自提供通过联合类型操作216组合的数据。例如,联合类型操作216可以与“联合”或“联合所有”等同,这例如取决于SQL查询200中所指定的操作。此处,在SQL查询200中指定“联合”操作(例如,UNION命令)。
将联合类型操作216的输出提供给GROUP BY操作217,该GROUP BY操作217例如通过按hotel_chain列对数据进行分组来处理数据。将处理后的数据传递给上卷操作218,该上卷操作218确定输入数据的最大值。该最大值为查询200的结果。
图4示出查询计划210a的另一种版本。该版本的查询计划210a已被修改,例如,由图2所示的计算机程序生成引擎140修改。(在一些示例中,在查询计划器130中执行修改,然后将查询计划132提供给生成引擎140。)在该版本的查询计划210a中,上卷操作218a已被置于第一数据源212和联合类型操作216之间,并且另一上卷操作218b已被置于第二数据源214和联合类型操作216之间。查询计划210a的这种安排将产生与图3所示的安排中的查询计划210相同的输出。此外,如果数据源212、214中的任一数据源能够进行与上卷操作218a、218b等同的操作,则各自的上卷操作218a、218b可以被下推至相应的数据源212、214。
该版本的查询计划210a在联合类型操作之后包括附加的上卷操作219。因为上卷操作218a、218b各自表示“max”(最大值)操作,所以必须确定联合类型操作输出的最大值以识别由联合类型操作所输出的两个值(例如,由上卷操作218a、218b返回的两个值)之间的最大值。因此,上卷操作219对联合类型操作216和GROUP BY操作217的输出进行操作,正如上卷操作218对图3所示的联合类型操作216和GROUP BY操作217的输出进行操作一样。然而,图4所示的该上卷操作219相对于图3所示的该位置中的上卷操作218而言对非常少量的数据进行操作。
图4所示的查询计划210a可以基于聚合操作的性质而生成。例如,以下是聚合操作的一些性质,包括MIN(最小数据值)、MAX(最大数据值)、SUM(数据值的总和)、COUNT(记录数)以及AVG(数据值的平均)。这些性质各自表示包含聚合操作的表达式以及包括按顺序执行的多个聚合操作的等同表达式。这些性质中的一些包括分布性质的应用,其中在给定函数f的情况下,表达式f(X,Y)与表达式f(f(X),f(Y))等同。一般来说,聚合操作可被转换为根据这些性质的聚合操作序列,然后序列中的一些操作可被“下推”至用于管理数据源的系统。
性质1:AGG(X UNION ALL Y)=AGG(AGG(X)UNION ALL AGG(Y))[其中AGG是MIN、MAX和SUM之一]
性质2:COUNT(X UNION ALL Y)=SUM(COUNT(X)UNION ALL COUNT(Y))
性质3:AVG(X UNION ALL Y)=SUM(X UNION ALL Y)/COUNT(X UNION ALL Y)=SUM(SUM(X)UNION ALL SUM(Y))/SUM(COUNT(X)UNION ALL COUNT(Y))
性质4:AGG(X UNION Y)=AGG(AGG(X)UNION AGG(Y))[其中AGG是MIN和MAX之一]
以下伪代码表示用于修改查询计划从而下推一个或多个各自在联合类型操作之后的聚合操作。
图5示出根据查询计划210a生成的计算机程序300。该计算机程序300可以是图1和2所示的计算机程序108的示例。该计算机程序300是包含通过表示数据流的链接所连接的组件的数据流图,并且也可以是如图2所示的数据流图132的示例。
计算机程序300具有表示可执行代码(例如,一个或多个可执行操作)的组件。计算机程序300具有表示第一数据源212的输出数据的组件302和表示第二数据源214的输出数据的组件304。两个组件302、304链接到表示联合类型操作216的组件306。在一些实现中,组件306可以是多个组件的组合,例如子图。该组件306链接到共同表示上卷操作219和GROUPBY操作217的组件308。当计算机程序300执行时,计算机程序300的输出与执行图3所示的以SQL编写的查询200的系统的输出等同。
表示数据源的输出数据的组件302、304各自已被配置为向相应数据源发送指令。例如,表示波士顿数据源212的输出数据的组件302已经配置有指令,这些指令在被发送至管理波士顿数据源212的系统(例如,管理存储在波士顿数据源212中的数据集的系统)时执行与由图4所示的上卷操作218a所表示的汇总操作等同的操作。在计算机程序300接收到任何数据之前进行该操作。在一些实现中,组件302可以将SQL查询发送至管理波士顿数据源212的系统。此处,SQL查询可以指定存储在波士顿数据源212处的数据库表的“价格”列的最大值。指令可以是SQL语句,例如“SELECT max(price),hotel_chain FROM Boston GROUPBY hotel_chain”。以这种方式,上卷操作218a已被下推至波士顿数据源212。
在该示例中,聚合操作已被下推至波士顿数据源212和纽约数据源214这两者。因此,管理波士顿数据源212和纽约数据源214的系统已被判断为能够执行与聚合操作等同的操作。在一些实现中,这种判断是由图2所示的计算机程序生成引擎140进行的,并且计算机程序生成引擎140在生成计算机程序300时使用这种判断。在一些实现中,这种判断是由图2所示的查询计划器130进行的,并且通过查询计划器130来修改查询计划132以包含聚合操作的下推。在这些实现中,计算机程序生成引擎140可以根据查询计划132来生成计算机程序300,并且不需要评价用于管理查询计划132中所识别的数据源的系统的能力。
在一些示例中,数据源至少之一可能无法执行与聚合操作等同的操作。图6示出根据查询计划210a所生成的计算机程序300a的示例。在该示例中,管理波士顿数据源212的系统已被判断为能够执行与聚合操作等同的操作。然而,管理纽约数据源214的系统已被判断为无法执行与聚合操作等同的操作。因此,在该计算机程序300a中,表示纽约数据源214的输出的组件304链接到上卷组件305,该上卷组件305链接到表示联合类型操作的组件306。此处,因为MAX操作不能被下推至纽约数据源214,所以作为替代地在上卷组件305处执行该操作。表示波士顿数据源214的输出的组件302被配置为向波士顿数据源214发送指令以根据查询计划210来进行与聚合操作218a等同的操作,因此表示波士顿数据源214的输出的组件302链接到表示联合类型操作的组件306。以这种方式,聚合操作也可被下推至一些数据源,即使其它数据源不支持该操作。
图7示出表示用于基于SQL查询来生成计算机程序的过程400的流程图。过程400可例如通过图1所示的数据处理系统100的组件来进行。
该过程接收(402)SQL查询。例如,SQL查询可以是图1所示的查询102的示例。在一些示例中,SQL查询包括对数据处理系统外部的一个或多个数据集的引用。例如,查询可以具有对存储在第一数据源处的第一数据集的引用以及对存储在与第一数据源不同的第二数据源处的第二数据集的引用。例如,数据源可以是(例如,存储关系数据库表的)关系数据库、可在数据存储器上访问的平面文件、可经由网络访问的数据流、HDFS(Hadoop分布式文件系统)文件、或其它种类的数据源。图1所示的数据源110、120是数据源的示例,并且数据集可以是存储在数据源110、120处的数据。引用的示例是图3所示的自变量202、204。
过程确定(404)SQL查询包括两个或更多个命令,所述命令包括第一联合类型操作和第一聚合操作。在一些实现中,对基于从第一数据源所接收到的数据的第一部分数据应用联合类型操作,并且还对基于从第二数据源所接收到的数据的第二部分数据应用联合类型操作。SQL查询的示例是图3所示的SQL查询200。在一些实现中,基于根据SQL查询所生成的查询计划,SQL查询被判断为包括联合类型操作和第一聚合操作。
过程确定(406)SQL查询描述出应当至少对来自第一数据集的一部分数据应用第一联合类型操作,并且应当至少对来自第二数据集的一部分数据应用第一联合类型操作。例如,处理可以解析SQL查询以识别联合类型操作(例如,UNION或UNION ALL)并识别与一部分数据相对应的自变量(例如,指定包含一部分数据的数据源的自变量)。
过程确定(408)SQL查询描述出应当对由第一联合类型操作产生的数据应用第一聚合操作。例如,过程可以解析SQL查询以识别第一聚合操作,并且例如联合类型操作被提供为第一聚合操作的自变量。
在一些实现中,过程基于第一聚合操作来确定第二聚合操作。例如,过程可以确定在被执行时产生与第一聚合操作的输出等同的输出的操作序列,并且从所述操作序列中选择第二聚合操作。作为一个示例,第一聚合操作可以是最小值、最大值、求和或计数操作,并且第二聚合操作可以是与第一聚合操作相同类型的聚合操作。作为另一示例,第一聚合操作可以是平均操作,并且第二聚合操作可以是求和操作或计数操作。在这些示例中,根据上述性质1-4之一来选择第二聚合操作。
在一些实现中,过程确定第二聚合操作可以由管理第一数据源的系统执行。例如,如果管理数据源的系统是可以执行SQL语句的RDBMS,则系统可以在聚合操作被表示为SQL语句的一部分时执行该操作。图1中示出RDBMS 112、122的示例。
过程基于SQL查询来生成(410)计算机程序。在一些实现中,计算机程序由第一系统(例如,图1所示的数据处理系统100)生成。程序的执行可以与以下图8所示的过程500相对应。在一些实现中,这包括基于SQL查询来生成查询计划;向查询计划添加向来自第一数据源的数据应用的第二聚合操作;确定与第一数据源相关联的第一系统包括用于进行第二聚合操作的功能;向表示第一数据源的一部分查询计划附加用以进行第二聚合操作的指令;以及基于查询计划来生成计算机程序。然后可以执行程序。
在一些实现中,过程400中所生成(410)的计算机程序包括表示SQL查询的联合类型操作的第一组件。向第一部分数据的汇总和第二部分数据的汇总应用第一组件,其中这些汇总各自包含比其各自相应部分的数据更少的记录。计算机程序还可以包括表示第一数据源的第二组件,其中第二组件在被执行时致使指令被发送以供第一系统执行。指令可以包括SQL语句,该SQL语句包括与第二聚合操作相对应的命令。此外,在第一系统使数据被发送至执行计算机程序的系统之前,执行指令。
在该示例中,第二组件的输出可以包括来自第一数据源的第一部分数据的汇总。计算机程序还可以包括表示第二数据源的第三组件和表示第三聚合操作的第四组件,其中,第三组件的输出流向第四组件,并且第四组件的输出流向第一组件。例如,第三聚合操作可以由图6所示的组件305表示。此外,第一组件的输出可以流向例如由图6所示的组件308表示的另一聚合操作。
在一些实现中,计算机程序还发送引导第三系统对来自第二数据集的一部分数据执行第二聚合操作的指令,并从第三系统接收作为第二部分数据的汇总的特定数据集。这可以例如发生在判断为管理第二数据源的系统可以执行第二聚合操作时。
图8示出表示用于执行与执行SQL查询有关的操作的过程500的流程图。过程500可例如由第一系统(诸如图1所示的数据处理系统的组件等)进行。例如,当图2所示的执行引擎150执行由SQL查询所生成的至少一部分计算机程序时,过程500可以由该执行引擎150进行。该计算机程序可以是图1-2所示的计算机程序108以及图7中所生成(410)的计算机程序。此外,SQL查询可以是图1和2所示的查询102。
过程发送(502)引导第二系统对来自第一数据集的一部分数据执行第二聚合操作的指令。例如,第二系统可以是图1所示的系统112、122之一。指令可以采用SQL语句的形式。例如,指令可以是图1所示的指令114、124。
过程从第二系统接收504作为第一部分数据的汇总的特定数据集。例如,第一部分数据可以是由此生成计算机程序的SQL查询中引用的一部分数据。
过程对特定数据集和来自第二数据集的一部分数据的汇总执行(506)第二联合类型操作。例如,第二部分数据可以是由此生成计算机程序的SQL查询中引用的另一部分数据。在一些实现中,第二联合类型操作与第二联合类型操作具有相同的类型。如上所述,一种类型的联合类型操作是“联合”,且另一种类型的联合类型操作是“联合所有”。例如,如果第一联合类型操作是“联合所有”操作且第二联合类型操作也是“联合所有”操作,则这两个操作具有相同类型。
以这种方式,计算机程序产生与SQL查询的输出等同的输出,例如如同SQL查询由关系数据库系统或评价(例如,执行)SQL查询的其它系统进行处理一样。然而,因为操作被“下推”至数据源,所以计算机程序可以比由计算机程序本身进行操作时更有效地操作。
图2所示的查询计划器130、生成引擎140和/或执行引擎150可例如在合适的操作系统(诸如UNIX操作系统版本等)的控制下托管在一个或多个通用计算机上。例如,这可以包括多节点并行计算环境,其包括使用本地的(例如,多处理器系统,诸如对称多处理(SMP)计算机等)、或本地分布的(例如,耦合为集群或大规模并行处理(MPP)系统的多个处理器)、或远程的、或远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)而耦合的多个处理器)或其任何组合的多个中央处理单元(CPU)或处理器核的计算机系统的配置。
图5和6所示的计算机程序300、300a可以显示在开发环境中。在一些实现中,开发环境是用于开发按照数据流图的应用的系统。根据本系统制作的数据流图提供了用于将信息输入至图组件所表示的各个处理中并从中输出信息、用于使信息在处理之间移动以及用于定义处理的运行顺序的方法。该系统包括从任何可用方法中选择处理间通信方法(例如,根据图链接的通信路径可以使用TCP/IP或UNIX域套接字或者使用共享内存来在处理间传递数据)的算法。
上述的技术可以使用执行合适软件的计算系统来实现。例如,该软件可以包括在一个或多个编程或可编程计算系统(可以具有诸如分布式、客户端/服务器或网格式等的各种架构)上执行的一个或多个计算机程序中的过程,其中该一个或多个编程或可编程计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户接口(用于使用至少一个输入装置或端口来接收输入,并且用于使用至少一个输出装置或端口来提供输出)。该软件可以包括例如提供与数据流图的设计、配置和执行有关的服务的较大程序的一个或多个模块。可以将程序的模块(例如,数据流图的元素)实现为数据结构或符合数据存储库中所存储的数据模型的其它有组织数据。
可以将软件设置在诸如(利用通用或专用可编程计算机可读取的)CD-ROM或其它计算机可读介质等的有形、非暂时性介质上、或者经由网络的通信介质(例如,以编码在传播信号中的形式)传递至执行该软件的计算系统的有形、非暂时性介质。可以在专用计算机上、或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用特定用途集成电路(ASIC)等的专用硬件来进行一些处理或所有功能。可以以利用不同的计算元件来进行软件所指定的计算的不同部分的分布式方式来实现该处理。优选将每一个这种计算机程序存储在通用或专用可编程计算机可读取的存储装置的计算机可读存储介质(例如,固态存储器或介质、或者磁性或光学介质)上或者下载至该存储介质,以在利用计算机读取存储装置介质以进行这里所述的处理的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的有形、非暂时性介质来实现,其中如此配置成的介质使计算机以特定的预定义方式进行工作,以进行这里所述的处理步骤中的一个或多个。
已经描述了本发明的许多实施例。然而,应当理解,前述描述旨在示出而不是限制本发明的范围,该范围由所附权利要求书的范围限定。因此,其它实施例也在所附权利要求书的范围内。例如,可以在不偏离本发明的范围的情况下作出各种修改。另外,上述步骤中的一些可以是与顺序无关的,因此可以按照与所描述的顺序不同的顺序执行。
Claims (56)
1.一种基于SQL查询来生成计算机程序的计算机实现方法,包括:
接收SQL查询,所述SQL查询包括对存储在第一数据源处的第一数据集的引用,并且包括对存储在与所述第一数据源不同的第二数据源处的第二数据集的引用;
确定所述SQL查询包括两个或更多个命令,所述命令包括第一联合类型操作和第一聚合操作;以及
确定所述SQL查询描述出应当对来自所述第一数据集的至少部分数据应用所述第一联合类型操作并且对来自所述第二数据集的至少部分数据应用所述第一联合类型操作;
确定所述SQL查询描述出应当对由所述第一联合类型操作产生的数据应用所述第一聚合操作;以及
基于所述SQL查询来在第一系统上生成计算机程序,所述计算机程序被配置为:
发送用于引导第二系统对来自所述第一数据集的一部分数据执行第二聚合操作的指令;
从所述第二系统接收作为来自所述第一数据集的一部分数据的汇总的特定数据集;以及
对所述特定数据集和来自所述第二数据集的一部分数据的汇总执行第二联合类型操作。
2.根据权利要求1所述的方法,其中,所述第一系统包括基于图的处理系统,并且所述第二系统包括关系数据库管理系统。
3.根据权利要求1所述的方法,其中,所述计算机程序被配置为:
发送用于引导第三系统对来自所述第二数据集的一部分数据执行第二聚合操作的指令;以及
从所述第三系统接收作为来自所述第二数据集的一部分数据的汇总的特定数据集。
4.根据权利要求1所述的方法,其中,所述计算机程序包括:
表示对作为来自所述第一数据集的一部分数据的汇总和来自所述第二数据集的一部分数据的汇总的数据集所应用的SQL查询的联合类型操作的第一组件,其中所述汇总各自包含比各自相应部分的数据更少的记录;以及
表示所述第一数据集的第二组件,其中所述第二组件在被执行时使得发送所述指令。
5.根据权利要求4所述的方法,其中,所述计算机程序还包括:
表示所述第二数据集的第三组件和表示第三聚合操作的第四组件,其中所述第三组件的输出流向所述第四组件,并且所述第四组件的输出流向所述第一组件。
6.根据权利要求4所述的方法,其中,所述第二组件的输出包括作为来自所述第一数据集的一部分数据的汇总的特定数据集。
7.根据权利要求4所述的方法,其中,表示所述第一数据源的组件发送所述指令,所述指令是在所述第一系统使数据被发送至用于执行所述计算机程序的系统之前进行的。
8.根据权利要求1所述的方法,其中,所述指令包括SQL语句,所述SQL语句包括与所述第二聚合操作相对应的命令。
9.根据权利要求1所述的方法,其中,基于所述SQL查询来生成计算机程序的步骤包括:
基于所述SQL查询来生成查询计划;
向所述查询计划添加对来自所述第一数据源的数据所应用的第二聚合操作;
确定所述第一系统包括用于进行所述第二聚合操作的功能;
向表示所述第一数据集的一部分查询计划附加用以进行所述第二聚合操作的指令;以及
基于所述查询计划来生成所述计算机程序。
10.根据权利要求1所述的方法,其中,所述第一聚合操作是最小值、最大值、求和或计数操作,并且所述第二聚合操作是与所述第一聚合操作相同类型的聚合操作。
11.根据权利要求1所述的方法,其中,所述第一聚合操作包括平均操作,并且所述第二聚合操作包括求和操作和计数操作至少之一。
12.根据权利要求1所述的方法,其中,还包括:基于所述第一聚合操作来确定所述第二聚合操作。
13.根据权利要求12所述的方法,其中,基于所述第一聚合操作来确定所述第二聚合操作的步骤包括:
确定在被进行时产生与所述第一聚合操作的输出等同的输出的操作序列;以及
从所述操作序列中选择所述第二聚合操作。
14.根据权利要求1所述的方法,其中,所述第一联合类型操作与所述第二联合类型操作具有相同的类型。
15.一种用于基于SQL查询来生成计算机程序的系统,包括:
一个或多个处理器,其被配置为:
接收SQL查询,所述SQL查询包括对存储在第一数据源处的第一数据集的引用,并且包括对存储在与所述第一数据源不同的第二数据源处的第二数据集的引用;
确定所述SQL查询包括两个或更多个命令,所述命令包括第一联合类型操作和第一聚合操作;以及
确定所述SQL查询描述出应当对来自所述第一数据集的至少部分数据应用所述第一联合类型操作并且对来自所述第二数据集的至少部分数据应用所述第一联合类型操作;
确定所述SQL查询描述出应当对由所述第一联合类型操作产生的数据应用所述第一聚合操作;
基于所述SQL查询来在第一系统上生成计算机程序,所述计算机程序被配置为:
发送用于引导第二系统对来自所述第一数据集的一部分数据执行第二聚合操作的指令;
从所述第二系统接收作为来自所述第一数据集的一部分数据的汇总的特定数据集;以及
对所述特定数据集和来自所述第二数据集的一部分数据的汇总执行第二联合类型操作。
16.根据权利要求15所述的系统,其中,所述第一系统包括基于图的处理系统,并且所述第二系统包括关系数据库管理系统。
17.根据权利要求15所述的系统,其中,所述计算机程序被配置为:
发送用于引导第三系统对来自所述第二数据集的一部分数据执行第二聚合操作的指令;以及
从所述第三系统接收作为来自所述第二数据集的一部分数据的汇总的特定数据集。
18.根据权利要求15所述的系统,其中,所述计算机程序包括:
表示对作为来自所述第一数据集的一部分数据的汇总和来自所述第二数据集的一部分数据的汇总的数据集所应用的SQL查询的联合类型操作的第一组件,其中所述汇总各自包含比各自相应部分的数据更少的记录;以及
表示所述第一数据集的第二组件,其中所述第二组件在被执行时使得发送所述指令。
19.根据权利要求18所述的系统,其中,所述计算机程序还包括:
表示所述第二数据集的第三组件和表示第三聚合操作的第四组件,其中所述第三组件的输出流向所述第四组件,并且所述第四组件的输出流向所述第一组件。
20.根据权利要求18所述的系统,其中,所述第二组件的输出包括作为来自所述第一数据集的一部分数据的汇总的特定数据集。
21.根据权利要求18所述的系统,其中,表示所述第一数据源的组件发送所述指令,所述指令是在所述第一系统使数据被发送至用于执行所述计算机程序的系统之前进行的。
22.根据权利要求15所述的系统,其中,所述指令包括SQL语句,所述SQL语句包括与所述第二聚合操作相对应的命令。
23.根据权利要求15所述的系统,其中,基于所述SQL查询来生成计算机程序的步骤包括:
基于所述SQL查询来生成查询计划;
向所述查询计划添加对来自所述第一数据源的数据所应用的第二聚合操作;
确定所述第一系统包括用于进行所述第二聚合操作的功能;
向表示所述第一数据集的一部分查询计划附加用以进行所述第二聚合操作的指令;以及
基于所述查询计划来生成所述计算机程序。
24.根据权利要求15所述的系统,其中,所述第一聚合操作是最小值、最大值、求和或计数操作,并且所述第二聚合操作是与所述第一聚合操作相同类型的聚合操作。
25.根据权利要求15所述的系统,其中,所述第一聚合操作包括平均操作,并且所述第二聚合操作包括求和操作和计数操作至少之一。
26.根据权利要求15所述的系统,其中,所述一个或多个处理器被配置为基于所述第一聚合操作来确定所述第二聚合操作。
27.根据权利要求26所述的系统,其中,基于所述第一聚合操作来确定所述第二聚合操作的步骤包括:
确定在被进行时产生与所述第一聚合操作的输出等同的输出的操作序列;以及
从所述操作序列中选择所述第二聚合操作。
28.根据权利要求15所述的系统,其中,所述第一联合类型操作与所述第二联合类型操作具有相同的类型。
29.一种计算机可读介质,用于存储在被执行时使计算机系统进行用于基于SQL查询来生成计算机程序的操作的可执行代码,其中,用于基于SQL查询来生成计算机程序的操作包括:
接收SQL查询,所述SQL查询包括对存储在第一数据源处的第一数据集的引用,并且包括对存储在与所述第一数据源不同的第二数据源处的第二数据集的引用;
确定所述SQL查询包括两个或更多个命令,所述命令包括第一联合类型操作和第一聚合操作;以及
确定所述SQL查询描述出应当对来自所述第一数据集的至少部分数据应用所述第一联合类型操作并且对来自所述第二数据集的至少部分数据应用所述第一联合类型操作;
确定所述SQL查询描述出应当对由所述第一联合类型操作产生的数据应用所述第一聚合操作;以及
基于所述SQL查询来在第一系统上生成计算机程序,所述计算机程序被配置为:
发送用于引导第二系统对来自所述第一数据集的一部分数据执行第二聚合操作的指令;
从所述第二系统接收作为来自所述第一数据集的一部分数据的汇总的特定数据集;以及
对所述特定数据集和来自所述第二数据集的一部分数据的汇总执行第二联合类型操作。
30.根据权利要求29所述的计算机可读介质,其中,所述第一系统包括基于图的处理系统,并且所述第二系统包括关系数据库管理系统。
31.根据权利要求29所述的计算机可读介质,其中,所述计算机程序被配置为:
发送用于引导第三系统对来自所述第二数据集的一部分数据执行第二聚合操作的指令;以及
从所述第三系统接收作为来自所述第二数据集的一部分数据的汇总的特定数据集。
32.根据权利要求29所述的计算机可读介质,其中,所述计算机程序包括:
表示对作为来自所述第一数据集的一部分数据的汇总和来自所述第二数据集的一部分数据的汇总的数据集所应用的SQL查询的联合类型操作的第一组件,其中所述汇总各自包含比各自相应部分的数据更少的记录;以及
表示所述第一数据集的第二组件,其中所述第二组件在被执行时使得发送所述指令。
33.根据权利要求32所述的计算机可读介质,其中,所述计算机程序还包括:
表示所述第二数据集的第三组件和表示第三聚合操作的第四组件,其中所述第三组件的输出流向所述第四组件,并且所述第四组件的输出流向所述第一组件。
34.根据权利要求32所述的计算机可读介质,其中,所述第二组件的输出包括作为来自所述第一数据集的一部分数据的汇总的特定数据集。
35.根据权利要求32所述的计算机可读介质,其中,表示所述第一数据源的组件发送所述指令,所述指令是在所述第一系统使数据被发送至用于执行所述计算机程序的系统之前进行的。
36.根据权利要求29所述的计算机可读介质,其中,所述指令包括SQL语句,所述SQL语句包括与所述第二聚合操作相对应的命令。
37.根据权利要求29所述的计算机可读介质,其中,基于所述SQL查询来生成计算机程序的步骤包括:
基于所述SQL查询来生成查询计划;
向所述查询计划添加对来自所述第一数据源的数据所应用的第二聚合操作;
确定所述第一系统包括用于进行所述第二聚合操作的功能;
向表示所述第一数据集的一部分查询计划附加用以进行所述第二聚合操作的指令;以及
基于所述查询计划来生成所述计算机程序。
38.根据权利要求29所述的计算机可读介质,其中,所述第一聚合操作是最小值、最大值、求和或计数操作,并且所述第二聚合操作是与所述第一聚合操作相同类型的聚合操作。
39.根据权利要求29所述的计算机可读介质,其中,所述第一聚合操作包括平均操作,并且所述第二聚合操作包括求和操作和计数操作至少之一。
40.根据权利要求29所述的计算机可读介质,其中,所述操作还包括:基于所述第一聚合操作来确定所述第二聚合操作。
41.根据权利要求40所述的计算机可读介质,其中,基于所述第一聚合操作来确定所述第二聚合操作的步骤包括:
确定在被进行时产生与所述第一聚合操作的输出等同的输出的操作序列;以及
从所述操作序列中选择所述第二聚合操作。
42.根据权利要求29所述的计算机可读介质,其中,所述第一联合类型操作与所述第二联合类型操作具有相同的类型。
43.一种用于基于SQL查询来生成计算机程序的系统,包括:
用于接收SQL查询的部件,所述SQL查询包括对存储在第一数据源处的第一数据集的引用,并且包括对存储在与所述第一数据源不同的第二数据源处的第二数据集的引用;
用于确定所述SQL查询包括两个或更多个命令的部件,所述命令包括第一联合类型操作和第一聚合操作;以及
用于确定所述SQL查询描述出应当对来自所述第一数据集的至少部分数据应用所述第一联合类型操作并且对来自所述第二数据集的至少部分数据应用所述第一联合类型操作的部件;
用于确定所述SQL查询描述出应当对由所述第一联合类型操作产生的数据应用所述第一聚合操作的部件;以及
用于基于所述SQL查询来在第一系统上生成计算机程序的部件,所述计算机程序被配置为:
发送用于引导第二系统对来自所述第一数据集的一部分数据执行第二聚合操作的指令;
从所述第二系统接收作为来自所述第一数据集的一部分数据的汇总的特定数据集;以及
对所述特定数据集和来自所述第二数据集的一部分数据的汇总执行第二联合类型操作。
44.根据权利要求43所述的系统,其中,所述第一系统包括基于图的处理系统,并且所述第二系统包括关系数据库管理系统。
45.根据权利要求43所述的系统,其中,所述计算机程序被配置为:
发送用于引导第三系统对来自所述第二数据集的一部分数据执行第二聚合操作的指令;以及
从所述第三系统接收作为来自所述第二数据集的一部分数据的汇总的特定数据集。
46.根据权利要求43所述的系统,其中,所述计算机程序包括:
表示对作为来自所述第一数据集的一部分数据的汇总和来自所述第二数据集的一部分数据的汇总的数据集所应用的SQL查询的联合类型操作的第一组件,其中所述汇总各自包含比各自相应部分的数据更少的记录;以及
表示所述第一数据集的第二组件,其中所述第二组件在被执行时使得发送所述指令。
47.根据权利要求46所述的系统,其中,所述计算机程序还包括:
表示所述第二数据集的第三组件和表示第三聚合操作的第四组件,其中所述第三组件的输出流向所述第四组件,并且所述第四组件的输出流向所述第一组件。
48.根据权利要求46所述的系统,其中,所述第二组件的输出包括作为来自所述第一数据集的一部分数据的汇总的特定数据集。
49.根据权利要求46所述的系统,其中,表示所述第一数据源的组件发送所述指令,所述指令是在所述第一系统使数据被发送至用于执行所述计算机程序的系统之前进行的。
50.根据权利要求43所述的系统,其中,所述指令包括SQL语句,所述SQL语句包括与所述第二聚合操作相对应的命令。
51.根据权利要求43所述的系统,其中,用于基于所述SQL查询来生成计算机程序的部件包括:
用于基于所述SQL查询来生成查询计划的部件;
用于向所述查询计划添加对来自所述第一数据源的数据所应用的第二聚合操作的部件;
用于确定所述第一系统包括用以进行所述第二聚合操作的功能的部件;
用于向表示所述第一数据集的一部分查询计划附加用以进行所述第二聚合操作的指令的部件;以及
用于基于所述查询计划来生成所述计算机程序的部件。
52.根据权利要求43所述的系统,其中,所述第一聚合操作是最小值、最大值、求和或计数操作,并且所述第二聚合操作是与所述第一聚合操作相同类型的聚合操作。
53.根据权利要求43所述的系统,其中,所述第一聚合操作包括平均操作,并且所述第二聚合操作包括求和操作和计数操作至少之一。
54.根据权利要求43所述的系统,其中,还包括用于基于所述第一聚合操作来确定所述第二聚合操作的部件。
55.根据权利要求54所述的系统,其中,用于基于所述第一聚合操作来确定所述第二聚合操作的部件包括:
用于确定在被进行时产生与所述第一聚合操作的输出等同的输出的操作序列的部件;以及
用于从所述操作序列中选择所述第二聚合操作的部件。
56.根据权利要求43所述的系统,其中,所述第一联合类型操作与所述第二联合类型操作具有相同的类型。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462079922P | 2014-11-14 | 2014-11-14 | |
US62/079,922 | 2014-11-14 | ||
US14/746,188 US10437819B2 (en) | 2014-11-14 | 2015-06-22 | Processing queries containing a union-type operation |
US14/746,188 | 2015-06-22 | ||
PCT/US2015/059976 WO2016077362A1 (en) | 2014-11-14 | 2015-11-10 | Processing queries containing a union-type operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003868A CN107003868A (zh) | 2017-08-01 |
CN107003868B true CN107003868B (zh) | 2021-05-11 |
Family
ID=54602073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580062226.7A Active CN107003868B (zh) | 2014-11-14 | 2015-11-10 | 处理包含联合类型操作的查询 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10437819B2 (zh) |
EP (1) | EP3218823B1 (zh) |
JP (1) | JP6787889B2 (zh) |
KR (1) | KR102041168B1 (zh) |
CN (1) | CN107003868B (zh) |
AU (1) | AU2015346525C1 (zh) |
CA (1) | CA2967328C (zh) |
SG (2) | SG11201703343YA (zh) |
WO (1) | WO2016077362A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10970280B2 (en) | 2015-10-07 | 2021-04-06 | International Business Machines Corporation | Query plan based on a data storage relationship |
US10628416B2 (en) * | 2016-05-31 | 2020-04-21 | International Business Machines Corporation | Enhanced database query processing |
US10558668B2 (en) | 2016-07-01 | 2020-02-11 | International Business Machines Corporation | Result set output criteria |
US20180137667A1 (en) | 2016-11-14 | 2018-05-17 | Oracle International Corporation | Graph Visualization Tools With Summary Visualization For Very Large Labeled Graphs |
US10585575B2 (en) | 2017-05-31 | 2020-03-10 | Oracle International Corporation | Visualizing UI tool for graph construction and exploration with alternative action timelines |
US11475000B2 (en) * | 2017-11-30 | 2022-10-18 | International Business Machines Corporation | Aggregation in dynamic and distributed computing systems |
US11120082B2 (en) | 2018-04-18 | 2021-09-14 | Oracle International Corporation | Efficient, in-memory, relational representation for heterogeneous graphs |
US10810192B2 (en) * | 2018-09-18 | 2020-10-20 | Sigma Computing, Inc. | Generating a database query to dynamically aggregate rows of a data set |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
CN111694887B (zh) * | 2020-06-12 | 2023-07-04 | 最美天气(上海)科技有限公司 | 一种数据适应性存储调度系统及方法 |
KR102200010B1 (ko) | 2020-08-06 | 2021-01-08 | (주)시큐레이어 | 이기종 데이터 소스 간 연관 분석의 결과를 제공하는 방법 및 장치 |
US11494373B2 (en) | 2021-02-09 | 2022-11-08 | Oracle International Corporation | Nested query modification tool |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103562910A (zh) * | 2011-05-02 | 2014-02-05 | 起元技术有限责任公司 | 管理数据查询 |
CN104123374A (zh) * | 2014-07-28 | 2014-10-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
WO2014144889A3 (en) * | 2013-03-15 | 2014-11-06 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
Family Cites Families (136)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4586137A (en) | 1982-10-18 | 1986-04-29 | Dresser Industries, Inc. | Method for generating variable well logging data composites |
JPH01108638A (ja) | 1987-10-21 | 1989-04-25 | Hitachi Ltd | 並列化コンパイル方式 |
JP2738692B2 (ja) | 1988-01-29 | 1998-04-08 | 株式会社日立製作所 | 並列化コンパイル方法 |
US5072371A (en) | 1989-03-01 | 1991-12-10 | The United States Of America As Represented By The United States Department Of Energy | Method for simultaneous overlapped communications between neighboring processors in a multiple |
US5121494A (en) | 1989-10-05 | 1992-06-09 | Ibm Corporation | Joining two database relations on a common field in a parallel relational database field |
US5367619A (en) | 1990-04-27 | 1994-11-22 | Eaton Corporation | Electronic data entry system employing an expert system to facilitate generation of electronic data forms with complex interrelationships between fields and subforms |
US5347639A (en) | 1991-07-15 | 1994-09-13 | International Business Machines Corporation | Self-parallelizing computer system and method |
US5632022A (en) | 1991-11-13 | 1997-05-20 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Encyclopedia of software components |
US5313584A (en) | 1991-11-25 | 1994-05-17 | Unisys Corporation | Multiple I/O processor system |
JPH05257709A (ja) | 1992-03-16 | 1993-10-08 | Hitachi Ltd | 並列化判別方法およびそれを用いた並列化支援方法 |
US5432940A (en) | 1992-11-02 | 1995-07-11 | Borland International, Inc. | System and methods for improved computer-based training |
US5574898A (en) | 1993-01-08 | 1996-11-12 | Atria Software, Inc. | Dynamic software version auditor which monitors a process to provide a list of objects that are accessed |
US5446915A (en) | 1993-05-25 | 1995-08-29 | Intel Corporation | Parallel processing system virtual connection method and apparatus with protection and flow control |
US5475842A (en) | 1993-08-11 | 1995-12-12 | Xerox Corporation | Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution |
US5600833A (en) | 1993-09-17 | 1997-02-04 | Digital Equipment Corp. | Attribute portion based document retrieval system with system query language interface |
JP4050339B2 (ja) | 1994-04-28 | 2008-02-20 | 株式会社東芝 | 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置 |
US5588150A (en) | 1994-09-29 | 1996-12-24 | International Business Machines Corporation | Push down optimization in a distributed, multi-database system |
US5768564A (en) | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
FI98690C (fi) | 1994-10-18 | 1997-07-25 | Nokia Telecommunications Oy | Menetelmä alueryhmäpuhelun muodostamiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä |
US5734886A (en) | 1994-11-16 | 1998-03-31 | Lucent Technologies Inc. | Database dependency resolution method and system for identifying related data files |
FI98973C (fi) | 1994-11-22 | 1997-09-10 | Nokia Telecommunications Oy | Menetelmä ryhmätietojen ylläpitämiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä |
US5546576A (en) | 1995-02-17 | 1996-08-13 | International Business Machines Corporation | Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation |
US5619692A (en) | 1995-02-17 | 1997-04-08 | International Business Machines Corporation | Semantic optimization of query order requirements using order detection by normalization in a query compiler system |
FI100215B (fi) | 1995-03-17 | 1997-10-15 | Nokia Telecommunications Oy | Matkaviestijärjestelmän tilaajatietojen päivittäminen |
US5706509A (en) | 1995-04-28 | 1998-01-06 | Intel Corporation | Application independent record level synchronization |
US5678044A (en) | 1995-06-02 | 1997-10-14 | Electronic Data Systems Corporation | System and method for improved rehosting of software systems |
US5682537A (en) | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5712971A (en) | 1995-12-11 | 1998-01-27 | Ab Initio Software Corporation | Methods and systems for reconstructing the state of a computation |
US5819021A (en) | 1995-12-11 | 1998-10-06 | Ab Initio Software Corporation | Overpartitioning system and method for increasing checkpoints in component-based parallel applications |
US5909681A (en) | 1996-03-25 | 1999-06-01 | Torrent Systems, Inc. | Computer system and computerized method for partitioning data for parallel processing |
US6311265B1 (en) | 1996-03-25 | 2001-10-30 | Torrent Systems, Inc. | Apparatuses and methods for programming parallel computers |
US5799149A (en) | 1996-06-17 | 1998-08-25 | International Business Machines Corporation | System partitioning for massively parallel processors |
US5870743A (en) | 1996-06-24 | 1999-02-09 | Oracle Corporation | Method and apparatus for parallelizing operations that create a table |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
JPH10232875A (ja) | 1997-02-19 | 1998-09-02 | Hitachi Ltd | データベース管理方法および並列データベース管理システム |
US6330008B1 (en) | 1997-02-24 | 2001-12-11 | Torrent Systems, Inc. | Apparatuses and methods for monitoring performance of parallel computing |
US5999729A (en) | 1997-03-06 | 1999-12-07 | Continuum Software, Inc. | System and method for developing computer programs for execution on parallel processing systems |
US5956074A (en) | 1997-03-11 | 1999-09-21 | Sclafani; Peter J. | Cable television return display unit |
JP3155991B2 (ja) | 1997-04-09 | 2001-04-16 | 日本アイ・ビー・エム株式会社 | 集約演算実行方法及びコンピュータ・システム |
US6092062A (en) | 1997-06-30 | 2000-07-18 | International Business Machines Corporation | Relational database query optimization to perform query evaluation plan, pruning based on the partition properties |
US6077313A (en) | 1997-10-22 | 2000-06-20 | Microsoft Corporation | Type partitioned dataflow analyses |
US6295518B1 (en) | 1997-12-09 | 2001-09-25 | Mci Communications Corporation | System and method for emulating telecommunications network devices |
US6266804B1 (en) | 1997-12-23 | 2001-07-24 | Ab Initio Software Corporation | Method for analyzing capacity of parallel processing systems |
US6625593B1 (en) | 1998-06-29 | 2003-09-23 | International Business Machines Corporation | Parallel query optimization strategies for replicated and partitioned tables |
US6205465B1 (en) | 1998-07-22 | 2001-03-20 | Cisco Technology, Inc. | Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information |
US6453464B1 (en) | 1998-09-03 | 2002-09-17 | Legacyj. Corp., Inc. | Method and apparatus for converting COBOL to Java |
US6378126B2 (en) | 1998-09-29 | 2002-04-23 | International Business Machines Corporation | Compilation of embedded language statements in a source code program |
JP2000148699A (ja) | 1998-11-06 | 2000-05-30 | Nec Corp | ネットワークマネージメントシステム |
JP4406944B2 (ja) | 1998-11-11 | 2010-02-03 | 株式会社日立製作所 | 計算機システム及び問合せに対する処理分散システム |
US7047232B1 (en) | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
US7080062B1 (en) | 1999-05-18 | 2006-07-18 | International Business Machines Corporation | Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries |
US6560593B1 (en) | 1999-07-20 | 2003-05-06 | Computer Associates Think, Inc. | Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query |
JP4552242B2 (ja) | 1999-10-06 | 2010-09-29 | 株式会社日立製作所 | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
US6615203B1 (en) | 1999-12-17 | 2003-09-02 | International Business Machines Corporation | Method, computer program product, and system for pushdown analysis during query plan generation |
US6947934B1 (en) | 2000-02-16 | 2005-09-20 | International Business Machines Corporation | Aggregate predicates and search in a database management system |
US7164422B1 (en) | 2000-07-28 | 2007-01-16 | Ab Initio Software Corporation | Parameterized graphs with conditional components |
US6785668B1 (en) | 2000-11-28 | 2004-08-31 | Sas Institute Inc. | System and method for data flow analysis of complex data filters |
US8412746B2 (en) | 2001-05-25 | 2013-04-02 | International Business Machines Corporation | Method and system for federated querying of data sources |
US6877000B2 (en) | 2001-08-22 | 2005-04-05 | International Business Machines Corporation | Tool for converting SQL queries into portable ODBC |
US6725212B2 (en) | 2001-08-31 | 2004-04-20 | International Business Machines Corporation | Platform-independent method and system for graphically presenting the evaluation of a query in a database management system |
JP2003099441A (ja) | 2001-09-21 | 2003-04-04 | Hitachi Ltd | データ検索手順探索方法 |
US6915290B2 (en) | 2001-12-11 | 2005-07-05 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US7409474B2 (en) | 2002-06-27 | 2008-08-05 | Broadcom Corporation | Method and system for rate adaptation |
US7167850B2 (en) | 2002-10-10 | 2007-01-23 | Ab Initio Software Corporation | Startup and control of graph-based computation |
US7953891B2 (en) | 2003-03-18 | 2011-05-31 | Microsoft Corporation | Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow |
CA2429910A1 (en) | 2003-05-27 | 2004-11-27 | Cognos Incorporated | System and method of query transformation |
US7249120B2 (en) | 2003-06-27 | 2007-07-24 | Microsoft Corporation | Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables |
US20050038788A1 (en) | 2003-08-14 | 2005-02-17 | International Business Machines Corporation | Annotation security to prevent the divulgence of sensitive information |
US7664778B2 (en) | 2003-09-06 | 2010-02-16 | Oracle International Corporation | SQL tuning sets |
US9183256B2 (en) | 2003-09-19 | 2015-11-10 | Ibm International Group B.V. | Performing sequence analysis as a relational join |
US7165063B2 (en) | 2003-11-19 | 2007-01-16 | International Business Machines Corporation | Context quantifier transformation in XML query rewrite |
US7133861B2 (en) | 2003-12-04 | 2006-11-07 | International Business Machines Corporation | Query access plan rebuilds |
US7930432B2 (en) | 2004-05-24 | 2011-04-19 | Microsoft Corporation | Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow |
US7899833B2 (en) | 2004-11-02 | 2011-03-01 | Ab Initio Technology Llc | Managing related data objects |
US7461052B2 (en) | 2004-12-06 | 2008-12-02 | International Business Machines Corporation | Abstract query plan |
US7890532B2 (en) | 2004-12-15 | 2011-02-15 | Microsoft Corporation | Complex data access |
US7359922B2 (en) | 2004-12-22 | 2008-04-15 | Ianywhere Solutions, Inc. | Database system and methodology for generalized order optimization |
US20060265362A1 (en) | 2005-05-18 | 2006-11-23 | Content Analyst Company, Llc | Federated queries and combined text and relational data |
US7856523B2 (en) | 2005-06-01 | 2010-12-21 | Microsoft Corporation | Random Access Memory (RAM) based Content Addressable Memory (CAM) management |
US7716630B2 (en) | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
US7877350B2 (en) | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
US7584205B2 (en) | 2005-06-27 | 2009-09-01 | Ab Initio Technology Llc | Aggregating data with complex operations |
US20070067274A1 (en) | 2005-09-16 | 2007-03-22 | International Business Machines Corporation | Hybrid push-down/pull-up of unions with expensive operations in a federated query processor |
US7464084B2 (en) | 2006-01-30 | 2008-12-09 | International Business Machines Corporation | Method for performing an inexact query transformation in a heterogeneous environment |
US7945562B2 (en) | 2006-03-15 | 2011-05-17 | Oracle International Corporation | Join predicate push-down optimizations |
US7870556B2 (en) | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
US8572236B2 (en) | 2006-08-10 | 2013-10-29 | Ab Initio Technology Llc | Distributing services in graph-based computations |
JP4872529B2 (ja) | 2006-08-22 | 2012-02-08 | 株式会社日立製作所 | リバースエンジニアリング支援方法 |
JP2008158664A (ja) | 2006-12-21 | 2008-07-10 | Sony Corp | 通信システム、サーバ、通信端末及び通信方法 |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
US8122088B2 (en) | 2007-06-28 | 2012-02-21 | International Business Machines Corporation | Adding personal note capabilities to text exchange clients |
US9424315B2 (en) | 2007-08-27 | 2016-08-23 | Teradata Us, Inc. | Methods and systems for run-time scheduling database operations that are executed in hardware |
US20100005077A1 (en) | 2008-07-07 | 2010-01-07 | Kickfire, Inc. | Methods and systems for generating query plans that are compatible for execution in hardware |
EP2191362B1 (en) | 2007-09-20 | 2015-08-19 | Ab Initio Technology LLC | Managing data flows in graph-based computations |
US8527976B2 (en) | 2007-11-14 | 2013-09-03 | Nec Laboratories America, Inc. | System and method for generating error traces for concurrency bugs |
CN101436192B (zh) | 2007-11-16 | 2011-03-16 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
US20090198703A1 (en) | 2008-01-31 | 2009-08-06 | Hewlett-Packard Development Company, L.P. | Intelligent data storage system |
US7933916B2 (en) | 2008-02-28 | 2011-04-26 | Microsoft Corporation | Querying nonSQL data stores with a SQL-style language |
US8537160B2 (en) | 2008-03-05 | 2013-09-17 | Microsoft Corporation | Generating distributed dataflow graphs |
JP2009217405A (ja) | 2008-03-07 | 2009-09-24 | Nec Corp | ジョブネットワーク自動生成方式及びプログラム |
US8538985B2 (en) | 2008-03-11 | 2013-09-17 | International Business Machines Corporation | Efficient processing of queries in federated database systems |
WO2009125614A1 (ja) | 2008-04-11 | 2009-10-15 | シャープ株式会社 | 表示装置および表示装置の駆動方法 |
US7974967B2 (en) | 2008-04-15 | 2011-07-05 | Sap Ag | Hybrid database system using runtime reconfigurable hardware |
US20100057695A1 (en) | 2008-08-28 | 2010-03-04 | Microsoft Corporation | Post-processing search results on a client computer |
US7917463B2 (en) | 2008-10-10 | 2011-03-29 | Business.Com, Inc. | System and method for data warehousing and analytics on a distributed file system |
US20100121868A1 (en) | 2008-11-07 | 2010-05-13 | Yann Le Biannic | Converting a database query to a multi-dimensional expression query |
US8666966B2 (en) | 2009-01-30 | 2014-03-04 | Hewlett-Packard Development Company, L.P. | Providing parallel result streams for database queries |
KR20150038758A (ko) | 2009-02-13 | 2015-04-08 | 아브 이니티오 테크놀로지 엘엘시 | 태스크 실행 관리 |
US8392398B2 (en) | 2009-07-29 | 2013-03-05 | International Business Machines Corporation | Query optimization over graph data streams |
US9477778B2 (en) | 2009-08-21 | 2016-10-25 | Oracle International Corporation | XML query optimization with order analysis of XML schema |
US9064047B2 (en) | 2009-09-24 | 2015-06-23 | International Business Machines Corporation | Parallel processing of ETL jobs involving extensible markup language documents |
US8620903B2 (en) | 2009-11-04 | 2013-12-31 | Nec Laboratories America, Inc. | Database distribution system and methods for scale-out applications |
US8688683B2 (en) | 2009-11-30 | 2014-04-01 | Business Objects Software Ltd. | Query plan reformulation |
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US8555263B2 (en) * | 2010-01-20 | 2013-10-08 | Aetna Inc. | System and method for code automation |
US8204903B2 (en) | 2010-02-16 | 2012-06-19 | Microsoft Corporation | Expressing and executing semantic queries within a relational database |
US9286370B2 (en) * | 2010-02-24 | 2016-03-15 | International Business Machines Corporation | Viewing a dimensional cube as a virtual data source |
US8555265B2 (en) | 2010-05-04 | 2013-10-08 | Google Inc. | Parallel processing of data |
JP5898188B2 (ja) | 2010-06-15 | 2016-04-06 | アビニシオ テクノロジー エルエルシー | グラフに基づく計算の動的ロード |
JP5536568B2 (ja) * | 2010-07-01 | 2014-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを集約して処理する方法、システム、およびプログラム |
US8326821B2 (en) | 2010-08-25 | 2012-12-04 | International Business Machines Corporation | Transforming relational queries into stream processing |
US9128983B2 (en) | 2010-10-13 | 2015-09-08 | Aol Inc. | Systems and methods for query optimization |
US8850574B1 (en) | 2011-02-28 | 2014-09-30 | Google Inc. | Safe self-modifying code |
US20120246158A1 (en) | 2011-03-25 | 2012-09-27 | Microsoft Corporation | Co-range partition for query plan optimization and data-parallel programming model |
US8782081B2 (en) | 2011-05-11 | 2014-07-15 | Google Inc. | Query template definition and transformation |
US8898145B2 (en) * | 2011-06-15 | 2014-11-25 | Microsoft Corporation | Query optimization techniques for business intelligence systems |
US9449030B2 (en) | 2011-06-30 | 2016-09-20 | International Business Machines Corporation | Method for native program to inherit same transaction content when invoked by primary program running in separate environment |
US8635206B2 (en) * | 2011-06-30 | 2014-01-21 | International Business Machines Corporation | Database query optimization |
JP5357286B2 (ja) * | 2011-09-21 | 2013-12-04 | 前田建設工業株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US9177022B2 (en) | 2011-11-02 | 2015-11-03 | Microsoft Technology Licensing, Llc | User pipeline configuration for rule-based query transformation, generation and result display |
US9317551B1 (en) | 2012-03-23 | 2016-04-19 | The Mathworks, Inc. | Transforming a search query into a format understood by a technical computing environment (TCE)-based search engine |
JP5835084B2 (ja) * | 2012-05-02 | 2015-12-24 | 富士通株式会社 | クエリ統合方法、クエリ統合プログラム、および統合コンポーネント生成装置 |
US9182957B2 (en) | 2012-07-10 | 2015-11-10 | Loring Craymer | Method and system for automated improvement of parallelism in program compilation |
KR102031402B1 (ko) | 2012-07-24 | 2019-10-11 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 모델에서의 엔티티 매핑 |
US9135301B2 (en) | 2013-03-14 | 2015-09-15 | Oracle International Corporation | Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system |
US9633104B2 (en) * | 2013-05-03 | 2017-04-25 | Sas Institute Inc. | Methods and systems to operate on group-by sets with high cardinality |
-
2015
- 2015-06-22 US US14/746,188 patent/US10437819B2/en active Active
- 2015-11-10 WO PCT/US2015/059976 patent/WO2016077362A1/en active Application Filing
- 2015-11-10 CN CN201580062226.7A patent/CN107003868B/zh active Active
- 2015-11-10 JP JP2017525332A patent/JP6787889B2/ja active Active
- 2015-11-10 SG SG11201703343YA patent/SG11201703343YA/en unknown
- 2015-11-10 SG SG10201810036QA patent/SG10201810036QA/en unknown
- 2015-11-10 CA CA2967328A patent/CA2967328C/en active Active
- 2015-11-10 KR KR1020177014938A patent/KR102041168B1/ko active IP Right Grant
- 2015-11-10 EP EP15797570.7A patent/EP3218823B1/en active Active
- 2015-11-10 AU AU2015346525A patent/AU2015346525C1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103562910A (zh) * | 2011-05-02 | 2014-02-05 | 起元技术有限责任公司 | 管理数据查询 |
WO2014144889A3 (en) * | 2013-03-15 | 2014-11-06 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
CN104123374A (zh) * | 2014-07-28 | 2014-10-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
Non-Patent Citations (1)
Title |
---|
PostgreSQL を活用した仮想データ統合基盤の実現;中山陽太郎;《UNISYS TECHNOLOGY REVIEW》;20120331;第332-339页,及图8-9 * |
Also Published As
Publication number | Publication date |
---|---|
US10437819B2 (en) | 2019-10-08 |
EP3218823A1 (en) | 2017-09-20 |
AU2015346525B2 (en) | 2019-02-28 |
CA2967328A1 (en) | 2016-05-19 |
CN107003868A (zh) | 2017-08-01 |
US20160140166A1 (en) | 2016-05-19 |
SG10201810036QA (en) | 2018-12-28 |
EP3218823B1 (en) | 2019-06-12 |
JP2017535869A (ja) | 2017-11-30 |
WO2016077362A1 (en) | 2016-05-19 |
SG11201703343YA (en) | 2017-05-30 |
CA2967328C (en) | 2020-06-02 |
KR20170083569A (ko) | 2017-07-18 |
JP6787889B2 (ja) | 2020-11-18 |
KR102041168B1 (ko) | 2019-11-06 |
AU2015346525A1 (en) | 2017-05-18 |
AU2015346525C1 (en) | 2019-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003868B (zh) | 处理包含联合类型操作的查询 | |
US11720583B2 (en) | Processing data from multiple sources | |
JP7273045B2 (ja) | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 | |
US10521427B2 (en) | Managing data queries | |
JP6216423B2 (ja) | データクエリの管理 | |
US8725707B2 (en) | Data continuous SQL process | |
US11243958B2 (en) | Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |