CN104462095A - 一种查询语句公共部分的提取方法及装置 - Google Patents

一种查询语句公共部分的提取方法及装置 Download PDF

Info

Publication number
CN104462095A
CN104462095A CN201310418634.4A CN201310418634A CN104462095A CN 104462095 A CN104462095 A CN 104462095A CN 201310418634 A CN201310418634 A CN 201310418634A CN 104462095 A CN104462095 A CN 104462095A
Authority
CN
China
Prior art keywords
query
eigenwert
multiplicity
hierarchy
statement
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
Application number
CN201310418634.4A
Other languages
English (en)
Other versions
CN104462095B (zh
Inventor
葛星
徐常亮
傅跃兵
姚斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310418634.4A priority Critical patent/CN104462095B/zh
Publication of CN104462095A publication Critical patent/CN104462095A/zh
Application granted granted Critical
Publication of CN104462095B publication Critical patent/CN104462095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Abstract

一种查询语句公共部分的提取方法及装置;所述方法包括:将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;采用预定算法分别对各所述查询层次的所述特征向量进行计算,得到各所述查询层次的特征值;统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。本申请能给有效检测不定时增长的海量查询语句中的公共部分。

Description

一种查询语句公共部分的提取方法及装置
技术领域
本发明涉及网络领域,尤其涉及一种查询语句公共部分的提取方法及装置。
背景技术
近年来由于互联网、云计算、移动和物联网的迅猛发展,大数据技术(BigData)逐渐成为学术界和工业界共同关注的研究热点。几乎无所不在的移动设备、RFID、无线传感器等每分每秒都在产生数据,而数以亿计的互联网服务也时时刻刻在产生巨量的交互信息。因之而生的业务需求和竞争压力对数据处理的实时性、有效性提出了更高的要求。
当今越来越多的互联网公司采用大集群来进行海量数据分析。这些任务通常被写成类SQL(Structured Query Language,结构化查询语言)的语句,并通过类Hive(一种数据仓库工具)的数据分析工具翻译为MapReduce(一种编程模型)作业,最终被分布式集群处理和执行。由于业务需要,诸多公司通常维护一批数量巨大、结构复杂、运行耗时的类SQL查询语句来完成大数据分析任务从而生成例行报表。这个集合是参数化(parameteric)和回归化(recurring)的,并且不定时地会有新的语句加入到该集合中,最终被周期性地运行。这样的语句集合称为回归查询集(recurring query set)。
回归查询集中大量存在结构相似,数据共享的公共部分。数据库领域中传统的多重查询优化MQO(Multiple Query Optimization)问题通过复用多重语句间的公共部分来提高查询效率。但此类解决办法(主要是启发式和遗传算法)并不适用于回归查询集这种“大量”语句并“不定时”增长的情况。
随着云计算的日渐流行,云系统中的MQO逐渐成为学术及工业界的研究热点。当前在企业级离线数据处理中,每天需要完成大量的SQL语句作业,以一大型网站离线数据处理ODPS(Open Data Processing Service,开放数据处理服务)部门为例,其支持的生产集群上,每天大约有30,000条SQL语句需要执行。值得注意的是,这些SQL语句所构成的集合具有数量多、结构复杂、语句变动小的特点。即符合上文所说的回归查询集的特点。如何在海量查询语句中检测、共享和重用公共部分极具挑战性。
目前多重语句优化问题的解决办法(主要是启发式和遗传算法)并不适用于回归查询集这种“大量”语句并“不定时”增长的情况。
发明内容
本申请要解决的技术问题是如何有效检测不定时增长的海量查询语句中的公共部分。
为了解决上述问题,本申请提供了一种查询语句公共部分的提取方法,包括:
将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;
分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;
采用预定算法分别对各所述查询层次的所述特征向量进行计算,得到各所述查询层次的特征值;
统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。
进一步地,所述查询对象为查询语句中的行变换和源追溯操作;
所述过滤特征是针对一个所述查询层次的行相关的所有过滤操作特征;所述流向特征是针对一个所述查询层次的所有数据流向特征。
进一步地,所述统计各特征值的重复次数,选取重复次数符合预定条件的特征值作为公共部分的步骤包括:
统计已有的查询语句中各所述查询层次的所述特征值,得到各所述特征值的重复次数作为统计结果;
当加入新的查询语句时,将所述新的查询语句中各所述查询层次的所述特征值的重复次数与所述统计结果中相应特征值的重复次数相加,用相加后的重复次数更新所述统计结果;在所述统计结果中,选取重复次数符合预定条件的特征值作为公共部分的特征值。
进一步地,所述重复次数符合预定条件的特征值是指所述重复次数最高的N个所述特征值,或是指所述重复次数大于预定阈值的一个或多个所述特征值;其中N为正整数,表示公共部分的特征值的预定个数。
进一步地,所述分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量的步骤包括:
分别抽取出各所述查询层次中查询对象的过滤特征和流向特征;
分别将各所述查询层次的过滤特征及流向特征的表达式格式化得到析取范式,对所述析取范式进行逻辑关系的合并及数值计算,得到各所述查询层次的特征向量。
进一步地,所述过滤特征包括WHERE、ORDER BY、LIMIT语句;
所述流向特征包括TABREF、JOIN、SUBQUERY、UNION_SUBQUERY语句。
本申请还提供了一种查询语句公共部分的提取装置,包括:
划分单元,用于将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;
抽取单元,用于分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;
计算单元,用于采用预定算法分别对各所述查询层次的特征向量进行计算,得到各所述查询层次的特征值;
筛选单元,用于统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。
进一步地,所述查询对象为查询语句中的行变换和源追溯操作;
所述过滤特征是针对一个所述查询层次的行相关的所有过滤操作特征;所述流向特征是针对一个所述查询层次的所有数据流向特征。
进一步地,所述筛选单元统计各特征值的重复次数,选取重复次数符合预定条件的特征值作为公共部分是指:
所述筛选单元统计已有的查询语句中各所述查询层次的所述特征值,得到各所述特征值的重复次数作为统计结果;当加入新的查询语句时,将所述新的查询语句中各查询层次的所述特征值的重复次数与所述统计结果中相应特征值的重复次数相加,用相加后的重复次数更新所述统计结果;在所述统计结果中,选取重复次数符合预定条件的所述特征值作为公共部分的特征值。
进一步地,所述重复次数符合预定条件的特征值是指所述重复次数最高的N个所述特征值,或是指所述重复次数大于一预定阈值的一个或多个所述特征值;其中N为正整数,表示公共部分的特征值的预定个数。
进一步地,所述抽取单元分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量是指:
所述抽取单元分别抽取出各所述查询层次中查询对象的过滤特征和流向特征;分别将各所述查询层次的过滤特征及流向特征的表达式格式化得到析取范式,对所述析取范式进行逻辑关系的合并及数值计算,得到各所述查询层次的特征向量。
进一步地,所述过滤特征包括WHERE、ORDER BY、LIMIT语句;
所述流向特征包括TABREF、JOIN、SUBQUERY、UNION_SUBQUERY语句。
本申请的至少一个实施例基于SQL文本进行特征值的提取,从而可对查询语句,包括新加入的查询语句中的公共部分进行有效检测;根据该实施例得到的公共部分,在进行大批量查询时就可以有效避免在海量查询语句中公共部分的重复运行,从而最大限度提升系统整体的查询性能。本申请的又一个实施例适合在不定时增长的海量查询语句环境下使用,当加入新的查询语句时可以自动对各查询语句的统计结果进行更新,从而对公共部分进行更新。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1为实施例一查询语句公共部分的提取方法的流程示意图;
图2为实施例一的例子的抽象语法树结构示意图;
图3为实施例一的例子的基于SQL文本的结构特征示意图;
图4为实施例一中针对查询对象的解析示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,进行查询语句公共部分提取的机器可包括多个处理器(CPU)、一个或多个输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
实施例一、一种查询语句公共部分的提取方法,如图1所示,包括:
S101、将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;
S102、分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;
S103、采用预定算法分别对各所述查询层次的特征向量进行计算,得到各所述查询层次的特征值;
S104、统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。本实施例中,针对查询作业的数据分布及语句结构的特点,可以但不限于基于SQL文本划分查询层次;在一个SQL语句的抽象语法树AST中,一个QUERY或者SUBQUERY所领起的一棵子树即为一个查询子句。本文中,当一个查询是另一个查询的条件时,称之为子查询,其中外层查询称之为主查询,子查询优于主查询先执行,子查询的执行结果用于主查询;子查询与主查询统称为查询子句。
所述查询子句有确定的输入集Pin与输出集Pout,以及完成输入到输出转换的操作指令集Фoperator三部分组成,称之为查询子句三元组,记为£={Pin,Pout,Фoperator}。一个查询子句的输入来源,要么是另外一个查询子句,要么就是来自表或者表分区,记为Pin={£,Table,Partition}。本实施例中针对每个查询子句计算一个特征值作为查询语句中公共部分的定义依据。
每个查询子句都构成一个查询层次,一个SQL语句基于SQL文本的抽象语法树结构可以划分为不同的查询层次。例如,对于下述SQL语句:
SELECT id
,SUM(value)AS cnt
FROM(
SELECT*
FROM src
)a
WHERE id>10
GROUP BY id;
其抽象语法树结构如图2所示,包含了两个查询层次,外层语句为主查询(即图2中TOK_QUERY领起的子树),内层语句为子查询(即图2中TOK_SUBQUERY领起的子树),其中子查询是主查询的一部分。
本实施例中,所述查询对象可以但不限于为查询语句中的行变换和源追溯操作,过滤特征可以但不限于为针对一个查询层次的所有行相关的过滤操作特征,流向特征可以但不限于为针对一个查询层次的所有数据流向特征。每个查询层次都包含查询参数(Query Argument)和查询对象(Query Object)。其中查询参数(Query Argument)是对查询对象的列抽取和列计算参数;查询对象定义为数据的过滤特征(Filter Signature)以及数据的流向特征(FlowSignature),查询对象包含了数据操作的全部信息并对最终数据结果有直接影响。例如下述SQL语句:
SELECT sum(value)
FROM src
GROUP BY KEY;
其基于SQL文本的结构特征如图3所示,该SQL语句只有一层结构。其中“sum(value)”为查询参数,表示对“value”列抽取并对结果进行聚合运算。“src group by key”为查询对象,其中数据源为直接物理表“src”,并在此基础上进行“group by”的行计算。查询对象包含了整个数据查询的所有信息,而查询参数只是在此信息上的进一步筛选和加工。通过修改查询参数,可以获得查询对象的不同结果,因而查询参数在整个查询层次的特征定义中并不重要。本实施例以查询对象为基础来进行公共部分特征的提取。
本实施例中,可以通过定义过滤特征来保证行信息在数据流过程中的完整性。本实施例的一个备选方案中,所述过滤特征包括:“WHERE”条件语句,主要用于删除行;“ORDER BY”语句,用于行排序;“LIMIT”语句,用于删除行。凡此种种,都作为数据流的过滤特征信息。其它备选方案中,也可以根据需要定义其它语句作为过滤特征。
流向特征则描述了数据的分支和来源结构。本实施例的一个备选方案中,所述流向特征包括TABREF、JOIN、UNION、SUBQUERY语句。这些语句描述了数据的走向问题,这里使用流向来进行定义。比如对于JOIN语句,其结果虽然是列的增加,但是体现了数据溯源到这里结构上发生了分叉,可能来自不同的JOIN分支表。而对于UNION语句,其结果虽然表现为行的增加,但也明显体现了数据溯源到这里结构上发生了分叉,来自不同的UNION分支表。
一个查询层次的特征向量是一个查询层次的过滤特征和流向特征等完整信息的抽象表示。特征向量包含了一个查询层次中数据过滤操作及数据流向溯源的完整信息,其可作为之后公共部分检测与识别的依据。
本实施例的一种备选方案中,所述步骤S102具体可以包括:
分别抽取出各所述查询层次中查询对象的过滤特征和流向特征;
分别将各所述查询层次的过滤特征及流向特征的表达式格式化得到析取范式DNF;对DNF进行逻辑关系的合并和数值计算,得到各所述查询层次的特征向量。
基于SQL文本的AST树结构将一个查询语句解析为查询参数和查询对象。针对查询对象,如图4所示,抽取出其中的过滤特征和流向特征,其中的每一个特征的表达式都需要进行格式化和优化。对表达式格式化的主要目的是将其表示为析取范式DNF;对表达式优化的主要目的是对其进行逻辑关系的合并和简单的数值计算。
该备选方案中,所述流向特征包括TABREF、JOIN、SUBQUERY、UNION_SUBQUERY四类语句。
这四类分别表示数据来源于直接物理表、查询子句、UNION子句和JOIN子句。对于其中涉及到的子句,递归地计算其特征值。
更具体地,对于SUBQUERY,表示一个查询子句,只需针对其递归产生的特征向量计算其特征值即可。
对于UNION_SUBQUERY,表示是由多个子句UNION操作的结果,因此递归地计算每个子句的特征值,并依顺序记录在数组中。
JOIN子句比较特殊,一个JOIN子句结构上是两表JOIN或是多表JOIN的结果。对于一次JOIN操作,区分其左表、右表、JOIN操作类型以及JOIN_ON条件属性,并将诸多信息进行整合,构成JOIN操作的结构特征。
具体实现中,可以简单地使用JSON字符串将上述特定结构和顺序所构成的信息作为该查询层次的流向特征的特征向量。
本实施例的一种备选方案中,所述步骤S103中,可以但不限于使用MD5方式计算特征向量的特征值,即将任意长度的"字节串"变换成一个128bit的大整数。
本实施例的一种备选方案中,可使用MapReduce编程模型来实现当前查询语句集合的特征值计算,并将结果持久化在表中,可以通过SQL语句的方式反馈给用户。
以如下的查询语句为例:
该UNION语句有三个查询层次,依据上述特征向量的定义,可以获得这三个查询层次的特征向量分别为:
将这些特征值持久化到query_sig表中:
表一、query_sig表
QID_449b325e_58b1_4a3e_abb1_37fc4700617c:e960c2b5a542fca4feb4c0e549caf6ff
QID_275f2608_3784_4254_815a_dbb93d2fc500:e960c2b5a542fca4feb4c0e549caf6ff
QID_fa1abc36_99de_4ec5_9020_ee56e0ad6454:46eea75ffbab2c4e347aef9f808045da
而对于如下的查询语句:
SELECT*
FROM src;
其特征向量为
计算其特征值为:
QID_76b1106c_add8_4704_88ee_d4e2bd93a8d5:e960c2b5a542fca4feb4c0e549caf6ff
该值在上述query_sig表中命中,说明这两个查询语句存在公共部分。
在获得查询语句各级查询层次的特征值后,对当前所有查询语句中各查询层次的特征值的重复次数进行统计并排序,存入表结构sig_count中,如下所示:
表二、表结构sig_count
获得如下的统计结果:
表三、统计结果
特征值 重复次数
81531bb3732e5da1f81eff85dc627cb3 1127
8badd77a7484c3f7528ee928f742bec8 772
f29ed5e93d97aa836ef164c5613ad22d 763
... ...
本实施例的一种备选方案中,所述步骤S104中重复次数符合预定条件的所述特征值是指统计结果中所述重复次数最高的N个所述特征值,或所述重复次数大于一预定阈值的所述特征值;其中N为正整数,表示公共部分的特征值的预定个数,可根据需要或经验值设定。
本实施例的一种备选方案中,针对不定时加入的新的查询语句,也进行特征值计算,从而找出原有集合及新加入的查询语句中存在的公共部分。
该备选方案中,所述步骤S104具体可以包括:
统计已有的查询语句中各所述查询层次的所述特征值,得到各所述特征值的重复次数作为统计结果;
当加入新的查询语句时,将所述新的查询语句中各所述查询层次的所述特征值的重复次数与所述统计结果中相应特征值的重复次数相加,用相加后的重复次数更新所述统计结果;在所述统计结果中,选取重复次数符合预定条件的特征值作为公共部分的特征值。
该备选方案中,对已有的查询语句可以先得到一个统计结果并由此选取出这些查询语句的公共部分;当加入新的查询语句后,可以对统计结果进行更新,并根据更新后的统计结果选取出公共部分,在查询语句会不定时增长的情况下,也能保证公共部分提取的正确性。
实施例二、一种查询语句公共部分的提取装置,包括:
划分单元,用于将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;
抽取单元,用于分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;
计算单元,用于采用预定算法分别对各所述查询层次的特征向量进行计算,得到各所述查询层次的特征值;
筛选单元,用于统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。
本实施例中,所述查询对象可以但不限于为查询语句中的行变换和源追溯操作,过滤特征可以但不限于为针对一个查询层次的所有行相关的过滤操作特征,流向特征可以但不限于为针对一个查询层次的所有数据流向特征。
本实施例的一种备选方案中,所述筛选单元统计各特征值的重复次数,选取重复次数符合预定条件的特征值作为公共部分具体可以是指:
所述筛选单元统计已有的查询语句中各所述查询层次的所述特征值,得到各所述特征值的重复次数作为统计结果;当加入新的查询语句时,将所述新的查询语句中各查询层次的所述特征值的重复次数与所述统计结果中相应特征值的重复次数相加,用相加后的重复次数更新所述统计结果;在所述统计结果中,选取重复次数符合预定条件的所述特征值作为公共部分的特征值。
本实施例的一种备选方案中,所述符合预定条件的特征值可以是指所述重复次数最高的N个所述特征值,或是指所述重复次数大于一预定阈值的一个或多个所述特征值;其中N为正整数,表示公共部分的特征值的预定个数。
本实施例的一种备选方案中,所述抽取单元分别根据各查询层次中查询对象的过滤特征和流向特征抽象出各查询层次的特征向量具体可以是指:
所述抽取单元分别抽取出各所述查询层次中查询对象的过滤特征和流向特征;分别将各所述查询层次的过滤特征及流向特征的表达式格式化得到析取范式,对所述析取范式进行逻辑关系的合并及数值计算,得到各所述查询层次的特征向量。
本实施例的一种备选方案中,所述过滤特征包括WHERE、ORDER BY、LIMIT语句;所述流向特征包括TABREF、JOIN、SUBQUERY、UNION_SUBQUERY语句。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

Claims (12)

1.一种查询语句公共部分的提取方法,包括:
将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;
分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;
采用预定算法分别对各所述查询层次的所述特征向量进行计算,得到各所述查询层次的特征值;
统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。
2.如权利要求1所述的方法,其特征在于:
所述查询对象为查询语句中的行变换和源追溯操作;
所述过滤特征是针对一个所述查询层次的行相关的所有过滤操作特征;所述流向特征是针对一个所述查询层次的所有数据流向特征。
3.如权利要求1所述的方法,其特征在于,所述统计各特征值的重复次数,选取重复次数符合预定条件的特征值作为公共部分的步骤包括:
统计已有的查询语句中各所述查询层次的所述特征值,得到各所述特征值的重复次数作为统计结果;
当加入新的查询语句时,将所述新的查询语句中各所述查询层次的所述特征值的重复次数与所述统计结果中相应特征值的重复次数相加,用相加后的重复次数更新所述统计结果;在所述统计结果中,选取重复次数符合预定条件的特征值作为公共部分的特征值。
4.如权利要求1到3中任一项所述的方法,其特征在于:
所述重复次数符合预定条件的特征值是指所述重复次数最高的N个所述特征值,或是指所述重复次数大于预定阈值的一个或多个所述特征值;其中N为正整数,表示公共部分的特征值的预定个数。
5.如权利要求2所述的方法,其特征在于,所述分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量的步骤包括:
分别抽取出各所述查询层次中查询对象的过滤特征和流向特征;
分别将各所述查询层次的过滤特征及流向特征的表达式格式化得到析取范式,对所述析取范式进行逻辑关系的合并及数值计算,得到各所述查询层次的特征向量。
6.如权利要求2所述的方法,其特征在于:
所述过滤特征包括WHERE、ORDER BY、LIMIT语句;
所述流向特征包括TABREF、JOIN、SUBQUERY、UNION_SUBQUERY语句。
7.一种查询语句公共部分的提取装置,其特征在于,包括:
划分单元,用于将查询语句划分为一个或多个查询层次,一个查询层次为进行一次查询操作的查询子句;
抽取单元,用于分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量;
计算单元,用于采用预定算法分别对各所述查询层次的特征向量进行计算,得到各所述查询层次的特征值;
筛选单元,用于统计各所述特征值的重复次数,选取重复次数符合预定条件的所述特征值作为公共部分。
8.如权利要求7所述的装置,其特征在于:
所述查询对象为查询语句中的行变换和源追溯操作;
所述过滤特征是针对一个所述查询层次的行相关的所有过滤操作特征;所述流向特征是针对一个所述查询层次的所有数据流向特征。
9.如权利要求7所述的装置,其特征在于,所述筛选单元统计各特征值的重复次数,选取重复次数符合预定条件的特征值作为公共部分是指:
所述筛选单元统计已有的查询语句中各所述查询层次的所述特征值,得到各所述特征值的重复次数作为统计结果;当加入新的查询语句时,将所述新的查询语句中各查询层次的所述特征值的重复次数与所述统计结果中相应特征值的重复次数相加,用相加后的重复次数更新所述统计结果;在所述统计结果中,选取重复次数符合预定条件的所述特征值作为公共部分的特征值。
10.如权利要求7所述的装置,其特征在于:
所述重复次数符合预定条件的特征值是指所述重复次数最高的N个所述特征值,或是指所述重复次数大于一预定阈值的一个或多个所述特征值;其中N为正整数,表示公共部分的特征值的预定个数。
11.如权利要求8所述的装置,其特征在于,所述抽取单元分别根据各所述查询层次中查询对象的过滤特征和流向特征抽象出各所述查询层次的特征向量是指:
所述抽取单元分别抽取出各所述查询层次中查询对象的过滤特征和流向特征;分别将各所述查询层次的过滤特征及流向特征的表达式格式化得到析取范式,对所述析取范式进行逻辑关系的合并及数值计算,得到各所述查询层次的特征向量。
12.如权利要求8所述的装置,其特征在于:
所述过滤特征包括WHERE、ORDER BY、LIMIT语句;
所述流向特征包括TABREF、JOIN、SUBQUERY、UNION_SUBQUERY语句。
CN201310418634.4A 2013-09-13 2013-09-13 一种查询语句公共部分的提取方法及装置 Active CN104462095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310418634.4A CN104462095B (zh) 2013-09-13 2013-09-13 一种查询语句公共部分的提取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310418634.4A CN104462095B (zh) 2013-09-13 2013-09-13 一种查询语句公共部分的提取方法及装置

Publications (2)

Publication Number Publication Date
CN104462095A true CN104462095A (zh) 2015-03-25
CN104462095B CN104462095B (zh) 2018-06-12

Family

ID=52908159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310418634.4A Active CN104462095B (zh) 2013-09-13 2013-09-13 一种查询语句公共部分的提取方法及装置

Country Status (1)

Country Link
CN (1) CN104462095B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512315A (zh) * 2015-12-12 2016-04-20 天津南大通用数据技术股份有限公司 一种分布式数据库sql执行中inner join的智能评估方法
CN106155893A (zh) * 2015-04-03 2016-11-23 腾讯科技(深圳)有限公司 判断应用程序测试覆盖范围的方法及程序测试设备
CN106933850A (zh) * 2015-12-29 2017-07-07 阿里巴巴集团控股有限公司 网络数据查询方法、装置和系统
CN108920664A (zh) * 2018-07-05 2018-11-30 福建星瑞格软件有限公司 一种基于索引价值的数据库智能索引实现方法
CN108984698A (zh) * 2018-07-05 2018-12-11 福建星瑞格软件有限公司 一种数据库业务行为的建模方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021874A (zh) * 2007-03-21 2007-08-22 金蝶软件(中国)有限公司 一种对查询sql请求进行优化的方法及装置
CN101093493A (zh) * 2006-06-23 2007-12-26 国际商业机器公司 数据库查询语言转换方法、转换装置、数据库查询系统
US20080114741A1 (en) * 2006-11-14 2008-05-15 Lu Yaojie Search result optimization method and device
CN101196890A (zh) * 2006-12-08 2008-06-11 国际商业机器公司 聚合数据库运行时信息和分析应用性能的方法及装置
CN101944103A (zh) * 2010-08-12 2011-01-12 漳州市顺和达软件有限公司 基于公共条件的数据查询或统计方法及系统
CN102479255A (zh) * 2010-11-19 2012-05-30 国际商业机器公司 用于优化数据库查询的方法和系统
CN102867040A (zh) * 2012-08-31 2013-01-09 中国科学院计算技术研究所 一种面向中文搜索引擎混杂语言的查询纠错方法及系统
CN102902778A (zh) * 2012-09-28 2013-01-30 用友软件股份有限公司 查询语句优化装置和查询语句优化方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101093493A (zh) * 2006-06-23 2007-12-26 国际商业机器公司 数据库查询语言转换方法、转换装置、数据库查询系统
US20080114741A1 (en) * 2006-11-14 2008-05-15 Lu Yaojie Search result optimization method and device
CN101196890A (zh) * 2006-12-08 2008-06-11 国际商业机器公司 聚合数据库运行时信息和分析应用性能的方法及装置
CN101021874A (zh) * 2007-03-21 2007-08-22 金蝶软件(中国)有限公司 一种对查询sql请求进行优化的方法及装置
CN101944103A (zh) * 2010-08-12 2011-01-12 漳州市顺和达软件有限公司 基于公共条件的数据查询或统计方法及系统
CN102479255A (zh) * 2010-11-19 2012-05-30 国际商业机器公司 用于优化数据库查询的方法和系统
CN102867040A (zh) * 2012-08-31 2013-01-09 中国科学院计算技术研究所 一种面向中文搜索引擎混杂语言的查询纠错方法及系统
CN102902778A (zh) * 2012-09-28 2013-01-30 用友软件股份有限公司 查询语句优化装置和查询语句优化方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155893A (zh) * 2015-04-03 2016-11-23 腾讯科技(深圳)有限公司 判断应用程序测试覆盖范围的方法及程序测试设备
CN106155893B (zh) * 2015-04-03 2021-03-02 腾讯科技(深圳)有限公司 判断应用程序测试覆盖范围的方法及程序测试设备
CN105512315A (zh) * 2015-12-12 2016-04-20 天津南大通用数据技术股份有限公司 一种分布式数据库sql执行中inner join的智能评估方法
CN105512315B (zh) * 2015-12-12 2019-04-30 天津南大通用数据技术股份有限公司 一种分布式数据库sql执行中inner join的智能评估方法
CN106933850A (zh) * 2015-12-29 2017-07-07 阿里巴巴集团控股有限公司 网络数据查询方法、装置和系统
CN106933850B (zh) * 2015-12-29 2020-08-07 阿里巴巴集团控股有限公司 网络数据查询方法、装置和系统
CN108920664A (zh) * 2018-07-05 2018-11-30 福建星瑞格软件有限公司 一种基于索引价值的数据库智能索引实现方法
CN108984698A (zh) * 2018-07-05 2018-12-11 福建星瑞格软件有限公司 一种数据库业务行为的建模方法

Also Published As

Publication number Publication date
CN104462095B (zh) 2018-06-12

Similar Documents

Publication Publication Date Title
Armenatzoglou et al. A general framework for geo-social query processing
Lin et al. Mining high utility itemsets in big data
CN107451225B (zh) 用于半结构化数据的可缩放分析平台
CN110929042B (zh) 一种基于电力企业的知识图谱构建和查询方法
CN102999506B (zh) 一种获取用户独立访问数的方法与装置
CN103336790A (zh) 基于Hadoop的邻域粗糙集快速属性约简方法
CN103258049A (zh) 一种基于海量数据的关联规则挖掘方法
CN106407302B (zh) 支持通过简单sql调用中间件数据库特有功能的方法
CN102915347A (zh) 一种分布式数据流聚类方法及系统
Zhang et al. An implementation approach to store GIS spatial data on NoSQL database
CN104462095A (zh) 一种查询语句公共部分的提取方法及装置
Gole et al. Frequent Itemset Mining for Big Data in social media using ClustBigFIM algorithm
CN106156047B (zh) 一种快照信息处理方法及装置
CN103336791A (zh) 基于Hadoop的粗糙集快速属性约简方法
CN105515997B (zh) 基于bf_tcam实现零范围扩张的高效范围匹配方法
US20170060977A1 (en) Data preparation for data mining
CN107330098B (zh) 一种自定义报表的查询方法、计算节点及查询系统
CN104866471A (zh) 一种基于局部敏感哈希策略的实例匹配方法
CN104462161A (zh) 基于分布式数据库的结构化数据查询方法
CN105022791A (zh) 一种新型的kv分布式数据存储方法
CN105045806A (zh) 一种面向分位数查询的概要数据动态分裂与维护方法
CN102819600A (zh) 面向电力生产管理系统关系数据库的关键词搜索方法
CN104239470A (zh) 一种面向分布式环境的空间数据复合处理系统和方法
CN103365960A (zh) 电力多级调度管理结构化数据的离线搜索方法
CN103902651A (zh) 一种基于MongoDB的云端代码查询方法与装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant