CN112740199A - 用于数据库查询优化的物化视图 - Google Patents

用于数据库查询优化的物化视图 Download PDF

Info

Publication number
CN112740199A
CN112740199A CN201980062104.6A CN201980062104A CN112740199A CN 112740199 A CN112740199 A CN 112740199A CN 201980062104 A CN201980062104 A CN 201980062104A CN 112740199 A CN112740199 A CN 112740199A
Authority
CN
China
Prior art keywords
query
database table
materialized view
original database
connection
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.)
Pending
Application number
CN201980062104.6A
Other languages
English (en)
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN112740199A publication Critical patent/CN112740199A/zh
Pending legal-status Critical Current

Links

Images

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/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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/23Updating
    • G06F16/2393Updating materialised views
    • 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/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • 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/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • 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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

通过如下方式生成数据库的物化视图以进行查询优化:创建包括左外连接或右外连接的物化视图的查询定义以生成连接数据库表,并将非空虚拟标记列添加到右原始数据库表中,其中,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于连接操作而不存在。物化视图使用具有所述虚拟标记列的所述连接数据库表的所述查询定义和查询结果来创建。为了删除所述原始数据库表中的至少一个表中的重复条目,使用“分组(group by)”命令来统合用于创建连接表的所述原始数据库表中的至少一个表。

Description

用于数据库查询优化的物化视图
相关申请案交叉申请
本申请要求2018年9月21日递交的发明名称为“用于数据库查询优化的物化视图(Materialized Views for Database Query Optimization)”的第62/734,667号美国临时申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本公开涉及数据库查询优化,更具体地,涉及一种在数据库应用中实现物化视图的创建和利用以进行查询优化的系统和方法。
背景技术
在传统数据仓库(如Oracle、Teradata和DB2数据库)中,应用通常提交复杂的结构化查询语言(structured query language,SQL)查询以进行数据分析。这种复杂的分析查询通常涉及多个表的连接,通过分组(group by)子句聚合不同维度的数据,然后进行排序。以下是一个典型的示例,仅计算2017年和2018年每个产品类别的产品月销售收入:
查询(Q):
select product_category,time_year,time_month,sum(sales_amount)
from Sales,Product,Time_dim
where Sales.product_id=Product.product_id
and Sales.sales_date_id=Time_dim.date_id
and time_year in(2017,2018)
group by item_category,time_year,time_month
使用数据仓库术语,销售(Sales)表通常称为“事实”表,因为销售表包含有关销售事务的信息。为了查找产品类别,必须将销售表与产品(Product)表进行连接。产品表通常称为“维”表,它是事实表的配套表,即本示例中销售表的配套表。连接后,能够了解更多关于销售事务的细节,例如产品详细信息等。同样地,分析可能需要用到其他维表。在上述示例中,需要加入时间(Time)维表来查找年、月甚至季度信息。在现实应用中,查询通常更为复杂,不仅仅是连接几个表。在许多情况下,事实表将与5-10个维表以及一个或多个过滤条件进行连接。
数据仓库/数据库中的连接(“join”)操作已知非常消耗时间和资源。“分组(groupby)”操作中需要进行排序(“sort”)操作,这也很昂贵。评估这种复杂的查询通常可能需要几分钟甚至几个小时才能完成。数据库供应商设计了各种技术来加快查询处理时间。例如,Oracle和IBM已使用物化视图来加快复杂分析查询的查询处理时间。
Oracle:
https://docs.oracle.com/cd/A97630 01/server.920/a96567/repmview.htm
IBM:
https://www.ibm.com/support/knowledgecenter/en/SSEPEK 10.0.0/perf/ src/tpc/d
b2z createmqt.html
物化视图可以通过避免重新计算昂贵的查询操作(例如连接、排序等)将查询性能提高几个数量级。物化视图是一个包含查询结果的数据库对象。例如,它可以是远程数据的本地副本,也可以是表或连接结果的行和/或列的子集。物化视图也可以是使用聚合函数的摘要,索引可以构建在任何列上。通过物化视图,查询结果缓存为一个具体的“物化”表,该表可能会不时从原始基表进行更新,使得访问效率更高,但代价是额外的存储以及某些数据可能过时。物化视图通常在数据仓库场景中使用,在这些场景中,频繁查询实际的基表可能会很昂贵。
但是,物化视图冗余存储可从其他数据派生的数据,因此它们消耗额外的存储空间,并且必须在源数据更改时进行更新以保持其与源数据的一致性,其中,更新定期执行(延迟或完全刷新)或者作为同一事务的一部分执行(立即刷新)。此外,物化视图需要自己的索引来实现高效访问。因此,如果物化视图有利于大量查询,特别是昂贵的查询,或工作负载中经常执行的查询,物化视图的益处相对于其成本将会最大化。许多研究和开发都集中在查询重写匹配/优化、增量物化视图维护以及涉及外连接时建议创建何种物化视图上。
物化视图技术可以通过以上查询为例来理解。考虑创建一个存储以下查询的查询结果的表物化视图(materialized view,MV):
Create table MV(product_category,time_year,time_month,sales_amount)as
(select product_category,time_year,time_month,sum(sales_amount)
from Sales,Product,Time_dim
where Sales.product_id=Product.product_id
and Sales.sales_date_id=Time_dim.date_id
group by item_category,time_year,time_month)
本质上,表MV预计算事实表与两个维表的连接,并对销售量执行预聚合。假设表MV填充查询结果后事实表和维表没有更新,一个重要的问题是,是否通过处理MV中的数据而不是执行复杂的连接和分组操作来响应查询Q。
之前已证明确实可以通过使用MV的内容来响应查询Q,但可能需要额外的操作。在本示例中,查询Q可以重写为:
select product_category,time_year,time_month,sales_amount
from MV
where time_year in(2017,2018)
通过此重写优化,查询Q的响应速度可以比执行复杂连接快得多。此外,MV的大小通常要小得多,因此读取此MV表所需的时间要短得多。
进一步采用这种方法,可以请求执行以下查询:查找2017年和2018年每个产品类别的总销售收入。在本示例中,查询写为:
select product_category,sum(sales_amount)
from MV
where time_year in(2017,2018)
group by item_category
重写的查询仍需要对较小的分组项集进行“分组(group by)”操作,但重写的查询仅访问MV表,因此避免了复杂的连接操作。
通过物化视图技术,可以更有效地处理复杂查询,因此它为复杂的数据分析应用提供了交互式响应时间能力。物化视图技术涉及查询匹配和执行包含(subsumption)测试,本质上证明了查询可以在逻辑上根据物化视图进行评估,并且不会丢失任何数据。
但是,在数据库和数据仓库中做出的几个假设在最近开发的数据湖方案中可能不再有效,其中,“读时模式”(“schema-on-read”)是数据湖方案中分析数据的主要方式。数据湖是自然格式的数据系统或存储库,可以是所有企业数据的单一存储,包括用于上报、可视化、分析以及机器学习等任务的数据。数据湖可以包括关系型数据库中的结构化数据、半结构化数据(例如XML、JSON等)、非结构化数据(例如电子邮件、文档、PDF)以及二进制数据(图像、音频、视频)。需要一种技术来扩展现有的数据湖方案,从而提供更好的物化视图创建和利用以进行查询优化。
在物化视图顾问领域进行了相关的研究和开发。例如:
https://www.ibm.com/support/knowledgecenter/zh/SSEPGG 9.5.0/ com.ibm.db2.1
uw.admin.perf.doc/doc/c0005144.html
以及
https://pdfs.semanticscholar.Org/bfde/fd687a5dl29657e75clbbb44925d54 fc9e0f.p
df
检查和分析了查询历史,并针对创建何种物化视图提出了建议。其思路是,推荐的物化视图可能会用于(通过查询重写/匹配)加快历史查询,以希望未来的查询看起来像历史版本。
在传统数据仓库中,维表通常需要具有主键,而事实表将具有可用于与维表连接的外键。在关系型数据库模型中,主键是对最小属性(列)集的特定选择,这些属性集唯一指定了关系(表)中的元组(行)。主键标识了哪些属性用来识别记录,在简单的情况下,它仅仅是一个属性、一个唯一的ID。另一方面,外键是一个表中唯一标识另一个表或同一个表中的行的字段或字段集合。外键在第二个表中定义,但它引用了第一个表中的主键或唯一键。
此外,在传统数据仓库中,可以很容易地实施为空性。空值是SQL中使用的特殊标记,用于指示数据库中不存在数据值。换句话说,空值表示缺少一个值,这与零值是不一样的。
Oracle文档:
https://docs.oracle.com/en/database/oracle/oracle-database/18/dwhsg/ advanced-
query-rewrite-materialized-views.html#GUID-C4 AA632B-09EE-4 A67-95B4-
D6DD7B18950A
支持在物化视图中定义左表和右表的左连接,其中,右表视为元组保留操作数,左表视为空值生成操作数。但是,左连接有一定的限制。例如,Oracle要求维表具有主键,以便显示在物化视图的左外连接中。SQL外连接,包括左外连接、右外连接和完全外连接,自动生成空值作为相关表中缺失值的占位符。例如,对于左外连接,将生成空值来代替出现在左外连接运算符右侧的表中缺失的行。主键具有强制唯一性,不可为空。或者,数据库设计者将在抽取转换与加载(extract,transform,and load,ETL)过程中实施唯一性和非空性,或者用户将被要求声明用于查询优化的“信息约束”(“informational constraints”)。其他限制包括要求物化视图包含连接条件而不包含过滤条件,要求主键或行号位于左连接右侧(空值生成操作数),以及列
聚合在左连接的左侧(元组保留操作数)。此外,Oracle文档中提到了查询匹配优化,但不包含物化视图的推荐。作为示例,以下是Oracle方法的示例:
Select SUM(s.amount_sold),p.prod_name
FROM sales s LEFT JOIN product p
ON s.prod_id=p.prod_id
GROUP BY p.prod_name
在SparkSQL和许多其他大型数据湖方案中,表没有主键或行号是很常见的,即列不能保证唯一性,也不能保证非空。用户通常在不指定模式或约束的情况下将数据加载到数据湖或数据仓库中。
因此,现有技术针对可以使用外连接创建的物化视图的类型施加了重大限制。例如,必须声明主键。物化视图顾问不会提出这类建议。此外,并没有采用查询结果集中的物化视图来加快查询响应时间。因此,传统的针对物化视图的创建提出建议并利用物化视图进行查询优化的方法是不够的。
在数据湖方案的另一方面,特别是在云环境中,存储成本和大小得到了显著提高,不像传统数据仓库,存储通常相当昂贵,并且空间有限。由于这一技术变化,云环境中的数据湖方案通常会在云存储中将查询及其结果集存储一段时间。例如,Snowflake Computing和AWS Athena都提供了这种查询历史和结果集存储能力。这些系统声称,如果新查询与存储的任何查询完全匹配且基础表尚未更新,相应的结果集可以立即返回给用户,从而可以节省大量的计算工作。但是,这些系统无法识别物化视图技术在使用存储的查询结果集响应查询时的潜在用途,特别是在查询与历史中的任何查询都不完全匹配的情况下。
希望解决上述缺点,并为数据湖查询技术提供其他改进。
发明内容
本文描述了各种示例,以简化的形式介绍将在具体实施方式中进一步描述的部分概念。本发明内容不旨在识别所要求保护的标的物的关键或本质特征,也不意图用于限制所要求保护的标的物的范围。
随着云存储越来越便宜,用户现在可以在云存储中将查询历史和查询结果存储更长时间。这为在查询结果集场景中创建和利用物化视图技术创造了机会,而在现有技术中是不可能的。例如,通过识别空值和重复项的处理需求,SQL查询重写优化可以扩展到建议创建包括左或右外连接的物化视图,而不对物化视图的定义进行任何限制,从而根据包括外连接的物化视图对外连接查询进行匹配和优化,并且在存在大型查询结果集存储的情况下采用物化视图技术来加快查询处理。
本文所述的系统和方法放宽了现有技术的限制,以数据湖方案中建议创建包括左或右外连接的物化视图,主键和非空性不受约束。现有技术中的已有技术手段不考虑通过创建物化视图来处理没有主键或列可为空的情况。因此,本文所述的系统和方法提供了一种更通用的方案。
通过解析和分析包括左或右外连接和统合(harmonized)维表(即无重复项)的多个查询,本文所述的系统和方法将推荐一个或多个具有外连接的物化视图,用于对空值和重复项进行特殊处理,由此未来的用户查询可以利用物化视图来加快查询处理时间。
在示例性实施例中,当用户提交包括左或右外连接和/或统合维表的查询Q时,其中,空值生成表没有主键或唯一键,并且可能包含空值,查询重写组件将根据包含左或右外连接并且可以对空值和统合表进行特殊处理的通用物化视图进行匹配和优化。本文所述的系统和方法提供了查询重写优化,其建议创建具有左或右外连接并且对空值和重复项进行处理的物化视图,并且不需要主键。当用户保留了查询历史及其相应结果集时,通过采用和增强物化视图技术来决定创建何种物化视图以及如何处理可能存在数千个查询结果集的查询匹配,可以进一步优化未来的查询。查询重写优化根据专门创建用于处理空值和重复项的物化视图对查询进行匹配,并采用物化视图技术处理查询结果集。通过本文所述的技术,可以使用物化视图评估广泛的用户查询类别,响应时间将显著缩短。
根据本公开的一个方面,提供了一种生成数据库物化视图以进行查询优化的计算机实现方法,包括:利用一个或多个处理器创建物化视图的查询定义以生成连接数据库表,所述物化视图包括左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个。在示例性实施例中,所述右原始数据库表是所述左外连接和所述右外连接中的一个中的一个的空值生成操作数。在示例性实施例中,所述一个或多个处理器将非空虚拟标记列添加到所述右原始数据库表中,其中,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于所述左外连接或右外连接操作而不存在。所述一个或多个处理器使用具有所述虚拟标记列的连接数据库表的查询定义和查询结果来创建物化视图。
根据本公开的另一方面,提供了一种生成数据库物化视图以进行查询优化的计算机实现方法,包括:利用一个或多个处理器创建物化视图的查询定义以生成连接数据库表,所述物化视图包括内连接、左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个。在示例性实施例中,内连接通常要求两个连接表中的每一行都具有匹配的列值。内连接通过根据连接谓词组合两个表的列值来创建新的结果表。查询将第一个表的每一行与第二个表的每一行进行比较,以查找满足连接谓词的所有行对。当通过匹配非空值来满足连接谓词时,表A和B的每对匹配行的列值将合并为结果行。在示例性实施例中,所述内连接中的所述左原始数据库表和所述右原始数据库表中的一个包含至少一个重复条目,其由所述一个或多个处理器通过“分组(groupby)”操作进行统合以删除所述至少一个重复条目。所述一个或多个处理器使用具有所述统合原始数据库表的连接数据库表的查询定义和查询结果来创建物化视图。
根据本公开的另一方面,提供了一种使用物化视图来优化内连接查询的计算机实现方法,所述物化视图包括左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个。所述方法包括:利用一个或多个处理器在物化视图中检索查询定义,所述物化视图包括所述左原始数据库表和所述右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个,其中,所述右原始数据库表中添加非空虚拟标记列,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于所述左外连接或右外连接操作而不存在。在示例性实施例中,所述右原始数据库表是所述左外连接和所述右外连接中的一个的空值生成操作数。所述方法包括:所述一个或多个处理器确定内连接查询结果是否包含在所述物化视图查询定义中,并且通过检索所述物化视图的查询结果并从所述物化视图的所述查询结果中过滤所有生成的空行,返回所述内连接查询结果。
根据本公开的另一方面,提供了一种通过包括数据库的统合表的物化视图来优化内连接查询的计算机实现方法。所述方法包括:利用一个或多个处理器在包括左原始数据库表和右原始数据库表的连接的物化视图中检索查询定义,其中,所述左原始数据库表和所述右原始数据库表通过“分组(group by)”操作进行统合,以删除所述左原始数据库表和所述右原始数据库表中的至少一个中的至少一个重复条目。所述方法包括:所述一个或多个处理器确定内连接查询结果是否包含在所述物化视图查询定义中,并且通过检索所述物化视图的查询结果,返回所述内连接查询结果。
根据本公开的另一方面,提供了一种处理设备,包括:包含指令的非瞬时性存储器以及与所述存储器进行通信的一个或多个处理器。所述一个或多个处理器执行所述指令以生成数据库物化视图从而进行查询优化。存储在所述非瞬时性存储器中的指令包括由所述一个或多个处理器执行的指令,用于创建物化视图的查询定义以生成连接数据库表,所述物化视图包括左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个,其中,所述右原始数据库表是所述左外连接和所述右外连接中的一个的空值生成操作数。在示例性实施例中,所述指令包括由所述一个或多个处理器执行的指令,用于将非空虚拟标记列添加到所述右原始数据库表中,其中,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于所述左外连接或右外连接操作而不存在。所述指令还包括由所述一个或多个处理器执行的指令,用于使用具有所述虚拟标记列的连接数据库表的查询定义和查询结果来创建物化视图。在其他示例性实施例中,所述存储器中的指令组合成功能处理模块,当由所述一个或多个处理器处理时,提供用于执行这些功能中的每一个功能的装置。
根据本公开的另一方面,提供了一种处理设备,包括:包含指令的非瞬时性存储器以及与所述存储器进行通信的一个或多个处理器。所述一个或多个处理器执行所述指令以生成数据库物化视图从而进行查询优化。存储在所述非瞬时性存储器中的指令包括由所述一个或多个处理器执行的指令,用于创建物化视图的查询定义以生成连接数据库表,所述物化视图包括内连接、左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个。在示例性实施例中,所述内连接中的所述左原始数据库表和所述右原始数据库表中的一个包含至少一个重复条目,其由所述一个或多个处理器通过执行包含“分组(group by)”操作的指令统合以删除所述至少一个重复条目。所述指令还包括由所述一个或多个处理器执行的指令,用于使用具有所述统合原始数据库表的连接数据库表的查询定义和查询结果来创建物化视图。在其他示例性实施例中,所述存储器中的指令组合成功能处理模块,当由所述一个或多个处理器处理时,提供用于执行这些功能中的每一个功能的装置。
根据本公开的另一方面,提供了一种处理设备,包括:包含指令的非瞬时性存储器以及与所述存储器进行通信的一个或多个处理器。所述一个或多个处理器执行所述指令以使用所述物化视图来优化内连接查询,所述物化视图包括左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个。存储在所述非瞬时性存储器中的指令包括由所述一个或多个处理器执行的指令,用于在包括所述左原始数据库表和所述右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个的物化视图中检索查询定义,其中,所述右原始数据库表中添加非空虚拟标记列,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于所述左外连接或右外连接操作而不存在。在示例性实施例中,所述右原始数据库表是所述左外连接和所述右外连接中的一个的空值生成操作数。所述指令还包括由所述一个或多个处理器执行的指令,用于确定内连接查询结果是否包含在所述物化视图查询定义中,并且通过检索所述物化视图的查询结果并从所述物化视图的所述查询结果中过滤所有生成的空行,返回所述内连接查询结果。在其他示例性实施例中,所述存储器中的指令组合成功能处理模块,当由所述一个或多个处理器处理时,提供用于执行这些功能中的每一个功能的装置。
根据本公开的另一方面,提供了一种处理设备,包括:包含指令的非瞬时性存储器以及与所述存储器进行通信的一个或多个处理器。所述一个或多个处理器执行所述指令以通过包括数据库的统合表的物化视图来优化内连接查询。存储在所述非瞬时性存储器中的指令包括由所述一个或多个处理器执行的指令,用于在包括左原始数据库表和右原始数据库表的连接的物化视图中检索查询定义,其中,所述左原始数据库表和所述右原始数据库表通过“分组(group by)”操作进行统合,以删除所述左原始数据库表和所述右原始数据库表中的至少一个中的至少一个重复条目。所述指令还包括由所述一个或多个处理器执行的指令,用于确定内连接查询结果是否包含在所述物化视图查询定义中,并且通过检索所述物化视图的查询结果,返回所述内连接查询结果。在其他示例性实施例中,所述存储器中的指令组合成功能处理模块,当由所述一个或多个处理器处理时,提供用于执行这些功能中的每一个功能的装置。
可选地,在前述任一实施例中,所述将非空虚拟标记列添加到所述右原始数据库表中包括:当所述左外连接或右外连接操作找到匹配时,插入具有第一值的整数常量值;当所述左外连接或右外连接操作中未找到匹配时,插入空条目。
可选地,在前述任一实施例中,添加到所述右原始数据库表中的虚拟标记列是所述创建的物化视图中的所述查询结果的一部分。
可选地,在前述任一实施例中,通过执行所述物化视图查询定义来存储所述创建的物化视图以及所述物化视图查询定义和所述查询结果。
可选地,在前述任一实施例中,创建所述物化视图包括:使用所述左原始数据库表和所述右原始数据库表的左外连接和右外连接中的一个来创建所述物化视图,主键、列值非空性和连接条件不受约束。
可选地,在前述任一实施例中,创建所述物化视图包括:连接原始数据库表,主键、列值非空性和连接条件不受约束。
可选地,在前述任一实施例中,所述方法还包括:将所述内连接查询中的数据库表与所述物化视图查询定义中的数据库表进行匹配。
可选地,在前述任一实施例中,所述方法还包括:将所述内连接查询中的连接条件匹配为所述物化视图查询定义中的连接条件的子集。
可选地,在前述任一实施例中,所述从所述物化视图的查询结果中过滤空行包括:添加谓词“列非空(“COL IS NOT NULL”),其中,COL是所述物化视图查询定义中添加的非空虚拟标记列中的列。
可选地,在前述任一实施例中,所述方法包括:通过在所述查询中应用过滤条件而不是在所述物化视图查询定义中应用过滤条件,从所述物化视图查询结果中过滤行。
可选地,在前述任一实施例中,所述方法还包括:根据包括所述左原始数据库表和所述右原始数据库表中的一个的左外连接的物化视图对外连接查询进行匹配和优化,主键、非空性和连接条件不受约束。
可选地,在前述任一实施例中,所述方法还包括:根据包括统合左原始数据库表和统合右原始数据库表中的一个的物化视图对外连接查询进行匹配和优化,主键、非空性和连接条件不受约束。
上述示例中的任何一个可以与上述其他示例中的任何一个或多个进行组合,以在本公开的范围内形成新的实施例。
附图说明
附图不一定按比例绘制。图中相似的数字可以在不同的视图中描述类似的组件。这些附图作为示例而非限定,概述了本文中所述的各种实施例。
图1示出了根据示例性实施例的一种用于推荐物化视图的计算机实现方法的示例性流程图。
图2示出了根据示例性实施例的一种通过物化视图进行查询重写匹配/优化的计算机实现方法的示例性流程图。
图3示出了销售表和产品表及其内容以及通过物化视图进行查询的示例。
图4示出了根据示例性实施例的销售表和产品表及其内容和查询,说明了如何修改所生成的包括左连接的物化视图以使其包括非空“标记”列。
图5示出了由于产品表中的重复条目而导致的不合理聚合结果的示例。
图6示出了根据示例性实施例的对查询进行修改以包括销售表和统合产品表(通过分组操作)的连接,以便说明产品表中的重复项。
图7示出了根据示例性实施例的通过左连接物化视图重写内连接查询,而不进行分组操作,以便识别不匹配的行。
图8示出了根据示例性实施例的通过左连接物化视图重写左连接查询。
图9示出了重写左连接查询,其中,物化视图保持不变,但用户查询现在是内连接而不是外连接。
图10示出了根据示例性实施例的一种生成数据库物化视图以进行查询优化的计算机实现方法的示例性流程图。
图11示出了根据示例性实施例的另一种生成数据库物化视图以进行查询优化的计算机实现方法的示例性流程图。
图12示出了一种使用物化视图来优化内连接查询的计算机实现方法的示例性流程图,所述物化视图包括左原始数据库表和右原始数据库表的左外连接或右原始数据库表和左原始数据库表的右外连接。
图13示出了一种通过包括数据库的统合表的物化视图来优化内连接查询的计算机实现方法的示例性流程图。
图14示出了根据示例性实施例的数据湖查询引擎的框图,其中,数据湖查询引擎用于在数据湖应用中响应用户查询而实现物化视图的创建和利用以进行查询优化。
具体实施方式
首先应理解,尽管下文提供了一个或多个实施例的说明性实施方式,但结合图1至图14所公开的系统和/或方法可以通过任何数量的技术来实现,无论是当前已知的或现有的技术。本公开不应限于以下所示的说明性实施方式、附图和技术,包括本文所示和所述的示例性设计和实施方式,而是可以在所附权利要求的范围内及其等效物的全部范围内进行修改。
下文参考附图进行说明。附图作为本文的一部分,示出了可实践的特定实施例。这些实施例进行了足够详细地说明,以使得本领域技术人员能够实践本文所述的系统和方法。应理解,可以使用其他实施例,并且在不脱离本公开的范围的情况下,可以进行结构、逻辑和电性改变。因此,以下对示例性实施例的说明不应理解为限定,并且本公开的范围由所附权利要求限定。
在一个实施例中,本文所述的功能或算法可以在软件中实现。软件可以由存储在计算机可读介质或计算机可读存储设备中的计算机执行指令组成,例如一个或多个非瞬时性存储器或其他类型的基于硬件的存储设备,无论是本地的或联网的。此外,这些功能对应于模块,模块可以是软件、硬件、固件或其任意组合。根据需要,多个功能可以在一个或多个模块中执行,所描述的实施例仅仅是示例。该软件可以在数字信号处理器、专用集成电路(ASIC)、微处理器或运行在计算机系统(例如个人计算机、服务器或其他计算机系统)中的其他类型的处理器中执行,从而将此类计算机系统转换为特定编程机器。
如上所述,现有技术中的已有技术手段通常不考虑通过创建物化视图来处理数据湖环境中没有主键或列可为空的情况。现有技术中的数据湖方案通常要求维表具有主键。相反,本文所述的系统和方法不需要声明主键,也不需要强制列不为空。本文所述的系统和方法提供了一种更通用的方案,因此使得通过物化视图能够处理更多的查询,从而显著提高查询性能。
此外,现有系统不将物化视图技术应用于查询结果集场景。相反,这些现有系统仅在查询与历史版本完全匹配时返回给定的结果集。本文所述的系统和方法通过采用物化视图技术进一步针对查询结果集场景提供了一种通用方案。因此,可以直接使用存储的结果集评估更多的查询,而无需执行需要昂贵查询处理(例如连接和分组)的复杂操作。本文所述的系统和方法显著加快了复杂的分析查询处理,特别是当涉及物化视图中的左或右外连接。自动生成涉及外连接的物化视图,几乎没有任何限制,进一步降低了系统使用的复杂性。在涉及大量查询和相应结果集的查询结果集场景中,所述的系统和方法显著加快了查询重写匹配优化和创建的速度。
图1示出了根据示例性实施例的一种用于推荐物化视图的计算机实现方法100的示例性流程图。当用户保留了查询历史及其相应结果集时,通过采用和增强物化视图技术来决定创建何种物化视图以及如何处理可能存在数千个查询结果集的查询匹配,可以进一步优化未来的查询。如图1所示,用于推荐物化视图的方法100从102处开始,在多个查询中检索用户查询历史。在104处,获取、解析和分析查询历史中的下一个查询。在106处,方法100确定下一个查询是否包括外连接或统合维表,以及空值生成表是否没有主键,列是否可为空。如果不满足这些条件,则方法100返回104,获取、解析和分析查询历史中的下一个查询。然而,如果满足106处的条件,则方法100进行到108,添加具有外连接的物化视图,其使用本文所述的技术对空值和重复项进行特殊处理。如果在110处确定查询历史中存在另一个查询,则方法100返回104以针对下一个查询重复步骤104至108。如果没有更多的查询可用于分析,在112处选择一个或多个对空值和重复项进行处理的物化视图,如本文所述。
图2示出了根据示例性实施例的一种通过推荐的物化视图进行查询重写匹配/优化的计算机实现方法的示例性流程图,其中,物化视图通过图1中的方法100确定。如图所示,在202处解析和优化用户查询Q。如果在204处用户查询中包括外连接或统合维表,则方法200在206处确定查询是否与推荐的物化视图相匹配。如果是,则在208处重写用户查询Q,并且在210处继续进行正常查询处理。如果不满足204和206处的条件,则不重写用户查询Q,并且继续进行正常查询处理。
在下文所述的示例性实施例中,通过解析和分析涉及外连接和统合维表(即无重复项)的多个查询,图1的方法100推荐一个或多个具有外连接的物化视图,其对空值和重复项进行特殊处理,由此,未来的用户查询可以利用物化视图,通过使用物化视图重写查询匹配/优化来加快查询处理时间,如图2所示。
为了通过操作来说明图1和图2中的方法100和200,现在将结合图3和图4描述一些具体示例。首先,考虑处理外连接时的挑战。
图3示出了销售表302和产品表304及其内容的示例。如图所示,销售表302包括销售ID(306)、日期ID(308)、销售金额(310)和产品ID(312)列,而行314对应于不同销售ID的数据。产品表304包括产品ID(316)、产品名称(318)、单价(320)和产品类别(322)列,而行324对应于不同产品ID的数据。物化视图MV 328创建如下:
SELECT s.amount_sold,p.prod_name
FROM Sales s LEFT JOIN Product p
ON s.prod_id=p.prod_id
查询1 326中的用户查询为:
SELECT s.amount_sold,p.prod_name
FROM Sales s INNER JOIN Product p
ON s.prod_id=p.prod_id
在308处示出了物化视图的内容,包括销售金额(330)和产品名称(332)列,这些列导出为左原始数据库表302和右原始数据库表304的左外连接(或相反,右原始数据库表304和左原始数据库表302的右外连接)。在本示例中,右原始数据库表304是左外连接或右外连接的空值生成操作数。在任何一种情况下,所得MV 328都不将空值334与基表304中内连接过程中由于表302和304之间的不匹配行而生成的空值336区分开来。空值是有可能的,并且是在数据库中允许的数据值,这意味着没有简单的方法将空值334与基表中由于销售表和产品表之间的不匹配情形而生成的空值336区分开来。因些,MV 328的内容不能用于响应用户查询1 326。为了通过物化视图利用查询重写,需要一种技术来识别由于不匹配的行而生成的空值,以便将这些空值与基表中的空值区分开来。
图1的方法100通过在104处获取、解析和分析用户查询历史中的查询,以在106处识别存在外连接并且表没有主键且可以包含空值的情况,从而来解决这个问题。如果满足这些条件,则推荐的物化视图包含具有非空“标记”列的外连接,该列允许对生成的空值进行“特殊处理”,以便由于外连接不匹配条件而对其进行区分。假设连接条件是等式谓词,空值生成操作数的连接列可以添加到物化视图的输出中,或者可以将非空列添加到空值生成操作数中。等式谓词意味着如果列具有相同的值,则将对它们进行比较。例如,如果第一个表格T(A整数)和第二个表格S(B整数)都具有整数数据类型的单列,则等式谓词将是“T.A=S.B,”,表示正在将T行的A列与另一S行的B列进行比较。然而,可以理解的是,添加连接列可能是不可取的,特别是如果涉及分组子句,并且连接列也应出现在分组子句中。
在示例性实施例中,现有的查询重写匹配/优化可以进行扩展和增强,以对108处添加到推荐的物化视图中的“标记”列进行匹配。例如,生成的包括左连接的物化视图402可以修改为包括非空列404(记为“标记”列),如图4中所示。在本示例中,非空虚拟标记列404添加到右原始数据库表中。在图4中,当从基表304中获取值(包括任何空值)时,列404包括ID值“1”。然而,如果不满足外连接条件(即存在不匹配的行),外连接将保留销售表302的行以及产品表304的空值。当由于销售表302和产品表304之间的不匹配条件而生成空值时,将在406处的列404中添加“<null value>”值。通过这个特殊的“标记”列404,可以很容易地识别哪些行是由于不匹配条件造成的。
使用具有虚拟标记列404的连接数据库表402的查询定义和相应查询结果来创建物化视图。例如,基于跟踪历史用户查询和使用左连接,方法100在步骤108处将建议使用查询408从存储的结果集中创建物化视图(materialized view,MV):
SELECT s.amount_sold,p.prod_name,p.ID
FROM Sales s LEFT JOIN
(SELECT 1as ID,prod_id,prod_name
FROM Product)p
ON s.prod_id=p.prod_id
通过图2的方法200和创建的物化视图(materialized view,MV)404,可以使用创建的MV 404将查询Q1重写为:
SELECT s.amount_sold,p.prod_name
FROM MV
WHERE ID is not null
根据本文所述的系统和方法的另一特征,可以认识到,在数据湖方案中,表通常可能包含重复项,因为没有声明任何主键或唯一键(如果允许这样的声明)。图5和图6所示的示例示出了存在重复行的情况下对行进行聚合的问题。
如图5所示,当维表(例如产品表)502具有重复行时,如504处所示,聚合结果(例如和(sum))是不现实的。由于重复条目504,响应于查询3(508)的聚合结果表506包括行510中的金额(600),而不是正确结果(300)。要处理这种情况,将修改连接以包括一个无重复项的“统合”维表。
如图6所示,对无重复项的产品表进行统合包括如602处所示的在正确查询中执行的“分组(group by)”操作。然后,通过使用统合表来写连接,在聚合结果表606的行604中获得正确结果(300)。
用于删除维表(例如图5和图6中的产品表502)中的重复项的方法包括增强查询重写匹配算法以处理统合表,并建议/提议创建涉及统合表的物化视图。在图6的示例中,正确查询602应包括销售表302与统合产品表的连接(通过按照产品ID进行分组的分组操作),以删除冗余。那么,行604中的聚合值(300)将是有意义的。
以下示例结合图7至图9进一步说明了如何在示例性实施例中对上述用于区分空值和处理重复表项的技术进行组合。
图7示出了通过左连接物化视图704重写内连接查询702,而不进行分组操作,以便识别不匹配的行。重写的查询706包括物化视图,包括在708和710处检查是否不满足外连接条件(即存在不匹配的行)。该检查识别由于不匹配的行而生成的空值,以便将这些空值与基表中的空值区分开来。
由于维表没有主键,因此上述统合维表用于实施唯一性。例如:
SELECT SUM(s.amount_sold),
gen_harmonized_l.prod_name
FROM sales s
LEFT JOIN
(SELECT p.prod_id,FIRST(p.prod_name)prod_name
FROM product p
GROUP BY p.prod_id)gen_harmonized_l
ON s.prod_id=gen_harmonized_l.prod_id
GROUP BY gen_harmonized_l.prod_name
在不对维表进行统合的情况下,当维表中存在与连接条件相匹配的重复项时,聚合函数可能会返回无效结果。另一方面,如上所述,当使用统合维表时,当prod_id不为空时,SUM(s.amount_sold)是有意义的。因此,希望使用带有标记的统合维表来标识由于左连接而生成的空值,如下所示:
SELECT gen_harmonized_l.id,SUM(s.amount_sold),
gen_harmonized_l.prod_name
FROM sales s
LEFT JOIN
(SELECT 1id,p.prod_id,FIRST(p.prod_name)prod_name
FROM product p
GROUP BY p.prod_id)gen_harmonized_l
ON s.prod_id=gen_harmonized_l.prod_id
GROUP BY gen_harmonized_l.id,gen_harmonized_l.prod_name
HAVING gen_harmonized_l.id is not null
当销售行与任何产品都不匹配时,左连接后的“id”列值为空,因此可以删除“id”中的整个空值组。在本示例中,即使prod_id为空或产品表中没有相应的匹配行,SUM(s.amount_sold)也是有意义的。
图8示出了通过左连接物化视图804重写左连接查询802。在图8中,查询802和物化视图804都包含左连接。重写的查询806在808处仅访问MV表,然后在810处进行过滤,并在812处进行分组操作。
在图9中,物化视图804保持不变,但用户查询902现在是内连接(而不是外连接),如904处所示。此外,统合维表包括906处的标记列。重写的查询908包括对销售表和产品表进行额外的“非空“(“IS NOT NULL”)过滤,以从先前存储的结果中删除生成的具有空值的行,如910处所示。如上文结合图1所述,解析和分析查询日志以推荐最合适的物化视图,并且从物化视图中优化结果。
在所示的示例中,应注意,选择框(select box)表示执行连接、过滤和投射的查询部分,而分组框(groupby box)表示执行分组和聚合函数的查询部分。在上述示例中,所述系统和方法仅处理选择框和分组框的查询匹配。通过这种表示法,在示例性实施例中执行查询匹配优化的详细算法可以基于包含(Subsumer)(物化视图(materialized view,MV)和被包含(Subsumee)(查询(query,Q))的模式描述为:
包含(MV)
-包含的模块化方案的形式为groupby-select。
-选择框的谓词只有左连接,无过滤。
-规范的模块化方案的形式为对应于左连接左侧的左子项,或对应于左连接右侧的右子项。
-选择框的右子项是一个统合表,其groupby谓词只有一列,选择输出中有一个值为1的标记字段。
-表的输出列表包含相应的groupby列和firstQ、first_value()、last()以及last_value()等一些函数。
-分组框中的聚合列从选择框的左子项开始。
被包含()
-与包含相同,只是选择框的谓词可以具有左/内连接和过滤,并且不需要具有标记字段。
选择框
-匹配条件
1.一对一的子项匹配。
2.每个被包含谓词与包含谓词相匹配/可从包含谓词派生得到,或者可从包含输出派生得到。
3.每个被包含输出都可以从包含输出派生得到。
补偿
-应用所有无匹配包含谓词的被包含谓词。
-如果被包含不涉及外连接,则将“列非空”(“column is NOT NULL”)应用于右子项的标记列。
-从包含输出派生得到所有被包含输出。
分组框
-匹配条件和补偿与无外连接时的匹配条件和补偿相同。
图10示出了根据示例性实施例的一种生成数据库物化视图以进行查询优化的方法1000的流程图。如图所示,方法1000从1002处开始,创建包括左原始数据库表和右原始数据库表的左外连接或者右原始数据库表和左原始数据库表的右外连接的物化视图的查询定义,以生成连接数据库表。右原始数据库表是左外连接或右外连接的空值生成操作数。为了将基表中的空值与内连接过程中由于表之间的不匹配行而生成的空值区分开来,在1004处,将非空虚拟标记列添加到右原始数据库表中,其中,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于左外连接或右外连接操作而不存在。将非空虚拟标记列添加到右原始数据库表中包括:当左外连接或右外连接操作找到匹配时,插入具有第一值的整数常量值;当左外连接或右连接操作中未找到匹配时,插入空条目。在示例性实施例中,添加到右原始数据库表中的虚拟标记列是所创建的物化视图中的查询结果的一部分。
在1006处,使用具有1004处添加的虚拟标记列的连接数据库表的查询定义和相应查询结果来创建物化视图。创建物化视图可以包括:利用上述技术,使用左原始数据库表和右原始数据库表的左外连接或者右外连接来创建物化视图,主键、列值非空性和连接条件不受约束。在1008处,通过执行物化视图查询定义来存储所创建的物化视图以及物化视图查询定义和查询结果。
图11示出了根据示例性实施例的另一种生成数据库物化视图以进行查询优化的方法1100的流程图。如图所示,方法1100从1102处开始,创建物化视图的查询定义以生成连接数据库表,所述物化视图包括内连接、左原始数据库表和右原始数据库表的左外连接或者右原始数据库表和左原始数据库表的右外连接。左原始数据库表或者右原始数据库表包含至少一个重复条目。在1104处,利用上述技术,通过分组操作对具有重复条目的原始数据库表进行统合,以删除重复条目。在1106处,使用具有统合原始数据库表的连接数据库表的查询定义和相应查询结果来创建物化视图。如上所述,创建物化视图包括:连接原始数据库表,主键、列值非空性和连接条件不受约束。在1108处,通过执行物化视图查询定义来存储所创建的物化视图以及物化视图查询定义和相应查询结果。
图12示出了一种使用物化视图来优化内连接查询的方法的流程图,所述物化视图包括左原始数据库表和右原始数据库表的左外连接或右原始数据库表和左原始数据库表的右外连接。如图所示,方法1200从1202处开始,在物化视图中检索查询定义,所述物化视图包括左原始数据库表和右原始数据库表的左外连接或者右原始数据库表和左原始数据库表的右外连接,其中,右原始数据库表中添加非空虚拟标记列,非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于左外连接或右外连接操作而不存在。在示例性实施例中,右原始数据库表是左外连接或右外连接的空值生成操作数。在1204处,方法1200确定内连接查询结果是否包含在物化视图查询定义中。在1206处,通过检索物化视图的查询结果并从物化视图的查询结果中过滤所有生成的空行,返回内连接查询结果。在示例性实施例中,从物化视图的查询结果中过滤空行包括:添加谓词“列非空”(“COL IS NOT NULL”),其中,COL是物化视图查询定义中添加的非空虚拟标记列中的列。在1208处,将内连接查询中的数据库表与物化视图查询定义中的数据库表进行匹配。在1210处,将内连接查询中的连接条件匹配为物化视图查询定义中的连接条件的子集。
如上所述,在图12的方法1200中,根据包括左原始数据库表或者右原始数据库表的左外连接的物化视图对外连接查询进行匹配和优化,主键、非空性和连接条件不受约束。
图13示出了一种通过包括数据库的统合表的物化视图来优化内连接查询的方法1300的流程图。如图所示,方法1300从1302处开始,在包括左原始数据库表和右原始数据库表的连接的物化视图中检索查询定义,其中,左原始数据库表和右原始数据库表通过“分组(group by)”操作进行统合,以删除左原始数据库表和/或右原始数据库表中的至少一个重复条目。方法1300在1304处确定内连接查询结果是否包含在物化视图查询定义中,并且在1306处通过检索物化视图的查询结果,返回内连接查询结果。在1308处,将内连接查询中的数据库表与物化视图查询定义中的数据库表进行匹配。在1310处,将内连接查询中的连接条件匹配为物化视图查询定义中的连接条件的子集。在1312处,通过在查询中应用过滤条件而不是在物化视图查询定义中应用过滤条件,从物化视图查询结果中过滤行。
如上所述,在图13的方法1300中,根据包括统合左原始数据库表或者统合右原始数据库表的物化视图对外连接查询进行匹配和优化,主键、非空性和连接条件不受约束。
本文中所述的系统和方法通过创建物化视图来处理数据湖环境中没有主键或列可为空的情况。虽然现有技术通常要求维表具有主键,但本文所述的系统和方法不要求声明主键或强制列非空。本文所述的系统和方法提供了一种更通用的方案,使得通过物化视图能够处理更多的查询,从而显著提高查询性能。
此外,现有系统不将物化视图技术应用于查询结果集场景。相反,现有系统仅在查询与历史查询完全匹配时返回之前的结果集。本文所述的系统和方法针对查询结果集场景提供了一种通用方案,因此更多的查询可以从先前保存的结果集中受益。因此,可以避免昂贵的查询处理(例如连接和分组)。
该通用方案包括:建议在数据湖方案中创建包含外连接的物化视图,主键和非空性不受约束,利用推荐的物化视图来更好地进行查询重写优化,并通过物化视图技术处理非常大型的查询结果集查询优化。
图14示出了根据示例性实施例的数据湖查询引擎形式的电路的框图,其中,数据湖查询引擎用于在数据湖应用中响应用户查询1401而实现物化视图的创建和利用以进行查询优化,如图1至图13所述。并非所有组件都需要在各实施例中使用。计算机1400形式的一个示例性的计算设备可以包括处理单元1402、存储器1404、可移动存储器1406和不可移动存储器1408。尽管示例性的计算设备图示和描述为计算机1400,在不同的实施例中,计算设备可以是不同的形式。例如,计算设备可以是智能手机、平板电脑、智能手表或其他与图14所图示或描述的计算设备包含相同或相似元件的计算设备。智能手机、平板电脑和智能手表等设备通常统称为移动设备或用户设备。此外,尽管各种数据存储元件示出为计算机1400的一部分,但存储也可以或可选地包括能够通过网络访问的基于云的存储,例如基于互联网或服务器的存储。
存储器1404可以包括易失性存储器1410和非易失性存储器1412。计算机1400还可以包括或可以访问包括各种计算机可读介质的计算环境,例如易失性存储器1410和非易失性存储器1412、可移动存储器1406和不可移动存储器1408。计算机存储包括随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)或电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存或其他存储器技术、只读光盘(compact disc read-only memory,CD-ROM)、数字通用光盘(digitalversatile disk,DVD)或其他光盘存储、卡带、磁带、磁盘存储或其他磁性存储设备,或者任何其他能够存储计算机可读指令的介质。
计算机1400可以包括或可以访问包括输入接口1414、输出接口1416和通信接口1418的计算环境。输出接口1416可以包括显示设备,例如触摸屏,也可以用作输入设备。输入接口1414可以包括触摸屏、触摸板、鼠标、键盘、摄像头、一个或多个设备特定按钮、一个或多个集成在计算机1400内或通过有线或无线数据连接耦合到计算机1400的传感器以及其他输入设备中的一个或多个。计算机1400可以通过通信连接在联网环境中工作,以连接到一个或多个远程计算机,例如包括用户数据1426以及存储的查询和查询结果集1428的数据湖1424中的数据库服务器。远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、对端设备或其他公共DFD网络交换机等。通信连接可以包括局域网(local area network,LAN)、广域网(wide area network,WAN)、蜂窝、Wi-Fi、蓝牙或其他网络。根据一个实施例,计算机1400的各种组件通过系统总线1420连接。
存储在计算机可读介质中的计算机可读指令可由计算机1400的处理单元1402执行,例如程序1422。在一些实施例中,程序1422包括软件,其在由处理单元1402执行时,执行根据本文包括的任何实施例的查询优化操作。硬盘、CD-ROM和RAM是包括非瞬时性计算机可读介质(如存储设备)的组件的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,只要认为载波是瞬时性的。存储还可以包括网络存储,例如存储区域网络(storagearea network,SAN)。计算机程序1422还可以包括指令模块,其在处理时使得处理单元1402执行本文所述的一个或多个方法或算法。
虽然上文详细描述了一些实施例,但其他修改是可能的。例如,图中所示的逻辑流程不需要按所示的特定顺序或先后顺序来获得预期的结果。可以在所述流程中提供其他步骤,也可以从所述流程中删除步骤,还可以将其他组件添加到所述系统中或从所述系统中删除组件。其他实施例可以在下文权利要求的范围内。
还应理解,包括一个或多个计算机可执行指令的软件有助于执行上文结合本公开的任何一个或所有步骤所述的处理和操作,其可以安装在一个或多个与本公开一致的计算设备中并随之销售。或者,软件可以获取加载到一个或多个计算设备中,包括从物理介质或分布式系统中获取软件,包括例如从软件创建者所拥有的服务器或者从软件创建者所使用但并非其所拥有的服务器中获取软件。软件可以存储在服务器上,以便通过互联网分发。
此外,本领域技术人员将理解,本公开在其应用中并不限于描述中指定的或附图中示出的结构和组件布置的细节。本文的实施例能够是其他实施例,并且能够通过各种方式实践或执行。此外,可以理解,本文使用的短语和术语是为了描述的目的,不应视为限制。本文使用的“包括”、“包含”或“具有”及其变体旨在包括下文列出的项目及其等效物以及附加项目。除非另有限制,术语“连接”、“耦合”、“安装”及其变体在本文中广泛使用,并包括直接和间接连接、耦合及安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。
根据所示实施例采用的说明性设备、系统和方法的组件可以至少部分地在数字电子电路、模拟电子电路或计算机硬件、固件、软件或其组合中实现。例如,这些组件可以实现为计算机程序产品,例如有形体现在信息载体或机器可读存储设备中的计算机程序、程序代码或计算机指令,由数据处理装置(例如可编程处理器、计算机或多台计算机)执行或控制数据处理装置的工作。
计算机程序可以通过任何形式的编程语言编写,包括编译或解释语言,并且可以通过任何形式部署,包括作为独立程序或作为模块、组件、子例程或其他适合在计算环境中使用的单元。计算机程序可以部署在一台计算机上或一个站点的多台计算机上执行,也可以分布在多个站点上,并通过通信网络互连。此外,用于实现本文所述技术的功能程序、代码和代码段可以很容易地由本文所述技术所属的技术领域中的技术人员解释为在权利要求的范围内。与说明性实施例相关联的方法步骤可以由一个或多个可编程处理器通过执行计算机程序、代码或指令来执行,以执行功能(例如,通过操作输入数据和/或生成输出)。方法步骤也可以由专用逻辑电路例如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC)执行,用于执行方法的装置可以实现为专用逻辑电路。
结合本文公开的实施例所描述的各种说明性逻辑块、模块和电路可以由通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或设计用于执行本文所述功能的其任意组合来实现或执行。通用处理器可以是微处理器,但是可选地,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器的组合、一个或多个微处理器与DSP核心结合,或任何其他此类配置。
适用于执行计算机程序的处理器例如包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机所需的元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),或者可操作地耦合到一个或多个用于存储数据的大容量存储设备以从其接收数据和/或向其传输数据。适用于包含计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,例如包括半导体存储器件,例如电可编程只读存储器ROM(EPROM),电可擦除可编程ROM(EEPROM)、闪存设备和数据存储磁盘(例如磁盘、内部硬盘、移动磁盘、磁光盘以及CD-ROM和DVD-ROM磁盘)。处理器和存储器可以通过专用逻辑电路补充或并入专用逻辑电路。
本领域技术人员理解,信息和信号可以通过各种不同技术和技术手段中的任何一种来表示。例如,在上文描述中可以引用的数据、指令、命令、信息、信号、比特位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合表示。
如本文所使用的,“机器可读介质”是指能够临时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-access memory,RAM)、只读存储器(read-onlymemory,ROM)、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其他类型的存储(例如可擦除可编程只读存储器(erasable programmable read-only memory,EEPROM))和/或其任何适当的组合。术语“机器可读介质”应视为包括能够存储处理器指令的单一介质或多种介质(例如集中式或分布式数据库,或关联缓存和服务器)。术语“机器可读介质”还应视为包括能够存储由一个或多个处理器1402执行的指令的任何介质或多个介质的组合,指令在由一个或多个处理器1402执行时,使得一个或多个处理器1402执行本文所述的任何一个或多个方法。因此,“机器可读介质”指单个存储装置或设备,以及包括多个存储装置或设备的“基于云的”存储系统或“数据湖”存储网络。本文使用的术语“机器可读介质”不包括信号,只要认为信号是非瞬时性的。
本领域技术人员将理解,尽管结合用于在数据湖应用中实现物化视图的创建和利用以进行查询优化的方法对示例性实施例进行了说明,但本公开并不限于此。例如,本文所述的技术可用于在其他数据库环境中创建和优化物化视图查询。
此外,在各种实施例中描述和示出为离散或独立的技术、系统、子系统和方法可以与其他系统、模块、技术或方法组合或集成,而不脱离本公开的范围。其他显示或描述为耦合或直接耦合或相互通信的组件可以通过某些接口、设备或中间组件是电性、机械或其他方式间接耦合或通信。其他改变、替换和变化的示例是本领域技术人员可意识到的,并且可以在不偏离本公开的精神和范围的情况下进行。
尽管结合其特定特征和实施例对本公开进行了说明,但是显然可以在不脱离本公开范围的情况下对其进行各种修改和组合。因此,本说明书和附图简单地视为由所附权利要求所限定的针对本公开的说明,并设想涵盖任何和所有属于本公开范围的修改、变化、组合或等价物。

Claims (18)

1.一种生成数据库的物化视图以进行查询优化的计算机实现方法,其特征在于,包括:
利用一个或多个处理器创建物化视图的查询定义以生成连接数据库表,所述物化视图包括左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个,其中,所述右原始数据库表是左外连接和右外连接中的一个的空值生成操作数;
利用所述一个或多个处理器将非空虚拟标记列添加到所述右原始数据库表中,其中,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于所述左外连接或右外连接操作而不存在;
利用所述一个或多个处理器,使用具有所述虚拟标记列的所述连接数据库表的所述查询定义和查询结果来创建物化视图。
2.据权利要求1所述的方法,其特征在于,将非空虚拟标记列添加到所述右原始数据库表中包括:当所述左外连接或所述右外连接操作找到匹配时,插入具有第一值的整数常量值;当所述左外连接或所述右外连接操作未找到匹配时,插入空条目。
3.根据权利要求1所述的方法,其特征在于,添加到所述右原始数据库表中的所述虚拟标记列是所述创建的物化视图中的所述查询结果的一部分。
4.根据权利要求1所述的方法,其特征在于,还包括:所述一个或多个处理器通过执行所述物化视图查询定义来存储所述创建的物化视图以及所述物化视图查询定义和所述查询结果。
5.根据权利要求1所述的方法,其特征在于,创建所述物化视图包括:使用所述所述左原始数据库表和所述右原始数据库表的左外连接和右外连接中的一个来创建所述物化视图,主键、列值非空性和连接条件不受约束。
6.一种生成数据库的物化视图以进行查询优化的计算机实现方法,其特征在于,包括:
利用一个或多个处理器创建物化视图的查询定义以生成连接数据库表,所述物化视图包括内连接、左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个的,其中,所述左原始数据库表和所述右原始数据库表中的一个包含至少一个重复条目;
利用所述一个或多个处理器,通过“分组(group by)”操作统合所述左原始数据库表和所述右原始数据库表中的一个,以删除所述至少一个重复条目;
利用所述一个或多个处理器,使用所述查询定义和具有所述统合原始数据库表的所述连接数据库表的查询结果来创建物化视图。
7.根据权利要求6所述的方法,其特征在于,还包括:所述一个或多个处理器通过执行所述物化视图查询定义来存储所述创建的物化视图以及所述物化视图查询定义和所述查询结果。
8.根据权利要求6所述的方法,其特征在于,创建所述物化视图包括:连接原始数据库表,主键、列值非空性和连接条件不受约束。
9.一种使用物化视图来优化内连接查询的计算机实现方法,所述物化视图包括左原始数据库表和右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个,其特征在于,所述方法包括:
利用一个或多个处理器在所述物化视图中检索查询定义,所述物化视图包括所述左原始数据库表和所述右原始数据库表的左外连接以及所述右原始数据库表和所述左原始数据库表的右外连接中的一个,其中,所述右原始数据库表中添加非空虚拟标记列,所述非空虚拟标记列的值指示空条目是否来自原始数据库表或经插入以指示行或列值由于所述左外连接或右外连接操作而不存在,其中,所述右原始数据库表是左外连接和右外连接中的一个的空值生成操作数;
利用所述一个或多个处理器确定内连接查询结果是否包含在所述物化视图查询定义中;
利用所述一个或多个处理器,通过检索所述物化视图的查询结果并从所述物化视图的所述查询结果中过滤所有生成的空行,返回所述内连接查询结果。
10.根据权利要求9所述的方法,其特征在于,还包括:所述一个或多个处理器将所述内连接查询中的数据库表与所述物化视图查询定义中的数据库表进行匹配。
11.根据权利要求9所述的方法,其特征在于,还包括:所述一个或多个处理器将所述内连接查询中的连接条件匹配为所述物化视图查询定义中的连接条件的子集。
12.根据权利要求9所述的方法,其特征在于,从所述物化视图的所述查询结果中过滤空行包括:添加谓词“COL IS NOT NULL”,其中,COL是所述物化视图查询定义中所述添加的非空虚拟标记列中的列。
13.根据权利要求9所述的方法,其特征在于,还包括:所述一个或多个处理器根据包括所述左原始数据库表和所述右原始数据库表中的一个的左外连接的物化视图对外连接查询进行匹配和优化,主键、非空性和连接条件不受约束。
14.一种使用包括数据库的统合表的物化视图来优化内连接查询的计算机实现方法,其特征在于,包括:
利用一个或多个处理器在包括左原始数据库表和右原始数据库表的连接的物化视图中检索查询定义,其中,所述左原始数据库表和所述右原始数据库表通过“分组(groupby)”操作进行统合,以删除所述左原始数据库表和所述右原始数据库表中的至少一个中的至少一个重复条目;
利用所述一个或多个处理器确定内连接查询结果是否包含在所述物化视图查询定义中;
利用所述一个或多个处理器,通过检索所述物化视图的查询结果,返回所述内连接查询结果。
15.根据权利要求14所述的方法,其特征在于,还包括:所述一个或多个处理器将所述内连接查询中的数据库表与所述物化视图查询定义中的数据库表进行匹配。
16.根据权利要求14所述的方法,其特征在于,还包括:所述一个或多个处理器将所述内连接查询中的连接条件匹配为所述物化视图查询定义中的连接条件的子集。
17.根据权利要求14所述的方法,其特征在于,还包括:所述一个或多个处理器通过在所述查询中应用过滤条件而不是在所述物化视图查询定义中应用过滤条件,从所述物化视图查询结果中过滤行。
18.根据权利要求14所述的方法,其特征在于,还包括:所述一个或多个处理器根据包括统合左原始数据库表和统合右原始数据库表中的一个的物化视图对外连接查询进行匹配和优化,主键、非空性和连接条件不受约束。
CN201980062104.6A 2018-09-21 2019-09-17 用于数据库查询优化的物化视图 Pending CN112740199A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862734667P 2018-09-21 2018-09-21
US62/734,667 2018-09-21
PCT/CN2019/106062 WO2020057471A1 (en) 2018-09-21 2019-09-17 Materialized views for database query optimization

Publications (1)

Publication Number Publication Date
CN112740199A true CN112740199A (zh) 2021-04-30

Family

ID=69888356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980062104.6A Pending CN112740199A (zh) 2018-09-21 2019-09-17 用于数据库查询优化的物化视图

Country Status (3)

Country Link
US (1) US20210019318A1 (zh)
CN (1) CN112740199A (zh)
WO (1) WO2020057471A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641685A (zh) * 2021-10-18 2021-11-12 中国民用航空总局第二研究所 一种用于引导航空器的数据处理系统
CN115630117A (zh) * 2022-12-21 2023-01-20 网易(杭州)网络有限公司 数据分析方法、物化视图生成方法及相关设备
WO2023029855A1 (zh) * 2021-09-03 2023-03-09 北京火山引擎科技有限公司 物化视图的创建方法、装置、存储介质及电子设备

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681691B2 (en) * 2018-11-19 2023-06-20 Numetric, Inc. Presenting updated data using persisting views
US11615107B2 (en) * 2019-07-26 2023-03-28 Oracle International Corporation Automatic generation of materialized views
US11086868B2 (en) * 2019-10-29 2021-08-10 Oracle International Corporation Materialized view rewrite technique for one-sided outer-join queries
US11995081B2 (en) * 2020-09-14 2024-05-28 Oracle International Corporation Predicting future query rewrite patterns for materialized views
CN113297212A (zh) * 2021-04-28 2021-08-24 上海淇玥信息技术有限公司 一种基于物化视图的Spark查询方法、装置及电子设备
US11934402B2 (en) * 2021-08-06 2024-03-19 Bank Of America Corporation System and method for generating optimized data queries to improve hardware efficiency and utilization
US11960484B2 (en) * 2021-10-13 2024-04-16 Thoughtspot, Inc. Identifying joins of tables of a database
US12008001B2 (en) * 2022-05-27 2024-06-11 Snowflake Inc. Overlap queries on a distributed database
CN116108076B (zh) * 2023-04-10 2023-07-18 之江实验室 物化视图查询方法、系统、设备及存储介质
CN116541377B (zh) * 2023-04-27 2024-05-14 阿里巴巴(中国)有限公司 任务的物化视图的处理方法、系统和电子设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134543A (en) * 1998-07-02 2000-10-17 Oracle Corporation Incremental maintenance of materialized views containing one-to-one lossless joins
US20010013030A1 (en) * 1998-03-27 2001-08-09 Informix Software, Inc. Defining and characterizing an analysis space for precomputed views
US6449606B1 (en) * 1998-12-28 2002-09-10 Oracle Corporation Using a materialized view to process a related query containing an antijoin
US6496819B1 (en) * 1998-12-28 2002-12-17 Oracle Corporation Rewriting a query in terms of a summary based on functional dependencies and join backs, and based on join derivability
US20060282424A1 (en) * 2005-06-14 2006-12-14 Microsoft Corporation View matching for materialized outer-join views
US20070192283A1 (en) * 2006-02-15 2007-08-16 Microsoft Corporation Maintenance of materialized outer-join views
US20090150366A1 (en) * 2007-12-06 2009-06-11 Oracle International Corporation Expression replacement in virtual columns
US20090177621A1 (en) * 2008-01-09 2009-07-09 Jian Le Database Query Optimization
CN101960454A (zh) * 2008-01-07 2011-01-26 奥里·赫恩施塔特 多维数据库体系
US20110022199A1 (en) * 2008-02-26 2011-01-27 Finsor Oy Method, apparatus and computer program product for detecting heart rate
US20120047117A1 (en) * 2010-08-06 2012-02-23 Ianywhere Solutions, Inc. Incremental Maintenance of Immediate Materialized Views with Outerjoins
US8359325B1 (en) * 2004-02-25 2013-01-22 Teradata Us, Inc. Determining materialized view coverage for join transactions

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449605B1 (en) * 1998-12-28 2002-09-10 Oracle Corporation Using a materialized view to process a related query containing a one to many lossless join

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010013030A1 (en) * 1998-03-27 2001-08-09 Informix Software, Inc. Defining and characterizing an analysis space for precomputed views
US6134543A (en) * 1998-07-02 2000-10-17 Oracle Corporation Incremental maintenance of materialized views containing one-to-one lossless joins
US6449606B1 (en) * 1998-12-28 2002-09-10 Oracle Corporation Using a materialized view to process a related query containing an antijoin
US6496819B1 (en) * 1998-12-28 2002-12-17 Oracle Corporation Rewriting a query in terms of a summary based on functional dependencies and join backs, and based on join derivability
US8359325B1 (en) * 2004-02-25 2013-01-22 Teradata Us, Inc. Determining materialized view coverage for join transactions
US20060282424A1 (en) * 2005-06-14 2006-12-14 Microsoft Corporation View matching for materialized outer-join views
US20070192283A1 (en) * 2006-02-15 2007-08-16 Microsoft Corporation Maintenance of materialized outer-join views
US20090150366A1 (en) * 2007-12-06 2009-06-11 Oracle International Corporation Expression replacement in virtual columns
CN101960454A (zh) * 2008-01-07 2011-01-26 奥里·赫恩施塔特 多维数据库体系
US20090177621A1 (en) * 2008-01-09 2009-07-09 Jian Le Database Query Optimization
US20110022199A1 (en) * 2008-02-26 2011-01-27 Finsor Oy Method, apparatus and computer program product for detecting heart rate
US20120047117A1 (en) * 2010-08-06 2012-02-23 Ianywhere Solutions, Inc. Incremental Maintenance of Immediate Materialized Views with Outerjoins

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023029855A1 (zh) * 2021-09-03 2023-03-09 北京火山引擎科技有限公司 物化视图的创建方法、装置、存储介质及电子设备
CN113641685A (zh) * 2021-10-18 2021-11-12 中国民用航空总局第二研究所 一种用于引导航空器的数据处理系统
CN113641685B (zh) * 2021-10-18 2022-04-08 中国民用航空总局第二研究所 一种用于引导航空器的数据处理系统
CN115630117A (zh) * 2022-12-21 2023-01-20 网易(杭州)网络有限公司 数据分析方法、物化视图生成方法及相关设备
CN115630117B (zh) * 2022-12-21 2023-04-07 网易(杭州)网络有限公司 数据分析方法、物化视图生成方法及相关设备

Also Published As

Publication number Publication date
US20210019318A1 (en) 2021-01-21
WO2020057471A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
CN112740199A (zh) 用于数据库查询优化的物化视图
Jain et al. Sqlshare: Results from a multi-year sql-as-a-service experiment
Deb Nath et al. Towards a programmable semantic extract-transform-load framework for semantic data warehouses
CN105518676B (zh) 查询任意半结构化数据的通用的sql增强以及高效地支持这样的增强的技术
US8433673B2 (en) System and method for supporting data warehouse metadata extension using an extender
US10157211B2 (en) Method and system for scoring data in a database
US20160321277A1 (en) Data constraints for polyglot data tiers
US9946705B2 (en) Query processing using a dimension table implemented as decompression dictionaries
Vajk et al. Automatic NoSQL schema development: A case study
US9098546B2 (en) Advanced business query language
Jukic et al. Database systems: Introduction to databases and data warehouses
US20190340272A1 (en) Systems and related methods for updating attributes of nodes and links in a hierarchical data structure
Konstantinou et al. Incremental export of relational database contents into RDF graphs
Wrembel A survey of managing the evolution of data warehouses
Schildgen et al. NotaQL is not a query language! it’s for data transformation on wide-column stores
CN115004171A (zh) 用于与模式无关的查询模板的生成和应用的系统和方法
US20240119069A1 (en) Model-based determination of change impact for groups of diverse data objects
US11921710B2 (en) Systems and methods for accessing data entities managed by a data processing system
Reniers et al. Schema design support for semi-structured data: Finding the sweet spot between NF and De-NF
Akhtar et al. Pro Apache Phoenix: An SQL Driver for HBase
CN116964571A (zh) 对rdbms中存储的聚合存储数据全面支持多值、多字段、多级别、多位置功能索引的技术
US20150120605A1 (en) Virtual data write-back for business intelligence reporting
Vaddeman Beginning Apache Pig
US20170031985A1 (en) Structural equivalence
Sharma et al. MAchine readable cataloging to MAchine understandable data with distributed big data management

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220215

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210430