CN111597209B - 一种数据库物化视图构建系统、方法以及系统创建方法 - Google Patents

一种数据库物化视图构建系统、方法以及系统创建方法 Download PDF

Info

Publication number
CN111597209B
CN111597209B CN202010367321.0A CN202010367321A CN111597209B CN 111597209 B CN111597209 B CN 111597209B CN 202010367321 A CN202010367321 A CN 202010367321A CN 111597209 B CN111597209 B CN 111597209B
Authority
CN
China
Prior art keywords
query
sub
learning model
materialized view
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010367321.0A
Other languages
English (en)
Other versions
CN111597209A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202010367321.0A priority Critical patent/CN111597209B/zh
Publication of CN111597209A publication Critical patent/CN111597209A/zh
Application granted granted Critical
Publication of CN111597209B publication Critical patent/CN111597209B/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
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24535Query rewriting; Transformation of sub-queries or 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/24542Plan 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/24547Optimisations to support specific applications; Extensibility of optimisers
    • 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/26Visual data mining; Browsing structured data
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (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

本申请实施例公开了一种数据库物化视图构建系统、方法以及系统创建方法,该系统包括:查询负载预处理模块、离线训练模块和在线推荐模块;查询负载预处理模块用于对输入的查询负载进行预处理获取子查询代表;离线训练模块用于通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练;在线推荐模块用于通过深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;并通过强化学习模型获取查询代价最低的最优子查询和相应的最优物化视图。该实施例方案较大程度降低了批量查询的冗余代价,并实现了物化视图近似优化过程的收敛。

Description

一种数据库物化视图构建系统、方法以及系统创建方法
技术领域
本文涉及信息检索技术,尤指一种数据库物化视图构建系统、方法以及系统创建方法。
背景技术
在数据库研究领域中,针对批量查询的优化有很多手段,其中一种是利用物化视图的技术降低批量查询的冗余代价。具体来说,在联机分析处理 (OLAP)系统中,分析性的SQL查询语句间存在相同的子查询,这些共同的子查询造成了冗余的查询代价。为了解决这样的问题,一种优化的方法是针对共同的子查询构建相应的视图,然后通过将视图的查询结果存储下来再被复用的方式来减少冗余的查询代价。换句话说,一次查询多次复用可以极大提高查询效率,降低不必要的查询代价。
然而,现有的方法大多还是需要靠数据库管理员(DBA)根据经验手动构建视图,这种方式的不足有两点:一是对于没有经验的数据库使用者不太友好;二是手动构建视图的方式十分低效。为了解决这样的问题,有的研究者提出了自动构建物化视图的技术,但是他们只是提出一种启发式的算法,并没有解决物化视图自动构建过程中面临的以下挑战:
1、如何衡量一个物化视图被一个原查询复用后带来的收益。直观来说,针对一个原查询,这样的收益等价于使用物化视图相比于不使用物化视图能够减少的查询代价。但是,在实际衡量这个代价的过程中,我们不能生成所有可能的物化视图并利用实际的物化视图执行一遍所有的查询去产生真实的代价,因为这会产生更大的代价。因此,我们只能利用估计的手段去预测收益。目前,已经有很多估计查询代价的方法,但是仍然无法估计重写后的新查询的查询代价。因此,此处的难点是如何为新查询估计代价。
2、如何自动选择子查询去生成物化视图。这个选择问题可以建模成整数优化问题,然后利用整数优化问题求解器求取精确解。但是,随着数据规模的增大,求解器无法求取精确解。因此,有的研究人员提出了迭代求解的近似算法。具体来说,将整体的优化问题看成两部分:一是选择子查询建立物化视图,二是为原查询选择相应的物化视图重写子查询。迭代求解的算法就是先固定第二个部分的优化对象只优化第一个部分的优化对象,然后再固定第一个部分的优化对象只优化第二个部分的优化对象,最后重复上述两个步骤直到收敛。其中,第一部分的优化对象利用概率计算的方式确定,这个会造成整体优化的目标在两个不同的优化步骤之间来回震荡而无法收敛的问题。因此,此处的难点是如何解决这种近似优化过程无法收敛的问题。
发明内容
本申请实施例提供了一种数据库物化视图构建系统、方法以及系统创建方法,能够较大程度降低批量查询的冗余代价,并实现物化视图近似优化过程的收敛。
本申请实施例提供了一种数据库物化视图构建系统,所述系统可以包括:查询负载预处理模块、离线训练模块和在线推荐模块;
所述查询负载预处理模块,可以用于对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,每一类子查询包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用;
所述离线训练模块,可以用于通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数;
所述在线推荐模块,可以用于将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;还用于将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
在本申请的示例性实施例中,所述查询负载预处理模块可以包括:子查询抽取子模块、子查询等价识别子模块、子查询聚类子模块和子查询代表选取子模块;
所述子查询抽取子模块,可以用于从给定的多个查询负载中抽取出子查询;所述从给定的多个查询负载中抽取出子查询包括:使用数据库查询引擎的解析工具将所述查询负载的原查询语句解析成逻辑计划树;其中,所述逻辑计划树的每个子树对应为一个子查询;
所述子查询等价识别子模块,可以用于判断两个子查询是否是等价的;
所述子查询聚类子模块,可以用于根据识别到的等价子查询对所有子查询进行聚类;
所述子查询代表选取子模块,用于获取每一类子查询中每一个子查询的查询代价,并从每一类子查询中获取查询代价最小的子查询作为该类子查询的子查询代表。
在本申请的示例性实施例中,所述深度学习模型可以包括宽度子模块和深度子模块;
所述宽度子模型,可以用于对数值型特征进行正则化并拼接为第一定长向量Dc;对所述第一定长向量Dc进行仿射线性变换获取第五定长向量Dw
所述深度子模块,可以用于对非数值型特征进行编码获取第二定长向量 De,并对关联的数据库表信息t的非数值型特征进行编码获取第三定长向量Dm;将所述第一定长向量Dc、所述第二定长向量De和所述第三定长向量Dm拼接成第四定长向量Dr;将所述第四定长向量Dr通过残差网络获取第六定长向量Z2
在本申请的示例性实施例中,所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价可以包括:
获取原查询的查询计划q、所述物化视图对应的子查询代表的查询计划和关联的数据库表信息t作为输入数据;
通过所述宽度子模块对所述数据库表信息t的数值型特征进行处理获取与所述数据库表信息t对应的第五定长向量Dw
通过所述深度子模块对所述原查询的查询计划q、所述物化视图对应的子查询代表的查询计划v和所述关联的数据库表信息t的非数值型特征进行处理获取与所述原查询的查询计划q、所述物化视图对应的子查询代表的查询计划 v和所述关联的数据库表信息t对应的第六定长向量Z2
对获取的所述第五定长向量Dw和所述第六定长向量Z2进行回归拟合获取预测值;所述预测值用于表征所述新查询的查询代价。
在本申请的示例性实施例中,所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询可以包括:
将选择所述最优子查询创建物化视图的问题的近似优化过程建模成马尔可夫决策过程,并通过预设的RLView算法获取所述最优子查询。
在本申请的示例性实施例中,所述强化学习模型将选择所述最优子查询创建物化视图的问题的近似优化过程建模成马尔可夫决策过程可以包括:获取四元组<E,A,Pa,Ra>;
其中,E表示有限状态集合,该集合中的每一个元素e代表一个状态,e 为优化变量集合的二元组,e=<Z,Y>,每一个状态对应优化变量的每一种取值集合;A表示有限动作集合,所述有限动作集合中的每一个元素a表示一个动作,表示是从子查询代表集合对应的物化视图集合中选择一个物化视图改变该物化视图的状态;Pa表述状态转换概率;Ra表示状态转换的即时收益,被定义为两个状态对应的物化视图整体收益的差值。
在本申请的示例性实施例中,所述新查询的查询代价包括:原查询-物化视图对对应的收益;所述强化学习模型通过深度强化学习DQN模型实现;所述通过预设的RLView算法获取所述最优子查询可以包括:
将以下数据作为RLView算法的输入:查询负载Q、子查询代表集合对应的物化视图集合原查询-物化视图对对应的收益集合/>原查询对应的多个物化视图集合的交集的标签集合X={xjk}、初始化迭代次数n1、强化学习轮数n2、存储大小nm以及收益退化率γ;将Z和Y的优化结果作为 RLView算法的输出,执行以下步骤:
71、利用IterView函数初始化优化结果得到Z0,Y0
72、初始化经验回放集合为空集;
73、初始化所述DQN模型的参数θ;
74、初始化时间t=0,优化变量集合的二元组e的初始状态e0=<Z0,Y0>;
75、重复如下循环直到t>|Z|且即时收益不为正数:
751、计算t时刻对应的状态下的整体收益:
752、通过DQN模型算出在状态et下每个动作at对应的输出值Q(et,at),选择其中最大值对应的动作执行得到新的Z值;
753、根据Y-opt函数以及新的Z值得到新的Y值;
754、所述新的Z值和所述新的Y值构成新的状态et+1
755、计算新的状态et+1下的整体收益:
756、计算即时收益:rt=Rt+1-Rt
757、将此次的经验<et,at,rt,et+1>保存到所述经验回放集合中;
758、更新当前状态为新状态et+1,时间t加1;
759、如果当前的经验回放集合不小于nm,则使用DQN函数训练DQN 模型参数;
76、返回步骤74,直至重复次数达到预设次数n2次,停止操作。
在本申请的示例性实施例中,所述DQN函数可以包括:
81、从所述经验回放集合中采样经验数据<et,at,rt,et+1>;
82、为状态et和动作at计算Q值:Q(et,at);
83、为状态et+1计算所有可能的动作下的Q值集合: Q(et+1,a1),...,Q(et+1,an);
84、应用Q-learning算法获得状态et和动作at下的估计Q值:
Q‘(et,at)=γmaxi{Q(et,ai)}+rt
85、使用损失||Q(et,at)-Q′(et,at)||2去更新DQN模型的参数θ。
本申请实施例还提供了一种数据库物化视图构建系统的创建方法,所述系统可以包括上述任意一项所述的数据库物化视图构建系统;所述方法可以包括:
创建所述系统的查询负载预处理模块,将所述查询负载预处理模块设置为对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,每一类子查询包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用;
建立所述系统的深度学习模型和强化学习模型,所述深度学习模型用于预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;所述强化学习模型用于根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图;
创建所述系统的离线训练模块,并以查询负载历史数据为训练数据,通过所述离线训练模块对所述深度学习模型和所述强化学习模型进行训练,以获取所述深度学习模型和所述强化学习模型的参数;
创建所述系统的在线推荐模块,将所述在线推荐模块设置为将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,将所述深度学习模型的输出输入训练好的强化学习模型;并将所述强化学习模型的输出作为推荐的最优物化视图。
本申请实施例还提供了一种数据库物化视图构建方法,所述方法可以包括:
对输入的查询负载进行预处理;所述预处理可以包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;获取一个或多个候选子查询集合;其中,每一个候选子查询集合分别为一类子查询,包含有一个或多个候选子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用;
预先通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数;
将进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;
将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
与相关技术相比,本申请实施例的数据库物化视图构建系统可以包括:查询负载预处理模块、离线训练模块和在线推荐模块;所述查询负载预处理模块,可以用于对输入的查询负载进行预处理;所述预处理可以包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别和聚类;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,每一类子查询包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述离线训练模块,可以用于通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数;所述在线推荐模块,可以用于将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一类子查询中一个子查询对应的原查询使用该子查询对应的物化视图进行视图重写后,得到的新查询的查询代价;还用于将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个子查询对应的查询代价从每一类子查询中获取查询代价最低的最优子查询作为代表,并获取所述最优子查询相应的最优物化视图;其中,所述最优物化视图能够被同一类子查询中除所述最优子查询以外的子查询任务进行复用。通过该实施例方案,较大程度降低了批量查询的冗余代价,并实现了物化视图近似优化过程的收敛。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例的数据库物化视图构建系统组成框图;
图2为本申请实施例的数据库物化视图构建系统的结构示意图;
图3为本申请实施例的一个查询及其多个子查询示意图;
图4为本申请实施例的用于预测查询代价的深度学习模型框架示意图;
图5(a)为本申请实施例的深度学习框架中的查询计划编码模块示意图;
图5(b)为本申请实施例的深度学习框架中的数据库表模式编码模块示意图;
图6为本申请实施例的查询计划编码模块中的字符串编码网络框架图;
图7为本申请实施例的用于推荐最优子查询自动生成物化视图的强化学习模型示意图;
图8为本申请实施例的数据库物化视图构建系统的创建方法流程图;
图9为本申请实施例的数据库物化视图构建方法第一流程图;
图10为本申请实施例的数据库物化视图构建方法第二流程图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
本申请实施例提供了一种数据库物化视图构建系统1,如图1、图2所示,所述系统1可以包括:查询负载预处理模块11、离线训练模块12和在线推荐模块13;
所述查询负载预处理模块11,可以用于对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,每一类子查询包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用。
所述离线训练模块12,可以用于通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数。
所述在线推荐模块13,可以用于将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;还用于将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
在本申请的示例性实施例中,所述物化视图是数据库中的专有术语,指的是将视图语句执行后的结果存储在数据库中,可以看成生成新的数据库表。
在本申请的示例性实施例中,所述物化视图构建系统(或称物化视图自动构建系统)的功能是对于给定的查询负载,通过系统中的模型(如深度学习模型和强化学习模型)计算出最优的子查询用于生成最优物化视图,使得该最优物化视图能够被原查询负载复用并最大限度地降低给定的查询负载的整体查询代价。
在本申请的示例性实施例中,所述系统1可以包括:查询负载预处理模块11、离线训练模块12和在线推荐模块13;所述离线训练模块12和在线推荐模块13的核心是一个基于深度学习的查询-视图代价估计器【针对每一对 (原查询-物化视图)对进行代价评估】和一个基于强化学习的最优物化视图推荐求解器。
在本申请的示例性实施例中,所述查询负载预处理模块11可以包括:子查询抽取子模块、子查询等价识别子模块、子查询聚类子模块和子查询代表选取子模块。
在本申请的示例性实施例中,所述子查询抽取子模块,可以用于从给定的多个查询负载中抽取出子查询。
在本申请的示例性实施例中,所述从给定的多个查询负载中抽取出子查询可以包括:使用数据库查询引擎的解析工具将所述查询负载的原查询语句解析成逻辑计划树;其中,所述逻辑计划树的每个子树对应为一个子查询。
在本申请的示例性实施例中,子查询抽取器(即子查询抽取子模块)就是使用了数据库查询引擎中的解析器将查询负载的查询语句解析成查询计划树。如图3所示,整个查询语句被解析成查询计划树后包含一个Join类型子查询、两个Project类型子查询、两个Filter类型子查询以及两个TableScan类型子查询,本系统实施例可以主要选择Join、Project以及Aggregate类型的子查询构建候选子查询集合。如图3所示,是数据库中一个查询及其多个子查询的实例。
在本申请的示例性实施例中,所述子查询等价识别子模块,可以用于判断两个子查询是否是等价的。
在本申请的示例性实施例中,等价子查询识别器(即子查询等价识别子模块)利用了现有的判断两个子查询是否等价的研究,本申请可以使用发表在VLDB2019会议上的公开方法EQUITAS。具体来说,可以通过断言两个给定的子查询查询的结果是否相互包含来判断等价性。
在本申请的示例性实施例中,所述子查询聚类子模块,可以用于根据识别到的等价子查询对所有子查询进行聚类;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,每一类子查询包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的。
在本申请的示例性实施例中,所述子查询聚类子模块的功能是根据识别到的等价子查询对将所有子查询进行聚类,同一类中的子查询两两之间都是等价的。子查询聚类的目的是每一类只需要选择一个子查询作为代表生成物化视图,同类的其他子查询任务可以复用此物化视图。
在本申请的示例性实施例中,子查询聚类器(即子查询聚类子模块)给定的输入可以是已经判断等价的子查询对。具体来说,本申请实施例可以使用并查集算法实现聚类。
所述子查询代表选取子模块,可以用于获取每一类子查询中每一个子查询的查询代价,并从每一类子查询中获取查询代价最小的子查询作为该类子查询的子查询代表。
在本申请的示例性实施例中,子查询代表选取子模块可以直接通过数据库引擎获取每一类子查询中的每个子查询的查询代价,通过对各个子查询的查询代价比较,可以从每一类子查询中获取查询代价最小的子查询,并将该查询代价最小的子查询作为这一类子查询的子查询代表。
在本申请的示例性实施例中,所述在线推荐模块13进行在线推荐指的是利用已经训练好的模型(如深度学习模型和强化学习模型,该强化学习模型可以为深度强化学习模型)对给定的查询负载计算出最优的物化视图方案,即选择最优的子查询产生物化视图并确定原查询如何复用。
在本申请的示例性实施例中,所述深度学习模型可以利用多层神经网络拟合函数,对于给定的输入产生相应的输出,学习的过程指的是用已有的历史数据训练多层神经网络从而确定网络的参数。因此,对于给定新的输入,可以利用训练好参数的神经网络产生输出。
在本申请的示例性实施例中,所述深度强化学习模型可以利用DQN(Deep Q-learning Network)模型解决相关的强化学习问题。
在本申请的示例性实施例中,深度学习解决的问题是如何衡量一个查询使用一个物化视图的收益,即使用了物化视图可以降低多少查询代价。具体来说,对于一个原查询,我们可以先分别估计查询代价然后再估计使用了物化视图重写后的新查询的查询代价,最后用两者估计值的差作为收益。
在本申请的示例性实施例中,设计深度学习模型的目的是预测如果一个原查询使用了一个物化视图改写之后,那么改写后的查询的在执行时的查询代价。为了完成这个目的,所述深度学习模型可以包含一个宽度子模块和一个深度子模块,其输入可以包含三个部分:原查询查询计划、物化视图对应的子查询代表的查询计划计划和关联数据库表的元信息。
在本申请的示例性实施例中,所述的关联数据库表的元信息可分为两类:一类可以是数据库表的模式信息,比如表的名称和字段的名称;另一类可以是数据库表的统计信息,比如表的数量,字段的数量以及记录数目。
在本申请的示例性实施例中,原查询的查询计划、视图对应的子查询代表的查询计划和关联的数据库表的元数据这三种输入又可以统分为两大类特征:数值型特征和非数值型特征。其中,查询计划对应的特征只有非数值型,而数据库表的元数据对应的特征既有数值型又有非数值型。具体来说,数据库表的统计信息(表的个数、字段个数和记录数)是数值型的,而数据库表的模式信息(字段类型)是非数值型的。数值型特征和最后的预测结果之间既包括线性关系又可能包括非线性关系,但是非数值型特征由于离散性无法包括线性关系。
在本申请的示例性实施例中,如图4所示,本申请实施例分别使用了宽度子模块和深度子模块去建模上述两类特征(数值型特征和非数值型特征) 和预测结果的线性关系和非线性关系。
在本申请的示例性实施例中,所述深度学习模型可以包括宽度子模块和深度子模块;
所述宽度子模型,可以用于对数值型特征进行正则化并拼接为第一定长向量Dc;对所述第一定长向量Dc进行仿射线性变换获取第五定长向量Dw
所述深度子模块,可以用于对非数值型特征进行编码获取第二定长向量De,并对关联的数据库表信息t的非数值型特征进行编码获取第三定长向量Dm;将所述第一定长向量Dc、所述第二定长向量De和所述第三定长向量Dm拼接成第四定长向量Dr;将所述第四定长向量Dr通过残差网络获取第六定长向量Z2
在本申请的示例性实施例中,所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价可以包括:
获取原查询的查询计划q、所述物化视图对应的子查询代表的查询计划和关联的数据库表信息t作为输入数据;
通过所述宽度子模块对所述数据库表信息t的数值型特征进行处理获取与所述数据库表信息t对应的第五定长向量Dw
通过所述深度子模块对所述原查询的查询计划q、所述物化视图对应的子查询代表的查询计划v和所述关联的数据库表信息t的非数值型特征进行处理获取与所述原查询的查询计划q、所述物化视图对应的子查询代表的查询计划 v和所述关联的数据库表信息t对应的第六定长向量Z2
对获取的所述第五定长向量Dw和所述第六定长向量Z2进行回归拟合获取预测值;所述预测值用于表征所述新查询的查询代价。
在本申请的示例性实施例中,所述宽度子模块可以主要针对数据库表的统计信息的数值型特征进行建模,抽取该特征和输出的线性关系。
在本申请的示例性实施例中,在宽度子模块中,本申请实施例可以只考虑数据库表的统计信息。首先,可以使用正则化的方式消除不同特征量级的差异;例如,针对数值型特征fi,先计算其均值μi和标准差σi,那么正则化后的结果是然后,可以通过拼接所有正则化后的数值型特征的方式得到定长的向量表示;最后,可以通过仿射线性变换将拼接后的向量转为新的向量用于预测任务,这里的仿射线性变换就是为了抽取线性关系。
在本申请的示例性实施例中,所述深度子模块可以主要针对原查询的查询计划、物化视图对应的子查询代表的查询计划以及数据库表的模式信息进行编码建模,可以主要包含关键字编码、字符串编码、逻辑计划编码和表模式信息编码。
在本申请的示例性实施例中,所述关键字编码指的是将关键字从独热向量表示转换为成分布式向量表示。
在本申请的示例性实施例中,所述字符串编码指的是将字符串表示成向量,实现方法可以包括:将字符串的每一个字符表示成独热向量,如128维的独热向量,将这些独热向量根据原字符串中字符的顺序拼接成矩阵,使用一层卷积神经网络和一层平均池化网络将矩阵转换成定长的向量。所述卷积神经网络、平均池化网络和递归神经网络是现有的深度学习技术。
在本申请的示例性实施例中,所述逻辑计划编码指的是将查询的逻辑计划编码成向量表示,实现方法可以包括:将查询计划看成两层序列,使用深度递归神经网络分别将两层序列编码成定长的向量。
在本申请的示例性实施例中,所述表模式信息编码指的是将表模式信息编码成向量表示,实现方法可以包括:使用关键字编码将表模式信息的关键字编码成分布式向量,通过平均池化神经网络将所有关键字的向量表示转换成定长的向量。
在本申请的示例性实施例中,在深度子模块中,可以包括数据库模式编码模块和查询计划编码模块;所述数据库模式编码模块和查询计划编码模块可以分别将数据库表模式信息和查询计划信息编码成向量。
在本申请的示例性实施例中,如图5(a)所示,展示了一个查询计划编码模块的示例。具体来说,本实施例将查询计划看成两层序列,第一层序列中的每个元素是一个操作,第二层是将每一个操作看成一个关键字和字符串混合的序列。图5(a)对应的是图3的查询计划S2(两层序列)编码示例,第一层先使用了关键字编码或者字符串编码然后再使用循环神经网络得到每个操作的编码向量表示,第二层针对每个操作的编码向量组成的序列使用另一个循环神经网络编码得到最终的向量表示。特别地,本申请实施例使用的循环神经网络可以是长短期记忆网络(LSTM)。
在本申请的示例性实施例中,图5(b)展示了一个数据库表模式信息编码示例图,其主要使用了关键字编码技术将关键字表示为向量,然后使用平均池化网络将数据库表模式包含的不等长关键字融合为定长的向量。本申请实施例中的关键字编码本质上是用一层全连接神经网络将独热向量转换成分布式向量表示。
在本申请的示例性实施例中,字符串编码网络可以如图6所示,实现方法可以包括:使用字符编码网络将每个字符从独热编码表示转为分布式向量编码表示,通过一个卷积网络抽取字符串中字符间的邻接关系,使用平均池化网络得到定长的向量表示。
在本申请的示例性实施例中,选择最优子查询的目的是为了应对背景技术中的第二个挑战,即为了解决选择物化视图的迭代近似优化过程无法收敛的问题。
在本申请的示例性实施例中,针对第二个挑战,本申请实施例将选择最优子查询构建物化视图的问题重写为一个整数规划问题。即,将选择所述最优子查询创建物化视图的问题建模为带约束的整数规划问题;其中,约束条件可以包括:有交集关系的子查询对应的物化视图不能被同一个原查询使用;优化的对象可以包含:候选子查询是否被选择建立物化视图以及原查询是否利用建立的物化视图;优化的目标可以包括:使得建立的物化视图的最终整体收益最大化。
在本申请的示例性实施例中,带约束的整数规划问题的形式上,可以给定一个查询负载Q,假设其对应的候选子查询集合为SQ,那么整体优化的目标有两个:一个是从SQ中选择最优的子集S建立物化视图,二是为每一个原查询 q从最优子集S对应的视图集合VS中选择最优的视图子集进行重写,此外需要保证子集/>中的任意两个物化视图是不相交的物化视图。那么,对应的整数规划问题可以定义如下:用zj表示一个0/1指示器,用于代表是否选中子查询/>去创建物化视图(其中,sj是指第j个子查询,j为自然数);用yij表示一个0/1指示器,用于代表是否为原查询qi(其中,qi是指第i个原查询,i 为自然数)使用子查询sj对应的视图/>去重写;用xjk表示一个0/1指示器,用于代表视图/>和/>是否有交集,优化目标可以变成下面的优化计算式:
其中,优化目标是最大化整体的收益,该收益可以由两部分组成,第一部分是使用了物化视图对于原查询来说减少的查询代价,即这部分是正的收益,第二部分是使用了物化视图造成的额外支出,即/>该部分是负的收益。此外,条件约束(1)保证了被同一个原查询使用的视图是不相交的,条件约束(2)保证了原查询使用的视图是被选中的。
在本申请的示例性实施例中,如果使用现有的整数规划求解器计算精确的解是只能应用到小规模的数据集上,随着数据集的增大,求解器的效率会降低到无法给出解的情况。因此,本发申请实施例使用了如下所示的迭代近似求解算法,该算法可以包含三个函数(例如IterView函数,Z-opt函数和 Y-opt函数),第一个函数(IterView函数)迭代调用了第二个函数(Z-opt 函数)和第三个函数(Y-opt函数)。其中,第二个函数是固定了变量Y然后用概率计算来优化变量Z;反之,第三个函数Y-opt函数则是固定了变量Z然后构造一个局部优化问题并用现有的优化求解器得到变量Y的局部最优解。
在本申请的示例性实施例中,下面首先对IterView函数,Z-opt函数和 Y-opt函数的算法做详细介绍:
一、IterView函数:
输入:查询负载Q,物化视图的集合原查询-物化视图收益集合/>视图交集的标签集合X={xjk},迭代次数n;
输出:优化结果Z,Y;
算法包括:
1、先随机初始化Z,Y;
2、初始化每个视图可能的最大收益Bmax为空集,然后计算每个元素
3、初始为每个视图对应的当前收益Bcur,然后计算每个元素Bcur[j]=
4、初始化当前选择物化视图赞成的额外代价
5、随机生成一个阈值τ;
6、Z,
7、Y,
8、重复步骤5至步骤7的操作n次。
二、Z-opt函数:
输入:Z,Bmax,Bcur,τ;
输出:Z,
算法包括:
1、计算最大可能总体收益Bmax=∑k Bmax[k];
2、计算当前总体收益Bcur=∑k Bcur[k];
3、计算最大可能因为物化视图造成的额外代价
4、对于每个候选物化视图先根据如下计算式计算一个概率/>
如果zj为1,那么否则/>
如果zj为1,那么否则/>
如果那么:(a)改变标签zj=1-zj;(b)如果zj>0,那么/>否则/>
三、Y-opt函数:
输入:Y,BcurX,Z,Q;
输出:Y,Bcur
算法包括:
1、对于每个原查询qi,先创建如下计算式表示的局部整数规划问题:
s.t.yij+∑k≠jxjkyik≤1&yij≤zj
然后使用现有的整数规划求解器得到这个局部优化问题的解Y[i];
2、更新Bcur中的每个元素:
在本申请的示例性实施例中,上述的迭代近似求解算法由于基于概率去优化变量Z,使得优化的结果不停地震荡从而无法收敛。因此,本申请实施例采用了如图7所示的强化学习模型。
在本申请的示例性实施例中,所述强化学习模型指的是将物化视图最优选择问题的近似优化过程建模成马尔可夫决策过程,可以利用DQN模型解决。
在本申请的示例性实施例中,最优选择问题是一个整数规划问题,即从候选的子查询中选择最优的子查询建立物化视图使得最终的收益最大。
在本申请的示例性实施例中,所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询可以包括:
将选择所述最优子查询创建物化视图的问题的近似优化过程建模成马尔可夫决策过程,并通过预设的RLView算法获取所述最优子查询。
在本申请的示例性实施例中,基于前述的带约束的整数规划问题,图7 的实施例方案可以将整数规划问题的近似迭代求解的过程建模为一个马尔科夫决策过程,以对所述近似迭代求解的优化结果进行收敛,并通过预设的 RLView算法获取所述最优子查询。
在本申请的示例性实施例中,所述强化学习模型将选择所述最优子查询创建物化视图的问题的近似优化过程建模成马尔可夫决策过程可以包括:获取四元组<E,A,Pa,Ra>;
其中,E表示有限状态集合,该集合中的每一个元素e代表一个状态,e 为优化变量集合的二元组,e=<Z,Y>,每一个状态对应优化变量的每一种取值集合;A表示有限动作集合,所述有限动作集合中的每一个元素a表示一个动作,表示是从子查询代表集合对应的物化视图集合中选择一个物化视图改变该物化视图的状态;Pa表述状态转换概率;Ra表示状态转换的即时收益,被定义为两个状态对应的物化视图整体收益的差值。
在本申请的示例性实施例中,本实施例方案将整个迭代优化的过程看成一个马尔科夫决策过程,其形式化的表示是一个四元组<E,A,Pa,Ra>。其中, E表示有限状态集合,该集合中的每一个元素e代表一个状态,在本优化问题中表示的是优化变量集合的二元组e=<Z,Y>,因此每一个状态对应优化变量的每一种取值集合;A表示有限动作集合,该集合中的每一个元素a表示一个动作,在本优化问题中表示的是从物化视图候选集中选择一个物化视图改变其状态,即将其对应的指示器的值翻转;Pa表述状态转换概率,在本优化问题中可以保持常数1;Ra表示状态转换的即时收益,在本优化问题中可以被定义为两个状态对应的物化视图整体收益的差值。
在本申请的示例性实施例中,可以使用如下所示的RLView算法求解本申请实施例的优化问题,该算法不仅描述了强化学习求解的基本过程,而且包含了对强化学习模型的训练过程。
在本申请的示例性实施例中,所述新查询的查询代价包括:原查询-物化视图对对应的收益所述强化学习模型通过深度强化学习DQN模型实现;所述通过预设的RLView算法获取所述最优子查询可以包括:
将以下数据作为RLView算法的输入:查询负载Q、子查询代表集合对应的物化视图集合原查询-物化视图对对应的收益集合/>原查询对应的多个物化视图集合的交集的标签集合X={xjk}、初始化迭代次数n1、强化学习轮数n2、存储大小nm以及收益退化率γ;将Z和Y的优化结果作为 RLView算法的输出,执行以下RLView算法:
1、利用IterView函数初始化优化结果得到Z0,Y0
2、初始化经验回放集合为空集;
3、初始化所述DQN模型的参数θ;
4、初始化步数t=0,优化变量集合的二元组e的初始状态e0=<Z0,Y0>;
5、重复如下循环直到t>|Z|且即时收益不为正数:
51、计算t时刻对应的状态下的整体收益:
52、通过DQN模型算出在状态et下每个动作at对应的输出值Q(et,at),选择其中最大的值对应的动作执行得到新的Z值;
53、利用Y-opt函数以及新的Z值和其他相关输入得到新的Y值;
54、所述新的Z值和所述新的Y值构成新的状态et+1
55、计算新的状态et+1下的整体收益:
56、计算即时收益:rt=Rt+1-Rt
57、将此次的经验<et,at,rt,et+1>保存到所述经验回放集合中;
58、更新当前状态为新状态et+1,时间步数加1;
59、如果当前的经验回放集合不小于nm,则使用DQN函数训练DQN 模型参数;
6、返回步骤4,直至重复次数达到预设次数n2次。
在本申请的示例性实施例中,所述DQN函数可以包括:
1、从所述经验回放集合中采样经验数据<et,at,rt,et+1>;
2、为状态et和动作at计算Q值:Q(et,at);
3、为状态et+1计算所有可能的动作下的Q值集合: Q(et+1,a1),...,Q(et+1,an);
4、应用Q-learning算法获得状态et和动作at下的估计Q值:
Q‘(et,at)=γmaxi{Q(et,ai)}+rt
5、使用损失||Q(et,at)-Q‘(et,at)||2去更新DQN模型的参数θ。
在本申请的示例性实施例中,通过上述算法实施例,可以保证优化结果的收敛性。
在本申请的示例性实施例中,数据库物化视图构建系统的离线训练模块12用于通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数。
在本申请的示例性实施例中,可以假设给定了训练深度学习模型的数据。如图2所示,该数据可以通过存储在元数据库中的元数据获得,例如数据库表的元信息,原查询的查询计划以及物化视图解析后的查询计划。形式化地,每条数据可以表示成二元组<x,y>的形式,其中x=(q,v,t)表述一个输入信息,即原查询计划q,视图对应的子查询计划v和数据库关联表信息t,y表示对应的输出,即用v重写q之后的新查询真实的查询代价。根据图4,本申请实施例训练该深度学习模型的算法可以如下所示:
输入:训练集的输入特征集合X={(q1,v1,t1),...},训练集的输出目标集合Y={y1,…},数据库表编码模块查询计划编码模块/>宽度模型仿射变换模块/>深度模型残差网络模块/>回归拟合模块/>学习率lr,训练回合数I,批量训练的规模bs
输出:和/>分别对应的参数θm,θe,θw,θd和θr
训练算法包括:
1、从{t1,t2,...}中抽取数值型特征Xm
2、从{(q1,v1,t1),...}中抽取非数值型特征Xn
3、计算训练的轮次:I′=|Y|/bs,将训练集Xm,Xn,Y进行洗牌;
4、对于每个轮次i,取出该轮次的训练数据Yi,然后进行如下的训练过程:
41、将数值型特征正则化并拼接为定长向量Dc
42、分别利用从/>中获得关联数据库表的编码Dm和查询计划的编码De
43、对于深度学习模型,将Dc,Dm和De拼接成定长向量Dr
44、分别利用和/>进一步编码Dc和Dr,最后使用/>得到预测值,其计算式如下所示:/>
45、计算损失
46、利用Adam优化方法优化参数θm,θe,θw,θd和θr
5、重复执行步骤3到步骤4的过程I个回合。
在本申请的示例性实施例中,通过上述的训练算法,本申请实施例所提出的深度学习模型可以高效地预测在给定一个原查询以及一个物化视图的情况下能够节省的查询代价。
在本申请的示例性实施例中,前述的DQN算法描述了强化学习模型的训练过程,故此处不再赘述。
本申请实施例还提供了一种数据库物化视图构建系统的创建方法,所述系统可以包括上述任意一项所述的数据库物化视图构建系统;如图8所示,所述方法可以包括S101-S104:
S101、创建所述系统的查询负载预处理模块,将所述查询负载预处理模块设置为对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,每一类子查询包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用。
在本申请的示例性实施例中,在创建各个模块之前可以首先定义相关概念:查询代价,建立物化视图的代价,一个查询使用一个物化视图的收益。
在本申请的示例性实施例中,基于给定的数据库系统可以实现查询预处理模块,可以分别创建出所述的子查询抽取子模块、子查询等价识别子模块和子查询聚类子模块。
S102、建立所述系统的深度学习模型和强化学习模型,所述深度学习模型用于预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;所述强化学习模型用于根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
在本申请的示例性实施例中,建立深度学习模型用于预测一个原查询在使用一个物化视图后的查询代价;建立强化学习模型用于实现近似优化过程的收敛,获取最优物化视图。
S103、创建所述系统的离线训练模块,并以查询负载历史数据为训练数据,通过所述离线训练模块对所述深度学习模型和所述强化学习模型进行训练,以获取所述深度学习模型和所述强化学习模型的参数。
在本申请的示例性实施例中,可以收集大量历史数据训练深度学习模型和强化学习模型,并将训练好的深度学习模型和强化学习模型部署到系统中。
S104、创建所述系统的在线推荐模块,将所述在线推荐模块设置为将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,将所述深度学习模型的输出输入训练好的强化学习模型;并将所述强化学习模型的输出作为推荐的最优物化视图。
在本申请的示例性实施例中,在系统中还可以设置查询语句重写模块,用于将原查询语句改写成使用物化视图的语句。
在本申请的示例性实施例中,前述的数据库物化视图构建系统的实施例均适用于该数据库物化视图构建系统的创建方法实施例中,在此不再一一赘述。
本申请实施例还提供了一种数据库物化视图构建方法,如图9所示,所述方法可以包括S201-S204:
S201、对输入的查询负载进行预处理;所述预处理可以包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用。
S202、预先通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数。
S203、将进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价。
S204、将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
在本申请的示例性实施例中,可以不涉及任何模块,仅针对数据库物化视图构建方法进行保护。该方法可以通过任何装置、系统、单元或模块实现,在此不对实施主体的具体形式进行限制。
在本申请的示例性实施例中,前述的数据库物化视图构建系统的实施例均适用于该数据库物化视图构建方法实施例中,在此不再一一赘述。
本申请实施例还提供了一种数据库物化视图构建方法,如图10所示,所述方法可以可以包括S301-S304:
S301、通过查询负载预处理模块11对输入的查询负载进行预处理;所述预处理可以包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;以获取一个或多个子查询集合;其中,每一个子查询集合分别为一类子查询,包含有一个或多个子查询,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用。
在本申请的示例性实施例中,可以接受一批查询语句组成的工作负载(即前述的查询负载),利用查询负载预处理模块11抽取工作负载中查询语句的子查询并获得子查询之间的等价以及交集关系。
在本申请的示例性实施例中,可以采用系统中查询负载预处理模块11的子查询抽取器抽取给定查询负载中的子查询;利用查询负载预处理模块11的的子查询等价判别器获得等价子查询对,然后利用查询负载预处理模块11的子查询聚类器将子查询聚类;具体地,利用子查询之间的等价关系将子查询聚类;用于为每一类选择一个子查询作为代表构成候选子查询集合,原则是每个类中选择查询代价最低的子查询作为代表;为每一类选择一个子查询作为代表,选出的代表作为该类子查询的候选子查询;多类子查询中的代表可以构成候选子查询集合。
S302、预先通过所述离线训练模块12采用查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数。
S303、通过所述在线推荐模块13将进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价。
在本申请的示例性实施例中,可以依据子查询和原查询的包含关系找出所有可能的候选子查询(即,查询代价最低、被选作每一类子查询的代表的子查询)对应的(物化视图-原查询)对,也可以写为(原查询-物化视图)对,然后通过部署的深度学习模型估计每一个(物化视图-原查询)对的值,该值表示的是该(物化视图-原查询)对中的原查询如果用该(物化视图-原查询) 对中的物化视图重写后得到的新查询的查询代价。
S304、通过所述在线推荐模块13将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
在本申请的示例性实施例中,利用部署的深度学习模型预测每一个原查询使用一个子查询代表对应的物化视图产生的收益;根据预测的收益可以将选择最优子查询创建最优物化视图的问题建模成带约束的整数规划问题,其中约束就是有交集关系的子查询代表对应的物化视图不能被同一个原查询使用,优化的对象包含两个:子查询代表是否被选择建立物化视图和原查询是否利用该视图,优化的目标是使得最终的整体收益最大化。
在本申请的示例性实施例中,可以根据找出的(物化视图-原查询)对及其估计的查询代价值,将物化视图的近似优化过程建模为依据近似迭代算法的整形规划问题;并将近似迭代算法建模成马尔科夫问题(其中状态为优化对象的0-1表示,动作为选择哪一个子查询创建物化视图);利用部署的强化学习模型求得最终的优化对象的状态,即,利用RLView算法得到物化视图推荐结果;利用该推荐结果实际构建物化视图并将结果存储在数据库中。
在本申请的示例性实施例中,所述方法还可以包括:利用重写模块和实际的物化视图重写原查询,得到新的查询负载并返回到数据库的执行引擎中执行查询操作得到最终查询结果。
在本申请的示例性实施例中,利用构建的物化视图重写原查询负载中的查询语句,例如,原查询语句是“select*from(select*from student where id>10) as A,department where A.class=department.class;”,选择的物化视图V对应的子查询语句是“select*from student where id>10;”,那么重写后的语句就是“select*from V,department where V.class=department.class;”。
在本申请的示例性实施例中,前述的数据库物化视图构建系统的实施例均适用于该数据库物化视图构建方法实施例中,在此不再一一赘述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质) 和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (10)

1.一种数据库物化视图构建系统,其特征在于,所述系统包括:查询负载预处理模块、离线训练模块和在线推荐模块;
所述查询负载预处理模块,用于对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;其中,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表为每一类子查询中获取的查询代价最小的子查询,所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用;
所述离线训练模块,用于通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数;
所述在线推荐模块,用于将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;还用于将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
2.根据权利要求1所述的数据库物化视图构建系统,其特征在于,所述查询负载预处理模块包括:子查询抽取子模块、子查询等价识别子模块、子查询聚类子模块和子查询代表选取子模块;
所述子查询抽取子模块,用于从给定的多个查询负载中抽取出子查询;
所述子查询等价识别子模块,用于判断两个子查询是否是等价的;
所述子查询聚类子模块,用于根据识别到的等价子查询对所有子查询进行聚类;
所述子查询代表选取子模块,用于获取每一类子查询中每一个子查询的查询代价,并从每一类子查询中获取查询代价最小的子查询作为该类子查询的子查询代表。
3.根据权利要求1所述的数据库物化视图构建系统,其特征在于,所述深度学习模型包括宽度子模块和深度子模块;
所述宽度子模块,用于对数值型特征进行正则化并拼接为第一定长向量Dc;对所述第一定长向量Dc进行仿射线性变换获取第五定长向量Dw
所述深度子模块,用于对非数值型特征进行编码获取第二定长向量De,并对关联的数据库表信息t的非数值型特征进行编码获取第三定长向量Dm;将所述第一定长向量Dc、所述第二定长向量De和所述第三定长向量Dm拼接成第四定长向量Dr;将所述第四定长向量Dr通过残差网络获取第六定长向量Z2
4.根据权利要求3所述的数据库物化视图构建系统,其特征在于,所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价包括:
获取原查询的查询计划q、所述物化视图对应的子查询代表的查询计划v和关联的数据库表信息t作为输入数据;
通过所述宽度子模块对所述数据库表信息t的数值型特征进行处理获取与所述数据库表信息t对应的第五定长向量Dw
通过所述深度子模块对所述原查询的查询计划q、所述物化视图对应的子查询代表的查询计划v和所述关联的数据库表信息t的非数值型特征进行处理获取与所述原查询的查询计划q、所述物化视图对应的子查询代表的查询计划v和所述关联的数据库表信息t对应的第六定长向量Z2
对获取的所述第五定长向量Dw和所述第六定长向量Z2进行回归拟合获取预测值;所述预测值用于表征所述新查询的查询代价。
5.根据权利要求1所述的数据库物化视图构建系统,其特征在于,所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询包括:
将选择所述最优子查询创建物化视图的问题的近似优化过程建模成马尔可夫决策过程,并通过预设的RLView算法获取所述最优子查询。
6.根据权利要求5所述的数据库物化视图构建系统,其特征在于,所述强化学习模型将选择所述最优子查询创建物化视图的问题的近似优化过程建模成马尔可夫决策过程包括:获取四元组<E,A,Pa,Ra>;
其中,E表示有限状态集合,该集合中的每一个元素e代表一个状态,e为优化变量集合的二元组,e=<Z,Y>,每一个状态对应优化变量的每一种取值集合;A表示有限动作集合,所述有限动作集合中的每一个元素a表示一个动作,表示是从子查询代表集合对应的物化视图集合中选择一个物化视图改变该物化视图的状态;Pa表述状态转换概率;Ra表示状态转换的即时收益,被定义为两个状态对应的物化视图整体收益的差值。
7.根据权利要求6所述的数据库物化视图构建系统,其特征在于,所述新查询的查询代价包括:原查询-物化视图对对应的收益;
所述强化学习模型通过深度强化学习DQN模型实现;所述通过预设的RLView算法获取所述最优子查询包括:
将以下数据作为RLView算法的输入:查询负载Q、子查询代表集合对应的物化视图集合原查询-物化视图对对应的收益集合/>原查询对应的多个物化视图集合的交集的标签集合X={xjk}、初始化迭代次数n1、强化学习轮数n2、存储大小nm以及收益退化率γ;将Z和Y的优化结果作为RLView算法的输出,执行以下步骤:
71、利用IterView函数初始化优化结果得到Z0,Y0
72、初始化经验回放集合为空集;
73、初始化所述DQN模型的参数θ;
74、初始化时间t=0,优化变量集合的二元组e的初始状态e0=<Z0,Y0>;
75、重复如下循环直到t>|Z|且即时收益不为正数:
751、计算t时刻对应的状态下的整体收益:
752、通过DQN模型算出在状态et下每个动作at对应的输出值Q(et,at),选择其中最大值对应的动作执行得到新的Z值;
753、根据Y-opt函数以及新的Z值得到新的Y值;
754、所述新的Z值和所述新的Y值构成新的状态et+1
755、计算新的状态et+1下的整体收益:
756、计算即时收益:rt=Rt+1-Rt
757、将此次的经验<et,at,rt,et+1>保存到所述经验回放集合中;
758、更新当前状态为新状态et+1,时间t加1;
759、如果当前的经验回放集合不小于nm,则使用DQN函数训练DQN模型参数;
76、返回步骤74,直至重复次数达到预设次数n2次,停止操作。
8.根据权利要求7所述的数据库物化视图构建系统,其特征在于,所述DQN函数包括:
81、从所述经验回放集合中采样经验数据<et,at,rt,et+1>;
82、为状态et和动作at计算Q值:Q(et,at);
83、为状态et+1计算所有可能的动作下的Q值集合:Q(et+1,a1),…,Q(et+1,an);
84、应用Q-learning算法获得状态et和动作at下的估计Q值:
Q‘(et,at)=γmaxi{Q(et,ai)}+rt
85、使用损失||Q(et,at)-Q‘(et,at)||2去更新DQN模型的参数θ。
9.一种数据库物化视图构建系统的创建方法,其特征在于,所述系统包括权利要求1-8任意一项所述的数据库物化视图构建系统;所述方法包括:
创建所述系统的查询负载预处理模块,将所述查询负载预处理模块设置为对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;其中,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表为每一类子查询中获取的查询代价最小的子查询,所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用;
建立所述系统的深度学习模型和强化学习模型,所述深度学习模型用于预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;所述强化学习模型用于根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图;
创建所述系统的离线训练模块,并以查询负载历史数据为训练数据,通过所述离线训练模块对所述深度学习模型和所述强化学习模型进行训练,以获取所述深度学习模型和所述强化学习模型的参数;
创建所述系统的在线推荐模块,将所述在线推荐模块设置为将所述查询负载预处理模块进行预处理后的查询负载输入训练好的深度学习模型,将所述深度学习模型的输出输入训练好的强化学习模型;并将所述强化学习模型的输出作为推荐的最优物化视图。
10.一种数据库物化视图构建方法,其特征在于,所述方法包括:
对输入的查询负载进行预处理;所述预处理包括:从所述查询负载中抽取子查询,并对抽取的子查询进行等价识别、聚类和子查询代表选取;其中,同一类子查询中任意两个子查询之间都是等价的;所述子查询代表为每一类子查询中获取的查询代价最小的子查询,所述子查询代表对应的物化视图能够被同一类子查询中除所述子查询代表以外的子查询任务进行复用;
预先通过查询负载历史数据对预设的深度学习模型和强化学习模型进行训练,以获取所述深度学习模型和强化学习模型的参数;
将进行预处理后的查询负载输入训练好的深度学习模型,以通过所述深度学习模型预测每一个子查询代表对应的原查询使用该子查询代表对应的物化视图进行视图重写后,得到的新查询的查询代价;
将所述深度学习模型的输出输入训练好的强化学习模型,以通过所述强化学习模型根据每一个新查询的查询代价从子查询代表集合中获取查询代价最低的子查询代表作为最优子查询,并获取所述最优子查询相应的最优物化视图。
CN202010367321.0A 2020-04-30 2020-04-30 一种数据库物化视图构建系统、方法以及系统创建方法 Active CN111597209B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010367321.0A CN111597209B (zh) 2020-04-30 2020-04-30 一种数据库物化视图构建系统、方法以及系统创建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010367321.0A CN111597209B (zh) 2020-04-30 2020-04-30 一种数据库物化视图构建系统、方法以及系统创建方法

Publications (2)

Publication Number Publication Date
CN111597209A CN111597209A (zh) 2020-08-28
CN111597209B true CN111597209B (zh) 2023-11-14

Family

ID=72186952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010367321.0A Active CN111597209B (zh) 2020-04-30 2020-04-30 一种数据库物化视图构建系统、方法以及系统创建方法

Country Status (1)

Country Link
CN (1) CN111597209B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286953B (zh) * 2020-09-25 2023-02-24 北京邮电大学 多维数据查询方法、装置和电子设备
CN112380250B (zh) * 2020-10-15 2023-01-06 复旦大学 近似查询处理中的样本调节系统
CN112749191A (zh) * 2021-01-19 2021-05-04 成都信息工程大学 一种应用于数据库的智能代价估计方法、系统及电子设备
CN113010547B (zh) * 2021-05-06 2023-04-07 电子科技大学 一种基于图神经网络的数据库查询优化方法及系统
CN113515539B (zh) * 2021-06-02 2022-10-25 清华大学 一种数据库中数据的查询方法
CN113515540A (zh) * 2021-06-09 2021-10-19 清华大学 一种数据库的查询重写方法
CN113656437B (zh) * 2021-07-02 2023-10-03 阿里巴巴新加坡控股有限公司 用于预测参照执行代价稳定度的模型构建方法
CN113986933A (zh) * 2021-09-03 2022-01-28 北京火山引擎科技有限公司 物化视图的创建方法、装置、存储介质及电子设备
CN114218263B (zh) * 2022-02-23 2022-05-13 浙江一山智慧医疗研究有限公司 物化视图的自动创建方法及基于物化视图的快速查询方法
CN114880504B (zh) * 2022-07-08 2023-03-31 支付宝(杭州)信息技术有限公司 一种图数据的查询方法、装置以及设备
CN115757464B (zh) * 2022-11-18 2023-07-25 中国科学院软件研究所 一种基于深度强化学习的智能物化视图查询方法
CN115964374B (zh) * 2023-02-22 2023-09-26 深圳计算科学研究院 一种基于预计算场景的查询处理方法及其装置
CN116701429B (zh) * 2023-05-19 2023-12-29 杭州云之重器科技有限公司 一种基于批量历史任务模糊化的公共查询方法
CN116821171B (zh) * 2023-06-27 2024-04-19 杭州云之重器科技有限公司 一种生成新虚拟视图加速计算任务的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241291A (zh) * 2018-07-18 2019-01-18 华南师范大学 基于深度强化学习的知识图谱最优路径查询系统及其方法
CN109241093A (zh) * 2017-06-30 2019-01-18 华为技术有限公司 一种数据查询的方法、相关装置及数据库系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991765B2 (en) * 2008-07-31 2011-08-02 Teradata Us, Inc. Cost-based query rewrite using materialized views
US20170031980A1 (en) * 2015-07-28 2017-02-02 InfoKarta, Inc. Visual Aggregation Modeler System and Method for Performance Analysis and Optimization of Databases
KR101919771B1 (ko) * 2017-06-12 2019-02-11 주식회사 티맥스데이터 데이터베이스 애플리케이션을 위한 최적화 기법
US11036735B2 (en) * 2018-01-16 2021-06-15 Oracle International Corporation Dimension context propagation techniques for optimizing SQL query plans

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241093A (zh) * 2017-06-30 2019-01-18 华为技术有限公司 一种数据查询的方法、相关装置及数据库系统
CN109241291A (zh) * 2018-07-18 2019-01-18 华南师范大学 基于深度强化学习的知识图谱最优路径查询系统及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
并发内存OLAP查询优化技术研究;张延松;焦敏;张宇;王珊;;计算机研究与发展(第12期);173-183 *

Also Published As

Publication number Publication date
CN111597209A (zh) 2020-08-28

Similar Documents

Publication Publication Date Title
CN111597209B (zh) 一种数据库物化视图构建系统、方法以及系统创建方法
CN108038183B (zh) 结构化实体收录方法、装置、服务器和存储介质
Yuan et al. Automatic view generation with deep learning and reinforcement learning
CN114169330B (zh) 融合时序卷积与Transformer编码器的中文命名实体识别方法
CN112328578B (zh) 一种基于强化学习和图注意力网络的数据库查询优化方法
CN113779272B (zh) 基于知识图谱的数据处理方法、装置、设备及存储介质
WO2014204970A1 (en) Data intelligence using machine learning
CN109408578B (zh) 一种针对异构环境监测数据融合方法
CN116991869A (zh) 一种基于nlp语言模型自动生成数据库查询语句的方法
CN113312505B (zh) 一种基于离散在线哈希学习的跨模态检索方法及系统
CN116959613B (zh) 基于量子力学描述符信息的化合物逆合成方法及装置
US20230334063A1 (en) Systems and methods for formatting data using a recurrent neural network
CN115357904B (zh) 一种基于程序切片和图神经网络的多类漏洞检测方法
CN114218389A (zh) 一种基于图神经网络的化工制备领域长文本分类方法
CN110609870B (zh) 分布式数据处理方法、装置、电子设备及存储介质
CN113515540A (zh) 一种数据库的查询重写方法
CN117407532A (zh) 一种利用大模型与协同训练进行数据增强的方法
Xue et al. Improving the efficiency of NSGA-II based ontology aligning technology
CN107368895A (zh) 一种结合机器学习和自动规划的动作知识提取方法
CN117421390A (zh) 一种目标群体确定方法、系统、装置及存储介质
CN115587125A (zh) 元数据管理方法及装置
CN114168625A (zh) 一种语法树的优化方法、装置
CN114372148A (zh) 一种基于知识图谱技术的数据处理方法及终端设备
CN111897832A (zh) 模型部署方法、设备及可读存储介质
CN118520008B (zh) 一种面向Spark SQL的智能查询优化方法及系统

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