CN114547086B - 数据处理方法、装置、设备及计算机可读存储介质 - Google Patents
数据处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114547086B CN114547086B CN202210429301.0A CN202210429301A CN114547086B CN 114547086 B CN114547086 B CN 114547086B CN 202210429301 A CN202210429301 A CN 202210429301A CN 114547086 B CN114547086 B CN 114547086B
- Authority
- CN
- China
- Prior art keywords
- statement
- query
- data
- operator
- target
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/23—Updating
- G06F16/2393—Updating materialised views
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施方式提供了一种数据处理方法、数据处理装置、电子设备以及计算机可读存储介质,涉及计算机技术领域。该方法包括:将原始查询语句中的目标功能算符移除,以及,将物化视图语句中的目标功能算符移除;若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系;根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句;将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。这样可以提升对于包含目标功能算符的原始查询语句的数据处理效率。
Description
技术领域
本申请的实施方式涉及计算机技术领域,更具体地,本申请的实施方式涉及数据处理方法、数据处理装置、电子设备以及计算机可读存储介质。
背景技术
物化视图是把基础数据副本或基于基础数据的计算结果进行存储的视图。软件系统中经常会有对两张或者多张大数据量的表进行连接查询的操作,如果不通过物化视图对基础数据副本或基础数据进行处理,用户每次查询都会耗费很长的时间。针对这种涉及多张表、表中数据量大、连接复杂或使用频率很高的表查询操作,可以使用物化视图技术,将查询所需要的数据按需求处理之后存储在物化视图中,上层应用直接查询物化视图中的数据,可以极大的提高查询的性能,达到“以空间换时间”的目的。
在检测到查询语句时,可以基于物化视图处理该查询语句中的数据,以实现直接查询物化视图中的数据的目的,从而提升查询效率。但是,现有的处理方案通常只支持不包含功能算符的情况,当查询语句/物化视图中存在功能算符时,就需要人工手动处理查询语句中的数据。可见,在查询语句/物化视图中存在功能算符时,存在数据处理效率较低的问题,进而容易导致查询效率较低的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此,不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
基于上述问题,本申请做出了有针对性的改进,提供了数据处理方法、数据处理装置、电子设备以及计算机可读存储介质,可以支持目标查询语句/物化视图语句中包含目标功能算符的情况,在原始查询语句/物化视图语句中包含目标功能算符时也可以实现对于原始查询语句中数据的自动化处理,从而解决在目标查询语句/物化视图语句中存在功能算符时的数据处理效率较低的问题,进而也可以解决查询效率较低的问题。
根据本申请实施例的第一方面,公开了一种数据处理方法,包括:
若原始查询语句中包含目标功能算符,则将目标功能算符从原始查询语句中移除,得到第一参考查询语句;
若物化视图语句中包含目标功能算符,则将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句;
若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系;
根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句;
将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在一个实施例中,基于前述方案,将目标功能算符从原始查询语句中移除,得到第一参考查询语句之后,上述方法还包括:
将从原始查询语句中移除的目标功能算符进行缓存;
以及,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
将缓存的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在一个实施例中,基于前述方案,根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句之后,上述方法还包括:
在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联。
在一个实施例中,基于前述方案,第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系,根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句,包括:
根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句。
在一个实施例中,基于前述方案,在目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配时,上述方法还包括:
当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,确定第一数据查询子句与第二数据查询子句分别对应的类型;
若第一数据查询子句与第二数据查询子句均对应于向左关联类型,或者第一数据查询子句与第二数据查询子句均对应于向右关联类型,则确定第一数据查询子句和第二数据查询子句的交集子句;
将第一参考查询语句中的第二数据查询子句改写为交集子句。
在一个实施例中,基于前述方案,上述方法还包括:
若第一数据查询子句与第二数据查询子句均对应于左右互相关联类型,则终止改写操作。
在一个实施例中,基于前述方案,确定第一数据查询子句和第二数据查询子句的交集子句之前,上述方法还包括:
当第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句时,根据第一子查询语句从第二数据查询子句的主表中筛选出目标数据;
将目标数据构成的数据表确定为新主表;
将第二数据查询子句中的主表更新为新主表。
在一个实施例中,基于前述方案,上述方法还包括:
当第二数据查询子句中存在用于限定副表筛选条件的第二子查询语句时,则终止改写操作;其中,副表筛选条件用于从第二数据查询子句的副表中筛选数据。
在一个实施例中,基于前述方案,在物化视图语句中,目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后;在原始查询语句中,目标功能算符所处的位置在原始查询语句的字段筛选算符所处的位置之后。
在一个实施例中,基于前述方案,若目标功能算符为排序算符,排序算符用于对查询到的数据进行排序,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
将排序算符还原至指定位置中的第一位置,得到目标查询语句。
在一个实施例中,基于前述方案,若目标功能算符为数据量约束算符,数据量约束算符用于约束最终输出的数据量,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;
若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
在一个实施例中,基于前述方案,若目标功能算符为起始点算符,起始点算符用于标识从数据表中读取数据的起始位置,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;
若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
在一个实施例中,基于前述方案,在目标功能算符为数据量约束算符/起始点算符的情况下,上述方法还包括:
若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,则终止改写操作。
根据本申请实施例的第二方面,公开了一种数据处理装置,包括:
算符移除单元,用于若原始查询语句中包含目标功能算符,则将目标功能算符从原始查询语句中移除,得到第一参考查询语句;
算符移除单元,还用于若物化视图语句中包含目标功能算符,则将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句;
映射关系确定单元,用于若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系;
数据处理单元,用于根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句;
算符还原单元,用于将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在一个实施例中,基于前述方案,上述装置还包括:
缓存单元,用于在算符移除单元将目标功能算符从原始查询语句中移除,得到第一参考查询语句之后,将所移除的目标功能算符进行缓存;
以及,算符还原单元将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
算符还原单元将缓存的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在一个实施例中,基于前述方案,上述装置还包括:
标识符增加单元,用于在数据处理单元根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句之后,在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联。
在一个实施例中,基于前述方案,第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系,数据处理单元根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句,包括:
根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句。
在一个实施例中,基于前述方案,上述装置还包括:
类型确定单元,用于在目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配时,当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,确定第一数据查询子句与第二数据查询子句分别对应的类型;
交集子句确定单元,用于若第一数据查询子句与第二数据查询子句均对应于向左关联类型,或者第一数据查询子句与第二数据查询子句均对应于向右关联类型,则确定第一数据查询子句和第二数据查询子句的交集子句;
数据处理单元,还用于将第一参考查询语句中的第二数据查询子句改写为交集子句。
在一个实施例中,基于前述方案,上述装置还包括:
终止单元,用于若第一数据查询子句与第二数据查询子句均对应于左右互相关联类型,则终止改写操作。
在一个实施例中,基于前述方案,上述装置还包括:
主表更新单元,用于交集子句确定单元确定第一数据查询子句和第二数据查询子句的交集子句之前,当第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句时,根据第一子查询语句从第二数据查询子句的主表中筛选出目标数据;将目标数据构成的数据表确定为新主表;将第二数据查询子句中的主表更新为新主表。
在一个实施例中,基于前述方案,其中:
终止单元,还用于当第二数据查询子句中存在用于限定副表筛选条件的第二子查询语句时,则终止改写操作;其中,副表筛选条件用于从第二数据查询子句的副表中筛选数据。
在一个实施例中,基于前述方案,在物化视图语句中,目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后;在原始查询语句中,目标功能算符所处的位置在原始查询语句的字段筛选算符所处的位置之后。
在一个实施例中,基于前述方案,若目标功能算符为排序算符,排序算符用于对查询到的数据进行排序,算符还原单元将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
将排序算符还原至指定位置中的第一位置,得到目标查询语句。
在一个实施例中,基于前述方案,若目标功能算符为数据量约束算符,数据量约束算符用于约束最终输出的数据量,算符还原单元将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;
若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
在一个实施例中,基于前述方案,若目标功能算符为起始点算符,起始点算符用于标识从数据表中读取数据的起始位置,算符还原单元将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;
若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
在一个实施例中,基于前述方案,在目标功能算符为数据量约束算符/起始点算符的情况下,其中:
终止单元,还用于若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,则终止改写操作。
根据本申请实施例的第三方面,公开了一种电子设备,包括:处理器;以及存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时实现如第一方面公开的数据处理方法。
根据本申请实施例的第四方面,公开了一种计算机程序介质,其上存储有计算机可读指令,当计算机可读指令被计算机的处理器执行时,使计算机执行根据本申请第一方面公开的数据处理方法。
本申请实施例能够在原始查询语句中包含目标功能算符时,将目标功能算符从原始查询语句中移除,得到第一参考查询语句;在物化视图语句中包含目标功能算符时,将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句;若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系;根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句;将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。相较相关技术,实施本申请的实施例,一方面,支持目标查询语句/物化视图语句中包含目标功能算符的情况,在原始查询语句/物化视图语句中包含目标功能算符时,也可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。另一方面,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
图1示出的是根据本申请一示例实施方式的数据处理方法的流程示意图;
图2示出的是根据本申请另一示例实施方式的数据处理方法的流程示意图;
图3示出的是根据本申请又一示例实施方式的数据处理方法的流程示意图;
图4示出的是根据本申请一示例实施方式的计算机可读存储介质的示意图;
图5示出的是根据本申请一示例实施方式的数据处理装置的结构框图;
图6示出的是根据本申请一示例实施方式的用来实现本申请实施例的电子设备的计算机系统的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本申请的实施方式可以实现为一种装置、设备、方法或计算机程序产品。因此,本申请可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本申请的实施方式,提出了一种数据处理方法、数据处理装置、电子设备以及计算机可读存储介质。
附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本申请的若干代表性实施方式,详细阐释本申请的原理和精神。
发明概述
对于数据仓库,物化视图最重要的功能之一是查询加速。数据仓库中存在大量在大型表上执行复杂的查询,这些查询会消耗大量资源和时间。基于物化视图执行查询操作,可以消除不必要的联接和聚合,以避免这些不必要的联接和聚合带来不必要的开销,大幅度改善查询处理时间,降低系统负载。
基于物化视图改写查询语句可以使得查询语句直接查询物化视图,从而节省查询时间。但是,目前的物化视图技术不支持对于包含功能算符的语句的改写。
申请人想到可以在原始查询语句/物化视图语句中包含目标功能算符时,先将原始查询语句/物化视图语句中的目标功能算符移除,再对移除目标功能算符后的原始查询语句进行基于物化视图语句的改写,改写完成后再将移除的目标功能算符还原至查询语句中,以保证查询语句的完整性。从而实现对于包含功能算符的语句的改写支持,并提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。
应用场景总览
需要注意的是,下述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
在安装了calcite、hive、clickhouse等具备物化视图功能的开源组件的设备上,可以实现本申请的技术方案,基于calcite、hive、clickhouse等具备物化视图功能的开源组件可以获取与原始查询语句匹配的物化视图语句,在原始查询语句/物化视图语句中包含目标功能算符时,先将原始查询语句/物化视图语句中的目标功能算符移除,再对移除目标功能算符后的原始查询语句进行基于物化视图语句的改写,改写完成后再将移除的目标功能算符还原至查询语句中,以保证查询语句的完整性。这样可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。此外,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
示例性方法
下面结合上述的应用场景,参考图1~图2来描述根据本申请示例性实施方式的数据处理方法。
请参阅图1,图1示出的是根据本申请一示例实施方式的数据处理方法的流程示意图,该数据处理方法可以由服务器或终端设备来实现。
如图1所示,根据本申请的一个实施例的数据处理方法包括:
步骤S110:若原始查询语句中包含目标功能算符,则将目标功能算符从原始查询语句中移除,得到第一参考查询语句。
步骤S120:若物化视图语句中包含目标功能算符,则将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句。
步骤S130:若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系。
步骤S140:根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句。
步骤S150:将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
实施图1所示的数据处理方法,在原始查询语句/物化视图语句中包含目标功能算符时,也可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。此外,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
下面对这些步骤进行详细描述。
在步骤S110中,若原始查询语句中包含目标功能算符,则将目标功能算符从原始查询语句中移除,得到第一参考查询语句。
具体地,原始查询语句中可以用于在数据库中查询所需的数据;其中,数据库可以为MySQL、MariaDB、Oracle、SQL Server等关系型数据库,本申请实施例不作限定。关系型数据库可以支持SQL (Structured Query Language) 语句,SQL是具有数据操纵和数据定义等多种功能的数据库语言,上述的原始查询语句可以理解为一种SQL语句。此外,目标功能算符可以为排序算符、数据量约束算符或起始点算符,除此之外,目标功能算符也可以为其他类型算符,本申请实施例不作限定。其中,排序算符中至少包括标识符ORDER BY,数据量约束算符中至少包括标识符LIMIT,起始点算符中至少包括标识符OFFSET。此外,第一参考查询语句可以理解为不包含目标功能算符的SQL语句。
举例来说,原始查询语句的表示方式可以形如以下示例:
示例1.0:
SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10 ORDER BY t.b ASC
示例2.0:
SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10 LIMIT 200
示例3.0:
SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10 OFFSET 123
示例4.0:
SELECT t1.id id1, t1.a1, t1.a2, t2.id id2, t2.b1, t2.b2 from jhk.t1left join jhk.t2 on t1.a2 = t2.b2 WHERE t1.id > 100
基于上述示例1.0,目标功能算符为排序算符(ORDER BY t.b ASC),若将目标功能算符从原始查询语句中移除,得到的第一参考查询语句可以表示为:
示例1.1:
SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10
基于上述示例2.0,目标功能算符为数据量约束算符(LIMIT 200),若将目标功能算符从原始查询语句中移除,得到的第一参考查询语句可以表示为:
示例2.1:
SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10
基于上述示例3.0,目标功能算符为起始点算符(OFFSET 123),若将目标功能算符从原始查询语句中移除,得到的第一参考查询语句可以表示为:
示例3.1:
SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10
此外,在将目标功能算符从原始查询语句中移除,得到第一参考查询语句之前,上述方法还可以包括:接收用户输入的语句,并将该语句确定为原始查询语句。
在一个实施例中,基于前述方案,在物化视图语句中,目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后;在原始查询语句中,目标功能算符所处的位置在原始查询语句的字段筛选算符所处的位置之后。
可见,基于该实施例,可以实现的效果包括:仅在目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后时,才触发后续对于目标功能算符的移除以及对于原始查询语句的改写,避免在不适用改写的情况下也实现对于原始查询语句的改写,即,可以避免无效改写。
具体地,字段筛选算符可以表示为“SELECT”,原始查询语句中的字段筛选算符和物化视图语句中的字段筛选算符可以为相同算符也可以为不同算符,本申请实施例不作限定。
在一个实施例中,基于前述方案,在目标功能算符为数据量约束算符/起始点算符的情况下,上述方法还包括:若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,终止改写操作。
可见,基于该实施例,可以实现的效果包括:可以在原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符时终止改写操作,避免在原始查询语句的查询范围大于物化视图语句的查询范围的情况下对原始查询语句进行错误的改写,保证了原始查询语句改写的正确性。
具体地,若原始查询语句中不包含数据量约束算符/起始点算符而物化视图语句中包含目标功能算符,则说明原始查询语句的查询范围大于物化视图语句的查询范围,在这种情况下,不适用于原始查询语句改写,应当终止改写操作。
此外,上述方法还可以包括:若原始查询语句中不包含目标功能算符且物化视图语句中不包含目标功能算符,则将原始查询语句确定为目标物化视图语句,并将物化视图语句确定为第一参考查询语句;在目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配的情况下,确定用于表征数据表名称和物化视图语句中第一查询字段之间关系的第一映射关系,以及用于表征数据表名称和原始查询语句中第二查询字段之间关系的第二映射关系,进而,根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句,进而,可以将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句;其中,目标功能算符为排序算符/数据量约束算符/起始点算符。
具体地,若物化视图语句表示为“SELECT t.a a0 FROM test t”,则说明数据表test的别名为数据表t,即,test→t;以及,说明需要查询t中的第一查询字段t.a,即,t→t.a;以及,说明第一查询字段t.a的别名为a0,即,t→t.a→a0。由于数据表test的别名为数据表t,因此,t.a中的t可以替换为test,得到test.a,进而,可以将t.a→a0中的t.a替换为test.a,得到第一映射关系test.a→t.a→a0。
若原始查询语句表示为“SELECT t1.a a1 FROM test t1” ,则说明数据表test的别名为数据表t1,即,test→t1;以及,说明需要查询t1中的第二查询字段t1.a,即,t1→t1.a;以及,说明第二查询字段t1.a的别名为a1,即,t1.a→a1。由于数据表test的别名为数据表t1,因此,t1.a中的t1可以替换为test,得到test.a。故得到第二映射关系test.a→t1.a→a1。
那么,基于此可以得知t1.a等价于 t.a,进而可以得知,t1.a→a0。基于此,根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句,可以理解为,将第一参考查询语句中的第二查询字段“t1.a” 改写为对应的第一查询字段“a0”,从而得到第二参考查询语句“SELECT a0 a1FROM mv”
在步骤S120中,若物化视图语句中包含目标功能算符,则将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句。
具体地,物化视图语句可以为预先设定好的语句;物化视图语句可以表示为mv;物化视图语句也是一种SQL语句;物化视图语句用于限定查询范围;不同的物化视图语句限定的查询范围可以不相同也可以部分相同;物化视图语句是预先挑选出的与原始查询语句相对应的语句。
在实际应用中,基于物化视图语句改写原始查询语句可以缩小查询范围,当基于物化视图语句改写原始查询语句之后,查询的范围可以被限定于物化视图语句的查询范围,避免原始查询语句从数据库的海量数据中查询所需的结果,只需要基于物化视图语句的查询范围进行查询即可,从而有利于提升查询效率。
举例来说,物化视图语句的表示方式可以形如以下示例:
示例5.0:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10 ORDER BY t.b ASC
示例6.0:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10 LIMIT 300
示例7.0:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10 OFFSET 124
示例8.0:
SELECT t1.id id1, t1.a1, t1.a2, t2.id id2, t2.b1, t2.b2 from jhk.t1left join jhk.t2 on t1.a2 = t2.b2 WHERE t1.id > 10
基于上述示例5.0,目标功能算符为排序算符(ORDER BY t.b ASC),若将目标功能算符从物化视图语句中移除,得到的目标物化视图语句可以表示为:
示例5.1:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10
基于上述示例6.0,目标功能算符为数据量约束算符(LIMIT 200),若将目标功能算符从物化视图语句中移除,得到的目标物化视图语句可以表示为:
示例6.1:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10
基于上述示例7.0,目标功能算符为起始点算符(OFFSET 123),若将目标功能算符从物化视图语句中移除,得到的目标物化视图语句可以表示为:
示例7.1:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10
此外,若物化视图语句的表示方式可以形如示例9.0,则直接将物化视图语句确定为目标物化视图语句。
示例9.0:
SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10
在步骤S130中,若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系。
具体地,目标物化视图语句的第一过滤条件可以理解为物化视图语句的查询目标,第一参考查询语句的第二过滤条件可以理解为原始查询语句的查询目标。举例来说,如示例1.0,第二过滤条件为“SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10”。举例来说,如示例5.0,第一过滤条件为“SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b> 10”。
此外,上述方法还可以包括:确定目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件;确定第一过滤条件的第一查询范围以及第二过滤条件的第二查询范围;若第一查询范围大于或等于第二查询范围,则判定目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配。
进一步地,上述方法还可以包括:若第二查询范围中的数据表名称(如,jrc.test11 AS t)是第一查询范围中的数据表名称(如,jrc.test11 AS t、jrc.test11 ASs)的子集、第二查询范围中的待查询字段(如,t1.a a1)是第一查询范围中的待查询字段(如,t1.a a1、t1.a a2)的子集、并且第二查询范围中的数据过滤阈值范围(如,WHERE t.b> 10)小于或等于第一查询范围中的数据过滤阈值范围(如,WHERE t.b > 11),则判定第一查询范围大于或等于第二查询范围。
此外,物化视图语句对应的第一映射关系可以用于表征数据表名称(如,test.a)和物化视图语句中第一查询字段(如,a0)之间的关系(如,test.a→t.a→a0),原始查询语句对应的第二映射关系可以用于表征数据表名称(如,test.a)和原始查询语句中第二查询字段(如,t1.a)之间的关系(如,test.a→t1.a→a1)。其中,第二查询字段可以用于表示指定的数据表名称(如,运动员花名册),第一查询字段可以用于表示指定的数据表名称中的一列数据的名称(如,年龄)/一行数据的名称(如,成绩)。
在一个实施例中,基于前述方案,在目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配时,上述方法还包括:当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,确定第一数据查询子句与第二数据查询子句分别对应的类型;若第一数据查询子句与第二数据查询子句均对应于向左关联类型,或者第一数据查询子句与第二数据查询子句均对应于向右关联类型,则确定第一数据查询子句和第二数据查询子句的交集子句;将第一参考查询语句中的第二数据查询子句改写为交集子句。
可见,基于该实施例,可以实现的效果包括:支持对于包含外连接关系的目标物化视图语句/第一参考查询语句的数据处理,提升数据处理的自动化程度及应用范围,可以支持多种情况,以提升数据处理效率,降低人工成本并提升数据处理后的查询语句的查询效率。
具体地,用于表征外连接关系的第一数据查询子句可以示例性地形如: “t1 leftjoin t2 where t1.column0 =*”、“t1 right join t2 where t2.column0 =*”、“(select... where t0.column0 = *) t1 left join t2”、“t1 right join (select ... wheret0.column0 =*) t2”。用于表征外连接关系的第二数据查询子句可以示例性地形如: “t1left join t2 where t1.column0 =*”、“t1 right join t2 where t2.column0 =*”、“(select ... where t0.column0 = *) t1 left join t2”、“t1 right join (select... where t0.column0 =*) t2”。其中,外连接关系可以表示为out join,out join至少可以包括向左关联类型left join、向右关联类型right join、左右互相关联类型full join。用于表征外连接关系的第一数据查询子句中至少包括left join/right join/full join。用于表征外连接关系的第二数据查询子句中至少包括left join/right join/full join。
举例来说,t1 left join t2用于表示为t2向t1关联,其中的t2是副表t1是主表,t1 left join t2用于将t2中与t1行名/列名相同的数据补充至t1中。t1 right join t2用于表示为t1向t2关联,其中的t1是副表t2是主表,t1 right join t2用于将t1中与t2行名/列名相同的数据补充至t2中。t1 full join t2用于表示t2和t1互为主表同时也互为副表。
此外,举例来说,若原始查询语句表示为示例4.0,物化视图语句表示为示例8.0。那么,第一数据查询子句表示为“from jhk.t1 left join jhk.t2 on t1.a2 = t2.b2WHERE t1.id > 100”,第二数据查询子句表示为“from jhk.t1 left join jhk.t2 ont1.a2 = t2.b2 WHERE t1.id > 10”,可见,第一数据查询子句的查询条件比第二数据查询子句的查询条件更严格,因此,第一数据查询子句和第二数据查询子句的交集子句可以表示为“from jhk.t1 left join jhk.t2 on t1.a2 = t2.b2 WHERE t1.id > 100”。
此外,可选的,确定第一数据查询子句和第二数据查询子句的交集子句,包括:确定第一数据查询子句的第一逻辑表达式(参阅下述示例10.0)和第二数据查询子句的第二逻辑表达式(参阅下述示例11.0);确定第一逻辑表达式的第一过滤条件和第二逻辑表达式的第二过滤条件;将第一过滤条件和第二过滤条件合并,并将合并结果(参阅下述示例12.0)转换为交集子句(参阅下述示例13.0)。
示例10.0
Calc(program: (expr#0..5=[{inputs}], expr#6=[10], expr#7=[>($t0, $t6)], proj#0..5=[{exprs}], $condition=[$t7]))
示例11.0
Calc(program: (expr#0..5=[{inputs}], expr#6=[100], expr#7=[>($t0, $t6)], proj#0..5=[{exprs}], $condition=[$t7]))
示例12.0
Calc(program: (expr#0..5=[{inputs}], expr#6=[100], expr#7=[>($t0, $t6)], proj#0..5=[{exprs}], $condition=[$t7]))
Calc(program: (expr#0..5=[{inputs}], expr#6=[10], expr#7=[>($t0, $t6)], proj#0..5=[{exprs}], $condition=[$t7]))
示例13.0
Calc(program: (expr#0..5=[{inputs}], expr#6=[100], expr#7=[>($t0, $t6)], proj#0..5=[{exprs}], $condition=[$t7]))
此外,上述方法还可以包括:当目标物化视图语句中不包含用于表征外连接关系的第一数据查询子句而第一参考查询语句中包含用于表征外连接关系的第二数据查询子句,或者,当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句而第一参考查询语句中不包含用于表征外连接关系的第二数据查询子句时,说明目标物化视图语句和第一参考查询语句的语句形式不相同,容易导致语句改写后的查询结果不准确,因此需要终止改写操作。
在一个实施例中,基于前述方案,上述方法还包括:若第一数据查询子句与第二数据查询子句均对应于左右互相关联类型,则终止改写操作。
可见,基于该实施例,可以实现的效果包括:可以在第一数据查询子句与第二数据查询子句均对应于左右互相关联类型时,终止改写,举例来说,在这种情况下,第一数据查询子句对应于左右互相关联类型,且第二数据查询子句对应于左右互相关联类型,而查询中所需要的是副表t2(参见表1)向主表t1(参见表2)关联,因此,关联结果(参见表3)中应该只包含主表t1的数据以及副表t2中的一部分数据(该部分数据对应的列名/行名存在于主表t1中),如果属于上述的左右互相关联类型,则t2也可以作为主表,如果t1向t2关联,则容易丢失所需要的t1中的一个或多个列名/行名(如,子女数量)对应的数据。故,这样改写容易导致改写后的查询语句查询到的结果不准确,终止此类情况的改写可以保证改写后的查询语句所查询到的结果是准确的。
表1
表2
表3
具体地,左右互相关联类型对应于标识符“FULL JOIN”,左右互相关联类型可以理解为第一数据查询子句/第二数据查询子句中的左表和右表互为对方的主表。
在一个实施例中,基于前述方案,确定第一数据查询子句和第二数据查询子句的交集子句之前,上述方法还包括:当第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句时,根据第一子查询语句从第二数据查询子句的主表中筛选出目标数据;将目标数据构成的数据表确定为新主表;将第二数据查询子句中的主表更新为新主表。
可见,基于该实施例,可以实现的效果包括:在支持外连接关系的基础上还可以支持对于外连接关系中主表的子查询,提升了数据处理的自动化程度及应用范围。
举例来说,若第二数据查询子句表示为“(select t1.id, t1.a, from t1 wheret1.id > 10) t1 left join t2 on t1.a = t2.b”,则其中用于限定主表“t1”筛选条件的第一子查询语句为“(select t1.id, t1.a, from t1 where t1.id > 10)”。主表筛选条件用于对主表进行数据筛选。
在一个实施例中,基于前述方案,上述方法还包括:当第二数据查询子句中存在用于限定副表筛选条件的第二子查询语句时,则终止改写操作;其中,副表筛选条件用于从第二数据查询子句的副表中筛选数据。
可见,基于该实施例,可以实现的效果包括:排除副表子查询的情况,当存在用于限定副表筛选条件的第二子查询语句时,若继续改写,则容易导致最终得到的目标查询语句的查询结果不准确,因此,这种情况不适用于改写,及时终止改写操作可以避免无效改写,从而避免浪费计算机资源。
具体地,若第二数据查询子句表示为“t1 left join (select t2.id, t2.b,from t2 where t2.id > 10) t2 on t1.a = t2.b” ,则其中用于限定副表“t2” 筛选条件的第二子查询语句为“(select t2.id, t2.b, from t2 where t2.id > 10)”,当出现这样的情况时,可以及时终止改写操作。
在步骤S140中,根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句。
具体地,第二参考查询语句可以包含目标物化视图语句中的查询字段,以使得第二参考查询语句可以基于查询字段直接查询目标物化视图语句,无需查询包含海量数据的数据仓库。
举例来说,根据示例1.1的第一映射关系和示例5.1的第二映射关系将第一参考查询语句(SELECT t1.a a1 FROM jrc.test11 AS t WHERE t.b > 10)中的查询字段(t1.a)改写为目标物化视图语句(SELECT t.a a0 FROM jrc.test11 AS t WHERE t.b > 10)中的查询字段(a0),得到的第二参考查询语句,可以表示为:
示例1.2:
SELECT a0 a1 FROM jrc.test11 AS t WHERE b0 > 10
在一个实施例中,基于前述方案,根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句之后,上述方法还包括:在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联。
可见,基于该实施例,可以实现的效果包括:通过对应于物化视图语句的标识符将物化视图语句和第二参考查询语句关联起来,方便直接查询物化视图语句,无需查询包含海量数据的数据仓库,可以提升查询效率。
具体地,对应于物化视图语句的标识符可以表示为“FROM mv”,可选的,也可以表示为“FROM mv1”、“FROM mv5”、“FROM mvS”等任意形式,本申请实施例不作限定。
在一个实施例中,基于前述方案,第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系,根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句,包括:根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句。
可见,基于该实施例,可以实现的效果包括:可以直接根据第一映射关系和第二映射关系实现对于第一参考查询语句中第二查询字段的改写,由于第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系。因此,基于第一映射关系和第二映射关系进行第一参考查询语句中第二查询字段的改写可以达到改写准确度更高的效果。
具体地,若物化视图语句表示为“SELECT t.a a0 FROM test t”,则说明数据表test的别名为数据表t,即,test→t;以及,说明需要查询t中的第一查询字段t.a,即,t→t.a;以及,说明第一查询字段t.a的别名为a0,即,t→t.a→a0。由于数据表test的别名为数据表t,因此,t.a中的t可以替换为test,得到test.a,进而,可以将t.a→a0中的t.a替换为test.a,得到第一映射关系test.a→t.a→a0。
若原始查询语句表示为“SELECT t1.a a1 FROM test t1” ,则说明数据表test的别名为数据表t1,即,test→t1;以及,说明需要查询t1中的第二查询字段t1.a,即,t1→t1.a;以及,说明第二查询字段t1.a的别名为a1,即,t1.a→a1。由于数据表test的别名为数据表t1,因此,t1.a中的t1可以替换为test,得到test.a。故得到第二映射关系test.a→t1.a→a1。
那么,基于此可以得知t1.a等价于 t.a,进而可以得知,t1.a→a0。基于此,根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句,可以理解为,将第一参考查询语句中的第二查询字段“t1.a” 改写为对应的第一查询字段“a0”,从而得到第二参考查询语句“SELECT a0 a1FROM mv”。
其中,需要说明的是,数据表t1中的数据多于数据表t中的数据,通过将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,可以使得改写得到的查询语句去查询数据表t而不需要再查询数据表t1,这样可以提升查询效率。
在步骤S150中,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
具体地,若目标功能算符为排序算符且排序算符中的字段名称(如,t1.a)并非来自于目标物化视图语句中的字段名称(如,a0),将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:根据第一映射关系和第二映射关系改写目标功能算符(如,ORDER BY t1.a)中的字段名称(如,t1.a),以使得改写后的目标功能算符(如,ORDER BY a0)中的字段名称(如,a0)来自于目标物化视图语句,进而,将改写后的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句(如,SELECT a0 a1, b0b1, c0 c1 FROM mv ORDER BY a0)。
此外,若目标功能算符为排序算符且排序算符中的字段名称来自于目标物化视图语句中的字段名称,则直接将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在一个实施例中,基于前述方案,将目标功能算符从原始查询语句中移除,得到第一参考查询语句之后,上述方法还包括:将从原始查询语句中移除的目标功能算符进行缓存;以及,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:将缓存的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
可见,基于该实施例,可以实现的效果包括:可以将移除的目标功能算符进行缓存,便于在需要还原的时候从读取速度更快的缓存中得到目标功能算符,以提升对于目标功能算符的还原效率。
具体地,将缓存的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句之后,上述方法还可以包括:将缓存的目标功能算符删除,避免已经无效的目标功能算符占用缓存空间,可以有利于提升缓存空间的利用率。
此外,上述方法还可以包括:将从物化视图语句中移除的目标功能算符进行缓存,并在得到目标查询语句后将缓存的目标功能算符还原至目标物化视图语句中的特定位置,得到原本的物化视图语句。
在一个实施例中,基于前述方案,若目标功能算符为排序算符,排序算符用于对查询到的数据进行排序,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:将排序算符还原至指定位置中的第一位置,得到目标查询语句。
可见,基于该实施例,可以实现的效果包括:可以在目标功能算符为排序算符时,将排序算符还原至相应的第一位置,从而实现对于排序算符的精准还原,降低原始查询语句改写后的算符还原出错率。
具体地,上述的第一位置以及下述的第二位置和第三位置可以预先设定的还原位置,第一位置、第二位置、第三位置可以通过目标功能算符的相邻标识符进行限定,举例来说,可以限定第一位置在相邻标识符FROM之后,可以限定第二位置在相邻标识符ORDER BY之后,可以限定第三位置在相邻标识符ORDER BY之后。此外,第一位置、第二位置、第三位置可以为相同位置也可以为不同位置,本申请实施例不作限定。
此外,将排序算符还原至指定位置中的第一位置,得到目标查询语句,包括:将缓存的排序算符还原至指定位置中的第一位置。
举例来说,基于上述示例1.1,目标功能算符为排序算符(ORDER BY t.b ASC),将排序算符还原至指定位置中的第一位置,得到目标查询语句之后,可以得到:
示例1.3:
SELECT a0 a1 FROM mv ORDER BY a0
基于上述示例2.0,目标功能算符为数据量约束算符(LIMIT 200),若将目标功能算符从原始查询语句中移除,得到的第一参考查询语句可以表示为:
示例2.2:
SELECT a0 a1 FROM mv LIMIT 200
基于上述示例3.0,目标功能算符为起始点算符(OFFSET 123),若将目标功能算符从原始查询语句中移除,得到的第一参考查询语句可以表示为:
示例3.2:
SELECT a0 a1 FROM mv OFFSET 123
在一个实施例中,基于前述方案,若目标功能算符为数据量约束算符,数据量约束算符用于约束最终输出的数据量,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
可见,基于该实施例,可以实现的效果包括:可以在目标功能算符为数据量约束算符时,将数据量约束算符还原至相应的第二位置,从而实现对于数据量约束算符的精准还原,降低原始查询语句改写后的算符还原出错率。
具体地,数据量约束算符用于约束最终输出的数据量,可以理解为,查询结果若包含100行数据,数据量约束算符指示的数值是10,则只输出100行数据中的10行数据,该10行数据可以为随机选取的10行数据,也可以为前10行数据。目标物化视图语句的数据量约束算符指示的第一数值可以理解为数据量约束算符中标识符对应的数值,例如,若数据量约束算符为LIMIT 300,那么,标识符LIMIT对应的数值为300,300可以作为数据量约束算符指示的第一数值。此外,及第二参考查询语句的数据量约束算符指示的第二数值也可以理解为数据量约束算符中标识符对应的数值,例如,若数据量约束算符为LIMIT 200,那么,标识符LIMIT对应的数值为200,200可以作为数据量约束算符指示的第二数值。若第一数值大于或等于第二数值,则可以将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。若第一数值小于第二数值,则说明物化视图最终输出的数据量(例如,10)比第二参考查询语句最终输出的数据量(例如,11)少,则容易导致最终查询得到的数据量比需求数据量少,因此需要终止改写操作。
此外,将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句,包括:将缓存的第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
在一个实施例中,基于前述方案,若目标功能算符为起始点算符,起始点算符用于标识从数据表中读取数据的起始位置,将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
可见,基于该实施例,可以实现的效果包括:可以在目标功能算符为起始点算符时,将起始点算符还原至相应的第三位置,从而实现对于起始点算符的精准还原,降低原始查询语句改写后的算符还原出错率。
具体地,起始点算符用于标识从数据表中读取数据的起始位置,可以理解为,从数据表的哪个位置开始读取数据。目标物化视图语句的起始点算符指示的第三数值可以理解为起始点算符中标识符对应的数值,例如,若起始点算符为OFFSET 124,那么,标识符OFFSET对应的数值为124,124可以作为起始点算符指示的第三数值。此外,及第二参考查询语句的起始点算符指示的第四数值也可以理解为起始点算符中标识符对应的数值,例如,若起始点算符为OFFSET 123,那么,标识符OFFSET对应的数值为123,123可以作为起始点算符指示的第四数值。若第三数值大于或等于第四数值,则可以将第二参考查询语句的第四数据量算符还原至指定位置中的第四位置。若第三数值小于第四数值,则说明物化视图读取数据的起始位置(如,105)晚于第二参考查询语句读取数据的起始位置(如,100),容易导致最后得到的查询结果不准确,因此终止改写操作。
此外,将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句,包括:将缓存的第二参考查询语句的起始点算符还原至指定位置中的第三位置。
进一步地,请参阅图2,图2示出的是根据本申请另一示例实施方式的数据处理方法的流程示意图。如图2所示,该数据处理方法包括:步骤S210~步骤S250。
步骤S210:确定目标物化视图语句和第一参考查询语句。
步骤S220:在目标物化视图语句中不包含第一数据查询子句,并且第一参考查询语句中不包含第二数据查询子句时,以及,在目标物化视图语句中包含第一数据查询子句,而第一参考查询语句中不包含第二数据查询子句时,若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系。
步骤S230:若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系。
步骤S240:根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句,在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联,第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系。
步骤S250:将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
需要说明的是,针对步骤S210,当目标功能算符为排序算符/数据量约束算符/起始点算符时,若原始查询语句中包含目标功能算符,步骤S210的具体实施方式包括:将目标功能算符从原始查询语句中移除,得到第一参考查询语句;在原始查询语句中,目标功能算符所处的位置在原始查询语句的字段筛选算符所处的位置之后。
当目标功能算符为排序算符时,若原始查询语句中不包含目标功能算符,步骤S210的具体实施方式包括:将原始查询语句确定为第一参考查询语句。
当目标功能算符为排序算符/数据量约束算符/起始点算符时,若物化视图语句中包含目标功能算符,步骤S210的具体实施方式包括:将目标功能算符从物化视图语句中移除,得到目标物化视图语句;在物化视图语句中,目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后。
当目标功能算符为排序算符/数据量约束算符/起始点算符时,若物化视图语句中不包含目标功能算符,步骤S210的具体实施方式包括:将物化视图语句确定为目标物化视图语句。
此外,若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,则终止改写操作,不执行步骤S210。
此外,在步骤S210之后,当目标物化视图语句中不包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,也可以终止改写操作,不执行步骤S210之后的步骤。
针对步骤S250,若目标功能算符为排序算符,步骤S250的具体实施方式包括:将排序算符还原至指定位置中的第一位置,得到目标查询语句。
若目标功能算符为数据量约束算符,步骤S250的具体实施方式包括:确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
若目标功能算符为起始点算符,步骤S250的具体实施方式包括:确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
需要说明的是,步骤S210~步骤S250与图1所示的各步骤及其实施例相对应,针对步骤S210~步骤S250的具体实施方式,请参阅图1所示的各步骤及其实施例,此处不再赘述。
可见,实施图2所示的方法,在原始查询语句/物化视图语句中包含目标功能算符时,也可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。此外,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
进一步地,请参阅图3,图3示出的是根据本申请又一示例实施方式的数据处理方法的流程示意图。如图3所示,该数据处理方法包括:步骤S310~步骤S390。
步骤S310:确定目标物化视图语句和第一参考查询语句。
步骤S320:当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,确定第一数据查询子句与第二数据查询子句分别对应的类型。若第一数据查询子句与第二数据查询子句均对应于向左关联类型/向右关联类型,并且第二数据查询子句中不存在用于限定主表筛选条件的第一子查询语句且不存在用于限定副表筛选条件的第二子查询语句,则执行步骤S330。若第一数据查询子句与第二数据查询子句均对应于向左关联类型/向右关联类型,并且第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句且不存在用于限定副表筛选条件的第二子查询语句,则执行步骤S340。若第一数据查询子句与第二数据查询子句均对应于向左关联类型/向右关联类型,并且第二数据查询子句中存在用于限定副表筛选条件的第二子查询语句,则执行步骤S390。若第一数据查询子句与第二数据查询子句均对应于左右互相关联类型,则执行步骤S390。
步骤S330:确定第一数据查询子句和第二数据查询子句的交集子句。
步骤S340:根据第一子查询语句从第二数据查询子句的主表中筛选出目标数据;将目标数据构成的数据表确定为新主表;将第二数据查询子句中的主表更新为新主表;确定第一数据查询子句和第二数据查询子句的交集子句。
步骤S350:将第一参考查询语句中的第二数据查询子句改写为交集子句。
步骤S360:若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系。
步骤S370:根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句,在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联,第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系。
步骤S380:将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
步骤S390:终止改写操作。
需要说明的是,针对步骤S310,当目标功能算符为排序算符/数据量约束算符/起始点算符时,若原始查询语句中包含目标功能算符,步骤S310的具体实施方式包括:将目标功能算符从原始查询语句中移除,得到第一参考查询语句;在原始查询语句中,目标功能算符所处的位置在原始查询语句的字段筛选算符所处的位置之后。
当目标功能算符为排序算符时,若原始查询语句中不包含目标功能算符,步骤S310的具体实施方式包括:将原始查询语句确定为第一参考查询语句。
当目标功能算符为排序算符/数据量约束算符/起始点算符时,若物化视图语句中包含目标功能算符,步骤S310的具体实施方式包括:将目标功能算符从物化视图语句中移除,得到目标物化视图语句;在物化视图语句中,目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后。
当目标功能算符为排序算符/数据量约束算符/起始点算符时,若物化视图语句中不包含目标功能算符,步骤S310的具体实施方式包括:将物化视图语句确定为目标物化视图语句。
此外,若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,则终止改写操作,不执行步骤S310。
此外,在步骤S310之后,当目标物化视图语句中不包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,也可以终止改写操作,不执行步骤S310之后的步骤。
针对步骤S380,若目标功能算符为排序算符,步骤S380的具体实施方式包括:将排序算符还原至指定位置中的第一位置,得到目标查询语句。
若目标功能算符为数据量约束算符,步骤S380的具体实施方式包括:确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
若目标功能算符为起始点算符,步骤S380的具体实施方式包括:确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
需要说明的是,步骤S310~步骤S390与图1所示的各步骤及其实施例相对应,针对步骤S310~步骤S390的具体实施方式,请参阅图1所示的各步骤及其实施例,此处不再赘述。
可见,实施图3所示的方法,在原始查询语句/物化视图语句中包含目标功能算符时,也可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。此外,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
可见,实施图2所示的方法,在原始查询语句/物化视图语句中包含目标功能算符时,也可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。此外,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
示例性介质
在本申请的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中的步骤。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书中描述的根据本申请各种示例性实施方式的步骤。
参考图4所示,描述了根据本申请的实施方式的用于实现上述方法的程序产品400,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
在介绍了本申请示例性实施方式的方法之后,接下来,对本申请示例性实施方式的介质进行说明。
具体地,终端设备的处理器执行上述计算机程序时用于实现如下步骤:在原始查询语句中包含目标功能算符时,将目标功能算符从原始查询语句中移除,得到第一参考查询语句;在物化视图语句中包含目标功能算符时,将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句;若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系;根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句;将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,则终止改写操作。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,确定第一数据查询子句与第二数据查询子句分别对应的类型;若第一数据查询子句与第二数据查询子句均对应于向左关联类型,或者第一数据查询子句与第二数据查询子句均对应于向右关联类型,则确定第一数据查询子句和第二数据查询子句的交集子句;将第一参考查询语句中的第二数据查询子句改写为交集子句。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:若第一数据查询子句与第二数据查询子句均对应于左右互相关联类型,则终止改写操作。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:当第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句时,根据第一子查询语句从第二数据查询子句的主表中筛选出目标数据;将目标数据构成的数据表确定为新主表;将第二数据查询子句中的主表更新为新主表。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:当第二数据查询子句中存在用于限定副表筛选条件的第二子查询语句时,则终止改写操作;其中,副表筛选条件用于从第二数据查询子句的副表中筛选数据。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:将从原始查询语句中移除的目标功能算符进行缓存,以及,将缓存的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:将排序算符还原至指定位置中的第一位置,得到目标查询语句。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
在本申请的一些实施方式中,终端设备的处理器执行上述计算机程序时还用于实现如下步骤:确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、RF等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本申请示例性实施方式的介质之后,接下来,参考图5对本申请示例性实施方式的数据处理装置进行说明。
请参阅图5,图5示出的是根据本申请一示例实施方式的数据处理装置的结构框图。如图5所示,本申请一示例实施方式的数据处理装置500包括:算符移除单元501、映射关系确定单元502、数据处理单元503、算符还原单元504,其中:
算符移除单元501,用于若原始查询语句中包含目标功能算符,则将目标功能算符从原始查询语句中移除,得到第一参考查询语句;
算符移除单元501,还用于若物化视图语句中包含目标功能算符,则将目标功能算符从物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将物化视图语句确定为目标物化视图语句;
映射关系确定单元502,用于若目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配,则确定物化视图语句对应的第一映射关系以及原始查询语句对应的第二映射关系;
数据处理单元503,用于根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句;
算符还原单元504,用于将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
可见,实施图5所示的装置,在原始查询语句/物化视图语句中包含目标功能算符时,也可以实现对于原始查询语句中数据的自动化处理,从而提升对于包含目标功能算符的原始查询语句的数据处理效率,进而还可以提升数据处理得到的目标查询语句的查询效率。此外,还可以在数据处理前实现对于目标功能算符的移除以及在数据处理后实现对于目标功能算符的精准还原,以提升数据处理的精度,使得包含目标功能算符的原始查询语句在数据处理后也可以保持原有功能。
在一个实施例中,基于前述方案,上述装置还包括:
缓存单元,用于在算符移除单元501将目标功能算符从原始查询语句中移除,得到第一参考查询语句之后,将所移除的目标功能算符进行缓存;
以及,算符还原单元504将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
算符还原单元504将缓存的目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句。
可见,实施该可选的实施例,可以将移除的目标功能算符进行缓存,便于在需要还原的时候从读取速度更快的缓存中得到目标功能算符,以提升对于目标功能算符的还原效率。
在一个实施例中,基于前述方案,上述装置还包括:
标识符增加单元,用于在数据处理单元503根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句之后,在第二参考查询语句中增加对应于物化视图语句的标识符;其中,标识符用于将第二参考查询语句和物化视图语句进行关联。
可见,实施该可选的实施例,通过对应于物化视图语句的标识符将物化视图语句和第二参考查询语句关联起来,方便直接查询物化视图语句,无需查询包含海量数据的数据仓库,可以提升查询效率。
在一个实施例中,基于前述方案,第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系,数据处理单元503根据第一映射关系和第二映射关系将第一参考查询语句中的查询字段改写为目标物化视图语句中的查询字段,得到第二参考查询语句,包括:
根据第一映射关系和第二映射关系将第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句。
可见,实施该可选的实施例,可以直接根据第一映射关系和第二映射关系实现对于第一参考查询语句中第二查询字段的改写,由于第一映射关系用于表征数据表名称和物化视图语句中第一查询字段之间的关系,第二映射关系用于表征数据表名称和原始查询语句中第二查询字段之间的关系。因此,基于第一映射关系和第二映射关系进行第一参考查询语句中第二查询字段的改写可以达到改写准确度更高的效果。
在一个实施例中,基于前述方案,上述装置还包括:
类型确定单元,用于在目标物化视图语句的第一过滤条件和第一参考查询语句的第二过滤条件匹配时,当目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且第一参考查询语句中包含用于表征外连接关系的第二数据查询子句时,确定第一数据查询子句与第二数据查询子句分别对应的类型;
交集子句确定单元,用于若第一数据查询子句与第二数据查询子句均对应于向左关联类型,或者第一数据查询子句与第二数据查询子句均对应于向右关联类型,则确定第一数据查询子句和第二数据查询子句的交集子句;
数据处理单元503,还用于将第一参考查询语句中的第二数据查询子句改写为交集子句。
可见,实施该可选的实施例,可以支持对于包含外连接关系的目标物化视图语句/第一参考查询语句的数据处理,提升数据处理的自动化程度及应用范围,可以支持多种情况,以提升数据处理效率,降低人工成本并提升数据处理后的查询语句的查询效率。
在一个实施例中,基于前述方案,上述装置还包括:
终止单元,用于若第一数据查询子句与第二数据查询子句均对应于左右互相关联类型,则终止改写操作。
可见,实施该可选的实施例,可以在第一数据查询子句与第二数据查询子句均对应于左右互相关联类型时,终止改写,在这种情况下改写容易导致改写后的查询语句查询到的结果不准确,终止此类情况的改写可以保证改写后的查询语句所查询到的结果是准确的。
在一个实施例中,基于前述方案,上述装置还包括:
主表更新单元,用于交集子句确定单元确定第一数据查询子句和第二数据查询子句的交集子句之前,当第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句时,根据第一子查询语句从第二数据查询子句的主表中筛选出目标数据;将目标数据构成的数据表确定为新主表;将第二数据查询子句中的主表更新为新主表。
可见,实施该可选的实施例,可以在支持外连接关系的基础上还可以支持对于外连接关系中主表的子查询,提升了数据处理的自动化程度及应用范围。
在一个实施例中,基于前述方案,其中:
终止单元,还用于当第二数据查询子句中存在用于限定副表筛选条件的第二子查询语句时,则终止改写操作;其中,副表筛选条件用于从第二数据查询子句的副表中筛选数据。
可见,实施该可选的实施例,可以排除副表子查询的情况,当存在用于限定副表筛选条件的第二子查询语句时,若继续改写,则容易导致最终得到的目标查询语句的查询结果不准确,因此,这种情况不适用于改写,及时终止改写操作可以避免无效改写,从而避免浪费计算机资源。
在一个实施例中,基于前述方案,在物化视图语句中,目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后;在原始查询语句中,目标功能算符所处的位置在原始查询语句的字段筛选算符所处的位置之后。
可见,实施该可选的实施例,可以仅在目标功能算符所处的位置在物化视图语句的字段筛选算符所处的位置之后时,才触发后续对于目标功能算符的移除以及对于原始查询语句的改写,避免在不适用改写的情况下也实现对于原始查询语句的改写,即,可以避免无效改写。
在一个实施例中,基于前述方案,若目标功能算符为排序算符,排序算符用于对查询到的数据进行排序,算符还原单元504将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
将排序算符还原至指定位置中的第一位置,得到目标查询语句。
可见,实施该可选的实施例,可以在目标功能算符为排序算符时,将排序算符还原至相应的第一位置,从而实现对于排序算符的精准还原,降低原始查询语句改写后的算符还原出错率。
在一个实施例中,基于前述方案,若目标功能算符为数据量约束算符,数据量约束算符用于约束最终输出的数据量,算符还原单元504将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
确定目标物化视图语句的数据量约束算符指示的第一数值以及第二参考查询语句的数据量约束算符指示的第二数值;
若第一数值大于或等于第二数值,则将第二参考查询语句的数据量约束算符还原至指定位置中的第二位置,得到目标查询语句。
可见,实施该可选的实施例,可以在目标功能算符为数据量约束算符时,将数据量约束算符还原至相应的第二位置,从而实现对于数据量约束算符的精准还原,降低原始查询语句改写后的算符还原出错率。
在一个实施例中,基于前述方案,若目标功能算符为起始点算符,起始点算符用于标识从数据表中读取数据的起始位置,算符还原单元504将目标功能算符还原至第二参考查询语句中的指定位置,得到目标查询语句,包括:
确定目标物化视图语句的起始点算符指示的第三数值以及第二参考查询语句的起始点算符指示的第四数值;
若第三数值大于或等于第四数值,则将第二参考查询语句的起始点算符还原至指定位置中的第三位置,得到目标查询语句。
可见,实施该可选的实施例,可以在目标功能算符为起始点算符时,将起始点算符还原至相应的第三位置,从而实现对于起始点算符的精准还原,降低原始查询语句改写后的算符还原出错率。
在一个实施例中,基于前述方案,在目标功能算符为数据量约束算符/起始点算符的情况下,其中:
终止单元,还用于若原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符,则终止改写操作。
可见,实施该可选的实施例,可以在原始查询语句中不包含目标功能算符而物化视图语句中包含目标功能算符时终止改写操作,避免在原始查询语句的查询范围大于物化视图语句的查询范围的情况下对原始查询语句进行错误的改写,保证了原始查询语句改写的正确性。
应当注意,尽管在上文详细描述中提及了数据处理装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
示例性电子设备
在介绍了本申请示例性实施方式的方法、介质和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
请参阅图6,图6示出的是根据本申请一示例实施方式的用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图6示出的电子设备的计算机系统600仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述示例性方法的描述部分中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1~图3中所示的各个步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
计算机系统600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与数据处理装置600交互的设备通信,和/或与使得该计算机系统600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,计算机系统600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图6所示,网络适配器660通过总线630与计算机系统600的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。
虽然已经参考若干具体实施方式描述了本申请的精神和原理,但是应该理解,本申请并不限于所发明的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
若原始查询语句中包含目标功能算符,则将所述目标功能算符从所述原始查询语句中移除,得到第一参考查询语句;其中,所述目标功能算符包括排序算符、数据量约束算符和起始点算符;
若物化视图语句中包含所述目标功能算符,则将所述目标功能算符从所述物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将所述物化视图语句确定为所述目标物化视图语句;
若所述目标物化视图语句的第一过滤条件和所述第一参考查询语句的第二过滤条件匹配,则确定所述物化视图语句对应的第一映射关系以及所述原始查询语句对应的第二映射关系;
根据所述第一映射关系和所述第二映射关系将所述第一参考查询语句中的查询字段改写为所述目标物化视图语句中的查询字段,得到第二参考查询语句;
将所述目标功能算符还原至所述第二参考查询语句中的指定位置,得到目标查询语句。
2.根据权利要求1所述的方法,其特征在于,将所述目标功能算符从所述原始查询语句中移除,得到第一参考查询语句之后,所述方法还包括:
将从所述原始查询语句中移除的所述目标功能算符进行缓存;
以及,将所述目标功能算符还原至所述第二参考查询语句中的指定位置,得到目标查询语句,包括:
将缓存的所述目标功能算符还原至所述第二参考查询语句中的指定位置,得到目标查询语句。
3.根据权利要求1所述的方法,其特征在于,根据所述第一映射关系和所述第二映射关系将所述第一参考查询语句中的查询字段改写为所述目标物化视图语句中的查询字段,得到第二参考查询语句之后,所述方法还包括:
在所述第二参考查询语句中增加对应于所述物化视图语句的标识符;其中,所述标识符用于将所述第二参考查询语句和所述物化视图语句进行关联。
4.根据权利要求1所述的方法,其特征在于,所述第一映射关系用于表征数据表名称和所述物化视图语句中第一查询字段之间的关系,所述第二映射关系用于表征所述数据表名称和所述原始查询语句中第二查询字段之间的关系,根据所述第一映射关系和所述第二映射关系将所述第一参考查询语句中的查询字段改写为所述目标物化视图语句中的查询字段,得到第二参考查询语句,包括:
根据所述第一映射关系和所述第二映射关系将所述第一参考查询语句中的第二查询字段改写为对应的第一查询字段,得到第二参考查询语句。
5.根据权利要求1所述的方法,其特征在于,在所述目标物化视图语句的第一过滤条件和所述第一参考查询语句的第二过滤条件匹配时,所述方法还包括:
当所述目标物化视图语句中包含用于表征外连接关系的第一数据查询子句,并且所述第一参考查询语句中包含用于表征所述外连接关系的第二数据查询子句时,确定所述第一数据查询子句与所述第二数据查询子句分别对应的类型;
若所述第一数据查询子句与所述第二数据查询子句均对应于向左关联类型,或者所述第一数据查询子句与所述第二数据查询子句均对应于向右关联类型,则确定所述第一数据查询子句和所述第二数据查询子句的交集子句;
将所述第一参考查询语句中的所述第二数据查询子句改写为所述交集子句。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述第一数据查询子句与所述第二数据查询子句均对应于左右互相关联类型,则终止改写操作。
7.根据权利要求5所述的方法,其特征在于,确定所述第一数据查询子句和所述第二数据查询子句的交集子句之前,所述方法还包括:
当所述第二数据查询子句中存在用于限定主表筛选条件的第一子查询语句时,根据所述第一子查询语句从所述第二数据查询子句的主表中筛选出目标数据;
将所述目标数据构成的数据表确定为新主表;
将所述第二数据查询子句中的主表更新为所述新主表。
8.一种数据处理装置,其特征在于,包括:
算符移除单元,用于若原始查询语句中包含目标功能算符,则将所述目标功能算符从所述原始查询语句中移除,得到第一参考查询语句;其中,所述目标功能算符包括排序算符、数据量约束算符和起始点算符;
所述算符移除单元,还用于若物化视图语句中包含所述目标功能算符,则将所述目标功能算符从所述物化视图语句中移除,得到目标物化视图语句;若物化视图语句中不包含目标功能算符,将所述物化视图语句确定为所述目标物化视图语句;
映射关系确定单元,用于若所述目标物化视图语句的第一过滤条件和所述第一参考查询语句的第二过滤条件匹配,则确定所述物化视图语句对应的第一映射关系以及所述原始查询语句对应的第二映射关系;
数据处理单元,用于根据所述第一映射关系和所述第二映射关系将所述第一参考查询语句中的查询字段改写为所述目标物化视图语句中的查询字段,得到第二参考查询语句;
算符还原单元,用于将所述目标功能算符还原至所述第二参考查询语句中的指定位置,得到目标查询语句。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如权利要求1至7中任一项所述的数据处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429301.0A CN114547086B (zh) | 2022-04-22 | 2022-04-22 | 数据处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429301.0A CN114547086B (zh) | 2022-04-22 | 2022-04-22 | 数据处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114547086A CN114547086A (zh) | 2022-05-27 |
CN114547086B true CN114547086B (zh) | 2022-07-22 |
Family
ID=81667028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210429301.0A Active CN114547086B (zh) | 2022-04-22 | 2022-04-22 | 数据处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114547086B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115630117B (zh) * | 2022-12-21 | 2023-04-07 | 网易(杭州)网络有限公司 | 数据分析方法、物化视图生成方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164455A (zh) * | 2011-12-15 | 2013-06-19 | 百度在线网络技术(北京)有限公司 | 数据库的优化方法及装置 |
CN112286964A (zh) * | 2020-11-19 | 2021-01-29 | 上海达梦数据库有限公司 | 一种sql语句优化方法、装置、设备及存储介质 |
CN114168619A (zh) * | 2022-02-09 | 2022-03-11 | 阿里巴巴达摩院(杭州)科技有限公司 | 语言转换模型的训练方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7111020B1 (en) * | 2002-03-26 | 2006-09-19 | Oracle International Corporation | Incremental refresh of materialized views containing rank function, and rewrite of queries containing rank or rownumber or min/max aggregate functions using such a materialized view |
US20040122814A1 (en) * | 2002-12-18 | 2004-06-24 | International Business Machines Corporation | Matching groupings, re-aggregation avoidance and comprehensive aggregate function derivation rules in query rewrites using materialized views |
US7899839B2 (en) * | 2007-07-12 | 2011-03-01 | Oracle International Corporation | Query rewrite with a remote object |
CN103714058B (zh) * | 2012-09-28 | 2017-05-17 | Sap欧洲公司 | 用于数据库查询优化的方法以及使用该方法的系统 |
US11194793B1 (en) * | 2019-06-25 | 2021-12-07 | Amazon Technologies, Inc. | Dynamically materialized views for sheets based data |
CN110688393B (zh) * | 2019-09-29 | 2021-01-29 | 星环信息科技(上海)股份有限公司 | 查询语句优化方法、装置、计算机设备及存储介质 |
US11086868B2 (en) * | 2019-10-29 | 2021-08-10 | Oracle International Corporation | Materialized view rewrite technique for one-sided outer-join queries |
CN113449067A (zh) * | 2020-03-25 | 2021-09-28 | 华为技术有限公司 | 一种数据查询方法、装置、设备及介质 |
CN111708805A (zh) * | 2020-06-18 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 数据查询方法、装置、电子设备及存储介质 |
US11216462B1 (en) * | 2020-08-14 | 2022-01-04 | Snowflake Inc. | Transient materialized view rewrite |
CN113742359A (zh) * | 2021-01-19 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种即席查询方法、装置、电子设备及存储介质 |
CN113111082B (zh) * | 2021-03-09 | 2022-01-14 | 深圳市教育信息技术中心(深圳市教育装备中心) | 结构化查询语句重写方法、装置、设备和介质 |
CN113297212A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 一种基于物化视图的Spark查询方法、装置及电子设备 |
CN113515539B (zh) * | 2021-06-02 | 2022-10-25 | 清华大学 | 一种数据库中数据的查询方法 |
CN113986933A (zh) * | 2021-09-03 | 2022-01-28 | 北京火山引擎科技有限公司 | 物化视图的创建方法、装置、存储介质及电子设备 |
-
2022
- 2022-04-22 CN CN202210429301.0A patent/CN114547086B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164455A (zh) * | 2011-12-15 | 2013-06-19 | 百度在线网络技术(北京)有限公司 | 数据库的优化方法及装置 |
CN112286964A (zh) * | 2020-11-19 | 2021-01-29 | 上海达梦数据库有限公司 | 一种sql语句优化方法、装置、设备及存储介质 |
CN114168619A (zh) * | 2022-02-09 | 2022-03-11 | 阿里巴巴达摩院(杭州)科技有限公司 | 语言转换模型的训练方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114547086A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
CN110688393B (zh) | 查询语句优化方法、装置、计算机设备及存储介质 | |
US10296497B2 (en) | Storing a key value to a deleted row based on key range density | |
CN111258966A (zh) | 一种数据去重方法、装置、设备及存储介质 | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN110688544A (zh) | 一种查询数据库的方法、设备及存储介质 | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
CN109471851B (zh) | 数据处理方法、装置、服务器和存储介质 | |
CN109947804B (zh) | 数据集合查询的优化方法、装置、服务器和存储介质 | |
US20170116272A1 (en) | Efficient data retrieval in staged use of in-memory cursor duration temporary tables | |
CN109241100B (zh) | 一种查询方法、装置、设备及存储介质 | |
CN114547086B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN110175128B (zh) | 一种相似代码案例获取方法、装置、设备和存储介质 | |
US8396858B2 (en) | Adding entries to an index based on use of the index | |
CN109815241B (zh) | 数据查询方法、装置、设备和存储介质 | |
CN115237920A (zh) | 面向负载的数据索引推荐方法及其装置、存储介质 | |
CN109543027B (zh) | 分页数据的获取方法及装置、设备及存储介质 | |
CN109408539B (zh) | 数据操作方法、装置、服务器和存储介质 | |
CN108549666B (zh) | 一种数据表的排序方法、装置、设备及存储介质 | |
WO2024078122A1 (zh) | 数据库表扫描的方法、装置以及设备 | |
CN109542912B (zh) | 区间数据存储方法、装置、服务器及存储介质 | |
CN111666302A (zh) | 用户排名的查询方法、装置、设备及存储介质 | |
US9280582B2 (en) | Optimization of join queries for related data | |
CN112835905B (zh) | 一种数组类型列的索引方法、装置、设备以及存储介质 | |
CN116010345A (zh) | 一种实现流批一体数据湖的表服务方案的方法、装置及设备 |
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 |