CN104050202B - 用于搜索数据库的方法和装置 - Google Patents
用于搜索数据库的方法和装置 Download PDFInfo
- Publication number
- CN104050202B CN104050202B CN201310095688.1A CN201310095688A CN104050202B CN 104050202 B CN104050202 B CN 104050202B CN 201310095688 A CN201310095688 A CN 201310095688A CN 104050202 B CN104050202 B CN 104050202B
- Authority
- CN
- China
- Prior art keywords
- mapping
- mode
- type
- query
- data
- 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
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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种搜索数据库的方法和装置。该方法包括:基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目;以及基于所述数据条目的所述分组执行所述搜索。本发明可以有效地并且高效地解决对于现有的MapReduce查询处理系统而言共同的问题,从而特别适合于大集群系统中的大数据集分析。
Description
技术领域
本发明的实施方式涉及数据库领域,更具体地,涉及一种用于搜索数据库的方法和装置。
背景技术
随着数据库技术的不断发展,对数据库的搜索/查询技术的要求也日益提升。在实践中,MapReduce(映射-合并)框架已经被广泛作为对在大集群系统中的大数据分析的有效方法。MapReduce应用开发要求开发人员将应用程序逻辑编码为由MapReduce公开的简单接口(即map和reduce函数)。尽管这样的map和reduce接口提供了极高的编程灵活性,但它们非常难以实现、优化和维护,尤其是对于在实际生产中涉及到的复杂和非无关紧要的数据分析作业而言。从关系数据库技术(即,SQL)的成功可以明显看出,如果数据处理程序以如下声明式查询语言(declarative query language)进行编写,则程序开发和优化将非常高效和有效,前述声明式查询语言隐藏了实现细节并且可以进行修改以加以优化。在这种情况下,用户可以直接编写声明性查询,该查询继而将被转换成待由MapReduce平台(例如,Hadoop)执行的MapReduce程序(作业)序列。
近来,已经提出了若干声明式语言并且集成到了基于MapReduce的系统,诸如PigLatin/Pig,HiveQL/Hive。在这些系统中,用户直接编写声明式查询,其随后被转换成待由MapReduce平台(例如Hadoop)执行的MapReduce程序(作业)序列。这些语言极大地改进了MapReduce应用开发人员的生产率。然而,它们的效果和影响受到两个主要问题的限制。一方面,到目前为止在查询转换过程期间,仅已经开发出一些非常专门化的优化技术。因而,实践中,观察到针对许多查询而自动转换的MapReduce程序与由有经验的程序员编写的手工优化的程序相比总是极度低效。例如,现有的语言转换器采用本地化的一个操作-一个作业方法,其简单地用预备好的MapReduce程序来代替查询图中的每个操作。另一方面,现有的MapReduce语言提供用于操作数据集合体的有限的句法,主要以公知的关系连接(join)和GROUP BY的形式。这样,这些语言允许用户能够将定制的MapReduce脚本插入到他们的查询语言中。这实际上削弱了使用声明式语言的益处并且可能引起次优的、易出错的并且难以维护的代码。
发明内容
为了解决现有技术中存在的上述问题,本说明书提出如下方案。
根据本发明的一个方面,提出一种搜索数据库的方法,包括:基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目;以及基于所述数据条目的所述分组执行所述搜索。
在本发明的可选实现中,所述基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目进一步包括通过以下中的至少一种来变换所述搜索条件的步骤:从所述搜索条件中去除模式、重写规则以及去除嵌套。
在本发明的可选实现中,所述分组还基于所述搜索条件中设定的所述数据条目的值之间的依赖关系进行。
在本发明的可选实现中,所述搜索条件包括SQL查询语句。
在本发明的可选实现中,所述数据库中的数据项的类型包括以下中的一个:记录类型<A1:t1,...,An:tn>、序列类型[t]、集合类型{t}、以及映射类型{(t1,t2)};其中,n是自然数,t1,...,tn是递归定义类型,A1,...,An是组件名,并且映射类型{(t1,t2)}将类型t1的关键字绑定到类型t2。
在本发明的可选实现中,所述SQL查询语句包括如下形式:
SELECT[DISTINCT]es
FROM pf1 in ef1,...,pfn in efn
[WHERE ew]
[GROUP BY pg:eg[HAVING eh]]
[ORDER BY eo]
其中,[]中的语句为可选语句;并且其中,ef1,...,efn,es、ew、eg、和eo是任意表达式;FROM子句中的pf1,...,pfn中的每个是模式,ef1,...,efn中的每个是返回序列、集合或者关键字-值配对映射的表达式,“pin e”形式表示模式p匹配e中的每个元素,并将其模式变量绑定到元素中的对应值;GROUP BY子句中的pg:eg形式表示将查询结果划分成组,从而每个组内的成员具有相同值eg,模式pg绑定到跨每个组共同的GROUP BY值。
在本发明的可选实现中,基于所述数据条目的所述分组执行所述搜索进一步包括以下中的一个或多个:设置新的查询变量以关联到所述查询语句中的每个SELECT表达式;去除所述SQL查询语句中的所有连接和过滤谓词;以及用单个绑定来替代每个SELECT表达式中的FROM部分,所述单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。
在本发明的可选实现中,所述搜索基于映射-合并方式并行进行。
在本发明的可选实现中,在针对所述搜索的所述映射-合并方式多于一种时,评估所述映射-合并方式中每种所述映射-合并方式的开销,并且选择开销最小的映射-合并方式作为实际搜索方式。
在本发明的可选实现中,所述映射-合并方式包括以下步骤中的一个或多个:减少由映射-合并作业读取输入数据和写入输出数据的I/O开销、将彼此独立的多个映射-合并作业组合成单个映射-合并作业、以及在产品-消费者作业对中至少一个作业是仅映射的,或者两个作业共享同一映射关键字时组合所述产品-消费者作业对。
在本发明的可选实现中,所述映射-合并方式包括使用如下形式的执行方式:
REPEAT v=e STEP body[limit n]
其中,v是需要重复的变量,e的类型是某一类型T的集合{T},body的类型是{(T,布尔型)},n为自然数;并且其中,所述REPEAT语句表示首先将v绑定到e的值,然后重复计算body,并且从之前的重复计算中将新值赋予v,如果重复的次数变为n、或者当所有由body返回的布尔型都为假时,则停止所述执行。
根据本发明的另一方面,提出一种搜索数据库的装置,包括:分组装置,被配置为基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目;以及执行装置,被配置为基于所述数据条目的所述分组执行所述搜索。
在本发明的可选实现中,所述分组装置进一步包括通过以下装置中的至少一个:模式去除装置,被配置为从所述搜索条件中去除模式;查询简化装置,被配置为重写规则;以及嵌套去除装置,被配置为去除嵌套。
在本发明的可选实现中,所述分组装置还基于所述搜索条件中设定的所述数据条目的值之间的依赖关系进行所述分组。
在本发明的可选实现中,所述搜索条件包括SQL查询语句。
在本发明的可选实现中,所述数据库中的数据项的类型包括以下中的一个:记录类型<A1:t1,...,An:tn>、序列类型[t]、集合类型{t}、以及映射类型{(t1,t2)};其中,n是自然数,t1,...,tn是递归定义类型,A1,...,An是组件名,并且映射类型{(t1,t2)}将类型t1的关键字绑定到类型t2。
在本发明的可选实现中,所述SQL查询语句包括如下形式:
SELECT[DISTINCT]es
FROM pf1 in ef1,...,pfn in efn
[WHERE ew]
[GROUP BY pg:eg[HAVING eh]]
[ORDER BY eo]
其中,[]中的语句为可选语句;并且其中,ef1,...,efn,es、ew、eg、和eo是任意表达式;FROM子句中的pf1,...,pfn中的每个是模式,ef1,...,efn中的每个是返回序列、集合或者关键字-值配对映射的表达式,“pin e”形式表示模式p匹配e中的每个元素,并将其模式变量绑定到元素中的对应值;GROUP BY子句中的pg:eg形式表示将查询结果划分成组,从而每个组内的成员具有相同值eg,模式pg绑定到跨每个组共同的GROUP BY值。
在本发明的可选实现中,所述执行装置进一步包括以下装置中的一个或多个:新变量设置装置,被配置为设置新的查询变量以关联到所述查询语句中的每个SELECT表达式;去除装置,被配置为去除所述SQL查询语句中的所有连接和过滤谓词;以及替代装置,被配置为用单个绑定来替代每个SELECT表达式中的FROM部分,所述单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。
在本发明的可选实现中,所述执行装置基于映射-合并方式并行进行所述搜索。
在本发明的可选实现中,用于搜索数据库的装置还包括:评估-选择装置,被配置为在针对所述搜索的所述映射-合并的方案多于一种时,评估所述映射-合并方式中每种所述映射-合并方式的开销,并且选择开销最小的映射-合并方式作为实际搜索方式。
在本发明的可选实现中,所述执行装置进一步包括以下装置中的一个或多个:作业压缩装置,被配置为减少由映射-合并作业读取输入数据和写入输出数据的I/O开销;水平合并装置,被配置为将彼此独立的多个映射-合并作业组合成单个映射-合并作业;以及垂直合并装置,被配置为在产品-消费者作业对中至少一个作业是仅映射的,或者两个作业共享同一映射关键字时组合所述产品-消费者作业对。
在本发明的可选实现中,所述映射-合并方式包括使用如下形式的执行方式:
REPEAT v=e STEP body[limit n]
其中,v是需要重复的变量,e的类型是某一类型T的集合{T},body的类型是{(T,布尔型)},n为自然数;并且其中,所述REPEAT语句表示首先将v绑定到e的值,然后重复计算body,并且从之前的重复计算中将新值赋予v,如果重复的次数变为n、或者当所有由body返回的布尔型都为假时,则停止所述执行。
通过本发明的上述各种实现,可以在任何位置都允许SQL的嵌套的查询和用户定义的函数(UDF)、允许对分组数据的操作、支持自定义筛选器/聚集作为UDF以及支持声明式递归。此外,根据本发明所提供的查询优化框架还有效地将用扩展的SQL编写的声明式查询转换成MapReduce作业的优化的流。
附图说明
通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得明显。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中相同的参考标号表示相同或相似的元素。
图1示出了根据本发明实施方式的用于搜索数据库的方法100的流程图;
图2示出了根据本发明一个实施方式的、针对特定示例所生成的查询图;
图3图示了MapReduce作业的计算流程;
图4图示了根据本发明的查询优化器的架构400;
图5示出了了根据本发明示例性实施方式的用于搜索数据库的装置图500;
图6示出了适于用来实现本发明实施方式的示例性计算系统600的框图。
具体实施方式
为了更为充分和灵活地利用SQL语言的特点以及更为清楚地阐述本发明的各种实现方式,首先对现有的SQL数据模型进行扩展。例如,可以利用除了基本类型(布尔型,整型,字符串型,等)和元组(t1,...tn)之外的如下附加类型对SQL的数据模型进行扩展:
记录:<A1:t1,...,An:tn>;
序列:[t];
集合:{t};
映射:{(t1,t2)};
其中,t1,t2,...,tn是(递归定义)类型,并且A1,...,An是组件名。此外,映射(t1,t2)将类型t1的关键字绑定到类型t2。
本领域技术人员应当理解,上述对SQL数据模型的扩展是为了更为充分地利用SQL语言的特点,而不能作为对本发明的各种实现方式的限制。实际上,基本的SQL数据模型也完全适合于本发明的各种实现方式。
由此,在本发明的系统中,可以将SQL查询扩展如下:
SELECT[DISTINCT]es
FROM pf1 in ef1,...,pfn in efn
[WHERE ew]
[GROUP BY pg:eg[HAVING eh]]
[ORDER BY eo]
其中,如本领域技术人员所熟悉,[]中的语句为可选语句。此外,ef1,...,efn,es、ew、eg、和eo是任意表达式,其可以包含其它的嵌套的SELECT查询;FROM子句包含“p in e”形式的查询绑定,其中,p是模式,并且e是返回集合体(即序列、集合或者关键字-值配对映射)的表达式。模式p匹配集合体e中的每个元素,将其模式变量绑定到元素中的对应值。换而言之,这一查询绑定指定了集合体e上的迭代(一次指定一个元素),使得模式p与当前集合体元素相匹配。例如,以下查询
SELECT(n,mn)
FROM<name:n,manager:m>in Employees,
<name:mn>in m
在Employees上迭代,并且针对每个employee记录,其用模式<name:n,manager:m>匹配记录,这一匹配将变量n和m分别绑定到记录组件name和manager,并且忽略掉其余内容。
GROUP BY子句采用形式p:e以将查询结果划分成分组,从而每个群组的成员具有相同值e。模式p绑定到跨每个组共同的GROUPBY值。因而,GROUP BY操作提升了在FROM子句中定义的、从类型T到集合{T}的所有非GROUP BY模式变量,这表明每个这样的变量必须包含多个值,群组的每个成员一个值。
ORDER BY子句在可选的GROUP BY之后通过eo值来排序查询结果。
利用上述扩展SQL,可以声明性地表达如后文所出现的任意MapReduce作业。
一般而言,MapReduce作业对于任意类型的α,β,r和k,使用map函数m和reduce函数r将类型为{a}的数据集合s转换成类型为{β}的数据集合,m和r的类型为:
m:α→{(κ,γ)}r:(κ,{γ})→β
其中,映射函数m将类型为α的值从输入数据集合变换成类型为{(κ,γ)}的中间关键字/值配对。Reduce函数r将与同一关键字类型κ相关联的中间配对合并,并且产生类型为β的值的集合,该集合被并入到MapReduce结果中。上述MapReduce作业等同于:
上述等式示出了本发明对SQL的扩展使得所产生的扩展的SQL计算地完成。
诸如PageRank之类的图形算法要求对能够表达为传递闭包(transitiveclosure)或递归的MapReduce作业的重复应用。在本发明的系统中,可以以如下形式规定重复(repetition):
REPEAT v=e STEP body[limit n]
其中,v是重复变量。e的类型必须是某一类型的集合{T},并且body的类型必须是{(T,布尔型)},n为自然数。这一表达式首先将v绑定到e的值,然后重复计算body,并且从之前的重复计算中将新值赋予v。如果重复的数变为n、或者当所有由body返回的布尔型都为假,则停止REPEAT执行。
以上阐述了对SQL模型的扩展。通过扩展的SQL查询,本发明能够处理任何形式以及在任何嵌套层次的深层嵌套查询,并且能够将它们转换成连接图。其还可以处理依赖的连接,这些连接在遍历嵌套集合体时被使用。然而,需要注意的是,对SQL扩展仅是为了更为充分和灵活地利用SQL模型的特点,并不作为对本发明的限制。未经上述扩展的SQL模型完全适合于本发明的各种实现。
下面将参考附图中示出的若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
图1示出了根据本发明实施方式的用于搜索数据库的方法100的流程图。方法100开始之后,首先进到步骤S102,基于搜索条件中设定的数据条目之间的连接条件,分组该数据条目。这里所称的搜索条件典型地可以包括常规SQL查询语句,然而并不局限于此,例如,如前所述的扩展的SQL语句(也可称为类SQL语句)也适用于这一实现。此外,术语“连接”是本领域技术人员所公知的数据库的join操作。
针对输入的(例如以扩展的SQL语句限定的)搜索条件,步骤S102可以将搜索条件转换成连接和去嵌套,以处理输入数据,并且将这些数据分组,从而群组内的所有数据满足连接的条件。在优选但非必须的实现中,步骤S102可以包括通过以下中的至少一种来变换(简化)所述搜索条件的步骤:从所述搜索条件中编译去除模式、简化查询以及去除嵌套。具体而言,例如通过向顶层的模式指派新生变量以及通过依据新变量表达该模式来完成模式去除。例如通过重写规则来完成查询简化-诸如当向记录构造应用字段选择时,其被归一化到所选择的记录组件。查询解嵌套的示例是当内部查询并不依赖于外部查询之时,在这种情况下内部查询可以从外部查询中被拉出。
以如下扩展的SQL查询(1)为例:
其中对函数f、h、p、q、g、和c的调用指示任意代码,并且在查询中的5个SELECT表达式中绑定了7个变量x,y,z,w,n,m和k。
基于查询(1)中设定的查询变量的连接条件(join condition),以及附加地还基于其中变量之间的依赖关系,可以将查询(1)以如图2所示的查询图来表示。在图2中的每个节点x,y,z,w,k,n,m代表查询变量,节点之间的无向连接代表变量之间诸如f(v)=g(w)之类的等值连接关系(也即连接条件,例如在本例中x和y之间的具有“x.A=y.A”的连接条件),节点之间的有向连接代表变量之间的依赖关系,例如f(v)/g(v)分别依赖于v/w(例如,在本例中,
n in g(select w.M+k.N
from k in K
where k.G=y.G)
表示从函数g(w,k,y)中选择的变量n分别与变量w,k,y具有依赖关系)。图2所示的查询图简洁地表示了查询中所有潜在的连接和去嵌套。
接下来,方法100进到步骤S104,基于数据条目的该分组执行该搜索。在步骤S104的实现中,可以通过构造查询标头(query header)来处理所构造的分组数据,并且返回查询结果。具体而言,在一种实现方式中,步骤S104可以通过以下方式从查询中导出查询标头,从而执行该搜索:设置新的查询变量以关联到所述查询语句中的每个SELECT表达式;去除SQL查询语句中的所有连接和过滤谓词;以及用单个绑定来替代每个SELECT表达式中的FROM部分,该单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。可选地,被馈送到查询标头的分组数据由连接/去嵌套图所生成,该连接/去嵌套图可以由前述查询图导出。
仍以上述扩展的SQL查询(1)为例,可以生成如下两个查询标头:
标头2:g(select w.M+k.N from k in ks)
其中,zs,ws,ms和ks是与原始查询中的每个SELECT表达式相关联、但去除了所有的连接和的新查询变量,并用单个绑定来替代每个SELECT表达式中的FROM部分,该单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。
在获得标头1和标头2之后,可以通过它们来处理所构造的分组数据并返回查询结果。
至此,方法100结束。
在实现中,步骤S104中的搜索可以基于MapReduce方法来并行进行。对于MapReduce方法不止一种的情形,优选地可以评估所述MapReduce方法中每种MapReduce方法的开销,并且选择开销最小的MapReduce方法作为实际搜索方式。例如,可以应用成本模型来估计它们的开销,并继而挑选最便宜的一个成本模型。
在本发明的实现中可以通过内核物理操作器来直接地实现MapReduce作业,包括MapReduce、投影、过滤、聚集、排序、连接(广播连接、远程查询连接、分布式排序合并连接、分布式哈希连接)、重复(用于支持上述重复句法)等。这些物理运算符是物理方案的构建块。本领域技术人员应当明了MapReduce的各种具体实现方式,本发明在此不再赘述。
需要注意的是,备选的物理方案的枚举可以利用来自传统数据库系统中的技术来处理,同时也可以考虑MapReduce提供新优化机会以及允许额外的物理方案的独特属性。例如,本发明表示三个优化技术,其被用于减少要求用于计算具体的扩展SQL查询的MapReduce作业的数目。这种MapReduce作业的数目的减少通过可以避免由MapReduce作业从潜在的分布式文件系统中读取输入数据和向潜在的分布式文件系统中写入输出数据的部分I/O开销,并且因而由此受益。图3图示了MapReduce作业的计算流程。其中(k,v)对代表MapReduce过程中的关键字/值对。在该计算中,可以从以下方面来优化MapReduce方法的开销:
1、MapReduce作业压缩:当作业输入实质上由k2划分时,Reduce(合并)计算可以被移动到映射器中。
2、水平MapReduce作业组合:工作流中彼此独立的MapReduce作业的任何集合可以被组合成单个MapReduce作业。作业组合还使得能够有益地共享输入扫描,映射输出和映射函数计算。
3、垂直MapReduce作业组合:在产品-消费者作业对中至少一个作业是仅映射的,或者两个作业共享同一k2时组合该产品-消费者作业对。
本发明中优化器的开销模型可以容易地在MapReduce性能模型的顶部构建,其预测单个MapReduce作业或工作流的执行开销。通过首先将MapReduce作业执行分割成多个阶段、继而形成每个阶段的开销信息、并最终经由阶段开销的一些复杂数学组合来计算总开销,这一MapReduce性能模型可以是分析性的;或者通过使用具有有关输入数据集合(例如:元组大小、基数)的统计和有关先前查询执行(例如,执行时间)的历史信息的机器学习模型,其也可以是统计驱动的。
图4图示了根据本发明的查询优化器的架构400,其中查询解析部件401完成前述过程中对搜索条件的简化、生成查询图以及生成查询标头等步骤;元数据信息维护部件402负责维护相关的元数据信息并提供给查询解析部件401;方案空间开发部件403实现针对输入的查询,枚举可替代的物理方案(即,MapReduce作业)的步骤;而开销估计部件404则评估物理方案的执行开销,并且选择最便宜的一个作为最优MapReduce作业输出。
接下来参照图5进一步描述根据本发明示例性实施方式的用于搜索数据库的装置图500。
如图所示,装置500包括分组装置501和执行装置502。其中,分组装置501被配置为基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目;而执行装置502被配置为基于所述数据条目的所述分组执行所述搜索。
在本发明的可选实施方式中,分组装置501进一步包括通过以下装置中的至少一个:模式去除装置504,被配置为从所述搜索条件中去除模式;查询简化装置505,被配置为重写规则;以及嵌套去除装置506,被配置为去除嵌套。
在本发明的可选实施方式中,分组装置501还被配置为基于所述搜索条件中设定的所述数据条目的值之间的依赖关系进行所述分组。
在本发明的可选实施方式中,搜索条件包括SQL查询语句。
在本发明的可选实施方式中,数据库中的数据项的类型包括以下中的一个:记录类型<A1:t1,...,An:tn>、序列类型[t]、集合类型{t}、以及映射类型{(t1,t2)}。其中,n是自然数,t1,...,tn是递归定义类型,A1,...,An是组件名,并且映射类型{(t1,t2)}将类型t1的关键字绑定到类型t2。
在本发明的可选实施方式中,SQL查询语句可以包括如下形式:
SELECT[DISTINCT]es
FROM pf1 in ef1,...,pfn in efn
[WHERE ew]
[GROUP BY pg:eg[HAVING eh]]
[ORDER BY eo]
其中,[]中的语句为可选语句。并且其中,ef1,...,efn,es、ew、eg、和eo是任意表达式。FROM子句中的pf1,...,pfn中的每个是模式,ef1,...,efn中的每个是返回序列、集合或者关键字-值配对映射的表达式,“pin e”形式表示模式p匹配e中的每个元素,并将其模式变量绑定到元素中的对应值。GROUP BY子句中的pg:eg形式表示将查询结果划分成组,从而每个组内的成员具有相同值eg,模式pg绑定到跨每个组共同的GROUP BY值。
在本发明的可选实施方式中,执行装置502进一步包括以下装置中的一个或多个:新变量设置装置507,被配置为设置新的查询变量以关联到所述查询语句中的每个SELECT表达式;去除装置508,被配置为去除所述SQL查询语句中的所有连接和过滤谓词;以及替代装置509,被配置为用单个绑定来替代每个SELECT表达式中的FROM部分,所述单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。
在本发明的可选实施方式中,执行装置502基于映射-合并方式并行进行所述搜索。
在本发明的可选实施方式中,装置500还可以包括:评估-选择装置503,被配置为在针对所述搜索的所述映射-合并的方案多于一种时,评估所述映射-合并方式中每种所述映射-合并方式的开销,并且选择开销最小的映射-合并方式作为实际搜索方式。
在本发明的可选实施方式中,执行装置502进一步包括以下装置中的一个或多个:作业压缩装置510,被配置为减少由映射-合并作业读取输入数据和写入输出数据的I/O开销;水平合并装置511,被配置为将彼此独立的多个映射-合并作业组合成单个映射-合并作业;以及垂直合并装置512,被配置为在产品-消费者作业对中至少一个作业是仅映射的,或者两个作业共享同一映射关键字时组合所述产品-消费者作业对。
在本发明的可选实施方式中,映射-合并方式包括使用如下形式的执行方式:
REPEAT v=e STEP body[limit n]
其中,v是需要重复的变量,e的类型是某一类型T的集合{T},body的类型是{(T,布尔型)},n为自然数.并且其中,所述REPEAT语句表示首先将v绑定到e的值,然后重复计算body,并且从之前的重复计算中将新值赋予v,如果重复的次数变为n、或者当所有由body返回的布尔型都为假时,则停止所述执行。
下面参考图6,其示出了适于用来实践本发明实施方式的计算机系统600的示意性框图。例如,图6所示的计算机系统600可以用于实现如上文描述的用于搜索数据库的装置600的各个部件,也可以用于固化或实现如上文描述的用于搜索数据库的方法100的各个步骤。
如图6所示,计算机系统可以包括:CPU(中央处理单元)601、RAM(随机存取存储器)602、ROM(只读存储器)603、系统总线604、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器608、显示控制器609、硬盘610、键盘611、串行外部设备612、并行外部设备613和显示器614。在这些设备中,与系统总线604耦合的有CPU601、RAM602、ROM603、硬盘控制器605、键盘控制器606、串行控制器607、并行控制器608和显示控制器609。硬盘610与硬盘控制器605耦合,键盘611与键盘控制器606耦合,串行外部设备612与串行接口控制器607耦合,并行外部设备613与并行接口控制器508耦合,以及显示器614与显示控制器609耦合。应当理解,图6所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
如上所述,装置400可以实现为纯硬件,例如芯片、ASIC、SOC等。这些硬件可以集成在计算机系统600中。此外,本发明的实施方式也可以通过计算机程序产品的形式实现。例如,参考图1描述的方法100可以通过计算机程序产品来实现。该计算机程序产品可以存储在例如图6所示的RAM604、ROM604、硬盘610和/或任何适当的存储介质中,或者通过网络从适当的位置下载到计算机系统600上。计算机程序产品可以包括计算机代码部分,其包括可由适当的处理设备(例如,图6中示出的CPU601)执行的程序指令。所述程序指令至少可以包括用于实现方法100的步骤的指令。
上文已经结合若干具体实施方式阐释了本发明的精神和原理。根据本发明的用于确定应用的正确性的方法、系统和装置相对于现有技术具有诸多优点。例如,本发明通过扩展SQL以及优化数据库中关联查询的框架可以有效地并且高效地解决对于现有的MapReduce查询处理系统而言共同的问题(也即其限制了查询表达的能力并且限制了查询优化的能力),从而特别适合于大集群系统中的大数据集分析。
具体而言,在本发明中呈现的新颖的声明式处理系统可以利用MapReduce作为底层的大数据分析引擎。提出了若干对SQL的扩展,从而扩展后的SQL具有足够的表述性来捕获处于声明式形式的大多数普通数据计算作业,并且因而几乎消除了对于插入手工的MapReduce代码,以便获得计算上的完整性的需求。扩展的SQL还具有如下引人入胜的特征:其在任何位置都允许嵌套的查询和用户定义的函数(UDF);其允许对分组数据的操作;其支持自定义筛选器/聚集作为UDF;其支持声明式递归。本发明还提供一种对应的查询优化框架,其有效地将用扩展的SQL编写的声明式查询转换成MapReduce作业的优化的流。在本发明中的查询优化器是基于开销的,其利用了现有的关系查询优化技术以及开发MapReduce框架的使用和设计属性。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
说明书中提及的通信网络可以包括各类网络,包括但不限于局域网(“LAN”),广域网(“WAN”),根据IP协议的网络(例如,因特网)以及端对端网络(例如,ad hoc对等网络)。
应当注意,尽管在上文详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明,但是应该理解,本发明并不限于所公开的具体实施方式。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (22)
1.一种搜索数据库的方法,包括:
基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目;
使用扩展的SQL查询来实现所述搜索条件,其中所述扩展的SQL查询被使得能够包括嵌套的查询;
基于所述数据条目的所述分组和所述扩展的SQL查询来创建查询图,其中所述查询图中的节点表示所述扩展的SQL查询中的查询变量,并且所述查询图中的节点之间的边缘表示查询变量之间的连接条件或依赖关系;
基于所述查询图来创建从所述扩展的SQL查询导出的查询标头;
分析所述数据条目以确定多个MapReduce是否被使得能够用于搜索;以及
基于所述数据条目的所述分组和所述查询图来执行所述搜索。
2.根据权利要求1所述的方法,其中,所述基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目进一步包括通过以下中的至少一种来变换所述搜索条件的步骤:
从所述搜索条件中去除模式、重写规则以及去除嵌套。
3.根据权利要求1所述的方法,其中,所述分组还基于所述搜索条件中设定的所述数据条目的值之间的依赖关系进行。
4.根据权利要求1-3中任一所述的方法,其中,所述搜索条件包括SQL查询语句。
5.根据权利要求4所述的方法,其中,所述数据库中的数据项的类型包括以下中的一个:
记录类型<A1:t1,…,An:tn>、序列类型[t]、集合类型{t}、以及映射类型{(t1,t2)};
其中,n是自然数,t1,…,tn是递归定义类型,A1,…,An是组件名,并且映射类型{(t1,t2)}将类型t1的关键字绑定到类型t2。
6.根据权利要求5所述的方法,其中,所述SQL查询语句包括如下形式:
SELECT[DISTINCT]es
FROM pf1in ef1,...,pfn in efn
[WHERE ew]
[GROUP BY pg:eg[HAVING eh]]
[ORDER BY eo]
其中,[]中的语句为可选语句;
并且其中,ef1,…,efn,es、ew、eg、和eo是任意表达式;
FROM子句中的pf1,…,pfn中的每个是模式,ef1,…,efn中的每个是返回序列、集合或者关键字-值配对映射的表达式,“p in e”形式表示模式p匹配e中的每个元素,并将其模式变量绑定到元素中的对应值;
GROUP BY子句中的pg:eg形式表示将查询结果划分成组,从而每个组内的成员具有相同值eg,模式pg绑定到跨每个组共同的GROUP BY值。
7.根据权利要求6所述的方法,其中,基于所述数据条目的所述分组执行所述搜索进一步包括以下中的一个或多个:
设置新的查询变量以关联到所述查询语句中的每个SELECT表达式;
去除所述SQL查询语句中的所有连接和过滤谓词;以及
用单个绑定来替代每个SELECT表达式中的FROM部分,所述单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。
8.根据权利要求1-3中任一所述的方法,其中,所述搜索基于映射-合并方式并行进行。
9.根据权利要求8所述的方法,其中,在针对所述搜索的所述映射-合并方式多于一种时,评估所述映射-合并方式中每种所述映射-合并方式的开销,并且选择开销最小的映射-合并方式作为实际搜索方式。
10.根据权利要求8所述的方法,其中,所述映射-合并方式包括以下步骤中的一个或多个:
减少由映射-合并作业读取输入数据和写入输出数据的I/O开销、将彼此独立的多个映射-合并作业组合成单个映射-合并作业、以及在产品-消费者作业对中至少一个作业是仅映射的,或者两个作业共享同一映射关键字时组合所述产品-消费者作业对。
11.根据权利要求8所述的方法,其中,所述映射-合并方式包括使用如下形式的执行方式:
REPEAT v=e STEP body[limit n]
其中,v是需要重复的变量,e的类型是某一类型T的集合{T},body的类型是{(T,布尔型)},n为自然数;
并且其中,所述REPEAT语句表示首先将v绑定到e的值,然后重复计算body,并且从之前的重复计算中将新值赋予v,如果重复的次数变为n、或者当所有由body返回的布尔型都为假时,则停止所述执行。
12.一种搜索数据库的装置,包括:
分组装置,被配置为基于搜索条件中设定的数据条目之间的连接条件,分组所述数据条目;
实现装置,被配置为使用扩展的SQL查询来实现所述搜索条件,其中所述扩展的SQL查询被使得能够包括嵌套的查询;
第一创建装置,被配置为基于所述数据条目的所述分组和所述扩展的SQL查询来创建查询图,其中所述查询图中的节点表示所述扩展的SQL查询中的查询变量,并且所述查询图中的节点之间的边缘表示查询变量之间的连接条件或依赖关系;
第二创建装置,被配置为基于所述查询图来创建从所述扩展的SQL查询导出的查询标头;
分析装置,被配置为分析所述数据条目以确定多个MapReduce是否被使得能够用于搜索;以及
执行装置,被配置为基于所述数据条目的所述分组和所述查询图来执行所述搜索。
13.根据权利要求12所述的装置,其中,所述分组装置进一步包括通过以下装置中的至少一个:
模式去除装置,被配置为从所述搜索条件中去除模式;
查询简化装置,被配置为重写规则;以及
嵌套去除装置,被配置为去除嵌套。
14.根据权利要求12所述的装置,其中,所述分组装置还基于所述搜索条件中设定的所述数据条目的值之间的依赖关系进行所述分组。
15.根据权利要求12-14中任一所述的装置,其中,所述搜索条件包括SQL查询语句。
16.根据权利要求15所述的装置,其中,所述数据库中的数据项的类型包括以下中的一个:
记录类型<A1:t1,…,An:tn>、序列类型[t]、集合类型{t}、以及映射类型{(t1,t2)};
其中,n是自然数,t1,…,tn是递归定义类型,A1,…,An是组件名,并且映射类型{(t1,t2)}将类型t1的关键字绑定到类型t2。
17.根据权利要求16所述的装置,其中,所述SQL查询语句包括如下形式:
SELECT[DISTINCT]es
FROM pf1in ef1,...,pfn in efn
[WHERE ew]
[GROUP BY pg:eg[HAVING eh]]
[ORDER BY eo]
其中,[]中的语句为可选语句;
并且其中,ef1,…,efn,es、ew、eg、和eo是任意表达式;
FROM子句中的pf1,…,pfn中的每个是模式,ef1,…,efn中的每个是返回序列、集合或者关键字-值配对映射的表达式,“p in e”形式表示模式p匹配e中的每个元素,并将其模式变量绑定到元素中的对应值;
GROUP BY子句中的pg:eg形式表示将查询结果划分成组,从而每个组内的成员具有相同值eg,模式pg绑定到跨每个组共同的GROUP BY值。
18.根据权利要求17所述的装置,其中,所述执行装置进一步包括以下装置中的一个或多个:
新变量设置装置,被配置为设置新的查询变量以关联到所述查询语句中的每个SELECT表达式;
去除装置,被配置为去除所述SQL查询语句中的所有连接和过滤谓词;以及
替代装置,被配置为用单个绑定来替代每个SELECT表达式中的FROM部分,所述单个绑定使用元组模式来绑定直接嵌套的SELECT表达式的查询变量和FROM部分的变量。
19.根据权利要求12-14中任一所述的装置,其中,所述执行装置基于映射-合并方式并行进行所述搜索。
20.根据权利要求19所述的装置,还包括:
评估-选择装置,被配置为在针对所述搜索的所述映射-合并的方案多于一种时,评估所述映射-合并方式中每种所述映射-合并方式的开销,并且选择开销最小的映射-合并方式作为实际搜索方式。
21.根据权利要求19所述的装置,其中,所述执行装置进一步包括以下装置中的一个或多个:
作业压缩装置,被配置为减少由映射-合并作业读取输入数据和写入输出数据的I/O开销;
水平合并装置,被配置为将彼此独立的多个映射-合并作业组合成单个映射-合并作业;以及
垂直合并装置,被配置为在产品-消费者作业对中至少一个作业是仅映射的,或者两个作业共享同一映射关键字时组合所述产品-消费者作业对。
22.根据权利要求19所述的装置,其中,所述映射-合并方式包括使用如下形式的执行方式:
REPEAT v=e STEP body[limit n]
其中,v是需要重复的变量,e的类型是某一类型T的集合{T},body的类型是{(T,布尔型)},n为自然数;
并且其中,所述REPEAT语句表示首先将v绑定到e的值,然后重复计算body,并且从之前的重复计算中将新值赋予v,如果重复的次数变为n、或者当所有由body返回的布尔型都为假时,则停止所述执行。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310095688.1A CN104050202B (zh) | 2013-03-15 | 2013-03-15 | 用于搜索数据库的方法和装置 |
US14/211,574 US10762087B2 (en) | 2013-03-15 | 2014-03-14 | Database search |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310095688.1A CN104050202B (zh) | 2013-03-15 | 2013-03-15 | 用于搜索数据库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050202A CN104050202A (zh) | 2014-09-17 |
CN104050202B true CN104050202B (zh) | 2019-03-15 |
Family
ID=51503053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310095688.1A Active CN104050202B (zh) | 2013-03-15 | 2013-03-15 | 用于搜索数据库的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10762087B2 (zh) |
CN (1) | CN104050202B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323619B2 (en) | 2013-03-15 | 2016-04-26 | International Business Machines Corporation | Deploying parallel data integration applications to distributed computing environments |
US9401835B2 (en) | 2013-03-15 | 2016-07-26 | International Business Machines Corporation | Data integration on retargetable engines in a networked environment |
US9256460B2 (en) | 2013-03-15 | 2016-02-09 | International Business Machines Corporation | Selective checkpointing of links in a data flow based on a set of predefined criteria |
US9477511B2 (en) * | 2013-08-14 | 2016-10-25 | International Business Machines Corporation | Task-based modeling for parallel data integration |
IN2013CH05996A (zh) * | 2013-12-20 | 2015-06-26 | Infosys Ltd | |
US9779180B2 (en) * | 2014-10-27 | 2017-10-03 | Successfactors, Inc. | Detection of the N-queries via unit test |
US10152558B2 (en) * | 2014-12-23 | 2018-12-11 | Intel Corporation | Graph operations |
US10810200B2 (en) * | 2015-01-07 | 2020-10-20 | International Business Machines Corporation | Technology for join processing |
WO2017035497A1 (en) * | 2015-08-26 | 2017-03-02 | Pivotal Software, Inc. | Database acceleration through runtime code generation |
CN105426545A (zh) * | 2015-12-25 | 2016-03-23 | 浪潮集团有限公司 | 一种Hive数据处理的方法及装置 |
US10540338B2 (en) | 2017-01-30 | 2020-01-21 | Alfresco Software, Inc. | Scalable fine grained access control within a search engine |
CN108509453B (zh) * | 2017-02-27 | 2021-02-09 | 华为技术有限公司 | 一种信息处理方法及装置 |
CN107247782A (zh) * | 2017-06-14 | 2017-10-13 | 广州智萃电子科技有限公司 | 一种基于用户配置的智能导出系统 |
US11886431B2 (en) * | 2018-05-22 | 2024-01-30 | Hyland Uk Operations Limited | Real-time analytical queries of a document store |
CN109992630B (zh) * | 2019-03-20 | 2021-04-30 | 跬云(上海)信息科技有限公司 | 数据模型匹配方法和装置 |
US11449504B2 (en) * | 2019-03-27 | 2022-09-20 | Sap Se | Database partition pruning using dependency graph |
US20200349161A1 (en) * | 2019-04-30 | 2020-11-05 | Microsoft Technology Licensing, Llc | Learned resource consumption model for optimizing big data queries |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493717B1 (en) * | 1998-06-16 | 2002-12-10 | Datafree, Inc. | System and method for managing database information |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040036719A1 (en) * | 2002-08-26 | 2004-02-26 | Van Treeck George Michael | Quicker development of database applications having a graphical user interface |
US8285707B2 (en) * | 2006-11-08 | 2012-10-09 | International Business Machines Corporation | Method of querying relational database management systems |
WO2011091388A2 (en) * | 2010-01-22 | 2011-07-28 | The Regents Of The University Of California | Web application development framework |
US20120016901A1 (en) * | 2010-05-18 | 2012-01-19 | Google Inc. | Data Storage and Processing Service |
US8615526B2 (en) * | 2010-06-21 | 2013-12-24 | Tata Consultancy Services Limited | Markup language based query and file generation |
CN102467570B (zh) * | 2010-11-17 | 2014-03-12 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102831120B (zh) * | 2011-06-15 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及系统 |
-
2013
- 2013-03-15 CN CN201310095688.1A patent/CN104050202B/zh active Active
-
2014
- 2014-03-14 US US14/211,574 patent/US10762087B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493717B1 (en) * | 1998-06-16 | 2002-12-10 | Datafree, Inc. | System and method for managing database information |
Also Published As
Publication number | Publication date |
---|---|
US20140280159A1 (en) | 2014-09-18 |
US10762087B2 (en) | 2020-09-01 |
CN104050202A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050202B (zh) | 用于搜索数据库的方法和装置 | |
Kharlamov et al. | Ontology based data access in Statoil | |
JP7273045B2 (ja) | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 | |
US9535975B2 (en) | Parallel programming of in memory database utilizing extensible skeletons | |
Charalambidis et al. | SemaGrow: Optimizing federated SPARQL queries | |
CN105550268B (zh) | 大数据流程建模分析引擎 | |
CN105210058A (zh) | 使用多个引擎来进行图查询处理 | |
Eno et al. | Generating synthetic data to match data mining patterns | |
CN106104518A (zh) | 用于按照示例的数据提取的框架 | |
CN111444220A (zh) | 规则驱动和数据驱动相结合的跨平台sql查询优化方法 | |
JP2015515671A (ja) | 進化的な分析のためのシステム | |
Fard et al. | Distributed and scalable graph pattern matching: Models and algorithms | |
CN105912721B (zh) | Rdf数据分布式语义并行推理方法 | |
CN107870949A (zh) | 数据分析作业依赖关系生成方法和系统 | |
Gao et al. | GLog: A high level graph analysis system using MapReduce | |
CN106445913A (zh) | 基于MapReduce的语义推理方法及系统 | |
CN115237937A (zh) | 一种基于星际文件系统的分布式协同查询处理系统 | |
CN110442753A (zh) | 一种基于opc ua的图数据库自动建立方法及装置 | |
Pal | SQL on Big Data: Technology, Architecture, and Innovation | |
Nica | A call for order in search space generation process of query optimization | |
US9778918B2 (en) | Native access plan source code generation | |
Ambite | Planning by rewriting | |
Kim et al. | Optimizing RDF (S) queries on cloud platforms | |
Vysniauskas et al. | Mapping of OWL ontology concepts to RDB schemas | |
Nunes et al. | Exploration of Semi-Structured Data Sources. |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200410 Address after: Massachusetts, USA Patentee after: EMC IP Holding Company LLC Address before: Massachusetts, USA Patentee before: EMC Corp. |
|
TR01 | Transfer of patent right |