CN115510139A - 数据查询方法和装置 - Google Patents
数据查询方法和装置 Download PDFInfo
- Publication number
- CN115510139A CN115510139A CN202211240617.1A CN202211240617A CN115510139A CN 115510139 A CN115510139 A CN 115510139A CN 202211240617 A CN202211240617 A CN 202211240617A CN 115510139 A CN115510139 A CN 115510139A
- Authority
- CN
- China
- Prior art keywords
- relational algebra
- batch
- query
- matched
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/24—Querying
- G06F16/248—Presentation of query results
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据查询方法,所述方法包括:接收批查询请求;将所述批查询请求转换为对应的关系代数表达式;检测是否存在与所述关系代数表达式匹配的物化规则;若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图;基于所述执行计划,从所述物化视图中获取所述批查询请求对应的查询结果。本申请的技术方案,以流物化批的方案能带来非常大的性能提升和资源节省,解决了批计算效率低下的问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据查询方法、装置、计算机设备及计算机可读存储介质。
背景技术
数据仓库等需要响应查询以进行数据分析。在应对频繁的批查询任务时,每次实际拉取的数据往往大于所需拉取的数据。如在每隔5分钟计算过去1小时数据的应用中,每隔5分钟要去拉过去1小时的数据进行计算,非常消耗性能,读放大非常严重,实际每次查询只有5分钟的数据增量,但是却要读1小时的数据。
发明内容
本申请的目的是提供一种数据查询方法、装置、计算机设备及计算机可读存储介质,以解决上述批查询任务导致的消耗性能严重,及读放大非常严重的问题。
本申请实施例的一个方面提供了一种数据查询方法,所述方法包括:
接收批查询请求;
将所述批查询请求转换为对应的关系代数表达式;
检测是否存在与所述关系代数表达式匹配的物化规则;
若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图;
基于所述执行计划,从所述物化视图中获取所述批查询请求对应的查询结果。
可选地,所述将所述批查询请求转换为对应的关系代数表达式包括:
通过解析器对所述批查询请求进行解析,得到SQL命令;
通过校验器对所述SQL命令进行校验,并在校验通过后,将所述SQL命令转换为对应的关系代数表达式。
可选地,所述检测是否存在与所述关系代数表达式匹配的物化规则的步骤之前,还包括:
判断所述关系代数表达式是否属于聚合计算;
若所述关系代数表达式属于聚合计算,则执行所述检测是否存在与所述关系代数表达式匹配的物化规则的步骤。
可选地,所述检测是否存在与所述关系代数表达式匹配的物化规则包括:
从所述关系代数表达式中提取输入参数;
判断所述输入参数是否为表值函数表达式;
若所述输入参数为表值函数表达式,则从所述输入参数中获取元数据;
检测基于物化规则创建好的物化视图的元数据中是否存在与所述获取到的元数据相匹配的元数据;
若存在与所述获取到的元数据相匹配的元数据,则判定存在与所述关系代数表达式匹配的物化规则。
可选地,所述判定存在与所述关系代数表达式匹配的物化规则的步骤之前,还包括:
获取与目标物化视图相关联的watermark,其中,所述目标物化视图为存在与所述获取到的元数据相匹配的元数据的物化视图;
检测所述watermark和所述批查询请求对应的查询时间是否匹配;
若所述watermark和所述批查询请求对应的查询时间匹配,则判定存在与所述关系代数表达式匹配的物化规则。
可选地,所述将所述关系代数表达式进行优化改写,得到执行计划包括:
通过优化器将所述关系代数表达式进行优化改写,得到执行计划。
可选地,所述方法还包括:
若不存在与所述关系代数表达式匹配的物化规则,则基于所述批查询请求进行批计算,得到所述批查询请求对应的查询结果。
本申请实施例的又一个方面提供了一种数据查询装置,所述装置包括:
接收模块,用于接收批查询请求;
转换模块,用于将所述批查询请求转换为对应的关系代数表达式;
检测模块,用于检测是否存在与所述关系代数表达式匹配的物化规则;
改写模块,用于若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图;
获取模块,用于基于所述执行计划,从所述物化视图中获取所述批查询请求对应的查询结果。
本申请实施例的又一个方面提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上所述数据查询方法的步骤。
本申请实施例的又一个方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的数据查询方法的步骤。
本申请实施例提供的数据查询方法、装置、计算机设备及计算机可读存储介质,包括以下技术优势:
在使用Flink做偏固定的批处理的时候,充分发挥Flink流批一体的优势,一份代码,两种计算,通过使用流计算对批计算进行实时物化,这样,在后续相同逻辑的批查询请求到达的时候,可以直接将批查询请求改写为用于查询物化视图的执行计划,进而可以直接查询物化视图返回批查询请求对应的查询结果。针对比较频繁的批查询任务,这种以流物化批的查询方案能带来非常大的性能提升和资源节省,解决了批计算效率低下的问题。
相对于诸如每隔5分钟计算过去1小时的批数据。本申请实施例使用流计算,借助于state的状态,每5分钟只要摄入增量数据增量计算即可,计算的资源消耗很低。
附图说明
图1示意性示出了根据本申请实施例的环境示意图;
图2示意性示出了根据本申请实施例一的数据查询方法的流程图;
图3示意性示出了根据本申请实施例一的将所述批查询请求转换为对应的关系代数表达式的步骤细化流程图;
图4示意性示出了根据本申请实施例一的检测是否存在与所述关系代数表达式匹配的物化规则的步骤细化流程图;
图5示意性示出了根据本申请实施例一判定存在与所述关系代数表达式匹配的物化规则的步骤流程图;
图6示意性示出了根据本申请实施例三的数据查询装置的框图;以及
图7示意性示出了根据本申请实施例四的适于实现数据查询方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
以下为本申请涉及到的一些术语解释:
Flink,属于分布式实时计算系统,用于对无界和有界数据流进行有状态(state)计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。其中,state一般指一个具体的任务(task)/算子(operator)的状态。
DDL(Data Definition Languages):数据定义语言,用于定义不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字包括create、drop、alter等。
DML(Data Manipulation Language):数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字包括insert、delete、udpate和select等。
物化视图(Projection),指从底层存储中获取数据的时候进行的投影操作。物化视图是查询优化的重要手段,其主要通过避免重复计算来优化查询速度。物化视图的原理是将中间查询的结果存储到磁盘上,在遇到相关的查询时可以避免重复计算而直接调用存储结果,通过数据库物化可以减少对底层存储的访问,加快访问速率。
HDFS(Hadoop Distributed File System),为Hadoop分布式文件系统。
流处理,用于处理(如查询)流数据。流数据通常为在线数据,无边界性。
批处理,用于处理批数据(大容量静态数据集)。批数据通常为离线数据,以batch为计量单位。
SQL(Structured Query Language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。
Kafka,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,也可以作为消息队列系统。Kafka可以用于Web/Nginx日志、访问日志,消息服务等。Kafka是按秒进行任务的计算和应用,用于实时推荐、实时计算等场景中。
HUDI(Apache HUDI),采用并管理通过DFS(HDFS或云存储)存储大型分析数据集,支持在当前数据表中进行更新操作。
Iceberg,是一个面向海量数据分析场景的开放表格式(Table Format)。开放表格式为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark...)之下,数据文件之上。Iceberg可以支持Spark、Trino、PrestoDB、Flink和Hive等计算引擎。
数据湖(Data Lake),是一个以原始格式存储数据的存储库或系统。
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策和信息的全局共享。其主要功能是将组织透过资讯系统之联机事务处理(OLTP)累积的大量信息,透过数据仓库理论所特有的信息储存架构,分析出有价值的信息。
湖仓一体(Lake House),提供一个统一的、可共享的数据底座,避免传统的数据湖、数据仓库之间的数据移动,将原始数据、加工清洗数据、模型化数据,共同存储于一体化的“湖仓”中,既能面向业务实现高并发、精准化、高性能的历史数据、实时数据的查询服务,又能承载分析报表、批处理、数据挖掘等分析型业务。
Calcite架构,是一个动态数据管理框架。它包含许多组成典型数据块管理系统的部分,但省略了存储原语。它提供了行业标准的SQL解析器和验证器,具有可插入规则和成本函数的可自定义优化器,逻辑和物理代数运算符,从SQL到代数(以及代数到SQL)的各种转换。
Lambda架构,由Storm的作者Nathan Marz提出的实时大数据处理框架。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop、Kafka、Storm、Spark、Hbase等各类大数据组件。
解析器(Parser),用于词法分析、语义语法分析、优化和执行代码生成等,执行结果为语法树。
检验器(Validator),用于对表名、字段名、函数名、数据类型等进行校验。
优化器(Optimizer),又称查询优化器,是负责生成SQL语句的有效执行计划的组件。
水印(watermark),是Flink为处理EventTime窗口计算提出的一种机制,本质上是一种时间戳。
commit,在提交事务时,将预提交的文件移动到实际的目标目录。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面对相关技术进行说明:
随着基于HUDI/iceberg的湖仓一体概念的提出,数据湖基本统一了流批两种场景下的数据存储,解决了Lamba架构下存储一致性问题。同时,在计算引擎的流批统一上,可以使用Flink SQL进行一些场景的探索。例如,是否可以使得离线SQL能够达到实时的数据产出效率,秒级出结果,资源也能可控,同时实时Flink SQL能像离线SQL一样灵活,无需关注存储,免运维,随意修改SQL逻辑,自由回溯数据。
为此,对实时DQC(数据质量监控)的业务场景进行了跟踪,实时DQC场景是对数据做到分钟级别的监控,做同/环比指标比较。同时为了避免短区间数据的不平滑,采用滑动窗口的计算方式,如每隔5分钟计算过去1小时的数据。原始数据落入HUDI,如果使用离线DQC的计算方式,每隔5分钟要去拉过去1小时的数据进行计算,非常消耗性能,读放大非常严重,实际每次查询只有5分钟的数据增量,但是却要读1小时的数据。如果使用流计算,借助于state的状态,每5分钟只要摄入增量数据增量计算即可,结果写出到用户存储,计算的资源消耗很低。
有鉴于此,本申请提出了基于流批一体的数据查询方案。具体的:可以结合流批一体的技术,把流批计算各自的优势集中到一起。借鉴clickhouse的物化视图思想,依托于Flink+HUDI的流批一体架构,可以实现基于Flink的数据查询方案,在一些偏固定场景的批查询上,使用流式物化的能力来加速批查询。
在使用Flink做偏固定的批处理的时候,充分发挥Flink流批一体的优势,一份代码,两种计算。使用流计算对批计算进行实时物化,改造了Flink批查询sql优化器,支持物化规则改写查询,在批查询到达的时候,直接查询物化表返回结果,同时流批统一存储可以使用HUDI的方案,支持升级update,物化表也是直接落HUDI。针对比较频繁的window查询等场景,这种以流物化批的方案能带来非常大的性能提升和资源节省,解决了批计算window(尤其是hop)效率低下的问题。
下面提供本申请的示例性应用环境。图1示意性示出了根据本申请实施例的环境应用示意图。
服务平台2,可以提供数据查询等服务,其可以是单个服务器、服务器集群或云计算服务中心。其中,服务平台2内置有数据查询装置10,用于加速查询。
终端4,可以被配置发送查询请求等。终端可以是任意类型的计算设备,诸如智能手机、平板设备、膝上型计算机、智能电视、车载终端等。终端和服务平台2可以通过网络连接。网络可以包括各种网络设备,例如路由器、交换机、多路复用器、集线器、调制解调器、网桥、中继器、防火墙和/或代理设备等。网络可以包括物理链路,例如同轴电缆链路、双绞线电缆链路、光纤链路及其组合和/或类似物。网络可以包括无线链路,例如蜂窝链路、卫星链路、Wi-Fi链路和/或类似物。
需要说明的是,图1中的终端和服务器的数量仅是示意性的,不用于限制本申请的专利保护范围。
下面,将在上述示例性应用环境下提供若干个实施例,为便于理解,下面将以图1中的数据查询装置10为执行主体来说明数据查询方案。
实施例一
图2示意性示出了本申请实施例一的数据查询方法的流程图,包括步骤S20~步骤S24,具体说明如下:
步骤S20,接收批查询请求。
具体地,在实际应用中,当用户需要进行数据查询时,用户可以在客户端中主动触发批查询请求,并将所述批查询请求发送至数据查询装置10,以便数据查询装置10可以接收到批查询请求。在另一实施方式中,也可以通过定时任务触发批查询请求,并将批查询请发送至数据查询装置10,以便数据查询装置10可以接收到批查询请求。
其中,所述批查询请求用于查询历史时间段内的数据增量,所述历史时间段可以根据实际情况进行设定与修改。例如,所述批查询请求为用于查询过去5分钟的数据增量。在本实施例中,所述批查询请求可以携带有多个信息,如查询命令、请求类型(如Flink类型)、用户标识(用户名)、查询时间等。
在本实施例中,所述批查询请求优选为SQL查询语言组成的。
步骤S21,将所述批查询请求转换为对应的关系代数表达式。
具体地,数据查询装置10在接收到批查询请求后,会调用数据转换模块将将所述批查询请求转换为对应的关系代数表达式,以便后续可以方便快捷地查询到所述批查询请求对应的查询结果。
其中,所述关系代数表达式(RelNode)是一种更加高效的数据查询结构,所述关系代数表达式主要有TableScan,Project,Sort,Join等。每一个SQL语句都有一个对应的关系代数表达式,例如,where和having对应Filter;selectList对应Project;orderBy、offset、fetch对应着Sort;From对应着TableScan/Join等等。
在一示例性的实施方式中,参照图3,所述将所述批查询请求转换为对应的关系代数表达式包括:
步骤S30,通过解析器对所述批查询请求进行解析,得到SQL命令。
具体地,数据查询装置10在接收到批查询请求后,会调用解析器对所述批查询请求进行解析,得到SQL命令。其中,所述SQL命令为SqlNode结构。SqlNode是Calcite中用于表达关系运算的中间数据结构,其可以是语法数形式。
步骤S31,通过校验器对所述SQL命令进行校验,并在校验通过后,将所述SQL命令转换为对应的关系代数表达式。
具体地,据查询装置10在得到SQL命令后,会继续调用校验器对所述SQL命令中包含的表名、字段名、函数名、数据类型等进行校验,并在校验通过后,将所述SQL命令转换为对应的关系代数表达式。
步骤S22,检测是否存在与所述关系代数表达式匹配的物化规则。
具体地,所述物化规则为用于对批数据进行聚合运算以创建物化视图的规则。在本实施例中,所述物化规则可以参考calcite物化规则,并且支持TVF语法。
在本实施例中,在检测到存在与所述关系代数表达式匹配的物化规则时,可以对所述批查询请求进行查询改写,以便可以通过预先创建好的物化视图对所述批查询请求进行响应,得到查询结果。当检测到不存在与所述关系代数表达式匹配的物化规则时,则会直接在原始的数据表中执行该批查询请求,从而得到查询结果。
在一示例性的实施方式中,为了提高数据查询效率,所述检测是否存在与所述关系代数表达式匹配的物化规则的步骤之前,还包括:判断所述关系代数表达式是否属于聚合计算;若所述关系代数表达式属于聚合计算,则执行步骤S22;若所述关系代数表达式不属于聚合计算,则放弃继续执行后续的数据查询步骤,而是直接在原始的数据表中执行该批查询请求,从而得到查询结果。
在本实施例中,由于通过物化视图获取所述批查询请求对应的查询结果的方式,其通过批查询请求转换得到的关系代数表达式必然会包括聚合计算的关系代数表达式。因此,在本实施例中,在执行检测是否存在与所述关系代数表达式匹配的物化规则的步骤之前,可以先判断所述关系代数表达式是否属于聚合计算,当其不属于聚合计算,则表明该批查询请求不可能有对应的物化视图来响应该批查询请求,进而也就不必执行后续流程,从而省略执行后续流程所需要花费的时间,提高数据查询效率。
在一示例性的实施方式中,参阅图4,所述检测是否存在与所述关系代数表达式匹配的物化规则包括:步骤S40,从所述关系代数表达式中提取输入参数;步骤S41,判断所述输入参数是否为表值函数表达式;步骤S42,若所述输入参数为表值函数表达式,则从所述输入参数中获取元数据;步骤S43,检测基于物化规则创建好的物化视图的元数据中是否存在与所述获取到的元数据相匹配的元数据;步骤S44,若存在与所述获取到的元数据相匹配的元数据,则判定存在与所述关系代数表达式匹配的物化规则。
在本实施例中,数据查询装置10在判定是否存在与所述关系代数表达式匹配的物化规则时,会首先调用物化规则匹配判定模块(TvfAggMvRule)从所述关系代数表达式中提取出其中包含的输入参数,然后会进一步判断该输入参数是否为表值函数(table-value-function,TVF)表达式。当判定出该输入参数为表值函数表达式,则可以从中抽取出表值函数表达式的元数据(TVF表达式中的一些结构参数)。在抽取到元数据之后,数据查询装置10可以调用表值函数元数据提供模块(TvfMataDataProviders)获取预先基于物化规则创建好的各个目标物化视图的元数据,最后,数据查询装置10会调用物化规则匹配判定模块对从TvfMataDataProviders中获取到的元数据与从输入参数中获取到的元数据进行对比,以实现和已创建好的各个目标物化视图进行匹配,其中,当从TvfMataDataProviders中获取到的元数据与从输入参数中获取到的元数据都能够匹配上时,则可以判定存在与所述关系代数表达式匹配的物化规则,即可以判定存在目标物化视图与批查询请求相对应。
需要说明的是,TvfAggMvRule模块,主要负责结构匹配判定以及对结构进行替换改写。
TvfMataDataProviders,主要负责tvf元数据的提供,以及查询tvf对应原表的watermark进度。
在一示例性的实施方式中,参阅图5,为了保证查询结果的可靠性,所述判定存在与所述关系代数表达式匹配的物化规则的步骤之前,还包括:步骤S50,获取与目标物化视图相关联的watermark,其中,所述目标物化视图为存在与所述获取到的元数据相匹配的元数据的物化视图;步骤S51,检测所述watermark和所述批查询请求对应的查询时间是否匹配;步骤S52,若所述watermark和所述批查询请求对应的查询时间匹配,则判定存在与所述关系代数表达式匹配的物化规则。
在本实施例中,由于流计算是无边界的模式,因此,在进行批查询的时候,为了保证查询结果的可靠性,需要判断流计算是否存在延迟。具体地,在创建每一个物化视图时,会在数据库中记录当前创建的物化视图所对应的计算进度标识(watermark)。这样,当判定是否存在与所述关系代数表达式匹配的物化规则时,可以获取目标物化视图关联的watermark,然后,检测该watermark和批查询请求中携带的查询时间是否匹配,即判断watermark是否晚于查询请求中携带的查询时间,当watermark晚于查询请求中携带的查询时间,则可以判定所述watermark和所述批查询请求对应的查询时间匹配,进而可以判定存在与所述关系代数表达式匹配的物化规则;当watermark早于查询请求中携带的查询时间,则表可以判定所述watermark和所述批查询请求对应的查询时间不匹配,不能进行查询改写操作。
作为示例,所述watermark为2022-10-04 14:00:05:00,所述查询时间为2022-10-04 14:00:00:00,由于watermark时间晚于查询时间,则可以判定所述watermark和所述批查询请求对应的查询时间匹配,进而判定出存在与所述关系代数表达式匹配的物化规则。
步骤S23,若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图。
具体地,当存在与所述关系代数表达式匹配的物化规则,则表明可以对批查询请求进行查询改写,从而提高查询效率。
在一示例性的实施方式中,所述将所述关系代数表达式进行优化改写,得到执行计划包括:通过优化器将所述关系代数表达式进行优化改写,得到执行计划。
具体地,当判定存在与所述关系代数表达式匹配的物化规则时,数据查询装置10会调用优化器(optimizer)将所述关系代数表达式进行优化改写,得到执行计划,用于执行引擎执行。具体地,优化器会使用过滤条件的下压、列裁剪等常见的优化规则进行优化,以生成更高效的执行计划。
其中,优化器核心是一个动态规划算法,其支持插件化的规则配置和元数据提供组件,比如,支持tvf表达式的规则,以及对应的元数据提供组件。此外,优化器可以对各种规则进行迭代运算,最终输出代价最小的优化结果。
在一示例性的实施方式中,所述方法还包括:
若不存在与所述关系代数表达式匹配的物化规则,则基于所述批查询请求进行批计算,得到所述批查询请求对应的查询结果。
在本实施例中,当不存在与所述关系代数表达式匹配的物化规则,则表明不能对批查询请求进行查询改写,则为了避免无法对该批查询请求进行响应,会让该批查询请求走原始的表进行计算,即会在原始的表中进行批计算,从而得到所述批查询请求对应的查询结果。
在一示例性的实施方式中,为了在接收到用于查询历史数据的批查询请求时,仍可以得到查询结果,在本实施例中,在创建物品视图的时候,会根据用户指定的窗口时间,回溯历史数据,进行数据填充。
本实施例中的数据查询方法,在使用Flink做偏固定的批处理的数据查询时候,充分发挥Flink流批一体的优势,一份代码,两种计算,通过使用流计算对批计算进行实时物化,这样,在后续相同逻辑的批查询请求到达的时候,可以直接将批查询请求改写为用于查询物化视图的执行计划,进而可以直接查询物化视图返回批查询请求对应的查询结果,避免重新进行聚合计算。针对比较频繁的批查询任务,这种以流物化批的查询方案能带来非常大的性能提升和资源节省,解决了批计算效率低下的问题。
实施例二
图6示出了根据本申请实施例二的数据查询装置的框图,该数据查询装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图6所示,所述数据查询装置60可以包括接收模块61、转换模块62、检测模块63、改写模块64及获取模块65,其中:
接收模块61,用于接收批查询请求;
转换模块62,用于将所述批查询请求转换为对应的关系代数表达式;
检测模块63,用于检测是否存在与所述关系代数表达式匹配的物化规则;
改写模块64,用于若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图;
获取模块65,用于基于所述执行计划,从所述物化视图中获取所述批查询请求对应的查询结果。
在可选的实施例中,转换模块62,还用于通过解析器对所述批查询请求进行解析,得到SQL命令;通过校验器对所述SQL命令进行校验,并在校验通过后,将所述SQL命令转换为对应的关系代数表达式。
在可选的实施例中,所述数据查询装置60还包括判断模块及执行模块。
所述判断模块,用于判断所述关系代数表达式是否属于聚合计算;
所述执行模块,用于若所述关系代数表达式属于聚合计算,则执行所述检测是否存在与所述关系代数表达式匹配的物化规则的步骤。
在可选的实施例中,检测模块63,还用于从所述关系代数表达式中提取输入参数;判断所述输入参数是否为表值函数表达式;若所述输入参数为表值函数表达式,则从所述输入参数中获取元数据;检测基于物化规则创建好的物化视图的元数据中是否存在与所述获取到的元数据相匹配的元数据;若存在与所述获取到的元数据相匹配的元数据,则判定存在与所述关系代数表达式匹配的物化规则。
在可选的实施例中,检测模块63,还用于获取与目标物化视图相关联的watermark,其中,所述目标物化视图为存在与所述获取到的元数据相匹配的元数据的物化视图;检测所述watermark和所述批查询请求对应的查询时间是否匹配;若所述watermark和所述批查询请求对应的查询时间匹配,则判定存在与所述关系代数表达式匹配的物化规则。
在可选的实施例中,改写模块64,还用于通过优化器将所述关系代数表达式进行优化改写,得到执行计划。
在可选的实施例中,所述数据查询装置60还包括计算模块。
所述计算模块,用于若不存在与所述关系代数表达式匹配的物化规则,则基于所述批查询请求进行批计算,得到所述批查询请求对应的查询结果。
实施例三
图7示意性示出了根据本申请实施例三的适于实现数据查询方法的计算机设备的硬件架构示意图。所述计算机设备10000可以为基于Flink的服务平台2或其一部分。所述计算机设备10000其是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图7所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如数据查询方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信连接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图7仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的数据查询方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请。
实施例四
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的数据查询方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的数据查询方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种数据查询方法,其特征在于,所述数据查询方法包括:
接收批查询请求;
将所述批查询请求转换为对应的关系代数表达式;
检测是否存在与所述关系代数表达式匹配的物化规则;
若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图;
基于所述执行计划,从所述物化视图中获取所述批查询请求对应的查询结果。
2.根据权利要求1所述的数据查询方法,其特征在于,所述将所述批查询请求转换为对应的关系代数表达式包括:
通过解析器对所述批查询请求进行解析,得到SQL命令;
通过校验器对所述SQL命令进行校验,并在校验通过后,将所述SQL命令转换为对应的关系代数表达式。
3.根据权利要求1所述的数据查询方法,其特征在于,所述检测是否存在与所述关系代数表达式匹配的物化规则的步骤之前,还包括:
判断所述关系代数表达式是否属于聚合计算;
若所述关系代数表达式属于聚合计算,则执行所述检测是否存在与所述关系代数表达式匹配的物化规则的步骤。
4.根据权利要求3所述的数据查询方法,其特征在于,所述检测是否存在与所述关系代数表达式匹配的物化规则包括:
从所述关系代数表达式中提取输入参数;
判断所述输入参数是否为表值函数表达式;
若所述输入参数为表值函数表达式,则从所述输入参数中获取元数据;
检测基于物化规则创建好的物化视图的元数据中是否存在与所述获取到的元数据相匹配的元数据;
若存在与所述获取到的元数据相匹配的元数据,则判定存在与所述关系代数表达式匹配的物化规则。
5.根据权利要求4所述的数据查询方法,其特征在于,所述判定存在与所述关系代数表达式匹配的物化规则的步骤之前,还包括:
获取与目标物化视图相关联的watermark,其中,所述目标物化视图为存在与所述获取到的元数据相匹配的元数据的物化视图;
检测所述watermark和所述批查询请求对应的查询时间是否匹配;
若所述watermark和所述批查询请求对应的查询时间匹配,则判定存在与所述关系代数表达式匹配的物化规则。
6.根据权利要求1所述的数据查询方法,其特征在于,所述将所述关系代数表达式进行优化改写,得到执行计划包括:
通过优化器将所述关系代数表达式进行优化改写,得到执行计划。
7.根据权利要求1至6任一项所述的数据查询方法,其特征在于,所述方法还包括:
若不存在与所述关系代数表达式匹配的物化规则,则基于所述批查询请求进行批计算,得到所述批查询请求对应的查询结果。
8.一种数据查询装置,其特征在于,所述装置包括:
接收模块,用于接收批查询请求;
转换模块,用于将所述批查询请求转换为对应的关系代数表达式;
检测模块,用于检测是否存在与所述关系代数表达式匹配的物化规则;
改写模块,用于若存在与所述关系代数表达式匹配的物化规则,则将所述关系代数表达式进行优化改写,得到执行计划,所述执行计划用于确定与所述匹配的物化规则相关联的物化视图;
获取模块,用于基于所述执行计划,从所述物化视图中获取所述批查询请求对应的查询结果。
9.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至7任意一项所述数据查询方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至7任意一项所述的数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211240617.1A CN115510139A (zh) | 2022-10-11 | 2022-10-11 | 数据查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211240617.1A CN115510139A (zh) | 2022-10-11 | 2022-10-11 | 数据查询方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115510139A true CN115510139A (zh) | 2022-12-23 |
Family
ID=84509653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211240617.1A Pending CN115510139A (zh) | 2022-10-11 | 2022-10-11 | 数据查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115510139A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117688032A (zh) * | 2023-12-13 | 2024-03-12 | 北京镜舟科技有限公司 | 基于物化视图的查询加速方法、装置、电子设备及介质 |
-
2022
- 2022-10-11 CN CN202211240617.1A patent/CN115510139A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117688032A (zh) * | 2023-12-13 | 2024-03-12 | 北京镜舟科技有限公司 | 基于物化视图的查询加速方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111526060B (zh) | 业务日志的处理方法及系统 | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
US11068439B2 (en) | Unsupervised method for enriching RDF data sources from denormalized data | |
US11941034B2 (en) | Conversational database analysis | |
CN105912594B (zh) | Sql语句处理方法和系统 | |
CN107291770B (zh) | 一种分布式系统中海量数据的查询方法及装置 | |
CN111459698A (zh) | 一种数据库集群故障自愈方法及装置 | |
US10540352B2 (en) | Remote query optimization in multi data sources | |
CN116126950A (zh) | 实时物化视图系统和方法 | |
CN115335821B (zh) | 卸载统计收集 | |
CN109408541A (zh) | 报表分解统计方法、系统、计算机设备和存储介质 | |
US20230315727A1 (en) | Cost-based query optimization for untyped fields in database systems | |
CN115510139A (zh) | 数据查询方法和装置 | |
CN109284088B (zh) | 一种信令大数据处理方法及电子设备 | |
CN116578585B (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN114443599A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN115599871A (zh) | 基于湖仓一体的数据处理系统和方法 | |
US11681721B2 (en) | Systems and methods for spark lineage data capture | |
Venkatesan et al. | PoN: Open source solution for real-time data analysis | |
CN115168474A (zh) | 一种基于大数据模型的物联中台系统搭建方法 | |
CN113064914A (zh) | 数据提取方法及装置 | |
CN113010483A (zh) | 一种海量日志管理方法和系统 | |
Wu et al. | RIVA: A Real-Time Information Visualization and analysis platform for social media sentiment trend | |
CN116795663B (zh) | 一种跟踪分析trino引擎执行性能的方法 | |
CN113553320B (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 |