CN106202102A - 批量数据查询方法和装置 - Google Patents
批量数据查询方法和装置 Download PDFInfo
- Publication number
- CN106202102A CN106202102A CN201510226374.XA CN201510226374A CN106202102A CN 106202102 A CN106202102 A CN 106202102A CN 201510226374 A CN201510226374 A CN 201510226374A CN 106202102 A CN106202102 A CN 106202102A
- Authority
- CN
- China
- Prior art keywords
- operand
- operator
- query statement
- plan tree
- bar
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种批量数据查询方法和装置,数据查询服务器接根据N条查询语句中的操作符和操作数确定N条查询语句的操作数的符号标识,符号标识包括操作数的版本号,然后根据N条查询语句的操作数的版本号确定N条查询语句之间的依赖关系,进而根据N条查询语句之间的依赖关系以及预设的优化规则对N条查询语句进行查询间优化。由于N条查询语句的操作数的符号标识是固定的,不会随着输入的查询语句的不同而变化,因此,本发明实施例确定的符号数的符号标识可以适用所有的输入集,并且不需要执行任何查询语句的任何部分、且无需监控查询语句执行过程中的数据访问和更新情况,提高了查询间优化的效率,并且降低了查询间优化的开销。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种批量数据查询方法和装置。
背景技术
目前代表性的大数据查询系统(如:Hive,Shark,Impala)均以单条查询语句作为解析和优化的基本单位。大数据查询系统的一个关键性能是查询效率。然而,在数据仓库(Data Warehouse)的批量查询场景下,传统的以单条查询语句为解析和优化基本单位的处理模式存在优化机会不足的问题。与查询内优化机会不足构成强烈对比的是数据仓库批量查询应用场景中所呈现出的丰富的查询间优化机会,查询间优化机会即多条查询语句之间存在的优化机会。
在批量查询应用场景下,现有技术中,通过在查询语句执行过程中对数据记录的更新情况进行实时监控与反馈,以及通过预先执行查询语句中的一部分功能等方式,动态地获取各个查询具体需要访问的数据记录,以此确定多个查询所操作的数据记录之间是否存在冲突或交集,并基于上述分析执行一些动态优化。但通过监控数据记录或执行部分查询功能只能收集到与某一组输入相关的动态数据依赖关系,基于这些动态数据依赖所执行的优化只能适应于某一组特定的输入,一旦输入发生变化,就需要重新执行分析和优化。
发明内容
本发明实施例提供一种批量数据查询方法和装置,提高了查询间优化的效率,并且降低了查询间优化的系统开销。
本发明第一方面提供一种批量数据查询方法,包括:
接收待执行的N条查询语句,其中,所述N为不小于2的正整数;
根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,其中,所述操作符用于指示要执行的操作,所述操作数用于指示所述N条查询语句中的操作符待操作的数据的存储位置,所述符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号,所述操作符至少包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
根据确定的所述N条查询语句的操作数的版本号确定所述N条查询语句之间的依赖关系;
根据所述N条查询语句之间的依赖关系以及预设的优化规则对所述N条查询语句进行查询间优化;
执行优化后的查询语句以得到所述N条查询语句的查询结果。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识包括:
获取所述N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树;
为所述N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,所述第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
对于所述N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:
根据第一逻辑查询计划树的拓扑顺序、所述第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为所述第一逻辑查询计划树中的第二类操作符的操作数添加符号标识,其中,所述第一逻辑查询计划树为所述N棵逻辑查询计划树中的任意一棵逻辑查询计划树,所述第二类操作符为除所述第一类操作符之外的其他操作符。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一逻辑查询计划树的根节点包括文件定值操作符,所述第一逻辑查询计划树的叶子节点包括文件扫描操作符,所述第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符,其中,所述内部节点为除叶子节点和根节点之外的其他节点;所述添加规则包括:对于所述第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:
若第一操作符的操作数与所述第一操作符的左孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的左孩子节点的操作数的符号标识相同的符号标识,所述第一操作符为所述第二类操作符中的任意一个操作符;
若所述第一操作符的操作数与所述第一操作符的右孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的右孩子节点的操作数的符号标识相同的符号标识。
结合第一方面、第一方面的第一种至第二种可能的实现方式中的任一种,在第一方面的第三种可能的实现方式中,所述优化规则包括下述规则中的至少一个规则:
删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,所述第一查询语句为所述N条查询语句中的任意一条查询语句;
保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句,其中,所述流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的的操作数的版本号相同;和
合并具有相同操作符且操作数有重叠的查询语句。
结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述N条查询语句中的操作数的符号标识还包括:热数据标识;
所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识还包括:
统计所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;
判断所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;
为所述N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于所述热数据阈值的操作数添加热数据标识,所述热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据;
所述方法还包括:
在执行所述优化后的查询语句过程中,并发执行包含所述热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。
结合第一方面的第一种或第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述N条查询语句中的操作数的符号标识还包括:起始活跃位置和终止活跃位置,所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识还包括:
针对第一操作数,根据第一次引用所述第一操作数的扫描操作符的标识和所述扫描操作符所在的逻辑查询计划树的序号确定所述第一操作数的起始活跃位置,其中,所述第一操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据用于销毁所述第一操作数的销毁操作符的标识和所述销毁操作符所在的逻辑查询计划树的序号确定所述第一操作数的终止活跃位置;
所述方法还包括:
在执行所述优化后的查询语句过程中,根据所述第一操作数的终止活跃位置释放所述第一操作数指示的数据的存储空间。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识还包括:
针对第二操作数,根据第一次引用所述第二操作数的第一文件定值操作符的标识和所述第一文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的起始活跃位置,其中,所述第一文件定值操作符用于向所述第二操作数指代的存储位置写数据,所述第二操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据引用所述第二操作数的第二文件定值操作符的标识和所述第二文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的终止活跃位置,其中,所述第二文件定值操作符用于改写所述第一文件定值操作符操作的所述第二操作数指向的数据;
所述方法还包括:
在执行所述优化后的查询语句过程中,根据所述第二操作数的终止活跃位置释放所述第二操作数指示的数据的存储空间。
本发明第二方面提供一种数据查询服务器,包括:
接收模块,用于接收待执行的N条查询语句,其中,所述N为不小于2的正整数;
标识确定模块,用于根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,其中,所述操作符用于指示要执行的操作,所述操作数用于指示所述N条查询语句中的操作符待操作的数据的存储位置,所述符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号,所述操作符至少包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
关系确定模块,用于根据所述标识确定模块确定的所述N条查询语句的操作数的版本号确定所述N条查询语句之间的依赖关系;
优化模块,用于根据所述N条查询语句之间的依赖关系以及预设的优化规则对所述N条查询语句进行查询间优化;
查询模块,用于执行优化后的查询语句以得到所述N条查询语句的查询结果。
结合第二方面,在第二方面的第一种可能的实现方式中,所述标识确定模块具体用于:
获取所述N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树;
为所述N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,所述第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
对于所述N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:
根据第一逻辑查询计划树的拓扑顺序、所述第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为所述第一逻辑查询计划树中的第二类操作符的操作数添加符号标识,其中,所述第一逻辑查询计划树为所述N棵逻辑查询计划树中的任意一棵逻辑查询计划树,所述第二类操作符为除所述第一类操作符之外的其他操作符。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一逻辑查询计划树的根节点包括文件定值操作符,所述第一逻辑查询计划树的叶子节点包括文件扫描操作符,所述第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符,其中,所述内部节点为除叶子节点和根节点之外的其他节点;所述添加规则包括:对于所述第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:
若第一操作符的操作数与所述第一操作符的左孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的左孩子节点的操作数的符号标识相同的符号标识,所述第一操作符为所述第二类操作符中的任意一个操作符;
若所述第一操作符的操作数与所述第一操作符的右孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的右孩子节点的操作数的符号标识相同的符号标识。
结合第二方面、第二方面的第一种至第二种可能的实现方式中的任一种,在第二方面的第三种可能的实现方式中,所述优化规则包括下述规则中的至少一个规则:
删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,所述第一查询语句为所述N条查询语句中的任意一条查询语句;
保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句,其中,所述流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的的操作数的版本号相同;和
合并具有相同操作符且操作数有重叠的查询语句。
结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述N条查询语句中的操作数的符号标识还包括:热数据标识,所述标识确定模块还用于:
统计所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;
判断所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;
为所述N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于所述热数据阈值的操作数添加热数据标识,所述热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据;
所述查询模块还用于:
在执行所述优化后的查询语句过程中,并发执行包含所述热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。
结合第二方面的第一种或第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述N条查询语句中的操作数的符号标识还包括:起始活跃位置和终止活跃位置,所述标识确定模块还用于:
针对第一操作数,根据第一次引用所述第一操作数的扫描操作符的标识和所述扫描操作符所在的逻辑查询计划树的序号确定所述第一操作数的起始活跃位置,其中,所述第一操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据用于销毁所述第一操作数的销毁操作符的标识和所述销毁操作符所在的逻辑查询计划树的序号确定所述第一操作数的终止活跃位置;
所述查询模块还用于:
在执行所述优化后的查询语句过程中,根据所述第一操作数的终止活跃位置释放所述第一操作数指示的数据的存储空间。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述标识确定模块还用于:
针对第二操作数,根据第一次引用所述第二操作数的第一文件定值操作符的标识和所述第一文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的起始活跃位置,其中,所述第一文件定值操作符用于向所述第二操作数指代的存储位置写数据,所述第二操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据引用所述第二操作数的第二文件定值操作符的标识和所述第二文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的终止活跃位置,其中,所述第二文件定值操作符用于改写所述第一文件定值操作符操作的所述第二操作数指向的数据;
所述查询模块还用于:
在执行所述优化后的查询语句过程中,根据所述第二操作数的终止活跃位置释放所述第二操作数指示的数据的存储空间。
本发明实施例提供的批量数据查询方法和装置,数据查询服务器接通过根据N条查询语句中的操作符和操作数确定N条查询语句的操作数的符号标识,符号标识包括操作数的版本号,然后根据N条查询语句的操作数的版本号确定N条查询语句之间的依赖关系,进而根据N条查询语句之间的依赖关系以及预设的优化规则对N条查询语句进行查询间优化。由于N条查询语句的操作数的符号标识是固定的,不会随着输入的查询语句的不同而变化,因此,本实施例所提出的是一种对查询间数据流关系的静态分析和维护技术,即一种与输入数据无关的,不需要执行任何查询语句的任何部分、且无需监控查询语句执行过程中的数据访问和更新情况,提高了查询间优化的效率,并且降低了查询间优化的开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。
图1为本发明实施例一提供的批量数据查询方法的流程图;
图2为本发明实施例二提供的确定N条查询语句的操作数的符号标识的流程图;
图3为本发明实施例三提供的数据查询服务器的结构示意图;
图4为本发明实施例四提供的数据查询服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明各实施例的方法主要应用在批量数据查询的场景下。批量数据查询通常采用客户端/服务器模式,数据库中通常包括多个数据查询服务器、存储系统和大量的客户端,存储系统可以包括一台或多台存储设备。在一次批量查询过程中,多个客户端都可能向数据查询服务器发送查询语句,当数据查询服务器确定接收到的查询语句的数量达到预设的数量,则对多条查询语句进行批量查询,或者,数据查询服务器对预设时间段内接收到的所有查询语句进行批量查询。批量数据查询的一个常用场景是数据仓库。数据仓库是决策支持系统和联机分析应用数据源的结构化数据环境。数据仓库主要研究和解决从数据库中获取信息的问题。数据仓库的特征在于面向主题、集成性、稳定性和时变性,在数据仓库中存在大量的批量数据查询机会,数据仓库中存在大量的数据,这些数据通常存储在分布式存储系统中。
图1为本发明实施例一提供的批量数据查询方法的流程图,本实施例提供的方法可以由数据查询服务器执行,如图1所示,本实施例提供的方法可以包括以下步骤:
步骤101、接收待执行的N条查询语句,N为大于等于2的正整数。
步骤102、根据N条查询语句中的操作符和操作数确定N条查询语句的操作数的符号标识。
每条查询语句中包括多个操作符,每个操作符引用一个或多个操作数,其中,操作符用于指示要执行的操作,常用的操作符包括:扫描操作符(ScanOperator)、文件定值操作符(Filesink Operator)、创建操作符、销毁操作符、排序操作符(Sort Operator)、选择操作符(Select Operator)、聚集操作符(Aggregate Operator)、乘积操作符(Product Operator)和连接操作符(JoinOperator)等。
本实施例中,操作数并不是指具体的一条数据记录,而是用于指示操作符待操作的数据的存储位置,即操作数与存储位置对应。操作数可以是一个变量或表达式,操作数所指示的存储位置可以为一张数据表、数据表中的一个分区或数据表中的一个字段等。本实施例中,操作数的符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号。在数据库中,两个操作符拥有同名的操作数(如:a),并不代表二者一定操作相同的数据;同理,两个操作符拥有不同名的操作数(如:a和b),也并不代表二者所操作的数据是不同的。因此,在确定N条查询语句的操作数的符号标识时,不能只根据两个操作数的名称确定两个操作数是否相同,而应该根据两个操作数指代的数据是否相同确定两个操作数是否相同,其中,操作数指代的数据即操作数所指示的存储位置中存储的数据。
数据查询服务器在确定N条查询语句的操作数的符号标识时,可以根据N条查询语句之间的顺序,以及每条查询语句内部操作符执行的先后顺序确定N条查询语句的所有操作数的符号标识。一种实现方式中,数据查询服务器先获取N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树,每棵逻辑查询计划树的每个节点为一个操作符。然后,为N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符。在为N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识之前,还要为N棵逻辑查询计划树的第一类操作符的操作数生成符号标识,生成的符号标识包括操作数的版本号。
在为N棵逻辑查询计划树的第一类操作符的操作数添加符号标识之后,还要根据第一类操作符的操作数的符号标识为第二类操作符的操作数添加符号标识。具体的,对于N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:
根据第一逻辑查询计划树的拓扑顺序、第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为第一逻辑查询计划树中的第二类操作符的操作数添加符号标识。其中,第一逻辑查询计划树为N棵逻辑查询计划树中的任意一棵逻辑查询计划树,第二类操作符为除所述第一类操作符之外的其他操作符。本实施例中,第一逻辑查询计划树的节点包括:根节点、叶子节点和内部节点,处在逻辑查询计划树的最顶端(没有双亲)的节点为根节点,处在逻辑查询计划树的最底端(没有孩子)的节点为叶子节点,内部节点为既有双亲也有孩子的节点。第一逻辑查询计划树的拓扑顺序是指从叶子节点到根节点的顺序。
本实施例中,第一逻辑查询计划树的根节点包括文件定值操作符,第一逻辑查询计划树的叶子节点包括文件扫描操作符,第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符。其中,内部节点为除叶子节点和根节点之外的其他节点。若第一逻辑查询计划树为二叉树,则第一逻辑查询计划树的内部节点具有一个左孩子节点和一个右孩子节点。上述添加规则包括:对于第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:若第一操作符的操作数与第一操作符的左孩子节点的操作数相同,则为第一操作符的操作数添加与第一操作符的左孩子节点的操作数的符号标识相同的符号标识,;若第一操作符的操作数与第一操作符的右孩子节点的操作数相同,则为第一操作符的操作数添加与第一操作符的右孩子节点的操作数的符号标识相同的符号标识。其中,第一操作符为第二类操作符中的任意一个操作符。
本实施例中,第一操作符的左孩子节点和右孩子节点可能是第一类操作符,也可能是第二类操作符,具体的,当第一操作符的左孩子节点和右孩子节点为叶子节点时,第一操作符的左孩子节点和右孩子节点是第一类操作符。当第一操作符的左孩子节点和右孩子节点为内部节点时,第一操作符的左孩子节点和右孩子节点是第二类操作符。例如,假设第一逻辑查询计划树共有4层,第一层包括的节点为根节点,第二层和第三层包括的节点为内部节点,第四层包括的节点为叶子节点。在为该第一逻辑查询计划树的第二类操作符的操作数添加符号标识时,先根据第四层的叶子节点上的操作数为第三层的内部节点上的操作数添加符号标识,第四层的叶子节点为第一类操作符,第三层的内部节点为第二类操作符,即根据第一类操作符的操作数为第二类操作符的操作数添加符号标识。在为第三层的所有内部节点的操作数都添加完符号标识之后,根据第三的所有内部节点的操作数为第二层的所有内部节点添加符号标识,第二层内部节点为第二类操作符,这时可以根据第三层的第二类操作符的操作数的符号标识为第二层的第二类操作符的操作数添加符号标识。
步骤103、根据确定的N条查询语句的操作数的版本号确定N条查询语句之间的依赖关系。
N条语句之间的依赖关系可以包括:流依赖关系、输出依赖关系、操作符重叠关系、操作数重叠关系。其中,流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的扫描操作符的操作数的版本号相同。输出依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号被在后执行的另一条查询语句的文件定值所定值,即在后执行的文件定值操作符对在前执行的文件定值操作符的操作数进行了改写。操作符重叠关系是指两条查询语句的各类操作符的数量均相同,操作数重叠关系是指两条查询语句的全部或者部分操作数的版本号相同。
步骤104、根据N条查询语句之间的依赖关系以及预设的优化规则对N条查询语句进行查询间优化。
查询间优化是针对多棵逻辑查询计划树整体进行优化,也就是优化机会存在逻辑查询计划树之间,而不是针对单棵逻辑查询计划树进行优化。优化规则包括下述规则中的至少一个规则:(1)删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,第一查询语句为N条查询语句中的任意一条查询语句;(2)保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句;(3)合并具有相同操作符且操作数有重叠的查询语句。
优化规则(1)针对的是具有操作符重叠关系的查询语句的查询间优化,将与第一查询语句具有相同操作数版本号和相同操作符的查询语句称为第二查询语句,由于第一查询语句和第二查询语句具有相同操作数版本号和相同操作符,因此,第一查询语句和第二查询语句的查询结果相同,可以删除第二查询语句。若将第一查询语句和第二查询语句都解析成逻辑查询计划子树,则第一查询语句对应的第一逻辑查询树和第二查询语句对应的第二逻辑查询计划树具有公共查询子树,即第一逻辑查询计划树的第一查询子树与第二逻辑查询计划树的第二查询子树的树结构相同,并且第一查询子树的每个操作符的操作数的数据标识与第二查询子树的每个操作符的操作数的版本号均相同。通过对公共查询子树的优化机会进行优化,避免重复的对同一查询结果反复的进行查询,降低了数据库查询的开销,提高了数据库查询的效率。
优化规则(2)针对的是具有流依赖关系的查询语句的查询间优化,可以将在前执行的文件定值操作符的前驱与在后执行的扫描操作符的后继直接连接,并删除在后执行的扫描操作符,这样在前执行文件定值操作符在执行完后,直接将文件定值操作符的输出结果作为扫描操作符的输入进行处理,不需要先将文件定值操作符的输出结果写入分布式存储系统然后再读出来,从而降低了对分布式存储系统的读写开销,提高了查询效率。
优化规则(3)针对的是具有操作数重叠关系的查询语句的查询间优化,若第一查询语句的第一操作符与第二查询语句的第二操作符相同,并且第一操作符的部分操作数的版本号与第二操作符的部分操作数的版本号相同,则在后续在查询过程中,在为第一查询语句和第二查询语句生成物理查询树时将该第一操作符和该第二操作符合并为同一个任务,对重叠的操作数和不重叠的操作树分别进行查询,由于合并为了同一个任务,只对重叠的操作数进行一次查询,从而减少了对重叠数据的扫描操作开销。
步骤105、执行优化后的查询语句以得到N条查询语句的查询结果。
本实施例中,数据查询服务器接通过根据N条查询语句中的操作符和操作数确定N条查询语句的操作数的符号标识,符号标识包括操作数的版本号,然后根据N条查询语句的操作数的版本号确定N条查询语句之间的依赖关系,进而根据N条查询语句之间的依赖关系以及预设的优化规则对N条查询语句进行查询间优化。由于N条查询语句的操作数的符号标识是固定的,不会随着输入的查询语句的不同而变化,因此,本实施例所提出的是一种对查询间数据流关系的静态分析和维护技术,即一种与输入数据无关的,不需要执行任何查询语句的任何部分、且无需监控查询语句执行过程中的数据访问和更新情况,提高了查询间优化的效率,并且降低了查询间优化的开销。
在实施例一的基础上,可选的,N条查询语句中的操作数的符号标识还可以包括:热数据标识,则根据N条查询语句中的操作符和操作数确定N条查询语句的操作数的符号标识还包括:统计N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;判断N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;为N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于热数据阈值的操作数添加热数据标识,热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据。相应的,后续在执行优化后的查询语句过程中,可以并发执行包含热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。或者,在不改变查询间流依赖和输出依赖的前提下,对包含热数据标识的操作数对应的操作符进行重排序,使它们连续执行,以提高对热数据的访问效率。
可选的,N条查询语句中的操作数的符号标识还可以包括:起始活跃位置和终止活跃位置,则根据N条查询语句中的操作符和操作数确定N条查询语句的操作数的符号标识还包括:针对第一操作数,根据第一次引用第一操作数的扫描操作符的标识和扫描操作符所在的逻辑查询计划树的序号确定第一操作数的起始活跃位置。其中,第一操作数为N条查询语句中的操作数中的任意一个操作数。根据用于销毁第一操作数的销毁操作符的标识和销毁操作符所在的逻辑查询计划树的序号确定第一操作数的终止活跃位置。相应的,后续在执行优化后的查询语句过程中,可以根据第一操作数的终止活跃位置释放第一操作数指示的数据的存储空间。具体的,数据查询服务器根据第一操作数的终止活跃位置可以确定第一操作数在终止活跃位置之后已经不活跃了,对于已经不活跃操作数,应尽快将其所占用的存储空间予以释放,以供其他操作数占用,从而能够提高存储空间的利用率。数据查询服务器也可以根据第一操作数的起始活跃位置和终止活跃位置确定第一操作数的活跃区间,对于活跃区间较短(例如,仅在某一个查询内活跃)的操作数,若该操作数的存储在分布式存储系统中,则通过优化,可以将该操作数的存储位置由分布式存储系统改为数据查询服务器的本地磁盘或内存,以降低固化和访问开销。
另外,对于N条查询语句中的操作数中的任意一个操作数,在本发明实施例中可以称为第二操作数。针对第二操作数,根据第一次引用第二操作数的第一文件定值操作符的标识和第一文件定值操作符所在的逻辑查询计划树的序号确定第二操作数的起始活跃位置。其中,第一文件定值操作符用于向第二操作数指代的存储位置写数据。根据引用第二操作数的第二文件定值操作符的标识和第二文件定值操作符所在的逻辑查询计划树的序号确定第二操作数的终止活跃位置,其中,第二文件定值操作符用于改写第一文件定值操作符操作的第二操作数指向的数据。相应的,后续在执行优化后的查询语句过程中,根据第二操作数的终止活跃位置释放第二操作数指示的数据的存储空间。需说明的是,本实施例中提到的各操作符的标识用于标识操作符的顺序,具体可以为操作符的身份标识号(Identity,简称ID)。
在上述实施例一的基础上,本发明实施例二将通过一个具体的例如说明如何确定N条查询语句的操作数的符号标识,图2为本发明实施例二提供的确定N条查询语句的操作数的符号标识的流程图,如图2所示,本实施例提供的方法可以包括以下步骤:
步骤201、创建符号标识表,该符号标识表中的每条数据记录包括如下字段:版本号、引用、定值、活跃、不活跃和路径。
本实施例中,首先创建一个符号标识表,该符号标识表用于维护N条查询语句的操作数的符号标识。表状结构并非为存储符号标识的唯一形式,也可以采用链表、散列表等存储形式存储符号标识。
该符号标识表中每条数据记录包括如下字段:版本号、引用、定值、活跃、不活跃和路径,其中,版本号字段用于存储数据记录对应的操作数的版本号,引用字段用于存储引用该数据记录对应的操作数的扫描操作符的标识和该扫描操作符所在的逻辑查询计划树的序号,定值字段用于存储定值该数据记录对应的操作数的文件定值操作符的标识和该文件定值操作符所在的逻辑查询计划树的序号,路径字段用于存储该数据记录对应的操作数的存储位置,活跃字段用于存储引用该数据记录对应的操作数的扫描操作符的标识和扫描操作符所在的逻辑查询计划树的序号,或用于存储定值该数据记录对应的操作数的文件定值操作符的标识和该文件定值操作符所在的逻辑查询计划树的序号,不活跃字段用于存储销毁该数据记录对应的操作数的销毁操作符的标识和该销毁操作符所在的逻辑查询计划树的序号,或用于存储注销该数据记录对应的操作数的文件定值操作符的标识和该文件定值操作符所在的逻辑查询计划树的序号。
步骤202、初始化版本号字段的值。
例如,将版本号字段的值初始化为-1,之后该符号标识表中每增加一条数据记录,版本号字段的值加1。
步骤203、按照N棵逻辑查询计划树的顺序,依次遍历每棵逻辑查询计划树,为每棵逻辑查询计划树中的创建操作符、扫描操作符、文件定值操作符和销毁操作符的操作数生成对应的数据记录,其中,N棵逻辑查询计划树的顺序与N条查询语句的输入顺序一致。
具体可通过以下如下两种方式为每棵逻辑查询计划树中的创建操作符、扫描操作符、文件定值操作符和销毁操作符的操作数生成对应的数据记录,第一种方式如下:
在遍历第i棵逻辑查询计划树时,若第i棵逻辑查询计划树中包括创建操作符,则为第i棵逻辑查询计划树的创建操作符的操作数创建一条数据记录,将第i棵逻辑查询计划树的创建操作符的操作数的版本号和第i棵逻辑查询计划树的创建操作符的操作数的存储位置的对应关系保存到映射关系表中。本实施例中,映射关系表用于保存操作数的版本号与操作数的存储位置的对应关系,i为N棵逻辑查询计划树的编号,i的初始值为1,i的取值为:大于等于1,且小于等于N的整数。为第i棵逻辑查询计划树的创建操作符的操作数创建一条数据记录具体为:将该符号标识表中的版本号字段的当前取值加1得到第i棵逻辑查询计划树的创建操作符的操作数的版本号,将第i棵逻辑查询计划树的创建操作符的操作数的版本号添加到第i棵逻辑查询计划树的创建操作符的操作数对应的数据记录的版本号字段中,第i棵逻辑查询计划树的创建操作符的操作数对应的数据记录的其他字段为空。
若第i棵逻辑查询计划树中包括销毁操作符,则根据第i棵逻辑查询计划树的销毁操作符的操作数的存储位置,从该映射关系表中查找第i棵逻辑查询计划树的销毁操作符的操作数的存储位置对应的版本号。若查找到第i棵逻辑查询计划树的销毁操作符的操作数的存储位置对应的版本号,则根据第i棵逻辑查询计划树的销毁操作符的操作数的存储位置对应的版本号从该符号标识表中查找第i棵逻辑查询计划树的销毁操作符的操作数对应的数据记录,将第i棵逻辑查询计划树的序号i和第i棵逻辑查询计划树的销毁操作符的标识,添加到第i棵逻辑查询计划树的销毁操作符的操作数对应的数据记录的非活跃字段中。
若第i棵逻辑查询计划树中包括扫描操作符,则根据第i棵逻辑查询计划树的扫描操作符的操作数的存储位置,从映射关系表中查找第i棵逻辑查询计划树的扫描操作符的操作数的存储位置对应的版本号。
若查找到第i棵逻辑查询计划树的扫描操作符的操作数的存储位置对应的版本号,则根据第i棵逻辑查询计划树的扫描操作符的操作数的存储位置对应的版本号从该符号标识表中查找第i棵逻辑查询计划树的扫描操作符的操作数对应的数据记录。在查找到第i棵逻辑查询计划树的扫描操作符的操作数对应的数据记录后,判断第i棵逻辑查询计划树的文件扫描操作符的操作数对应的数据记录的活跃字段是否为空。若第i棵逻辑查询计划树的文件扫描操作符的操作数对应的数据记录的活跃字段的值为空,则将第i棵逻辑查询计划树的序号i和第i棵逻辑查询计划树的扫描操作符的标识,添加到第i棵逻辑查询计划树的扫描操作符的操作数对应的数据记录的引用字段和活跃字段中。若第i棵逻辑查询计划树的文件扫描操作符的操作数对应的数据记录的活跃字段不为空,则将第i棵逻辑查询计划树的序号i和第i棵逻辑查询计划树的扫描操作符的标识,添加到第i棵逻辑查询计划树的扫描操作符的操作数对应的数据记录的引用字段中。若没有查找到第i棵逻辑查询计划树的扫描操作符的操作数的存储位置对应的版本号,则为第i棵逻辑查询计划树的扫描操作符的操作数创建一条数据记录,将第i棵逻辑查询计划树的扫描操作符的操作数的版本号和第i棵逻辑查询计划树的扫描操作符的操作数的存储位置的对应关系保存到该映射关系表中,并将第i棵逻辑查询计划树的序号i和第i棵逻辑查询计划树的扫描操作符的标识,添加到新创建的数据记录的引用字段和活跃字段中。
本实施例中,若在该映射关系表中查找到第i棵逻辑查询计划树的扫描操作符的操作数的存储位置对应的版本号,则说明前i-1棵逻辑查询计划树中扫描操作符的操作数与第i棵逻辑查询计划树的扫描操作符的操作数相同,因此,已经为该相同的操作数生成了版本号。若在该映射关系表中没有查找到第i棵逻辑查询计划树的扫描操作符的操作数的存储位置对应的版本号,则说明第i棵逻辑查询计划树的扫描操作符的操作数第一次出现,还没有为第i棵逻辑查询计划树的扫描操作符的操作数生成版本号。
若i棵逻辑查询计划树中包括文件定值操作符,则根据第i棵逻辑查询计划树的文件定值操作符的操作数的存储位置,从该映射关系表中查找第i棵逻辑查询计划树的文件定值操作符的操作数的存储位置对应的版本号。若查找到第i棵逻辑查询计划树的文件定值操作符的操作数的存储位置对应的版本号,则根据第i棵逻辑查询计划树的文件定值操作符的操作数的存储位置对应的版本号从该符号标识表中查找第i棵逻辑查询计划树的文件定值操作符的操作数对应的数据记录,在查找到第i棵逻辑查询计划树的文件定值操作符的操作数对应的数据记录后,判断第i棵逻辑查询计划树的文件操作符的操作数对应的数据记录的定值字段的值是否为空。
若第i棵逻辑查询计划树的文件定值操作符的操作数对应的数据记录的定值字段为空,则首先将第i棵逻辑查询计划树的序号i和第i棵逻辑查询计划树的文件定值操作符的标识,添加到所述第i棵逻辑查询计划树的文件定值操作符的操作数对应的数据记录的非活跃字段中,然后,为第i棵逻辑查询计划树的文件定值操作符的操作数创建一条数据记录,并将第i棵逻辑查询计划树的文件定值操作符的操作数的版本号和第i棵逻辑查询计划树的文件定值操作符的操作数的存储位置的对应关系保存到该映射关系表中,将第i棵逻辑查询计划树的序号i和第i棵逻辑查询计划树的文件定值操作符的标识,添加到新创建的数据记录的定值字段和活跃字段中。
在第一种方式中,在遍历每棵逻辑查询计划树时,依次按照如下顺序为每棵逻辑查询计划树的操作数生成版本号:创建操作符、销毁操作符、引用操作符和文件定值操作符。在本发明其他可能的实现方式中,在为每棵逻辑查询计划树的操作数生成版本号时,可以不按照上述操作符的顺序。需说明的是,如果按照其他顺序为每棵逻辑查询计划树的操作数生成版本号时,每次创建一条数据记录时,都要先查询映射关系表中,如果映射关系表中没有找到当前的操作符的操作数对应的版本号,那么为当前的操作符的操作数生成新的数据记录。
在第一种方式中,仅需通过一次遍历即可完成对N棵逻辑查询计划树的操作数的版本号的生成。在第二中方式中,需要通过多次遍历才能完成对N棵逻辑查询计划树的操作数的版本号的生成,每次遍历只为一种特定操作符的操作数生成版本号,在第二中方式中,也需要先建立该符号标识表,符号标识表的各字段也和实施例一相同,不同的是,本实施例中,映射关系表用于保存由操作数的存储位置到操作数的版本号和操作数所在的逻辑查询计划树的序号所构成的二元组的对应关系。第二种方式如下:
首先,按照N棵逻辑查询计划树的顺序遍历一次N棵逻辑查询计划树,依次对N棵逻辑查询计划树的每个文件定值操作符的操作数创建一条数据记录,在对每个文件定值操作符的操作数创建数据记录时,该符号标识表中版本号字段的当前值加1后的值作为当前文件定值操作符的操作数的版本号,将当前文件定值操作符的操作数的版本号添加到当前数据记录的版本号字段,将当前文件定值操作符的标识和该当前文件定值操作符所在的逻辑查询计划树的序号添加到该当前数据记录的定值字段和活跃字段中。然后,将该当前文件定值操作符的操作数的存储位置到该当前文件定值操作符的操作数的版本号和该当前文件定值操作符所在的逻辑查询计划树的序号构成的二元组的对应关系保存到映射关系表中。
其次,按照N棵逻辑查询计划树的顺序第二次遍历N棵逻辑查询计划树,依次对N棵逻辑查询计划树的销毁操作符进行如下处理:(1)根据当前销毁操作符的操作数的存储位置查找映射关系表,得到当前销毁操作符的操作数的存储位置对应的所有由操作数的版本号和逻辑查询计划树的序号组成的二元组集合。(2)从该二元组集合中选出逻辑查询计划树的序号小于当前销毁操作符所在的逻辑查询计划树的序号的所有备选逻辑查询计划树,从备选逻辑查询计划树中确定出序号最大的逻辑查询计划树,从该二元组集合中找到该最小序号所在的二元组,获得该最小序号所在的二元组中的版本号。(3)根据该最小序号所在的二元组中的版本号查找该符号标识表,找到该最大序号所在的二元组中的版本号对应的数据记录,将当前销毁操作符的标识和该当前销毁操作符所在的逻辑查询计划树的序号,添加到该最小序号所在的二元组中的版本号对应的数据记录的不活跃字段中。如果没有找到该最大序号所在的二元组中的版本号,则跳转到下一个销毁操作符执行上述处理。
之后,按照N棵逻辑查询计划树的顺序第三次遍历N棵逻辑查询计划树,依次对N棵逻辑查询计划树的每个扫描操作符执行如下处理:(1)根据当前扫描操作符的操作数的存储位置,查找映射关系表,得到当前扫描操作符的操作数的存储位置对应的所有由操作数的版本号和逻辑查询计划树的序号组成的二元组集合。(2)从该二元组集合中选出逻辑查询计划树序号大于或等于当前扫描操作符所在的逻辑查询计划树的所有备选逻辑查询计划树,从备选逻辑查询计划树中确定出序号最小的逻辑查询计划树,从该二元组集合中找到该最小序号所在的二元组,获得该最小序号所在的二元组中的版本号。(3)该最小序号所在的二元组中的版本号查找该符号标识表,找到该最小序号所在的二元组中的版本号对应的数据记录,将当前扫描操作符的标识和该当前扫描操作符所在的逻辑查询计划树的序号,添加到该最大序号所在的二元组中的版本号对应的数据记录的引用字段中。(4)如果该最小序号所在的二元组中的版本号对应的数据记录的活跃字段为空,则将当前扫描操作符的标识和该当前扫描操作符所在的逻辑查询计划树的序号,添加到该最小序号所在的二元组中的版本号对应的数据记录的活跃字段中。如果没有找到该最小序号所在的二元组中的版本号,则在该符号标识表中新创建一条数据记录,将版本号字段的最大取值加1得到当前扫描操作符的操作数的版本号,将当前扫描操作符的操作数的版本号添加到新创建的数据记录的版本号字段中,将当前扫描操作符的操作数的存储位置添加到新创建的数据记录的路径字段中,将当前扫描操作符的标识和当前扫描操作符的所在的逻辑查询计划树的序号添加到新创建的数据记录的引用字段和活跃字段中。
最后,按照N棵逻辑查询计划树的顺序的逆序第四次遍历N棵逻辑查询计划树,依次对N棵逻辑查询计划树的每个创建操作符执行如下处理:(1)根据当前创建操作符的操作数的存储位置,查找映射关系表,得到当前创建操作符的操作数的存储位置对应的所有由操作数的版本号和逻辑查询计划树的序号组成的二元组集合。(2)从该二元组集合中选出逻辑查询计划树的序号大于等于当前创建操作符所在的逻辑查询计划树的序号的所有备选逻辑查询计划树,从备选逻辑查询计划树中确定出序号最小的逻辑查询计划树,从该二元组集合中找到该最小序号所在的二元组,获得该最小序号所在的二元组中的版本号。(3)根据该最小序号所在的二元组中的版本号查找该符号标识表,找到该最小序号所在的二元组中的版本号对应的数据记录,判断该最小序号所在的二元组中的版本号对应的数据记录的路径字段是否为空,若为空,则将当前创建操作符的操作数的存储位置添加到该最小序号所在的二元组中的版本号对应的数据记录的路径字段中,若不为空,则跳转到下一个创建操作符执行如上所述的方法。
在第二种方式中,在遍历每棵逻辑查询计划树时,依次按照如下顺序为每棵逻辑查询计划树的操作数生成版本号:销毁操作符、引用操作符、文件定值操作符和创建操作符。第二种方式中,在第四次遍历N棵逻辑查询计划树时,按照N棵逻辑查询计划树的顺序的逆序遍历N棵逻辑查询计划树。若要采用N棵逻辑查询计划树的顺序遍历N棵逻辑查询计划树,那么在为引用操作符生成版本号时,如果在映射关系表中没有找到满足条件的版本号,则为当前引用操作符的操作数生成新的数据记录。本实施例中,通过为每棵逻辑查询计划树中的所有操作符的操作数生成版本号,并将生成的版本号添加到逻辑查询计划树中,以便于后续在查询优化过程中,根据操作数的版本号对N棵逻辑查询计划树进行优化。
在实施例二的基础上,数据查询装置在统计N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数时,可以根据符号标识表中的每条数据记录的活跃字段和非活跃字段的取值,统计符号标识表中所有操作数的起始活跃位置和终止活跃位置。具体的,首先判断当前数据记录的活跃字段和非活跃字段的取值是否为空,若当前数据记录的活跃字段和非活跃字段的取值为空,那么说明当前数据记录对应的操作数在整个批量查询过程中,都不活跃,可以将当前数据记录从符号标识表中删除。若当前数据记录的活跃字段和非活跃字段的取值不为空,那么根据当前数据记录的活跃字段中的操作符的标识和该操作符所属的逻辑查询计划树的序号确定当前数据记录对应的操作数的起始活跃位置,根据当前数据记录的不活跃字段中的操作符的标识和该操作符所属的逻辑查询计划树的序号确定当前数据记录对应的操作数的终止活跃位置,当前数据记录的活跃字段中只有一个操作符,该操作符可能为扫描操作符或文件定值操作符,当前数据记录的不活跃字段中也只有一个操作符,该操作符可能为销毁操作符或文件定值操作符。
图3为本发明实施例三提供的数据查询服务器的结构示意图,如图3所示,本实施例提供的数据查询服务器包括:接收模块11、标识确定模块12、关系确定模块13、优化模块14和查询模块15。
其中,接收模块11,用于接收待执行的N条查询语句,其中,所述N为不小于2的正整数;
标识确定模块12,用于根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,其中,所述操作符用于指示要执行的操作,所述操作数用于指示所述N条查询语句中的操作符待操作的数据的存储位置,所述符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号,所述操作符至少包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
关系确定模块13,用于根据所述标识确定模块12确定的所述N条查询语句的操作数的版本号确定所述N条查询语句之间的依赖关系;
优化模块14,用于根据所述N条查询语句之间的依赖关系以及预设的优化规则对所述N条查询语句进行查询间优化;
查询模块15,用于执行优化后的查询语句以得到所述N条查询语句的查询结果。
可选的,所述标识确定模块12具体用于:获取所述N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树;为所述N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,所述第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;对于所述N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:根据第一逻辑查询计划树的拓扑顺序、所述第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为所述第一逻辑查询计划树中的第二类操作符的操作数添加符号标识,其中,所述第一逻辑查询计划树为所述N棵逻辑查询计划树中的任意一棵逻辑查询计划树,所述第二类操作符为除所述第一类操作符之外的其他操作符。
本实施例中,所述第一逻辑查询计划树的根节点包括文件定值操作符,所述第一逻辑查询计划树的叶子节点包括文件扫描操作符,所述第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符,其中,所述内部节点为除叶子节点和根节点之外的其他节点;所述添加规则包括:对于所述第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:
若第一操作符的操作数与所述第一操作符的左孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的左孩子节点的操作数的符号标识相同的符号标识,所述第一操作符为所述第二类操作符中的任意一个操作符;若所述第一操作符的操作数与所述第一操作符的右孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的右孩子节点的操作数的符号标识相同的符号标识。
可选的,所述优化规则包括下述规则中的至少一个规则:删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,所述第一查询语句为所述N条查询语句中的任意一条查询语句;保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句,其中,所述流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的的操作数的版本号相同;合并具有相同操作符且操作数有重叠的查询语句。
可选的,所述N条查询语句中的操作数的符号标识还包括:热数据标识,所述标识确定模块12还用于:统计所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;判断所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;为所述N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于所述热数据阈值的操作数添加热数据标识,所述热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据。相应的,所述查询模块15还用于:在执行所述优化后的查询语句过程中,并发执行包含所述热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。
可选的,所述N条查询语句中的操作数的符号标识还包括:起始活跃位置和终止活跃位置,所述标识确定模块12还用于:针对第一操作数,根据第一次引用所述第一操作数的扫描操作符的标识和所述扫描操作符所在的逻辑查询计划树的序号确定所述第一操作数的起始活跃位置,其中,所述第一操作数为所述N条查询语句中的操作数中的任意一个操作数;根据用于销毁所述第一操作数的销毁操作符的标识和所述销毁操作符所在的逻辑查询计划树的序号确定所述第一操作数的终止活跃位置。相应的,所述查询模块15还用于:在执行所述优化后的查询语句过程中,根据所述第一操作数的终止活跃位置释放所述第一操作数指示的数据的存储空间。
可选的,所述标识确定模块12还用于:针对第二操作数,根据第一次引用所述第二操作数的第一文件定值操作符的标识和所述第一文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的起始活跃位置,其中,所述第一文件定值操作符用于向所述第二操作数指代的存储位置写数据,所述第二操作数为所述N条查询语句中的操作数中的任意一个操作数;根据引用所述第二操作数的第二文件定值操作符的标识和所述第二文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的终止活跃位置,其中,所述第二文件定值操作符用于改写所述第一文件定值操作符操作的所述第二操作数指向的数据。所述查询模块15还用于:在执行所述优化后的查询语句过程中,根据所述第二操作数的终止活跃位置释放所述第二操作数指示的数据的存储空间。
本实施例提供的数据查询服务器,可用于执行实施例一和实施例二的方法,具体实现方式和技术效果类似,这里不再赘述。
图4为本发明实施例四提供的数据查询服务器的结构示意图,如图4所示,本实施例提供的数据查询服务器200包括:处理器21、存储器22、通信接口23和系统总线24,所述存储器22和所述通信接口23通过所述系统总线24与所述处理器21连接并通信;所述存储器22,用于存储计算机执行指令;所述通信接口23用于和其他设备进行通信,所述处理器21,用于运行所述计算机执行指令,执行下述方法:
接收待执行的N条查询语句,其中,所述N为不小于2的正整数;
根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,其中,所述操作符用于指示要执行的操作,所述操作数用于指示所述N条查询语句中的操作符待操作的数据的存储位置,所述符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号,所述操作符至少包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
根据确定的所述N条查询语句的操作数的版本号确定所述N条查询语句之间的依赖关系;
根据所述N条查询语句之间的依赖关系以及预设的优化规则对所述N条查询语句进行查询间优化;
执行优化后的查询语句以得到所述N条查询语句的查询结果。
可选的,所述处理器21根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,具体为:
获取所述N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树;
为所述N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,所述第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
对于所述N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:
根据第一逻辑查询计划树的拓扑顺序、所述第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为所述第一逻辑查询计划树中的第二类操作符的操作数添加符号标识,其中,所述第一逻辑查询计划树为所述N棵逻辑查询计划树中的任意一棵逻辑查询计划树,所述第二类操作符为除所述第一类操作符之外的其他操作符。
本实施例中,所述第一逻辑查询计划树的根节点包括文件定值操作符,所述第一逻辑查询计划树的叶子节点包括文件扫描操作符,所述第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符,其中,所述内部节点为除叶子节点和根节点之外的其他节点;所述添加规则包括:对于所述第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:
若第一操作符的操作数与所述第一操作符的左孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的左孩子节点的操作数的符号标识相同的符号标识,所述第一操作符为所述第二类操作符中的任意一个操作符;若所述第一操作符的操作数与所述第一操作符的右孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的右孩子节点的操作数的符号标识相同的符号标识。
可选的,所述优化规则包括下述规则中的至少一个规则:删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,所述第一查询语句为所述N条查询语句中的任意一条查询语句;保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句,其中,所述流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的的操作数的版本号相同;合并具有相同操作符且操作数有重叠的查询语句。
可选的,所述N条查询语句中的操作数的符号标识还包括:热数据标识;所述处理器21还用于:统计所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;判断所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;为所述N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于所述热数据阈值的操作数添加热数据标识,所述热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据。后续在执行所述优化后的查询语句过程中,并发执行包含所述热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。
可选的,所述N条查询语句中的操作数的符号标识还包括:起始活跃位置和终止活跃位置,所述处理器31还用于:针对第一操作数,根据第一次引用所述第一操作数的扫描操作符的标识和所述扫描操作符所在的逻辑查询计划树的序号确定所述第一操作数的起始活跃位置,其中,所述第一操作数为所述N条查询语句中的操作数中的任意一个操作数;根据用于销毁所述第一操作数的销毁操作符的标识和所述销毁操作符所在的逻辑查询计划树的序号确定所述第一操作数的终止活跃位置。后续在执行所述优化后的查询语句过程中,根据所述第一操作数的终止活跃位置释放所述第一操作数指示的数据的存储空间。
所述处理器31还用于:针对第二操作数,根据第一次引用所述第二操作数的第一文件定值操作符的标识和所述第一文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的起始活跃位置,其中,所述第一文件定值操作符用于向所述第二操作数指代的存储位置写数据,所述第二操作数为所述N条查询语句中的操作数中的任意一个操作数;根据引用所述第二操作数的第二文件定值操作符的标识和所述第二文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的终止活跃位置,其中,所述第二文件定值操作符用于改写所述第一文件定值操作符操作的所述第二操作数指向的数据。后续在执行所述优化后的查询语句过程中,根据所述第二操作数的终止活跃位置释放所述第二操作数指示的数据的存储空间。
本实施例提供的数据查询服务器,可用于执行实施例一和实施例二的方法,具体实现方式和技术效果类似,这里不再赘述。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatilememory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (14)
1.一种批量数据查询方法,其特征在于,包括:
接收待执行的N条查询语句,其中,所述N为不小于2的正整数;
根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,其中,所述操作符用于指示要执行的操作,所述操作数用于指示所述N条查询语句中的操作符待操作的数据的存储位置,所述符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号,所述操作符至少包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
根据确定的所述N条查询语句的操作数的版本号确定所述N条查询语句之间的依赖关系;
根据所述N条查询语句之间的依赖关系以及预设的优化规则对所述N条查询语句进行查询间优化;
执行优化后的查询语句以得到所述N条查询语句的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识包括:
获取所述N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树;
为所述N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,所述第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
对于所述N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:
根据第一逻辑查询计划树的拓扑顺序、所述第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为所述第一逻辑查询计划树中的第二类操作符的操作数添加符号标识,其中,所述第一逻辑查询计划树为所述N棵逻辑查询计划树中的任意一棵逻辑查询计划树,所述第二类操作符为除所述第一类操作符之外的其他操作符。
3.根据权利要求2所述的方法,其特征在于:所述第一逻辑查询计划树的根节点包括文件定值操作符,所述第一逻辑查询计划树的叶子节点包括文件扫描操作符,所述第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符,其中,所述内部节点为除叶子节点和根节点之外的其他节点;
所述添加规则包括:对于所述第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:
若第一操作符的操作数与所述第一操作符的左孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的左孩子节点的操作数的符号标识相同的符号标识,所述第一操作符为所述第二类操作符中的任意一个操作符;
若所述第一操作符的操作数与所述第一操作符的右孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的右孩子节点的操作数的符号标识相同的符号标识。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述优化规则包括下述规则中的至少一个规则:
删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,所述第一查询语句为所述N条查询语句中的任意一条查询语句;
保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句,其中,所述流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的的操作数的版本号相同;和
合并具有相同操作符且操作数有重叠的查询语句。
5.根据权利要求2所述的方法,其特征在于,所述N条查询语句中的操作数的符号标识还包括:热数据标识;
所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识还包括:
统计所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;
判断所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;
为所述N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于所述热数据阈值的操作数添加热数据标识,所述热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据;
所述方法还包括:
在执行所述优化后的查询语句过程中,并发执行包含所述热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。
6.根据权利要求2或5所述的方法,其特征在于:所述N条查询语句中的操作数的符号标识还包括:起始活跃位置和终止活跃位置;
所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识还包括:
针对第一操作数,根据第一次引用所述第一操作数的扫描操作符的标识和所述扫描操作符所在的逻辑查询计划树的序号确定所述第一操作数的起始活跃位置,其中,所述第一操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据用于销毁所述第一操作数的销毁操作符的标识和所述销毁操作符所在的逻辑查询计划树的序号确定所述第一操作数的终止活跃位置;
所述方法还包括:
在执行所述优化后的查询语句过程中,根据所述第一操作数的终止活跃位置释放所述第一操作数指示的数据的存储空间。
7.根据权利要求6所述的方法,其特征在于,所述根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识还包括:
针对第二操作数,根据第一次引用所述第二操作数的第一文件定值操作符的标识和所述第一文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的起始活跃位置,其中,所述第一文件定值操作符用于向所述第二操作数指代的存储位置写数据,所述第二操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据引用所述第二操作数的第二文件定值操作符的标识和所述第二文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的终止活跃位置,其中,所述第二文件定值操作符用于改写所述第一文件定值操作符操作的所述第二操作数指向的数据;
所述方法还包括:
在执行所述优化后的查询语句过程中,根据所述第二操作数的终止活跃位置释放所述第二操作数指示的数据的存储空间。
8.一种数据查询服务器,其特征在于,包括:
接收模块,用于接收待执行的N条查询语句,其中,所述N为不小于2的正整数;
标识确定模块,用于根据所述N条查询语句中的操作符和操作数确定所述N条查询语句的操作数的符号标识,其中,所述操作符用于指示要执行的操作,所述操作数用于指示所述N条查询语句中的操作符待操作的数据的存储位置,所述符号标识包括操作数的版本号,并且,指代相同数据的操作数具有相同的版本号,指代不同数据的操作数具有不同的版本号,所述操作符至少包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
关系确定模块,用于根据所述标识确定模块确定的所述N条查询语句的操作数的版本号确定所述N条查询语句之间的依赖关系;
优化模块,用于根据所述N条查询语句之间的依赖关系以及预设的优化规则对所述N条查询语句进行查询间优化;
查询模块,用于执行优化后的查询语句以得到所述N条查询语句的查询结果。
9.根据权利要求8所述的服务器,其特征在于,所述标识确定模块具体用于:
获取所述N条查询语句对应的N棵逻辑查询计划树,其中,一条查询语句对应一棵逻辑查询计划树;
为所述N棵逻辑查询计划树中的第一类操作符的操作数添加符号标识,其中,所述第一类操作符包括:创建操作符、销毁操作符、扫描操作符和文件定值操作符;
对于所述N棵逻辑查询计划树中的每一棵查询计划树分别执行如下操作:
根据第一逻辑查询计划树的拓扑顺序、所述第一逻辑查询计划树中的第一类操作符的操作数的符号标识以及预设的添加规则为所述第一逻辑查询计划树中的第二类操作符的操作数添加符号标识,其中,所述第一逻辑查询计划树为所述N棵逻辑查询计划树中的任意一棵逻辑查询计划树,所述第二类操作符为除所述第一类操作符之外的其他操作符。
10.根据权利要求9所述的服务器,其特征在于:所述第一逻辑查询计划树的根节点包括文件定值操作符,所述第一逻辑查询计划树的叶子节点包括文件扫描操作符,所述第一逻辑查询计划树的内部节点包括第二类操作符、创建操作符和销毁操作符,其中,所述内部节点为除叶子节点和根节点之外的其他节点;
所述添加规则包括:对于所述第一逻辑查询计划树中的每一个第二类操作符,执行如下操作:
若第一操作符的操作数与所述第一操作符的左孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的左孩子节点的操作数的符号标识相同的符号标识,所述第一操作符为所述第二类操作符中的任意一个操作符;
若所述第一操作符的操作数与所述第一操作符的右孩子节点的操作数相同,则为所述第一操作符的操作数添加与所述第一操作符的右孩子节点的操作数的符号标识相同的符号标识。
11.根据权利要求8-10中任一项所述的服务器,其特征在于,所述优化规则包括下述规则中的至少一个规则:
删除与第一查询语句具有相同操作数版本号和相同操作符的查询语句,其中,所述第一查询语句为所述N条查询语句中的任意一条查询语句;
保持具有流依赖关系的查询语句之间的查询顺序,并将具有流依赖关系的多个查询语句优化为一个新的查询语句,其中,所述流依赖关系是指在前执行的一条查询语句的文件定值操作符的操作数的版本号与在后执行的另一条查询语句的的操作数的版本号相同;和
合并具有相同操作符且操作数有重叠的查询语句。
12.根据权利要求9所述的服务器,其特征在于,所述N条查询语句中的操作数的符号标识还包括:热数据标识,所述标识确定模块还用于:
统计所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数;
判断所述N棵逻辑查询计划树中的每个扫描操作符的操作数被引用的次数是否大于热数据阈值;
为所述N棵逻辑查询计划树中扫描操作符的操作数被引用的次数大于所述热数据阈值的操作数添加热数据标识,所述热数据标识用于表示具有热数据标识的操作数所指向的数据为热数据;
所述查询模块还用于:
在执行所述优化后的查询语句过程中,并发执行包含所述热数据标识且不存在流依赖关系和输出依赖关系的优化后的查询语句。
13.根据权利要求9或12所述的服务器,其特征在于,所述N条查询语句中的操作数的符号标识还包括:起始活跃位置和终止活跃位置,所述标识确定模块还用于:
针对第一操作数,根据第一次引用所述第一操作数的扫描操作符的标识和所述扫描操作符所在的逻辑查询计划树的序号确定所述第一操作数的起始活跃位置,其中,所述第一操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据用于销毁所述第一操作数的销毁操作符的标识和所述销毁操作符所在的逻辑查询计划树的序号确定所述第一操作数的终止活跃位置;
所述查询模块还用于:
在执行所述优化后的查询语句过程中,根据所述第一操作数的终止活跃位置释放所述第一操作数指示的数据的存储空间。
14.根据权利要求13所述的服务器,其特征在于,所述标识确定模块还用于:
针对第二操作数,根据第一次引用所述第二操作数的第一文件定值操作符的标识和所述第一文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的起始活跃位置,其中,所述第一文件定值操作符用于向所述第二操作数指代的存储位置写数据,所述第二操作数为所述N条查询语句中的操作数中的任意一个操作数;
根据引用所述第二操作数的第二文件定值操作符的标识和所述第二文件定值操作符所在的逻辑查询计划树的序号确定所述第二操作数的终止活跃位置,其中,所述第二文件定值操作符用于改写所述第一文件定值操作符操作的所述第二操作数指向的数据;
所述查询模块还用于:
在执行所述优化后的查询语句过程中,根据所述第二操作数的终止活跃位置释放所述第二操作数指示的数据的存储空间。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510226374.XA CN106202102B (zh) | 2015-05-06 | 2015-05-06 | 批量数据查询方法和装置 |
EP16789021.9A EP3282370A4 (en) | 2015-05-06 | 2016-02-19 | Batch data query method and device |
PCT/CN2016/074141 WO2016177027A1 (zh) | 2015-05-06 | 2016-02-19 | 批量数据查询方法和装置 |
US15/804,346 US10678789B2 (en) | 2015-05-06 | 2017-11-06 | Batch data query method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510226374.XA CN106202102B (zh) | 2015-05-06 | 2015-05-06 | 批量数据查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106202102A true CN106202102A (zh) | 2016-12-07 |
CN106202102B CN106202102B (zh) | 2019-04-05 |
Family
ID=57217338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510226374.XA Active CN106202102B (zh) | 2015-05-06 | 2015-05-06 | 批量数据查询方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10678789B2 (zh) |
EP (1) | EP3282370A4 (zh) |
CN (1) | CN106202102B (zh) |
WO (1) | WO2016177027A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111753028A (zh) * | 2020-07-02 | 2020-10-09 | 上海达梦数据库有限公司 | 数据传输方法、装置、设备及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143406A (zh) * | 2018-11-06 | 2020-05-12 | 北京京东尚科信息技术有限公司 | 数据库数据比对方法和比对系统 |
CN111159227B (zh) * | 2019-12-20 | 2023-04-14 | 建信金融科技有限责任公司 | 数据查询方法、装置、设备及存储介质 |
CN116089476B (zh) * | 2023-04-07 | 2023-07-04 | 北京宝兰德软件股份有限公司 | 数据查询方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
CN103559300A (zh) * | 2013-11-13 | 2014-02-05 | 曙光信息产业(北京)有限公司 | 数据的查询方法和查询装置 |
CN104036007A (zh) * | 2014-06-23 | 2014-09-10 | 北京京东尚科信息技术有限公司 | 一种分布式数据库查询方法及装置 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110030A (zh) * | 2007-08-23 | 2008-01-23 | 南京联创科技股份有限公司 | 基于java的数据库持久层的开发方法 |
CN101221578B (zh) * | 2008-02-01 | 2010-12-22 | 中国建设银行股份有限公司 | 数据筛选的方法、装置以及证券化贷款的筛选方法、装置 |
US8239406B2 (en) * | 2008-12-31 | 2012-08-07 | International Business Machines Corporation | Expression tree data structure for representing a database query |
US9129000B2 (en) * | 2010-04-30 | 2015-09-08 | International Business Machines Corporation | Method and system for centralized control of database applications |
-
2015
- 2015-05-06 CN CN201510226374.XA patent/CN106202102B/zh active Active
-
2016
- 2016-02-19 EP EP16789021.9A patent/EP3282370A4/en not_active Ceased
- 2016-02-19 WO PCT/CN2016/074141 patent/WO2016177027A1/zh unknown
-
2017
- 2017-11-06 US US15/804,346 patent/US10678789B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
CN103559300A (zh) * | 2013-11-13 | 2014-02-05 | 曙光信息产业(北京)有限公司 | 数据的查询方法和查询装置 |
CN104036007A (zh) * | 2014-06-23 | 2014-09-10 | 北京京东尚科信息技术有限公司 | 一种分布式数据库查询方法及装置 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111753028A (zh) * | 2020-07-02 | 2020-10-09 | 上海达梦数据库有限公司 | 数据传输方法、装置、设备及存储介质 |
CN111753028B (zh) * | 2020-07-02 | 2023-08-25 | 上海达梦数据库有限公司 | 数据传输方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10678789B2 (en) | 2020-06-09 |
WO2016177027A1 (zh) | 2016-11-10 |
CN106202102B (zh) | 2019-04-05 |
EP3282370A1 (en) | 2018-02-14 |
US20180060392A1 (en) | 2018-03-01 |
EP3282370A4 (en) | 2018-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677683B (zh) | 批量数据查询方法和装置 | |
US10216793B2 (en) | Optimization of continuous queries in hybrid database and stream processing systems | |
US9575976B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
CN102930062B (zh) | 一种数据库快速水平扩展的方法 | |
US9626407B2 (en) | Real-time saved-query updates for a large graph | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
US10037355B2 (en) | Mechanisms for merging index structures in MOLAP while preserving query consistency | |
CN104809190B (zh) | 一种树形结构数据的数据库存取方法 | |
US10565201B2 (en) | Query processing management in a database management system | |
CN106202102A (zh) | 批量数据查询方法和装置 | |
Swaminathan et al. | Quantitative analysis of scalable NoSQL databases | |
US9229960B2 (en) | Database management delete efficiency | |
EP3862888A1 (en) | Hybrid data distribution in a massively parallel processing architecture | |
CN104298541A (zh) | 云存储系统的数据分布算法及其装置 | |
CN108681603B (zh) | 数据库中快速搜索树形结构数据的方法、存储介质 | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN104268295A (zh) | 一种数据查询方法及装置 | |
CN103581331A (zh) | 虚拟机在线迁移方法与系统 | |
KR101744892B1 (ko) | 시계열 계층 인덱싱을 이용한 데이터 검색 시스템 및 데이터 검색 방법 | |
US10685031B2 (en) | Dynamic hash partitioning for large-scale database management systems | |
CN104731969A (zh) | 分布式环境下海量数据连接聚集查询方法、装置和系统 | |
US8938443B2 (en) | Runtime optimization of spatiotemporal events processing | |
CN105701128B (zh) | 一种查询语句的优化方法和装置 | |
CN101635001B (zh) | 从数据库提取信息的方法和设备 | |
CN104283966A (zh) | 云存储系统的数据分布算法及其装置 |
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 |