CN117688032A - 基于物化视图的查询加速方法、装置、电子设备及介质 - Google Patents

基于物化视图的查询加速方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN117688032A
CN117688032A CN202311711103.4A CN202311711103A CN117688032A CN 117688032 A CN117688032 A CN 117688032A CN 202311711103 A CN202311711103 A CN 202311711103A CN 117688032 A CN117688032 A CN 117688032A
Authority
CN
China
Prior art keywords
data
materialized view
query
materialized
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202311711103.4A
Other languages
English (en)
Other versions
CN117688032B (zh
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.)
Beijing Jingzhou Technology Co ltd
Original Assignee
Beijing Jingzhou 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 Beijing Jingzhou Technology Co ltd filed Critical Beijing Jingzhou Technology Co ltd
Priority to CN202311711103.4A priority Critical patent/CN117688032B/zh
Publication of CN117688032A publication Critical patent/CN117688032A/zh
Application granted granted Critical
Publication of CN117688032B publication Critical patent/CN117688032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/24535Query rewriting; Transformation of sub-queries or views
    • 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)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据处理技术领域,尤其是涉及一种基于物化视图的查询加速方法、装置、电子设备及介质。基于物化视图的查询加速方法包括:接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对计算过程进行优化,生成初始执行计划;基于查询主体数据,检索确定可用物化视图;根据可用物化视图和查询主体数据,从外置数据湖中提取查询发起请求对应的原始需求数据,并基于原始需求数据和可用物化视图,改写初始执行计划,确定逻辑执行计划;根据查询执行引擎的设备属性,将逻辑执行计划转换为可执行物理计划,并将可执行物理计划发送到查询执行引擎,以使查询执行引擎根据可执行物理计划对可用物化视图和原始需求数据执行计算过程。

Description

基于物化视图的查询加速方法、装置、电子设备及介质
技术领域
本申请涉及数据处理技术领域,尤其是涉及一种基于物化视图的查询加速方法、装置、电子设备及介质。
背景技术
对于企业或者机构来说,数据库系统是存储、管理和分析数据的重要部分,其中现代分析型数据库可以作为企业或机构进行数据管理的重要组成部分,帮助企业或机构更好地管理和利用数据资源。现代分析型数据库可以提供海量数据的存储和管理能力,同时可以提供强大的数据分析和查询能力,来帮助企业或机构改进业务流程和决策。随着CPU硬件的计算速度提升,以及向量化计算技术的普及,端到端的查询性能得到显著的提升,但是与此同时,企业或机构实际的查询过程中要计算的数据量越来越多,目前的即时计算只能局限于少量的数据计算过程中,无法满足用户对查询时延的诉求。
相关技术中,很多企业或机构选择在数据库中设置多级存储,但是目前的多级存储架构在工作上重在优化缓存的效率,将原始数据缓存与计算语义结合,提高缓存的扩展性。这样的方式使用于非常有限的数据过滤场景,导致查询加速的效果较差。
发明内容
为了加快查询过程,提升查询加速的效果,本申请提供一种基于物化视图的查询加速方法、装置、电子设备及介质。
第一方面,本申请提供一种基于物化视图的查询加速方法,包括:
接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对所述计算过程进行优化,生成初始执行计划;
基于所述查询主体数据,检索确定可用物化视图;
根据所述可用物化视图和所述查询主体数据,从外置数据湖中提取所述查询发起请求对应的原始需求数据,并基于所述原始需求数据和所述可用物化视图,改写所述初始执行计划,确定逻辑执行计划;
根据查询执行引擎的设备属性,将所述逻辑执行计划转换为可执行物理计划,并将所述可执行物理计划发送到所述查询执行引擎,以使所述查询执行引擎根据所述可执行物理计划对所述可用物化视图和所述原始需求数据执行计算过程。
可选的,所述方法接收业务人员发送的预计算需求信息;
分析所述预计算需求信息,确定每一条预计算需求对应的预计算原始数据、需求计算方式和维护属性;
从所述外置数据湖中调用所述预计算原始数据,按照所述需求计算方式进行计算,确定预计算中间数据;
将所述预计算中间数据存储到内置存储区域中,将所述预计算中间数据与所述预计算原始数据关联,得到目标物化视图;
根据所述维护属性设置所述目标物化视图的物化维护间隔,以按照所述物化维护间隔定时扫描所述外置数据湖,在发生原始数据的更新时,更新内置存储区域中对应的中间数据。
可选的,所述将所述预计算中间数据存储到内置存储区域中,将所述预计算中间数据与所述预计算原始数据关联,得到目标物化视图,包括:
获取所述预计算需求对应的预计算原始数据在所述外置数据湖中的数据源区,按照所述数据源区进行分区映射,以将内置存储区域进行分区,得到若干默认物化视图;
按照所述预计算需求对应的预计算原始数据,从所述若干默认物化视图中确定所述预计算需求对应的默认物化视图;
将预计算需求与所述预计算需求对应的预计算中间数据,写入所述预计算需求对应的默认物化视图,得到目标物化视图。
可选的,所述方法还包括:
按照预设检测频率检测所述外置数据湖中的数据源区的分区更新时间戳,确定每一数据源区的更新状态,所述更新状态包括更新和保持;
当所述更新状态为更新时,从所述分区更新时间戳中提取更新时间进行记录;
扫描所述数据源区中的原始数据,确定是否发生数据变化;
若发生数据变化,则获取所述原始数据相关联若干物化视图,并按照所述若干物化视图对应的数据计算方式,分别进行重计算,确定每一物化视图对应的预计算更新中间数据;
将所述预计算更新中间数据写入对应的物化视图,覆盖所述物化视图中的预计算中间数据并记录数据覆盖时刻。
可选的,所述基于所述查询主体数据,检索确定可用物化视图,包括:
查找所述查询主体数据对应的原始数据表,所述原始数据表存储在所述外置数据湖中;
根据所述外置数据湖与若干目标物化视图之间的映射关系、所述内置存储区域中的若干目标物化视图之间的依赖关系,对所述若干目标物化视图进行检索,确定相关物化视图;
根据所述初始执行计划,从所述相关物化视图中确定用于进行所述查询发起请求对应的改写过程的相关物化视图,作为可选物化视图。
可选的,所述可选物化视图包括第一可选物化视图和第二可选物化视图;所述根据所述初始执行计划,从所述相关物化视图中确定用于进行所述查询发起请求对应的改写过程的相关物化视图,作为可选物化视图,包括:
根据所述初始执行计划,从所述相关物化视图中确定用于进行所述查询发起请求对应的改写过程的相关物化视图;
获取所述相关物化视图对应的最新数据覆盖时刻、对应在所述外置数据湖中的若干数据源区的最新更新时间,并确定所述最新数据覆盖时刻距离当前时刻的第一时间间隔和所述最新更新时间距离当前时刻的第二时间间隔;
判断所述第一时间间隔是否大于所述第二时间间隔;
若不是,则确定所述相关物化视图中的预计算中间数据未过期,将该相关物化视图作为第一可选物化视图;
若是,则确定所述相关物化视图中的预计算中间数据过期,将该相关物化视图进行更新,作为第二可选物化视图,以按照第一可选物化视图、第二可选物化视图的顺序进行计算。
可选的,所述查询发起请求还包括原始投影表达式;所述基于所述原始需求数据和所述可用物化视图,改写所述初始执行计划,确定逻辑执行计划,包括:
分析所述初始执行计划,确定初步改写方式,所述初步改写方式包括谓词补偿改写、多表连接改写、可读增强改写和操作符改写;
根据所述原始需求数据和所述可用物化视图之间的数据关系,对所述初步改写方式进行筛选,确定目标改写方式;
按照所述目标改写方式对所述初始执行计划进行改写,确定第一逻辑执行计划;
分析所述第一逻辑执行计划,确定所述原始需求数据和所述可用物化视图对应的数据执行类型,所述数据执行类型包括数值型数据和文本型数据;
对所述第一逻辑执行计划进行聚合改写,确定第二逻辑执行计划;
根据所述数据执行类型和所述查询主体数据,确定所述原始投影表达式的改写方式,并对第二逻辑执行计划进行改写,确定第三逻辑执行计划;
对所述初始执行计划和所述第三逻辑执行计划分别进行模拟运行,确定所述第三逻辑执行计划对应的查询加速收益;
若所述查询加速收益大于改写过程的数据运算收益,则将所述第三逻辑执行计划确定为逻辑执行计划。
第二方面,本申请提供一种基于物化视图的查询加速装置,包括:
初始执行计划生成模块,用于接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对所述计算过程进行优化,生成初始执行计划;
可用物化视图确定模块,用于基于所述查询主体数据,检索确定可用物化视图;
逻辑执行计划确定模块,用于根据所述可用物化视图和所述查询主体数据,从外置数据湖中提取所述查询发起请求对应的原始需求数据,并基于所述原始需求数据和所述可用物化视图,改写所述初始执行计划,确定逻辑执行计划;
可执行物理计划发送模块,用于根据查询执行引擎的设备属性,将所述逻辑执行计划转换为可执行物理计划,并将所述可执行物理计划发送到所述查询执行引擎,以使所述查询执行引擎根据所述可执行物理计划对所述可用物化视图和所述原始需求数据执行计算过程。
第三方面,本申请提供一种电子设备,包括:存储器和处理器,所述存储器上存储有能够被处理器加载并执行第一方面的方法的计算机程序。
第四方面,本申请提供一种计算机可读存储介质,存储有能够被处理器加载并执行第一方面的方法的计算机程序。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种应用场景示意图;
图2为本申请一实施例提供的一种基于物化视图的查询加速方法的流程图;
图3为本申请一实施例提供的一种映射流程架构图;
图4为本申请一实施例提供的一种物化视图维护示意图;
图5为本申请一实施例提供的一种查询改写流程图;
图6为本申请一实施例提供的一种查询加速整体架构图;
图7为本申请一实施例提供的一种基于物化视图的查询加速装置的结构示意图;
图8为本申请一实施例提供的一种电子设备的结构示意图。
实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本申请实施例作进一步详细描述。
对于企业或者机构来说,内部的系统或者面向外部用户的系统,都具有对应的功能。对于面向外部用户的系统来说,外部用户可以通过登录公开的页面、软件或者平台,通过点击按钮、输入信息等操作来实现某种目的。在此过程中,每一项操作都可能触发或多或少的查询数据并计算的过程,同时对于面向外部用户的系统来说,同一时刻需要进行的计算过程很多,对应的需要查询并计算的数据量较为庞大,因此提升查询计算的速度是非常重要的。
相关技术中选择在数据库中设置多级存储,但是目前的多级存储架构在工作上重在优化缓存效率,将原始数据缓存与计算语义结合,提高缓存的扩展性。但是这样的工作方式,依然需要调用庞大的初始数据,调用这些初始数据仍然需要消耗大量的时间,仍旧难以满足用户对查询时延的诉求,因此目前的查询加速的方法的效果仍然较差。
基于此,本申请提供一种基于物化视图的查询加速方法、装置、电子设备及介质。接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对计算过程进行优化,生成初始执行计划。基于查询主体数据,检索确定可用物化视图,根据可用物化视图和查询主体数据,从外置数据湖中提取查询发起请求对应的原始需求数据,并基于原始需求数据和可用物化视图,改写初始执行计划,确定逻辑执行计划。根据查询执行引擎的设备属性,将逻辑执行计划转换为可执行物理计划,并将可执行物理计划发送到查询执行引擎,以使查询执行引擎根据可执行物理计划对可用物化视图和可用物化视图执行计算过程。
图1为本申请提供的一种应用场景示意图。企业或者机构可以预先设置不同作用的系统,外部用户通过公开的页面或者平台登录,内部员工可以通过内部页面或者平台登录,这些平台或页面整体可以成为登录平台。在图1所示的应用场景中,基于物化视图的查询加速方法可以搭建在查询加速服务器上。当外部用户或者内部员工进行点击按钮、输入等操作时,会向查询加速服务器发送不同的请求,查询加速服务器可以解析请求,分析出该请求涉及到的相关数据和执行计划,并且快速执行计算过程。
具体的实现方式可以参考以下实施例。
图2为本申请一实施例提供的一种基于物化视图的查询加速方法的流程图,本实施例的方法可以应用于以上场景中的查询加速服务器。如图2所示的,该方法包括:
S201、接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对计算过程进行优化,生成初始执行计划。
查询发起请求可以是外部用户发送的,也可以是内部动作人员发送的,发送的方式可以是点击某一选项、查询某些内容以及拖拽等操作。查询发起请求可以为SQL语言,具体可以包括查询主体数据,即目的,可能并不是一个直观的数值,而是一个过程,例如搜索关键词、显示某一选项的页面等;还可以包括计算过程,例如查询某些内容的请求,可以先对关键词进行解析,然后对解析出的每一个词组进行信息的查找,再将关联性最强的内容进行显示,这可以作为一个整体的逻辑过程,该过程中的每个节点都可能涉及很多关联、连续的计算,整体可以作为计算过程。
计算过程可能是各个局部的计算过程的集合,需要将这些局部的计算过程按照预先的排列方式进行整合,其中可能存在某一整体逻辑过程中的若干节点涉及到同一个局部的计算过程,那么可以运用对应的计算组件等,计算过程会相应发生变化,避免重复运算,新的计算过程可以作为初始执行计划。
具体的,对查询发起请求进行解析,确定对应的查询主体数据和计算过程,然后分析这些计算过程来进行优化,得到初始执行计划。
S202、基于查询主体数据,检索确定可用物化视图。
不同的查询主体数据相关的查询过程不同,每一查询过程设计到的数据、数据之间的计算方式也不相同。可以预先根据企业或者机构的系统的可实现目标来对某些原始的数据进行预先的计算,例如某一系统的主要实现目标为显示某一查询的需求对应的信息,可能会涉及到很多热词或者较通用的数据的查询,此时可以将这些查询的通用基础计算预先计算好,存储到物化视图中,并将物化视图与查询的流程进行关联。
具体的,可以对查询主体数据进行分析,确定可能涉及哪些查询流程,检索是否存在于这些查询流程相关联的物化视图,将关联的物化视图确定为可用物化视图。
S203、根据可用物化视图和查询主体数据,从外置数据湖中提取查询发起请求对应的原始需求数据,并基于原始需求数据和可用物化视图,改写初始执行计划,确定逻辑执行计划。
企业或者机构的数据库系统可以包括外置数据湖,外置数据湖中可以存储企业或者机构用于查询计算的初始数据。可用物化视图中存储有由初始数据计算得到的中间数据,原始需求数据可以用于表示可以用于计算得到最终的查询主体数据,但是是可用物化视图中的中间数据以外的其他数据。
具体的,可以先分析查询主体数据,确定需要哪些初始数据。将初始数据中进行查询主体数据对应的计算过程时涉及到的中间数据,即可用物化视图中对应的初始数据进行剔除,得到原始需求数据。然后根据原始需求数据和可用物化视图,对初始执行计划进行对应性的调整,使执行过程更符合原始需求数据和可用物化视图之间的关系,得到逻辑执行计划。
S204、根据查询执行引擎的设备属性,将逻辑执行计划转换为可执行物理计划,并将可执行物理计划发送到查询执行引擎,以使查询执行引擎根据可执行物理计划对可用物化视图和原始需求数据执行计算过程。
查询执行引擎可以是用于运行相关的执行计划的设备。数据计算的过程具有自己的逻辑,但是不同的查询执行引擎在执行计划时可能有自己的运行逻辑,该运行逻辑可以用设备属性来体现。设备属性可以是预先记录的,设备属性与具体的计划转换关系也可以根据若干历史数据进行设置。因此可以根据查询执行引擎的设备属性来将逻辑执行计划转换为对应的可执行物理计划。
具体的,可以先查找查询执行引擎的设备属性,然后根据预先设置的计划转换关系,将逻辑执行计划转换为可执行物理计划。转换后将可执行物理计划发送给查询执行引擎,查询执行引擎接收到之后可以将可用物化视图中的中间数据和原始需求数据进行计算,完成计算过程。
本实施例通过使用物化视图和改写初始执行计划,可以避免重复计算相同的查询结果,从而减少了计算时间和资源消耗,提高了查询效率。可以根据查询执行引擎的设备属性,将逻辑执行计划转换为可执行物理计划,使得数据处理更加优化,提高了处理速度和精度。通过从外置数据湖中提取原始需求数据,并将计算过程交给查询执行引擎执行,可以降低查询加速服务器的负载,使其专注于数据处理而不是查询解析和优化。可以快速响应用户的查询请求,减少了用户等待时间,提高了查询的响应速度,从而增强了用户体验。可以将逻辑执行计划转换为可执行物理计划,使得不同的查询执行引擎可以共享相同的物理计划,从而增加了系统的可扩展性。
在一些实施例中,可以根据预计算需求信息来计算对应的预计算中间数据,存储到内置存储区域中,以进行直接的调用。具体的,接收业务人员发送的预计算需求信息;分析预计算需求信息,确定每一条预计算需求对应的预计算原始数据、需求计算方式和维护属性;从外置数据湖中调用预计算原始数据,按照需求计算方式进行计算,确定预计算中间数据;将预计算中间数据存储到内置存储区域中,将预计算中间数据与预计算原始数据关联,得到目标物化视图;根据维护属性设置目标物化视图的物化维护间隔,以按照物化维护间隔定时扫描外置数据湖,在发生原始数据的更新时,更新内置存储区域中对应的中间数据。
业务人员可以为公司内部的工作人员,可以负责与外部用户进行沟通,有时外部用户不清楚如何自主的实现自己的目的,可以通过业务人员来实现。业务人员可以根据外部用户的需求来发送预计算需求信息,大部分时间可以是业务人员根据每日的业务方向来自主发送预计算需求信息。预计算原始数据可以为外置数据湖中存储的用于进行该预计算需求对应的预计算的原始数据,需求计算方式可以表示预计算原始数据的计算方式。维护属性包括维护内置存储区域的间隔,即物化维护间隔。
由于内置存储区域中的中间数据是与外置数据湖中的原始数据关联的,因此当外置数据湖发生原始数据的更新时,要同时更新对应在内置存储区域中的中间数据。
具体的,接收业务人员发送的预计算需求信息进行分析,得到若干条预计算需求对应的信息。将每一条预计算需求对应的预计算原始数据、需求计算方式和维护属性从对应的信息中拆解出来。先用外置数据湖中查找并调取出预计算原始数据,按照需求计算方式进行细算,将得到的预计算中间数据存储到内置存储区域里面。将该预计算中间数据在内置存储区域的对应位置与预计算原始数据在外置数据湖中的对应位置进行关联,得到目标物化视图。然后从维护属性中提取出物化维护间隔,设置到目标物化视图上,可以按照该物化维护间隔定时扫描外置数据湖,在发生原始数据的更新时,更新内置存储区域中对应的中间数据。
本实施例通过预计算和物化视图,可以预先计算并存储经常被查询的数据,从而避免在查询时进行实时计算,提高了查询性能。可以避免重复计算相同的预计算需求,提高了计算效率和处理速度。通过设置物化维护间隔,可以灵活地控制内置存储区域中数据的更新频率,以适应不同的业务需求和系统负载情况。通过将预计算中间数据存储到内置存储区域中,可以减少对外置数据湖的访问次数,从而降低了系统负载和资源消耗。可以将预计算中间数据与预计算原始数据关联,使得不同的预计算需求可以共享相同的中间数据,从而增加了系统的可扩展性。
在一些实施例中,可以按照外置数据湖中的数据源区来对内置存储区域进行分区映射,进而确定目标物化视图。具体的,获取预计算需求对应的预计算原始数据在外置数据湖中的数据源区,按照数据源区进行分区映射,以将内置存储区域进行分区,得到若干默认物化视图;按照预计算需求对应的预计算原始数据,从若干默认物化视图中确定预计算需求对应的默认物化视图;将预计算需求与预计算需求对应的预计算中间数据,写入预计算需求对应的默认物化视图,得到目标物化视图。
外置数据湖可以根据需要存储的原始数据,被预先划分为若干数据源区。维护属性还可以包括维护的维度例如利用多少计算资源进行维护、维护后产生的新数据存储在什么地方以及如何对数据进行排序等。
具体的,可以先获取预计算需求对应的预计算原始数据在外置数据湖中的存储位置,即对应的数据源区,然后将该数据源区映射到内置存储区域,使内置存储区域能够进行对应的分区,分区后的每一部分都是一个默认物化视图。然后在默认物化视图中查找预计算原始数据对应的默认物化视图,作为预计算需求对应的默认物化视图,将预计算需求和预计算中间数据写入该对应的默认物化视图,得到目标物化视图。
本实施例通过将内置存储区域进行分区,可以得到多个默认物化视图,从而提高了查询性能。可以根据数据源区进行分区映射,以将内置存储区域进行分区,从而提供了灵活的分区方式。通过将预计算需求与预计算需求对应的预计算中间数据写入到预计算需求对应的默认物化视图中,可以避免重复计算相同的预计算需求,从而减少了计算量和资源消耗。可以将预计算需求与预计算需求对应的预计算中间数据写入到预计算需求对应的默认物化视图中,从而增加了系统的可扩展性。通过将预计算需求与预计算需求对应的预计算中间数据写入到预计算需求对应的默认物化视图中,可以避免在查询时进行实时计算,从而提高了数据处理效率。
在一些实施例中,可以按照预设检测频率表检测数据源区的分区更新时间戳,以及时对数据源区和物化视图进行更新。具体的,按照预设检测频率检测外置数据湖中的数据源区的分区更新时间戳,确定每一数据源区的更新状态,更新状态包括更新和保持;当更新状态为更新时,从分区更新时间戳中提取更新时间进行记录;扫描数据源区中的原始数据,确定是否发生数据变化;若发生数据变化,则获取原始数据相关联若干物化视图,并按照若干物化视图对应的数据计算方式,分别进行重计算,确定每一物化视图对应的预计算更新中间数据;将预计算更新中间数据写入对应的物化视图,覆盖物化视图中的预计算中间数据并记录数据覆盖时刻。
预设检测频率可以是按照历史数据中与当日对标的历史日的数据更新情况来确定的,每一个数据源区都可以设置分区更新时间戳,当数据源区中的原始数据发生更新时,对应的分区更新时间戳会记录下更新的时刻,但是一个数据源区中可能记录若干原始数据,分区更新时间戳并不会记录下发生更新的具体原始数据,因此需要具体扫描确定数据源区中发生数据变化的原始数据。
具体的,可以按照预设检测频率检测外置数据湖中的数据源区的分区更新时间戳,确定每一数据源区的更新状态,其中更新状态包括更新和保持。当更新状态为更新时,说明该数据源区中存在原始数据发生更新,此时要扫描数据源区中的原始数据,确定该原始数据是否发生数据变化。如果发生数据变化,此时可以获取该原始数据相关联的若干物化视图,每一物化视图中存储着预计算需求,其中包含数据计算方式。将数据计算方式提取出来,按照该数据计算方式对变化后的原始数据进行重计算,得到对应的预计算更新中间数据。将预计算更新中间数据写入到对应的物化视图中,覆盖掉该物化视图中的原来的预计算中间数据并记录数据覆盖时刻。
本实施例通过按照预设检测频率检测分区更新时间戳,可以实时检测数据源区的更新状态,从而及时响应数据更新。通过扫描数据源区中的原始数据,可以确定是否发生数据变化,从而避免了无效的计算和存储操作。通过获取原始数据相关联的若干物化视图,并按照若干物化视图对应的数据计算方式分别进行重计算,可以得到精确的预计算更新中间数据,从而提高了数据的准确性和可信度。通过将预计算更新中间数据写入对应的物化视图并覆盖物化视图中的预计算中间数据,可以实现高效的数据覆盖操作,从而提高了系统的处理效率和响应速度。通过记录数据覆盖时刻,可以完整地记录数据的更新历史和变化过程,从而方便后续的数据分析和处理操作。
在一些实施例中,可以通过映射关系和依赖关系来检索相关物化视图,进而确定出可选物化视图。具体的,查找查询主体数据对应的原始数据表,原始数据表存储在外置数据湖中;根据外置数据湖与若干目标物化视图之间的映射关系、内置存储区域中的若干目标物化视图之间的依赖关系,对若干目标物化视图进行检索,确定相关物化视图;根据初始执行计划,从相关物化视图中确定用于进行查询发起请求对应的改写过程的相关物化视图,作为可选物化视图。
外置数据湖中可以存储若干原始数据表,每一张原始数据表中可以存储对应的原始数据,原始数据表可以是按照数据类型来划分,也可以按照每天每月的时段对应的数据来划分。可以预先设置外置数据湖与目标物化视图之间的映射关系并存储,该映射关系可以是一对一,也可以是一对多,例如外置数据湖中某一数据源区中有三个原始数据A、B、C,可以将这三个中的任意两个原始数据进行计算得到的中间数据映射到同一个物化视图中,也可以分别映射到不同的物化视图中,可以根据具体情况进行设置。内置存储区域中的若干目标物化视图之间的依赖关系可以根据具体的预计算需求来制定,有时很多预计算中间数据之间可能有继续进行计算的需要,这些关系可以作为依赖关系并进行存储。
具体的,可以先在外置数据湖中检索查询主体数据对应的原始数据表,调用预先存储的外置数据湖与若干目标物化视图之间的映射关系、内置存储区域中的若干目标物化视图之间的依赖关系检索若干目标物化视图,将其中符合映射关系、依赖关系的物化视图确定为相关物化视图。不同的物化视图能够进行改写的方向、程度可能有所不同,可以根据初始执行计划来确定出有哪些计算过程,然后在相关物化视图中查找能用于这些计算过程、且可以缩短计算步骤的物化视图,将这些相关物化视图确定为可选物化视图。
本实施例通过检索相关物化视图和确定用于改写过程的相关物化视图,可以避免对整个原始数据表的扫描,从而提高了查询效率。通过将原始数据表存储在外置数据湖中,可以减少对数据库服务器的负载,从而提高了系统的可用性和稳定性。通过利用外置数据湖和内置存储区域中的物化视图,可以避免重复计算相同的查询结果,从而提高了数据处理效率和响应速度。通过改写初始执行计划和确定可选物化视图,可以灵活地调整查询方式,从而更好地满足不同的查询需求和业务场景。通过对外置数据湖、内置存储区域和若干目标物化视图的处理和映射关系的利用,可以实现对数据的完整处理过程,从而提高了数据处理准确性和完整性。
在一些实施例中,可选物化视图包括第一可选物化视图和第二可选物化视图。可以检测相关物化视图中的预计算中间数据是否过期,以利用未过期的预计算中间数据进行计算。具体的,根据初始执行计划,从相关物化视图中确定用于进行查询发起请求对应的改写过程的相关物化视图;获取相关物化视图对应的最新数据覆盖时刻、对应在外置数据湖中的若干数据源区的最新更新时间,并确定最新数据覆盖时刻距离当前时刻的第一时间间隔和最新更新时间距离当前时刻的第二时间间隔;判断第一时间间隔是否大于第二时间间隔;若不是,则确定相关物化视图中的预计算中间数据未过期,将该相关物化视图作为第一可选物化视图;若是,则确定相关物化视图中的预计算中间数据过期,将该相关物化视图进行更新,作为第二可选物化视图,以按照第一可选物化视图、第二可选物化视图的顺序进行计算。
最新数据覆盖时刻可以为距离当前时刻最近的一次数据覆盖时刻,最新更新时间可以是数据源区距离当前时刻最近的一次更新对应的时间。
具体的,可以先按照上述实施例中的方式从相关物化视图中确定用于进行查询发起请求对应的改写过程的相关物化视图。获取相关物化视图记录的若干数据覆盖时刻,从中提取出最新数据覆盖时刻,然后可以对应查找该最新数据覆盖时刻对应的相关物化视图关联的外置数据湖中的数据源区,并获取该数据源区中的最新更新时间。然后计算最新数据覆盖时刻到当前时刻的第一时间间隔,计算最新更新时间到当前时刻的第二时间间隔。对比第一时间间隔和第二时间间隔,如果第一时间间隔小于或等于第二时间间隔,表示相关物化视图在关联的数据源区更新时或者更新后也同步进行了更新,表示预计算中间数据未过期,将该相关物化视图作为第一可选物化视图。如果存在相关物化视图的第一时间间隔大于第二时间间隔,则表示相关物化视图在关联的数据源区发生数据更新后,该相关物化视图还没有同步进行更新,此时可以表示该相关物化视图中的预计算中间数据过期,需要进行更新。此时将该相关物化视图作为第二可选物化视图。然后在进行查询发起请求的计算时先针对第一可选物化视图中的相关数据进行计算,同时将第二可选物化视图的预计算中间数据进行刷新,再投入计算。
本实施例通过判断最新数据覆盖时刻与当前时刻的时间间隔是否大于最新更新时间与当前时刻的时间间隔,可以确定相关物化视图中的预计算中间数据是否过期,从而避免使用过期的预计算中间数据,提高了查询效率。通过将相关物化视图作为第一可选物化视图,可以在查询过程中避免重复计算相同的预计算中间数据,从而减少了计算量和资源消耗。通过将相关物化视图进行更新作为第二可选物化视图,可以保证在预计算中间数据过期时及时更新相关物化视图,从而增加了系统的稳定性和可靠性。通过使用最新的预计算中间数据和更新后的相关物化视图,可以保证数据处理使用的数据是最新的和准确的,从而提高了数据处理准确性。通过使用第一可选物化视图和第二可选物化视图的顺序进行预计算,可以根据实际情况选择最优的预计算方式,从而优化了系统性能。
在一些实施例中,查询发起请求还包括原始投影表达式。可以先确定初步改写方式,然后基于数据关系,从初步改写方式中筛选出目标改写方式。然后结合目标改写方式、聚合改写、原始投影表达式的改写等改写方式对初始执行计划进行改写,通过计算查询加速收益来确定逻辑执行计划。具体的,分析初始执行计划,确定初步改写方式,初步改写方式包括谓词补偿改写、多表连接改写、可读增强改写和操作符改写;根据原始需求数据和可用物化视图之间的数据关系,对初步改写方式进行筛选,确定目标改写方式;按照目标改写方式对初始执行计划进行改写,确定第一逻辑执行计划;分析第一逻辑执行计划,确定原始需求数据和可用物化视图对应的数据执行类型,数据执行类型包括数值型数据和文本型数据;对第一逻辑执行计划进行聚合改写,确定第二逻辑执行计划;根据数据执行类型和查询主体数据,确定原始投影表达式的改写方式,并对第二逻辑执行计划进行改写,确定第三逻辑执行计划;对初始执行计划和第三逻辑执行计划分别进行模拟运行,确定第三逻辑执行计划对应的查询加速收益;若查询加速收益大于改写过程的数据运算收益,则将第三逻辑执行计划确定为逻辑执行计划。
不同的初始执行计划具有若干节点,因此对应与不同的初步改写方式,包括谓词补偿改写、多表连接改写、可读增强改写和操作符改写等。谓词补偿改写是指在查询优化过程中,对原始查询语句中的谓词进行补充和优化,以提高查询效率的一种改写方式。多表连接改写是指在查询优化过程中,对多个表之间的连接条件进行优化,以提高查询效率的一种改写方式,包括DeltaJoin改写。可读增强改写是指在保持语义不变的前提下,通过调整语句结构、使用同义词等方式,增强查询语句的可读性的改写方式,包括等价改写。操作符改写是指在查询优化过程中,对原始查询语句中的操作符进行优化和调整,以提高查询效率的一种改写方式,例如UNION改写。
由于原始需求数据和可用物化视图中的中间数据都用于进行查询发起请求对应的计算过程,因此他们之间可能具有一些计算上的联系,这些联系可以作为原始需求数据和可用物化视图之间的数据关系。不同的数据关系具有不同的改写方式,可以预先进行设置。
投影表达式是一种用于标识所需属性的字符串,常用于从表读取数据。投影表达式的改写需要根据具体的应用场景、数据执行类型等来进行。查询加速收益可以表现在使用第三逻辑执行计划相比较初始执行计划能节省的计算资源在相同处理环境下能处理的数据量,数据运算收益可以体现在将初始执行计划改写为第三逻辑执行计划时使用的计算资源在相同处理环境下能处理的数据量。
具体的,可以分析初始执行计划,确定该初始执行计划可以进行哪些改写方式,作为初步改写方式。其中初步改写方式包括谓词补偿改写、多表连接改写、可读增强改写和操作符改写。然后基于原始需求数据和可用物化视图之间的数据关系,在初步改写方式中筛选出该数据关系适用的目标改写方式。先利用目标改写方式对初始执行计划进行改写,确定第一逻辑执行计划。然后对第一逻辑执行计划进行分析,确定出原始需求数据、可用物化视图整体对应的数据执行类型。然后对第一逻辑执行计划进行聚合改写,确定第二逻辑执行计划,根据数据执行类型和查询主体数据,可以查找到对应的原始投影表达式的改写方式,基于该改写方式对第二逻辑执行计划进行改写,得到第三逻辑执行计划。可以对初始执行计划和第三逻辑执行计划分别进行模拟运行,确定第三逻辑执行计划对应的查询加速收益以及将初始执行计划改写成第三逻辑执行计划需要的计算资源,进而确定数据运算收益。将查询加速收益与改写过程的数据运算收益进行对比,如果查询加速收益大于改写过程的数据运算收益,则将第三逻辑执行计划确定为逻辑执行计划。
在一些实现方式中,如果查询加速收益等于或者小于改写过程的数据运算收益,则选择新的改写方式进行改写。
本实施例通过改写初始执行计划和确定第三逻辑执行计划,可以优化查询过程,提高查询效率。通过将原始需求数据和可用物化视图的数据执行类型进行分析并聚合改写第一逻辑执行计划,可以减少数据运算量。通过改写原始投影表达式,可以增强数据的可读性。通过筛选初步改写方式和确定目标改写方式,以及对第一逻辑执行计划的聚合改写和第二逻辑执行计划的改写,可以优化逻辑执行计划。通过将原始需求数据和可用物化视图的数据执行类型进行分析并聚合改写第一逻辑执行计划,可以降低系统负载。
在另一些实施例中,在现代分析型数据库中,随着CPU硬件的计算速度提升,以及向量化计算技术的普及,端到端的查询性能得到显著的提升。与此同时,在实际场景中用户的查询往往面临到其他的性能瓶颈:
1.存储系统访问瓶颈:现在分析型数据库往往使用外置存储系统,例如对象存储、分布式文件存储系统,其特点是存储成本低,可扩展性极高,但访问性能相比于本地存储系统仍有差距,故而成为查询性能瓶颈
2.计算数据量大:很多实际的场景中往往要计算大量的数据,而非局限于少量的数据,因而依靠朴素的即时计算无法再满足用户对查询时延的诉求
因而,本方案提出一种基于物化视图进行预计算的方法(基于物化视图的查询加速方法),来优化存储访问性能、降低计算开销,实现大幅的查询性能加速。
目前的现代分析型数据库系统架构:
1.提出一种将数据存储在开放数据湖中的架构,使得大量的未经加工的数据存储于统一的系统中,使得后续的查询和计算能够更加灵活,同时在此之上构建数据仓库,满足部分场景中用户对于查询性能的诉求。在此架构中有几个关键部分,例如可扩展的元数据管理系统,能够管理大规模数据;可扩展的计算系统,能够调度和执行多种计算任务;高性能的查询和计算系统,能够高效萃取和分析数据。
2.提出一种在数据湖上构建高性能查询引擎的方法,能够利用已有的 Spark 计算系统,集成向量化的执行技术,以及适用于数据湖存储的自适应算法。
3.利用云计算系统中的对象存储系统,以及弹性计算系统,构建具有弹性的数据仓库系统。为加速其中的存储访问速度,设计了基于一致性哈希的本地缓存方法,使得存储性能能够接近本地存储系统。
目前的数据库中多级存储架构的方法:
1.提出一种基于语义的缓存方法,使得缓存能够具备计算语义,实现更细粒度、更高效率的缓存系统。
2.提出一种分离式的缓存系统,使得计算系统、远程存储、缓存系统能够独立部署。
3.提出一种专门用于分析型数据库的缓存方法,数据存储于对象存储系统中,在计算节点本地构建语义化的存储,旨在提高缓存效率。
目前的物化视图技术:
1.提出一种适用于 SPJG 物化视图的查询改写方法,通过谓词分解、谓词补偿、聚合改写、链接图构建等技术,实现将查询改写到物化视图的方法,加速数据库查询。
2.提出一种构建部分物化视图的方法,仅物化部分数据,从而提高物化效率,并且能够动态构建完整的查询结果。
3.提出一种物化视图的延迟更新方法,通过累计视图的多个事务,降低物化视图的维护开销。
目前的现代分析型数据库系统架构:主要面向架构优化、通用的计算性能优化、存储性能优化,但并未解决查询大规模数据时缓存失效的问题,并未解决相似查询的预计算问题。因此,本方案着眼于通过预计算的方法优化查询性能,并能够解决大规模数据计算的性能问题。
目前的数据库中多级存储架构的方法:重在优化缓存效率,将缓存和计算语义结合;实现缓存和远程存储的分离,提高缓存的扩展性和访问效率。但是其局限性在于,适用于非常有限的数据过滤场景,无法解决数据聚合的问题;缓存的仍然是原始数据,没有办法缓存进一步计算后的结果。因此,本方案着眼于通过预计算的方法进一步提高缓存效率,相比于原始数据缓存具备更贴合的计算语义。
目前的物化视图技术:旨在通过物化视图自动优化查询性能,降低物化视图的维护开销。但是其局限性在于,没有利用到存储系统的多级存储特征,充分利用不同存储介质的存储效率;无法适用于数据高频更新且查询的场景,只能延后但无法避免视图的维护开销。此,本方案旨在利用物化视图数据进行预计算,并充分利用不同存储介质的优点,且降低物化视图的维护开销。
相关概念:
数据湖存储:将数据以开放的格式,存储在对象存储中,使得用于多种程序开放访问
数据分区:将数据按照某种方式进行物理拆分,存储到不同的物理文件中,使得数据易于更新和管理,加速查询
查询优化:数据库执行流程的一部分,整个执行流程由 SQL 解析、校验、查询优化、物理计划几个部分组成
聚合、Union:标准的SQL算子的算子,聚合算子用于将数据按照指定的维度和指标进行聚合,Union用于将多个关系的数据汇总起来。
基于物化视图进行查询加速的总体的流程架构可以参考如图3所示的映射流程架构图。其中CloudStorage模块为外置数据湖,存储的是原始数据;MV模块为内置存储区域的物化视图,存储的是预计算的中间数据;MVMaintenance模块用于维护(预计算);Query用于查询动作;QueryRewrite模块可以用于结合系统维护的要求对查询对应的计算过程进行修改;Execution用于表示输出改写结果进行计算。
整个基于物化视图进行查询加速的系统主要分为两个模块:
1.物化视图维护模块:负责维护和更新物化视图,按照物化视图定义,从云存储系统中读取数据,进行预计算,将计算结果存储到本地存储系统中,作为物化视图。
2.物化视图改写模块:负责处理查询改写,在查询优化过程中探索可用于加速的物化视图,并利用物化视图的预计算结果改写执行计划,加速查询性能。
在整体流程中:
1.用户创建物化视图,此时系统会交付给维护模块,负责预计算,并存储到本地。
2.用户发起查询,通过数据库的解析和优化器模块,并通过物化视图查询改写模块探索可用的物化视图,通过多种算法匹配可用的,进行改写。
3.系统执行查询:经过物化视图查询改写后,得到逻辑执行计划,后续系统会将其转换成可执行的物理计划,并通过执行引擎执行。
物化视图能够加速的原因:
1.物化视图做了预计算,大部分的计算开销都被预先处理了,因此当真正执行查询时,只需要做少量的后置计算,相对来说开销非常低。
2.物化视图的预计算结果相比于原始数据来说要小很多,因此适合存储到更高性能的存储介质上,访问和缓存效率更高。
3.通过以上的计算开销降低和存储效率提高,物化视图能够大幅提高查询速度。
物化视图维护的过程可以具体参考图4所示的物化视图维护示意图。其中DataLake可以用于表示外置数据湖,MV可以用于表示内置存储区域。DataLake对应的p1、p2、p3和p4可以用于表示外置数据湖的数据源区,MV对应的p1、p2用于表示需要进行映射的DataLake中的p1、p2对应的两个物化视图,内部包含DataLake中的p1、p2的原始数据;MV对应的p3和p4可以用于表示不需要进行映射的DataLake中的p3、p4对应的两个物化视图,内部为空。
用户创建物化视图时,会指定几个属性,系统据此来维护物化视图:
1.视图查询:通过SQL的方式定义物化视图需要维护的内容,用于指导物化视图的预计算,并且用于后续的查询改写。
2.分区映射关系:指定如何对物化视图进行分区,且分区如何与DataLake进行映射,以此实现分区的更新判断与物化视图自动更新。
3.物化分区:指定物化视图需要物化哪部分数据,可以通过TTL的方式物化最近的一部分数据,或者通过GRACE PERIOD的方式物化历史数据。
4.维护刷新间隔:指定物化刷新的间隔,可以指定每分钟、每小时等任意时间粒度去刷新物化视图。
物化视图维护模块会依据几个方法进行维护:
1.分区映射:根据分区映射关系建立数据源和物化视图的映射,支持一对一和多对一的映射方式,数据湖存储中的每个分区都会映射到物化视图的一个分区。
2.更新管理:根据数据湖存储中的分区更新时间戳判断数据更新与否,在更新物化视图分区时,记录映射的数据湖存储中的更新时间。后续更新时判断数据湖分区是否有变化,如果没有变化,则不需要更新这个物化视图分区。
3.分区更新:更新单个物化视图分区时,会根据映射的数据湖分区,仅扫描此部分数据,通过计算,写入到物化视图分区中。因此,物化视图可以实现单个分区的更新,无需进行全量的数据更新。
4.定时调度:根据用户定义的维护间隔,定时扫描所有分区,更新其中的部分分区。
查询改写模块的具体运行过程可以参考如图5所示的查询改写流程图。左侧是查询的执行计划,由SCAN、AGGREGATION两个算子组成,再经过物化视图改写模块之后,得到右侧的实际执行计划,由多个算子组成,一部分数据会SCAN物化视图数据,另一部分会扫描原始数据,进行现场计算SCAN+AGGREGATION;接下来会使用UNION算子将这两部分数据联合起来得到完整的数据,最后进行二次聚合。
首先计算候选MV:根据查询中用到的表,根据物化视图的依赖关系,选择出与此查询相关的MV,并根据MV的执行计划,判断是否可用于查询改写。
时效性判断:分析物化视图的时效性,检查每个分区对应的数据湖存储的分区更新时间,如果物化视图分区记录的更新时间小于数据湖分区的更新时间,则意味着这个分区的数据已经过期,不可用于直接查询。
SPJ改写:根据以下算法:
a.对MV和查询进行等价类计算、谓词分解、谓词规范化等,用于谓词补偿改写。
b.根据MV表集合和查询中的表集合,判断改写类型,分别进行Query DeltaJoin、等价改写、View DeltaJoin改写。
c.UNION改写:对于部分数据分区过期的场景,以及MV谓词无法覆盖查询的场景,构造Union节点,将MV数据和原始的Scan结果汇总起来,满足查询需求。
d.在此基础上,进行聚合改写,并修改投影表达式。
然后进行聚合改写,并修改投影表达式。
最后将改写后的执行计划纳入到后续的优化器执行流程,让优化器判断此执行计划是否有收益。
对于部分数据分区过期的场景,可以应用以下算法:
1.分区谓词补偿:
a.对于可用的 MV 分区,将其数据范围转换成谓词。
b.例如MV分区是[2022-01-01,2022-02-01),将其转换成谓词dt>='2022-01-01'ANDdt<'2022-02-01'。
c.对于多个分区,将其转换成多个合取谓词来表示。
2.查询相反谓词计算:
a.基于查询中的谓词计算出查询补偿谓词,表达物化视图不能够覆盖的数据范围。
b.例如MV分区是[2022-01-01,2022-02-01),而查询谓词是dt<='2022-03-01'。此时会根据查询谓词,计算出相应的相反谓词dt>='2022-02-01'。
3.补偿谓词改写:
a.根据构造出的相反谓词,以及原本的查询谓词,计算出最终的查询谓词,dt>='2022-02-01'ANDdt<='2022-03-01'。
4.UNION计算:
a.将MV的数据和补偿的查询数据通过UNION 算子汇总起来。
b.例如MV是[2022-01-01,2022-02-01),而查询谓词是dt<= '2022-03-01',最终计算出的执行计划是Union(Scan(MV),Scan(table,dt>='2022-02-01'AND dt<='2022-03-01'))。
5.二次聚合:
对于聚合查询来说,需要在Union节点之后进行二次聚合,以及进行去重。
整体的查询加速过程可以参考如图6所示的查询加速整体架构图。如图6所示,最底层的DataLake为数据湖,存储了分区p1,p2,p3,p4的所有数据;在上层MV物化视图中,对其中一部分的数据进行预计算,得到p1 agg,p2 agg,而其余分区p3、p4的数据不做计算;最后在实际查询中,包含多种计算SCAN,AGGREGATION,UNION,通过物化视图的查询改写模块,会判断数据是否做了预计算,直接扫描预计算的数据,并和未计算的数据联合起来,得到完整的计算结果。
根据以上算法,实现了只需要物化部分分区的数据,并在查询时将其汇总起来,保证最终查询结果的一致性。以图6为例:
1.数据湖中存储了全部数据,并进行分区。
2.物化视图的分区与数据湖分区一一映射,并物化其中一部分.
3.查询改写时,对于已经物化的部分,直接Scan,对于未物化的部分,会查询数据湖中的数据并进行即时计算,最终将两部分数据汇总起来。
本申请的关键在于:
1.基于物化视图查询改写技术,融合历史数据的预计算与实时数据的计算,实现较低的预计算成本且保证数据实时性。
2.将以上技术应用于数据湖存储系统中,构建多层存储架构,发挥了对象存储、本地存储的优势,实现高效的预计算与缓存技术。
相比于现有的现代分析型数据库系统架构,本方案能够通过预计算的方式大幅降低计算开销,加速重复或相似的查询,并且存储的计算结果相比于原始数据大幅缩小,因此存储访问效率也会大幅提升。
相比于现有的多级存储架构方法,本方案能够缓存计算后的数据,缓存效率大幅提升,且缓存的开销很低。
相比于现有的物化视图技术,本方案能够利用数据的不同时效性,对历史数据进行预计算,避免物化实时更新的数据,使得物化视图的维护成本较低,并且通过查询改写的技术将其合并,从而保证数据的时效性。
图7为本申请一实施例提供的一种基于物化视图的查询加速装置的结构示意图,如图7所示的,本实施例的基于物化视图的查询加速装置700包括:初始执行计划生成模块701、可用物化视图确定模块702、逻辑执行计划确定模块703和可执行物理计划发送模块704。
初始执行计划生成模块701,用于接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对计算过程进行优化,生成初始执行计划;
可用物化视图确定模块702,用于基于查询主体数据,检索确定可用物化视图;
逻辑执行计划确定模块703,用于根据可用物化视图和查询主体数据,从外置数据湖中提取查询发起请求对应的原始需求数据,并基于原始需求数据和可用物化视图,改写初始执行计划,确定逻辑执行计划;
可执行物理计划发送模块704,用于根据查询执行引擎的设备属性,将逻辑执行计划转换为可执行物理计划,并将可执行物理计划发送到查询执行引擎,以使查询执行引擎根据可执行物理计划对可用物化视图和原始需求数据执行计算过程。
可选的,基于物化视图的查询加速装置700还包括数据更新模块705,用于:
接收业务人员发送的预计算需求信息;
分析预计算需求信息,确定每一条预计算需求对应的预计算原始数据、需求计算方式和维护属性;
从外置数据湖中调用预计算原始数据,按照需求计算方式进行计算,确定预计算中间数据;
将预计算中间数据存储到内置存储区域中,将预计算中间数据与预计算原始数据关联,得到目标物化视图;
根据维护属性设置目标物化视图的物化维护间隔,以按照物化维护间隔定时扫描外置数据湖,在发生原始数据的更新时,更新内置存储区域中对应的中间数据。
可选的,数据更新模块705在将预计算中间数据存储到内置存储区域中,将预计算中间数据与预计算原始数据关联,得到目标物化视图时,具体用于:
获取预计算需求对应的预计算原始数据在外置数据湖中的数据源区,按照数据源区进行分区映射,以将内置存储区域进行分区,得到若干默认物化视图;
按照预计算需求对应的预计算原始数据,从若干默认物化视图中确定预计算需求对应的默认物化视图;
将预计算需求与预计算需求对应的预计算中间数据,写入预计算需求对应的默认物化视图,得到目标物化视图。
可选的,基于物化视图的查询加速装置700还包括数据覆盖模块706,用于:
按照预设检测频率检测外置数据湖中的数据源区的分区更新时间戳,确定每一数据源区的更新状态,更新状态包括更新和保持;
当更新状态为更新时,从分区更新时间戳中提取更新时间进行记录;
扫描数据源区中的原始数据,确定是否发生数据变化;
若发生数据变化,则获取原始数据相关联若干物化视图,并按照若干物化视图对应的数据计算方式,分别进行重计算,确定每一物化视图对应的预计算更新中间数据;
将预计算更新中间数据写入对应的物化视图,覆盖物化视图中的预计算中间数据并记录数据覆盖时刻。
可选的,可用物化视图确定模块702在基于查询主体数据,检索确定可用物化视图时,具体用于:
查找查询主体数据对应的原始数据表,原始数据表存储在外置数据湖中;
根据外置数据湖与若干目标物化视图之间的映射关系、内置存储区域中的若干目标物化视图之间的依赖关系,对若干目标物化视图进行检索,确定相关物化视图;
根据初始执行计划,从相关物化视图中确定用于进行查询发起请求对应的改写过程的相关物化视图,作为可选物化视图。
可选的,可选物化视图包括第一可选物化视图和第二可选物化视图;可用物化视图确定模块702在根据初始执行计划,从相关物化视图中确定用于进行查询发起请求对应的改写过程的相关物化视图,作为可选物化视图时具体用于:
根据初始执行计划,从相关物化视图中确定用于进行查询发起请求对应的改写过程的相关物化视图;
获取相关物化视图对应的最新数据覆盖时刻、对应在外置数据湖中的若干数据源区的最新更新时间,并确定最新数据覆盖时刻距离当前时刻的第一时间间隔和最新更新时间距离当前时刻的第二时间间隔;
判断第一时间间隔是否大于第二时间间隔;
若不是,则确定相关物化视图中的预计算中间数据未过期,将该相关物化视图作为第一可选物化视图;
若是,则确定相关物化视图中的预计算中间数据过期,将该相关物化视图进行更新,作为第二可选物化视图,以按照第一可选物化视图、第二可选物化视图的顺序进行计算。
可选的,查询发起请求还包括原始投影表达式;逻辑执行计划确定模块703在基于原始需求数据和可用物化视图,改写初始执行计划,确定逻辑执行计划时具体用于:
分析初始执行计划,确定初步改写方式,初步改写方式包括谓词补偿改写、多表连接改写、可读增强改写和操作符改写;
根据原始需求数据和可用物化视图之间的数据关系,对初步改写方式进行筛选,确定目标改写方式;
按照目标改写方式对初始执行计划进行改写,确定第一逻辑执行计划;
分析第一逻辑执行计划,确定原始需求数据和可用物化视图对应的数据执行类型,数据执行类型包括数值型数据和文本型数据;
对第一逻辑执行计划进行聚合改写,确定第二逻辑执行计划;
根据数据执行类型和查询主体数据,确定原始投影表达式的改写方式,并对第二逻辑执行计划进行改写,确定第三逻辑执行计划;
对初始执行计划和第三逻辑执行计划分别进行模拟运行,确定第三逻辑执行计划对应的查询加速收益;
若查询加速收益大于改写过程的数据运算收益,则将第三逻辑执行计划确定为逻辑执行计划。
本实施例的装置,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图8为本申请一实施例提供的一种电子设备的结构示意图,如图8所示,本实施例的电子设备800可以包括:存储器801和处理器802。
存储器801上存储有能够被处理器802加载并执行上述实施例中方法的计算机程序。
其中,处理器802和存储器801相连,如通过总线相连。
可选地,电子设备800还可以包括收发器。需要说明的是,实际应用中收发器不限于一个,该电子设备800的结构并不构成对本申请实施例的限定。
处理器802可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器802也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线可包括一通路,在上述组件之间传送信息。总线可以是PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器801可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器801用于存储执行本申请方案的应用程序代码,并由处理器802来控制执行。处理器802用于执行存储器801中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本实施例的电子设备,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
本申请还提供一种计算机可读存储介质,存储有能够被处理器加载并执行如上实施例中的方法的计算机程序。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种基于物化视图的查询加速方法,其特征在于,包括:
接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对所述计算过程进行优化,生成初始执行计划;
基于所述查询主体数据,检索确定可用物化视图;
根据所述可用物化视图和所述查询主体数据,从外置数据湖中提取所述查询发起请求对应的原始需求数据,并基于所述原始需求数据和所述可用物化视图,改写所述初始执行计划,确定逻辑执行计划;
根据查询执行引擎的设备属性,将所述逻辑执行计划转换为可执行物理计划,并将所述可执行物理计划发送到所述查询执行引擎,以使所述查询执行引擎根据所述可执行物理计划对所述可用物化视图和所述原始需求数据执行计算过程。
2.根据权利要求1所述的基于物化视图的查询加速方法,其特征在于,还包括:
接收业务人员发送的预计算需求信息;
分析所述预计算需求信息,确定每一条预计算需求对应的预计算原始数据、需求计算方式和维护属性;
从所述外置数据湖中调用所述预计算原始数据,按照所述需求计算方式进行计算,确定预计算中间数据;
将所述预计算中间数据存储到内置存储区域中,将所述预计算中间数据与所述预计算原始数据关联,得到目标物化视图;
根据所述维护属性设置所述目标物化视图的物化维护间隔,以按照所述物化维护间隔定时扫描所述外置数据湖,在发生原始数据的更新时,更新内置存储区域中对应的中间数据。
3.根据权利要求2所述的基于物化视图的查询加速方法,其特征在于,所述将所述预计算中间数据存储到内置存储区域中,将所述预计算中间数据与所述预计算原始数据关联,得到目标物化视图,包括:
获取所述预计算需求对应的预计算原始数据在所述外置数据湖中的数据源区,按照所述数据源区进行分区映射,以将内置存储区域进行分区,得到若干默认物化视图;
按照所述预计算需求对应的预计算原始数据,从所述若干默认物化视图中确定所述预计算需求对应的默认物化视图;
将预计算需求与所述预计算需求对应的预计算中间数据,写入所述预计算需求对应的默认物化视图,得到目标物化视图。
4.根据权利要求3所述的基于物化视图的查询加速方法,其特征在于,还包括:
按照预设检测频率检测所述外置数据湖中的数据源区的分区更新时间戳,确定每一数据源区的更新状态,所述更新状态包括更新和保持;
当所述更新状态为更新时,从所述分区更新时间戳中提取更新时间进行记录;
扫描所述数据源区中的原始数据,确定是否发生数据变化;
若发生数据变化,则获取所述原始数据相关联若干物化视图,并按照所述若干物化视图对应的数据计算方式,分别进行重计算,确定每一物化视图对应的预计算更新中间数据;
将所述预计算更新中间数据写入对应的物化视图,覆盖所述物化视图中的预计算中间数据并记录数据覆盖时刻。
5.根据权利要求2所述的基于物化视图的查询加速方法,其特征在于,所述基于所述查询主体数据,检索确定可用物化视图,包括:
查找所述查询主体数据对应的原始数据表,所述原始数据表存储在所述外置数据湖中;
根据所述外置数据湖与若干目标物化视图之间的映射关系、所述内置存储区域中的若干目标物化视图之间的依赖关系,对所述若干目标物化视图进行检索,确定相关物化视图;
根据所述初始执行计划,从所述相关物化视图中确定用于进行所述查询发起请求对应的改写过程的相关物化视图,作为可选物化视图。
6.根据权利要求5所述的基于物化视图的查询加速方法,其特征在于,所述可选物化视图包括第一可选物化视图和第二可选物化视图;所述根据所述初始执行计划,从所述相关物化视图中确定用于进行所述查询发起请求对应的改写过程的相关物化视图,作为可选物化视图,包括:
根据所述初始执行计划,从所述相关物化视图中确定用于进行所述查询发起请求对应的改写过程的相关物化视图;
获取所述相关物化视图对应的最新数据覆盖时刻、对应在所述外置数据湖中的若干数据源区的最新更新时间,并确定所述最新数据覆盖时刻距离当前时刻的第一时间间隔和所述最新更新时间距离当前时刻的第二时间间隔;
判断所述第一时间间隔是否大于所述第二时间间隔;
若不是,则确定所述相关物化视图中的预计算中间数据未过期,将该相关物化视图作为第一可选物化视图;
若是,则确定所述相关物化视图中的预计算中间数据过期,将该相关物化视图进行更新,作为第二可选物化视图,以按照第一可选物化视图、第二可选物化视图的顺序进行计算。
7.根据权利要求1-5任一项所述的基于物化视图的查询加速方法,其特征在于,所述查询发起请求还包括原始投影表达式;所述基于所述原始需求数据和所述可用物化视图,改写所述初始执行计划,确定逻辑执行计划,包括:
分析所述初始执行计划,确定初步改写方式,所述初步改写方式包括谓词补偿改写、多表连接改写、可读增强改写和操作符改写;
根据所述原始需求数据和所述可用物化视图之间的数据关系,对所述初步改写方式进行筛选,确定目标改写方式;
按照所述目标改写方式对所述初始执行计划进行改写,确定第一逻辑执行计划;
分析所述第一逻辑执行计划,确定所述原始需求数据和所述可用物化视图对应的数据执行类型,所述数据执行类型包括数值型数据和文本型数据;
对所述第一逻辑执行计划进行聚合改写,确定第二逻辑执行计划;
根据所述数据执行类型和所述查询主体数据,确定所述原始投影表达式的改写方式,并对第二逻辑执行计划进行改写,确定第三逻辑执行计划;
对所述初始执行计划和所述第三逻辑执行计划分别进行模拟运行,确定所述第三逻辑执行计划对应的查询加速收益;
若所述查询加速收益大于改写过程的数据运算收益,则将所述第三逻辑执行计划确定为逻辑执行计划。
8.一种基于物化视图的查询加速装置,其特征在于,包括:
初始执行计划生成模块,用于接收查询发起请求并解析,确定对应的查询主体数据、计算过程,并对所述计算过程进行优化,生成初始执行计划;
可用物化视图确定模块,用于基于所述查询主体数据,检索确定可用物化视图;
逻辑执行计划确定模块,用于根据所述可用物化视图和所述查询主体数据,从外置数据湖中提取所述查询发起请求对应的原始需求数据,并基于所述原始需求数据和所述可用物化视图,改写所述初始执行计划,确定逻辑执行计划;
可执行物理计划发送模块,用于根据查询执行引擎的设备属性,将所述逻辑执行计划转换为可执行物理计划,并将所述可执行物理计划发送到所述查询执行引擎,以使所述查询执行引擎根据所述可执行物理计划对所述可用物化视图和所述原始需求数据执行计算过程。
9.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于调用并执行所述存储器中的程序指令,执行如权利要求1-7任一项所述的基于物化视图的查询加速方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序;所述计算机程序被处理器执行时,实现如权利要求1-7任一项所述的基于物化视图的查询加速方法。
CN202311711103.4A 2023-12-13 2023-12-13 基于物化视图的查询加速方法、装置、电子设备及介质 Active CN117688032B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311711103.4A CN117688032B (zh) 2023-12-13 2023-12-13 基于物化视图的查询加速方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311711103.4A CN117688032B (zh) 2023-12-13 2023-12-13 基于物化视图的查询加速方法、装置、电子设备及介质

Publications (2)

Publication Number Publication Date
CN117688032A true CN117688032A (zh) 2024-03-12
CN117688032B CN117688032B (zh) 2024-06-18

Family

ID=90126090

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311711103.4A Active CN117688032B (zh) 2023-12-13 2023-12-13 基于物化视图的查询加速方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN117688032B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180341677A1 (en) * 2017-05-25 2018-11-29 Futurewei Technologies, Inc. Bounded query rewriting using views
US11216462B1 (en) * 2020-08-14 2022-01-04 Snowflake Inc. Transient materialized view rewrite
CN115510139A (zh) * 2022-10-11 2022-12-23 上海哔哩哔哩科技有限公司 数据查询方法和装置
CN115827676A (zh) * 2022-12-27 2023-03-21 杭州海康威视系统技术有限公司 Sql子查询的执行方法、装置、终端设备以及介质
CN115964374A (zh) * 2023-02-22 2023-04-14 深圳计算科学研究院 一种基于预计算场景的查询处理方法及其装置
CN116126950A (zh) * 2022-10-09 2023-05-16 上海哔哩哔哩科技有限公司 实时物化视图系统和方法
CN116795859A (zh) * 2022-03-14 2023-09-22 腾讯科技(深圳)有限公司 数据分析方法、装置、计算机设备和存储介质
CN117194445A (zh) * 2023-07-27 2023-12-08 华为技术服务有限公司 物化视图的更新方法及电子设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180341677A1 (en) * 2017-05-25 2018-11-29 Futurewei Technologies, Inc. Bounded query rewriting using views
US11216462B1 (en) * 2020-08-14 2022-01-04 Snowflake Inc. Transient materialized view rewrite
CN116795859A (zh) * 2022-03-14 2023-09-22 腾讯科技(深圳)有限公司 数据分析方法、装置、计算机设备和存储介质
CN116126950A (zh) * 2022-10-09 2023-05-16 上海哔哩哔哩科技有限公司 实时物化视图系统和方法
CN115510139A (zh) * 2022-10-11 2022-12-23 上海哔哩哔哩科技有限公司 数据查询方法和装置
CN115827676A (zh) * 2022-12-27 2023-03-21 杭州海康威视系统技术有限公司 Sql子查询的执行方法、装置、终端设备以及介质
CN115964374A (zh) * 2023-02-22 2023-04-14 深圳计算科学研究院 一种基于预计算场景的查询处理方法及其装置
CN117194445A (zh) * 2023-07-27 2023-12-08 华为技术服务有限公司 物化视图的更新方法及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋廉 等: "一种对象代理数据库的跨类查询优化方法", 《计算机工程与科学》, vol. 38, no. 7, 31 July 2016 (2016-07-31) *

Also Published As

Publication number Publication date
CN117688032B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
WO2022057739A1 (zh) 数据分区存储方法、装置及系统
US9930113B2 (en) Data retrieval via a telecommunication network
US8271478B2 (en) Fast algorithms for computing semijoin reduction sequences
CN113704300B (zh) 供数据检索方法使用的数据印记技术
WO2023086322A1 (en) Late materialization of queried data in database cache
US8200673B2 (en) System and method for on-demand indexing
CN107220363B (zh) 一种支持全局复杂检索的跨地域查询方法及系统
CN115952203B (zh) 数据查询方法、设备、系统及存储介质
Yuan et al. VDB-MR: MapReduce-based distributed data integration using virtual database
CN117688032B (zh) 基于物化视图的查询加速方法、装置、电子设备及介质
US11947537B1 (en) Automatic index management for a non-relational database
CN114064729A (zh) 一种数据检索方法、装置、设备及存储介质
EP2990960A1 (en) Data retrieval via a telecommunication network
US20240078237A1 (en) Database Join Operations With Early Filtering
US12124460B2 (en) Deep mining of enterprise data sources
US12079207B2 (en) Systems and methods for intelligent database report generation
US20240232186A9 (en) Virtual access to parameterized data objects
US20240184793A1 (en) Deep mining of enterprise data sources
CN116756375B (zh) 一种基于图谱的异构数据的处理系统
JP2001067369A (ja) 情報検索システム、情報検索方法および情報検索用プログラムを記録した記録媒体
US11586604B2 (en) In-memory data structure for data access
US11941031B2 (en) Systems and methods for specifying OLAP cube at query time
Wang et al. A data services composition approach for continuous query on social media streams
Lin et al. A Scalable Lightweight RDF Knowledge Retrieval System

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