CN116126950A - 实时物化视图系统和方法 - Google Patents

实时物化视图系统和方法 Download PDF

Info

Publication number
CN116126950A
CN116126950A CN202211231391.9A CN202211231391A CN116126950A CN 116126950 A CN116126950 A CN 116126950A CN 202211231391 A CN202211231391 A CN 202211231391A CN 116126950 A CN116126950 A CN 116126950A
Authority
CN
China
Prior art keywords
materialized
batch
materialized view
sql
sql command
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
CN202211231391.9A
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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202211231391.9A priority Critical patent/CN116126950A/zh
Publication of CN116126950A publication Critical patent/CN116126950A/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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种实时物化视图系统,所述系统包括:入口模块,接收批查询请求,及基于所述批查询请求关联Flink SQL引擎;Flink执行模块,用于:对所述批查询请求进行解析以得到SQL命令;并在所述SQL命令符合预设规则的情形下,确定针对所述SQL命令进行物化视图;及物化视图管理模块,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。本申请提供了实时物化视图方法、装置、计算机设备和计算机可读存储介质。本申请的技术方案,以流物化批的方案能带来非常大的性能提升和资源节省,解决了批计算效率低下的问题。

Description

实时物化视图系统和方法
技术领域
本申请涉及计算机技术领域,尤其涉及一种实时物化视图方法、装置、计算机设备及计算机可读存储介质,以及一种实时物化视图系统。
背景技术
数据仓库等需要响应查询以进行数据分析。在应对频繁的批查询任务时,每次实际拉取的数据往往大于所需拉取的数据。如在每隔5分钟计算过去1小时数据的应用中,每隔5分钟要去拉过去1小时的数据进行计算,非常消耗性能,读放大非常严重,实际每次查询只有5分钟的数据增量,但是却要读1小时的数据。
发明内容
本申请的目的是提供一种实时物化视图系统、方法、装置、计算机设备及计算机可读存储介质,以解决上述批查询任务导致的消耗性能严重,及读放大非常严重的问题。
本申请实施例的一个方面提供了一种实时物化视图方法,所述方法包括:
入口模块,接收批查询请求,及基于所述批查询请求关联Flink SQL引擎;
Flink执行模块,用于:对所述批查询请求进行解析以得到SQL命令;并在所述SQL命令符合预设规则的情形下,确定针对所述SQL命令进行物化视图;及
物化视图管理模块,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
可选地,所述入口模块包括:
服务接口,用于接收所述批查询请求,所述批查询请求包括请求类型和用户标识;及
所述Flink SQL引擎,是服务所述批查询请求的实例,用于调用所述Flink执行模块。
可选地,所述Flink执行模块包括:
解析器:响应于所述Flink SQL引擎的调用,解析所述批查询请求以得到SQL命令;及
优化器:在所述SQL命令关联有物化标识的情形下,通过消息队列将所述批查询请求提供给所述物化视图管理模块,以便所述物化视图管理模块创建所述物化视图;优化所述SQL命令以得到第一执行计划,并将第一执行计划返回给所述Flink SQL引擎。
可选地,所述优化器还用于:
基于物化规则以及物化表的catalog,改写所述SQL命令;
优化改写后的SQL命令以得到第二执行计划,并将第二执行计划返回给所述FlinkSQL引擎。
可选地,所述优化器还用于:
基于物化表的catalog,确定针对所述SQL命令的改写;
在所述物化规则中的watermark和当前时间之间的时间间隔超过预设阈值的情形下,拒绝所述改写。
可选地,所述Flink执行模块还包括执行引擎;其中,所述执行引擎用于:在所述物化表不包括与所述SQL命令对应的物化视图的情况下,基于所述第一执行计划进行批计算,将所述批计算的结果返回给所述Flink SQL引擎;或,在所述物化表包括与所述SQL命令对应的物化视图的情况下,基于所述第二执行计划,从所述物化表中获取和返回请求结果。
可选地,所述物化视图管理模块包括:
物化视图观察者:通过所述消息队列获取所述批查询请求,启动所述物化视图的创建任务,通过调用Flink流计算集群进行基于所述批查询请求的流计算,将所述流计算的结果更新所述物化视图,并将所述物化视图的元数据保存在数据库中。
可选地,所述物化视图管理模块还包括:
物化视图获取者:从所述数据库获取所述物化视图的元数据,供所述优化器读取。
可选地,所述物化视图管理模块还用于:
对预设时长范围内未被使用的物化视图进行回收;和/或
以预设时间间隔,对多个维度相同的物化视图进行合并。
本申请实施例的又一个方面提供了一种实时物化视图方法,所述系统包括:
接收批查询请求;
对所述批查询请求进行解析以得到SQL命令;
在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
可选地,还包括:
在物化表不包括与所述SQL命令对应的物化视图的情况下,优化所述SQL命令以得到第一执行计划;
基于所述第一执行计划进行批计算,所述批计算的结果为对应于所述批查询请求的查询结果。
可选地,所述在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图,包括:
在所述SQL命令关联有物化标识的情形下,执行基于所述SQL命令的流计算;及
根据所述流计算的结果创建和更新所述物化视图。
可选地,还包括:
在物化表包括与所述SQL命令对应的物化视图的情况下,基于物化规则以及物化表的catalog,改写所述SQL命令;
优化改写后的SQL命令以得到第二执行计划;
基于所述第二执行计划,从所述物化表中获取对应于所述批查询请求的查询结果。
本申请实施例的又一个方面提供了一种实时物化视图装置,所述装置包括:
接收模块,用于接收批查询请求;
解析模块,用于对所述批查询请求进行解析以得到SQL命令;
创建模块,用于在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图
本申请实施例的又一个方面提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上所述实时物化视图方法的步骤。
本申请实施例的又一个方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的实时物化视图方法的步骤。
本申请实施例提供的实时物化视图方法、装置、计算机设备及计算机可读存储介质,以及实时物化视图系统,包括以下技术优势:
在使用Flink做偏固定的批处理的时候,充分发挥Flink流批一体的优势,一份代码,两种计算。使用流计算对批计算进行实时物化,在后续相同逻辑的批查询请求到达的时候,直接查询物化表返回结果。针对比较频繁的批查询任务,这种以流物化批的方案能带来非常大的性能提升和资源节省,解决了批计算效率低下的问题。
相对于诸如每隔5分钟计算过去1小时的批数据。本申请实施例使用流计算,借助于state的状态,每5分钟只要摄入增量数据增量计算即可,计算的资源消耗很低。
附图说明
图1示意性示出了根据本申请实施例的环境示意图;
图2示意性示出了根据本申请实施例一的实时物化视图系统的架构图;
图3示意性示出了根据本申请实施例一的实时物化视图系统在示例性应用中的操作流程图。
图4示意性示出了根据本申请实施例二的实时物化视图方法的流程图;
图5示意性示出了根据本申请实施例三的实时物化视图装置的框图;以及
图6示意性示出了根据本申请实施例四的适于实现实时物化视图方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
以下为本申请涉及到的一些术语解释:
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),提供一个统一的、可共享的数据底座,避免传统的数据湖、数据仓库之间的数据移动,将原始数据、加工清洗数据、模型化数据,共同存储于一体化的“湖仓”中,既能面向业务实现高并发、精准化、高性能的历史数据、实时数据的查询服务,又能承载分析报表、批处理、数据挖掘等分析型业务。
Lambda架构,由Storm的作者Nathan Marz提出的实时大数据处理框架。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop、Kafka、Storm、Spark、Hbase等各类大数据组件。
解析器(Parser),用于词法分析、语义语法分析、优化和执行代码生成等,执行结果为语法树。
优化器(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中的终端和服务器的数量仅是示意性的,不用于限制本申请的专利保护范围。
下面,将在上述示例性应用环境下提供若干个实施例,来说明实时物化视图方案。
实施例一
图2示意性示出了根据本申请实施例一的实时物化视图系统的架构图。所述实时物化视图系统10可以包括入口模块100、Flink执行模块200、物化视图管理模块300。
(1)入口模块100
入口模块100用于:接收批查询请求,及基于所述批查询请求关联Flink SQL引擎。
在可选的实施例中,所述入口模块100包括服务接口和Flink SQL引擎。
服务接口,用于接收所述批查询请求,所述批查询请求包括请求类型和用户标识。
所述Flink SQL引擎,是服务所述批查询请求的实例,用于调用所述Flink执行模块。
所述服务接口接收终端的批查询请求。例如,每隔5分钟一个批查询请求,用于查询过去5分钟的数据增量。所述批查询请求携带有多个信息,如查询命令、请求类型(如Flink类型)、用户标识(用户名)。所述服务接口可以根据所述请求类型和所述用户标识拉起一个具体的SQL引擎,如Flink SQL引擎。所述Flink SQL引擎会初始化所述Flink执行模块200,并调用Flink执行模块200。需要说明的是,所述Flink SQL引擎依赖所述Flink执行模块200。在上述可选的实施例中,基于不同的请求类型和用户标识,拉起对应的SQL引擎,具有很高的适应性。
(2)Flink执行模块200
Flink执行模块200用于:对所述批查询请求进行解析以得到SQL命令;并在所述SQL命令符合预设规则的情形下,确定针对所述SQL命令进行物化视图。
在可选的实施例中,所述Flink执行模块200可以包括解析器、优化器和执行引擎。
解析器,响应于所述Flink SQL引擎的调用,解析所述批查询请求以得到SQL命令。
优化器,在所述SQL命令关联有物化标识的情形下,通过消息队列将所述批查询请求提供给所述物化视图管理模块300,以便所述物化视图管理模块300创建所述物化视图;优化所述SQL命令以得到第一执行计划,并将第一执行计划返回给所述Flink SQL引擎。
具体的:
所述解析器对所述批查询请求进行解析,得到SQL命令。所述SQL命令可以是语法树形式。
接下来,所述优化器对所述SQL命令进行优化。在优化过程中,所述SQL命令可能会触发一些规则。所述优化器具有多个功能组件或加载有一些数据,如projection-hook(物化钩子)、hive-catalog(物化视图元数据)和materialize-rules(物化规则)。
其一:所述优化器会检测所述SQL命令是否触发projection-hook的规则。如所述SQL命令中关联有物化标识(hint),则说明所述SQL命令有创建物化视图的需求,即触发projection-hook的规则,使得projection-hook将所述批查询请求发至消息队列。消息队列可以是Kafka等消息队列系统,用于和物化视图管理模块300的解耦。物化视图管理模块300会从消息队列中是读取所述批查询请求并创建物化视图。
其二:所述优化器还会从hive-catalog中查询是否有与所述SQL命令匹配的物化视图。hive-catalog用于放置物化表的元数据。如果有,则不需要通过对原始数据进行批计算以获取相应的结果,而可以直接获取相应的物化视图。
若要获取相应的物化视图,需要对SQL命令进行改写。
所述优化器还用于:基于物化规则以及物化表的catalog,改写所述SQL命令;优化改写后的SQL命令以得到第二执行计划,并将第二执行计划返回给所述Flink SQL引擎。所述SQL命令的改写可以使用预设projection DDL语法和SQL查询改写规则。在本实施例中,如果有与所述批查询请求对应的物化视图,则可以改写SQL命令,优化改写后的SQL命令以得到第二执行计划(QueryOperation)并返回给Flink SQL引擎。另外,所述物化规则可以参考calcite物化规则,并且支持TVF语法。
也就是说:(1)若没有与所述SQL命令对应的物化视图,则直接对所述SQL命令优化以得到优化产物(第一执行计划)。该第一执行计划用于批计算。(2)若有与所述SQL命令对应的物化视图,则改写SQL命令,并根据改写后的SQL命令生成优化产物(第二执行计划)。该第二执行计划用于获取物化视图,从而加速查询。可知,在使用Flink做偏固定的批查询的时候,通过本实施例的优化器,可以改写查询,在批查询请求到达的时候,不需要批计算,直接查询物化表并返回结果。
但是在一些情况下,即使有相应的物化视图,也不适合对SQL命令进行改写。所述优化器还用于:基于物化表的catalog,确定针对所述SQL命令的改写;在所述物化规则中的watermark和当前时间之间的时间间隔超过预设阈值的情形下,拒绝所述改写。具体来说,可以根据watermark等指标避免物化视图的实时任务延迟失败等问题,保障查询结果的可靠性。以HUDI为例,在数据写入存储过程中,对应的commit会记录下当前commit完成时,物化视图任务对应的watermark,在执行物化规则匹配时,会参考对应的watermark进行规则匹配,如果落后当前太多时间,则拒绝当前的物化视图改写,直接降级到原表进行查询,确保结果可靠性。
在示例性的实施例中,执行引擎根据不同的执行计划进行不同的操作。
操作一:在所述物化表不包括与所述SQL命令对应的物化视图的情况下,执行引擎基于所述第一执行计划进行批计算,将所述批计算的结果返回给所述Flink SQL引擎。具体的,执行引擎调用Flink-batch集群进行计算以得到批计算的结果。
操作二:在所述物化表包括与所述SQL命令对应的物化视图的情况下,执行引擎基于所述第二执行计划,从所述物化表中获取和返回请求结果。
因此:针对批查询请求,若没有基于流计算的物化视图,则进行批计算并反馈批计算的结果;若有基于流计算的物化视图,则直接获取该物化视图并进行反馈,直接从物化表中读取数据即可,极大加速查询,做到秒级甚至毫秒级的响应。
(3)物化视图管理模块300
物化视图管理模块300对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
物化视图管理模块300可以:
(1)提供物化视图的管理服务;
(2)负责存取物化视图的元数据;
(3)执行物化视图任务的创建。
在可选的实施例中,所述物化视图管理模块300包括:物化视图观察者(projection-watcher)和物化视图获取者(projection-fetcher)。
物化视图观察者:通过所述消息队列获取所述批查询请求,启动所述物化视图的创建任务,通过调用Flink流计算集群进行基于所述批查询请求的流计算,将所述流计算的结果更新所述物化视图,并将所述物化视图的元数据保存在数据库中。
物化视图获取者:从所述数据库获取所述物化视图的元数据,供所述优化器读取。
通过物化视图观察者创建物化视图,并启动一个对应于批查询请求的流计算。也就是说,使用流计算对批计算进行实时物化,这种以流物化批的方案能带来非常大的性能提升和资源节省,解决了批计算window(尤其是hop)效率低下的问题。
通过物化视图获取者实时更新物化视图的元数据,并将元数据提供给Flink执行模块200,使得下一个批查询请求到来时,能及时获知其是否有对应的物化视图。
在一些可选的实施例中,物化视图管理模块300还可以:对预设时长范围内未被使用的物化视图进行回收;和/或以预设时间间隔,对多个维度相同的物化视图进行合并。在本可选的实施例中,通过回收长期无法命中的物化视图;和/或,对多个维度相同的物化视图会进行定期的合并,可以有效地降低物化视图计算成本。
上述实时物化视图至少包括如下优点:
第一:提供基于流批一体的实时物化视图。具体的:可以结合流批一体的技术,把流批计算各自的优势集中到一起。创建的物化视图保存在物化表,可以位于HUDI中,即依托于Flink+HUDI的流批一体架构,实现了基于Flink的实时物化视图方案,在一些偏固定场景的批查询上,使用流式物化的能力来加速批查询。
流批统一存储可以使用HUDI,可以支持升级update,物化表也是直接落在HUDI中。
第二:在使用Flink做偏固定的批处理的时候,充分发挥Flink流批一体的优势,一份代码,两种计算。使用流计算对批计算进行实时物化,改造了Flink批查询优化器,支持物化规则改写查询,在批查询屈曲到达的时候,直接查询物化表返回结果。针对比较频繁的window查询场景,这种以流物化批的方案能带来非常大的性能提升和资源节省,解决了批计算window(尤其是hop)效率低下的问题。
相对于诸如每隔5分钟计算过去1小时的批数据。本实施例使用流计算,借助于state的状态,每5分钟只要摄入增量数据增量计算即可,计算的资源消耗很低。
为便于理解,以下结合图3提供一个示例性应用。
步骤S300,服务接口接收批查询请求。
步骤S302,服务接口将批查询请求提供给Flink SQL引擎,Flink SQL引擎初始化Fink执行模块。
步骤S304,Flink SQL引擎将批查询请求提供给解析器。
步骤S306,解析器解析批查询请求,得到SQL命令,并将SQL命令提供给有优化器。
步骤S308,优化器确定所述SQL命令是否包括物化标识。
若是,则将所述批查询请求发给Kafka,从而经由Kafka将所述批查询请求提供给物化视图观察者,进入步骤S310和步骤S324。若不是,则进入步骤S310。
步骤S310,优化器确定在物化表是否是存在于所述SQL命令对应的物化视图。
若是,进入步骤S312,否则进入步骤S314。
步骤S312,优化器对SQL命令进行改写。进入步骤S314。
步骤S314,对SQL命令进行优化,以得到优化产物(即第一执行计划或第二执行计划)。
若是对SQL命令优化,得到第一执行计划。
若是对改写后的SQL命令优化,得到第二执行计划。
步骤S316,优化器将优化产物发回给Flink SQL引擎。
步骤S318,Flink SQL引擎将优化产物发送给执行引擎。
步骤S320,执行引擎基于所述优化产物,得到对应于所述批查询请求的查询结果。
步骤S322,返回上述查询结果。流程结束。
若为第一执行计划,执行引擎调用Flink-batch集群进行批计算,得到并返回批计算的结果。若为第二执行计划,执行引擎从物化表中获取并返回相应的物化视图。
步骤S324,物化视图观察者从Kafka获取批查询请求,基于批查询请求调用Flink-streaming集群进行流计算,创建物化视图,并将物化视图的元数据保存到MySQL。
需要说明的是,物化视图获取者会定期获取MySQL中的元数据,并提供给优化器。
实施例二
本实施例提供了一种实时物化视图方法,具体细节和效果可参考上文。
图4示意性示出了根据本申请实施例二的实时物化视图方法的流程图。
如图4所示,该实时物化视图方法可以包括步骤S400~S404,其中:
步骤S400,接收批查询请求;
步骤S402,对所述批查询请求进行解析以得到SQL命令;
步骤S404,在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
在可选的实施例中,所述方法还包括:
在物化表不包括与所述SQL命令对应的物化视图的情况下,优化所述SQL命令以得到第一执行计划;
基于所述第一执行计划进行批计算,所述批计算的结果为对应于所述批查询请求的查询结果。
在可选的实施例中,所述在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图,包括:
在所述SQL命令关联有物化标识的情形下,执行基于所述SQL命令的流计算;及
根据所述流计算的结果创建和更新所述物化视图。
在可选的实施例中,所述方法还包括:
在物化表包括与所述SQL命令对应的物化视图的情况下,基于物化规则以及物化表的catalog,改写所述SQL命令;
优化改写后的SQL命令以得到第二执行计划;
基于所述第二执行计划,从所述物化表中获取对应于所述批查询请求的查询结果。
实施例三
图5示出了根据本申请实施例三的实时物化视图装置的框图,该实时物化视图装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图5所示,所述实时物化视图装置500可以包括接收模块510、解析模块520和创建模块530,其中:
接收模块510,用于接收批查询请求;
解析模块520,用于对所述批查询请求进行解析以得到SQL命令;
创建模块530,用于在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
在可选的实施例中,所述装置还包括批计算模块(未标识),用于:
在物化表不包括与所述SQL命令对应的物化视图的情况下,优化所述SQL命令以得到第一执行计划;
基于所述第一执行计划进行批计算,所述批计算的结果为对应于所述批查询请求的查询结果。
在可选的实施例中,所述创建模块530,还用于:
在所述SQL命令关联有物化标识的情形下,执行基于所述SQL命令的流计算;及
根据所述流计算的结果创建和更新所述物化视图。
在可选的实施例中,所述装置还包括获取模块(未标识),用于:
在物化表包括与所述SQL命令对应的物化视图的情况下,基于物化规则以及物化表的catalog,改写所述SQL命令;
优化改写后的SQL命令以得到第二执行计划;
基于所述第二执行计划,从所述物化表中获取对应于所述批查询请求的查询结果。
实施例四
图6示意性示出了根据本申请实施例四的适于实现实时物化视图方法的计算机设备的硬件架构示意图。所述计算机设备10000可以为基于Flink的服务平台2或其一部分。所述计算机设备10000其是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图6所示,计算机设备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等无线或有线网络。
需要指出的是,图6仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的实时物化视图方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请。
实施例五
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的实时物化视图方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的实时物化视图方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (16)

1.一种实时物化视图系统,其特征在于,所述系统包括:
入口模块,接收批查询请求,及基于所述批查询请求关联Flink SQL引擎;
Flink执行模块,用于:对所述批查询请求进行解析以得到SQL命令;并在所述SQL命令符合预设规则的情形下,确定针对所述SQL命令进行物化视图;及
物化视图管理模块,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
2.根据权利要求1所述的系统,其特征在于,所述入口模块包括:
服务接口,用于接收所述批查询请求,所述批查询请求包括请求类型和用户标识;及
所述Flink SQL引擎,是服务所述批查询请求的实例,用于调用所述Flink执行模块。
3.根据权利要求1所述的系统,其特征在于,所述Flink执行模块包括:
解析器:响应于所述Flink SQL引擎的调用,解析所述批查询请求以得到SQL命令;及
优化器:在所述SQL命令关联有物化标识的情形下,通过消息队列将所述批查询请求提供给所述物化视图管理模块,以便所述物化视图管理模块创建所述物化视图;优化所述SQL命令以得到第一执行计划,并将第一执行计划返回给所述Flink SQL引擎。
4.根据权利要求3所述的系统,其特征在于,所述优化器还用于:
基于物化规则以及物化表的catalog,改写所述SQL命令;
优化改写后的SQL命令以得到第二执行计划,并将第二执行计划返回给所述Flink SQL引擎。
5.根据权利要求3所述的系统,其特征在于,所述优化器还用于:
基于物化表的catalog,确定针对所述SQL命令的改写;
在所述物化规则中的watermark和当前时间之间的时间间隔超过预设阈值的情形下,拒绝所述改写。
6.根据权利要求4所述的系统,其特征在于,所述Flink执行模块还包括执行引擎;其中,所述执行引擎用于:在所述物化表不包括与所述SQL命令对应的物化视图的情况下,基于所述第一执行计划进行批计算,将所述批计算的结果返回给所述Flink SQL引擎;或,在所述物化表包括与所述SQL命令对应的物化视图的情况下,基于所述第二执行计划,从所述物化表中获取和返回请求结果。
7.根据权利要求3所述的系统,其特征在于,所述物化视图管理模块包括:
物化视图观察者:通过所述消息队列获取所述批查询请求,启动所述物化视图的创建任务,通过调用Flink流计算集群进行基于所述批查询请求的流计算,将所述流计算的结果更新所述物化视图,并将所述物化视图的元数据保存在数据库中。
8.根据权利要求7所述的系统,其特征在于,所述物化视图管理模块还包括:
物化视图获取者:从所述数据库获取所述物化视图的元数据,供所述优化器读取。
9.根据权利要求1至7任意一项所述的系统,其特征在于,所述物化视图管理模块还用于:
对预设时长范围内未被使用的物化视图进行回收;和/或
以预设时间间隔,对多个维度相同的物化视图进行合并。
10.一种实时物化视图方法,其特征在于,所述方法包括:
接收批查询请求;
对所述批查询请求进行解析以得到SQL命令;
在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
11.根据权利要求10所述的方法,其特征在于,还包括:
在物化表不包括与所述SQL命令对应的物化视图的情况下,优化所述SQL命令以得到第一执行计划;
基于所述第一执行计划进行批计算,所述批计算的结果为对应于所述批查询请求的查询结果。
12.根据权利要求11所述的方法,其特征在于,所述在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图,包括:
在所述SQL命令关联有物化标识的情形下,执行基于所述SQL命令的流计算;及
根据所述流计算的结果创建和更新所述物化视图。
13.根据权利要求10所述的方法,其特征在于,还包括:
在物化表包括与所述SQL命令对应的物化视图的情况下,基于物化规则以及物化表的catalog,改写所述SQL命令;
优化改写后的SQL命令以得到第二执行计划;
基于所述第二执行计划,从所述物化表中获取对应于所述批查询请求的查询结果。
14.一种实时物化视图装置,其特征在于,所述装置包括:
接收模块,用于接收批查询请求;
解析模块,用于对所述批查询请求进行解析以得到SQL命令;
创建模块,用于在所述SQL命令符合预设规则的情形下,对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。
15.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求10至13任意一项所述实时物化视图方法的步骤。
16.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求10至13任意一项所述的实时物化视图方法的步骤。
CN202211231391.9A 2022-10-09 2022-10-09 实时物化视图系统和方法 Pending CN116126950A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211231391.9A CN116126950A (zh) 2022-10-09 2022-10-09 实时物化视图系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211231391.9A CN116126950A (zh) 2022-10-09 2022-10-09 实时物化视图系统和方法

Publications (1)

Publication Number Publication Date
CN116126950A true CN116126950A (zh) 2023-05-16

Family

ID=86301530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211231391.9A Pending CN116126950A (zh) 2022-10-09 2022-10-09 实时物化视图系统和方法

Country Status (1)

Country Link
CN (1) CN116126950A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076430A (zh) * 2023-10-09 2023-11-17 北京数语科技有限公司 一种通过数据网关获取数据模型的方法、系统、电子设备及存储介质
CN117688032A (zh) * 2023-12-13 2024-03-12 北京镜舟科技有限公司 基于物化视图的查询加速方法、装置、电子设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076430A (zh) * 2023-10-09 2023-11-17 北京数语科技有限公司 一种通过数据网关获取数据模型的方法、系统、电子设备及存储介质
CN117688032A (zh) * 2023-12-13 2024-03-12 北京镜舟科技有限公司 基于物化视图的查询加速方法、装置、电子设备及介质

Similar Documents

Publication Publication Date Title
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
CN110908997B (zh) 数据血缘构建方法、装置、服务器及可读存储介质
CN104298760B (zh) 一种应用于数据仓库的数据处理方法和数据处理装置
CN111177178B (zh) 一种数据处理方法及相关设备
CN116126950A (zh) 实时物化视图系统和方法
CN110795455A (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN102193917A (zh) 一种数据处理和查询方法和装置
CN104090889A (zh) 数据处理方法及系统
CN112559475B (zh) 数据实时捕获和传输方法及系统
CN112084270A (zh) 一种数据血缘处理方法、装置、存储介质及设备
CN114416703A (zh) 数据完整性自动监控方法、装置、设备及介质
CN103034650A (zh) 一种数据处理系统和方法
CN115408370A (zh) 数据库迁移评估方法和系统、计算机设备、存储介质
CN112395307A (zh) 执行语句的方法、装置、服务器及存储介质
CN112015742B (zh) 基于行列共存的htap数据库的数据处理方法及装置
CN115510139A (zh) 数据查询方法和装置
CN116578585B (zh) 数据查询方法、装置、电子设备及存储介质
CN115599871A (zh) 基于湖仓一体的数据处理系统和方法
CN112163948A (zh) 一种分润计算方法、系统、设备及存储介质
US20210349910A1 (en) Systems and methods for spark lineage data capture
CN113868138A (zh) 测试数据的获取方法、系统、设备及存储介质
US10762084B2 (en) Distribute execution of user-defined function
CN113568892A (zh) 一种基于内存计算对数据源进行数据查询的方法和设备
CN109905475B (zh) 一种基于sql以规定格式输出云计算监控数据的方法
CN113127549B (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