CN113424173B - 用于有效图分析的物化图视图 - Google Patents
用于有效图分析的物化图视图 Download PDFInfo
- Publication number
- CN113424173B CN113424173B CN202080014468.XA CN202080014468A CN113424173B CN 113424173 B CN113424173 B CN 113424173B CN 202080014468 A CN202080014468 A CN 202080014468A CN 113424173 B CN113424173 B CN 113424173B
- Authority
- CN
- China
- Prior art keywords
- view
- graph
- candidate
- query
- views
- 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
Links
- 238000004458 analytical method Methods 0.000 title description 4
- 230000006872 improvement Effects 0.000 claims abstract description 57
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000011156 evaluation Methods 0.000 claims abstract description 37
- 238000004590 computer program Methods 0.000 claims abstract description 21
- 238000010586 diagram Methods 0.000 description 26
- 238000003860 storage Methods 0.000 description 23
- 230000003287 optical effect Effects 0.000 description 11
- 238000004880 explosion Methods 0.000 description 10
- 238000005457 optimization Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 6
- 244000141353 Prunus domestica Species 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 235000008694 Humulus lupulus Nutrition 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013138 pruning Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000011157 data evaluation Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24535—Query rewriting; Transformation of sub-queries or views
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于生成和利用物化图视图的方法、系统和计算机程序产品。根据一个实施例的系统包括图数据库,图数据包括图和模式、工作负载分析器、视图枚举器、查询重写器和执行引擎。工作负载分析器被配置为接收和分析查询工作负载中的查询。视图枚举器被配置为使用推断引擎对从图和查询导出的事实以及包括推断规则的视图模板进行操作以枚举候选视图。工作负载分析器还被配置为选择要物化的候选视图,将选择的视图提供给被配置为生成物化视图的执行引擎。工作负载分析器可以基于诸如查询评估成本估计、候选视图性能改进估计、视图大小估计和视图创建成本估计之类的因素来选择至少一个候选视图。
Description
技术领域
本公开实施例总体上涉及计算机领域,并且更具体地,涉及用于生成图的物化图视图的计算机实现的方法、系统和计算机程序产品。
背景技术
现代数字世界正在经历与商业和个人生活的所有方面相关联的数据量的指数增长。非常需要对这种信息进行有效存储和调用的解决方案。特别地,企业需要将收集和存储的数据转化为可采取行动的情报。关系数据库系统、以及为利用这种系统而编写的应用,是用于描述、存储和取回业务信息的传统工具。然而,最近对图数据库系统的需求有所增加。
图数据库以节点和边的形式存储数据,而不是关系数据库表的传统的列和行。节点表示不同的数据值或相关值的集合,而边连接这些节点,从而表示它们之间的关系。边同样可以具有一个或多个相关值(例如,关系的持续时间)。例如,与公司员工相关的数据可以由用于每个员工的节点来表示,而边可以连接彼此合作的员工,从而表示同事关系。在另一个示例中,连接买家和产品的边可以表示产品购买,并且可以具有诸如销售价格、数量、日期等属性。所有具有全部互连边的节点的完整图片被称作图。
在某些情形下,以图的形式存储信息(与本地关系数据库表相反)并执行图查询可能是可取的。例如,在业务应用或其底层数据涉及复杂的多对多关系时,或者在需要分析数据背后的关系时(即,数据点之间的关系比数据点本身一样多或更多),图存储可能是可取的。在这些情况下,图存储和查询功能会很有用,因为图数据库系统通常允许人们更轻松地表达某些类型的查询。例如,模式匹配、多跳导航、传递闭包(closure)和多态查询通常更容易用图查询来表达。因此,图是为现实世界实体(例如,社交网络、数据沿袭图和生物数据集)及其之间的关系建模的一种越来越流行的方式。
这种现实世界实体可能需要非常大的图,并且对这种图的查询通常涉及昂贵的子图遍历和复杂的分析计算。
发明内容
本发明内容被提供来以简化的形式介绍在下面的具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识要求保护主题的关键特征或基本特征,也不旨在被用来限制要求保护主题的范围。
提供了一种用于生成和利用物化图视图的方法、系统和计算机程序产品。根据一个实施例的系统包括工作负载分析器、视图枚举器和执行引擎。工作负载分析器被配置为提取图的结构特性,接收并分析查询工作负载中的多个查询。视图枚举器被配置为接收一个或多个图视图模板,确定用于工作负载的每个查询的查询事实,并且基于对应的查询事实、图视图模板和图结构特性枚举用于每个查询的候选视图集。工作负载分析器被配置为选择候选视图中的至少一个来物化,并且将所选择的至少一个视图提供给被配置为生成并存储物化视图的执行引擎。工作负载分析器可以基于诸如查询评估成本估计、候选视图性能改进估计、视图大小估计和视图创建成本估计之类的因素来选择候选视图。根据另一个实施例的系统还包括查询重写器,该查询重写器被配置为重写输入查询以利用先前生成并存储的物化视图以便加速查询的执行。
下面参考附图来详细描述其他特征和优点,以及各种示例的结构和操作。注意,本文的构思和技术不限于本文描述的具体示例。这种示例在此仅用于说明性的目的。基于本文包含的教导,其他示例对于(多个)相关领域的技术人员将是明显的。
附图说明
并入本文并形成说明书的一部分的附图示出了本申请的实施例,并且与描述一起进一步用于解释实施例的原理并使相关技术人员能够做出并使用这些实施例。
图1描绘了根据实施例的包括作业影响查询的可视化的示例图。
图2描绘了根据实施例的将被呈现为2跳连接器视图的输入图。
图3描绘了根据实施例的包括图2的输入图的增强图,其被增强以包括两种不同类型的2跳连接器边。
图4描绘了根据实施例的被呈现为作业到作业2跳连接器视图的图2的输入图。
图5描绘了根据实施例的被呈现为文件到文件2跳连接器视图的图2的输入图。
图6描绘了根据实施例的用于生成和利用物化图视图的示例系统。
图7描绘了根据实施例的用于基于查询工作负载来生成物化图视图的示例方法的流程图。
图8描绘了根据实施例的至少部分地基于所提取的图结构特性来生成物化视图的附加示例方法的流程图。
图9描绘了根据实施例的用于生成候选视图估计和图查询性能估计的示例方法的流程图。
图10描绘了根据实施例的提供了用于部分地基于查询工作负载性能改进估计来选择用于物化的视图的示例方法的流程图。
图11描绘了根据实施例的提供了用于使用先前生成的物化视图进行查询优化的示例方法的流程图。
图12是其中可以实现各实施例的示例计算机系统的框图。
实施例的特征和优点将从下面结合附图所阐述的具体实施方式中变得更加明显,其中相同的附图标记自始至终标识对应的元件。在附图中,相同的附图标号通常指示相同、功能相似和/或结构相似的元件。其中元件第一次出现的附图由对应附图标号中(多个)最左边的数字指示。
具体实施方式
I.简介
以下详细描述公开了众多实施例。本专利申请的范围不限于所公开的实施例,而是还包括所公开的实施例的组合,以及对所公开的实施例的修改。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特点,但是每个实施例可以不必包括该特定的特征、结构或特点。此外,这些短语不一定指代相同的实施例。此外,当结合实施例来描述特征、结构或特点时,无论是否明确描述,都认为结合其他实施例来影响这样的特征、结构或特点在本领域技术人员的知识范围内。
众多示例性实施例被描述如下。应注意,本文所提供的任何节/小节标题并非旨在进行限制。贯穿本文档描述了实施例,并且任何类型的实施例可以包括在任何部分/小节下。此外,在任何节/小节中公开的实施例可以以任何方式与在相同节/小节和/或不同节/小节中描述的任何其他实施例组合。
II.示例实施例
本文所描述的示例实施例是出于说明性目的而提供的,而不是限制性的。本文所描述的示例可以适应任何类型的定向爬取系统。更多的结构和操作实施例,包括修改/改变,对于(多个)相关领域的技术人员来说将从本文的教导中将变得明显。
许多现实世界的应用可以自然地建模为图,包括社交网络、工作流、以及作业调度和任务执行系统、知识图、生物数据集和道路网络中的依赖图。在这些图上越来越相关的工作负载类型涉及混合遍历和计算的分析计算,诸如查找具有某些连接特性的子图或计算子图上的各种指标。这导致了许多系统被设计为处理在这种图上的复杂查询。
在这些场景中,图分析查询需要大约几秒到几分钟的响应时间,因为它们是由用户运行的探索性即席查询(例如,推荐或相似性搜索查询),或者因为它们为系统提供动力以做出在线操作决策(例如,数据评估查询,以控制复制或作业相似性查询以推动分析集群中的缓存决策)。然而,这些查询中有许多涉及输入图的大子图的枚举,在现代图系统上很容易花几分钟到几小时的时间来计算大图。为了在大图上实现几秒到几分钟的目标响应时间,需要一种新技术。
在许多前述应用中,数据具有固有的结构:它们的顶点和边具有特定类型,遵循明确定义的模式和连接特性。例如,社交网络数据可能包括用户、页面和事件,它们只能以特定方式连接(例如,页面不能“喜欢”用户),或者工作负载管理系统可能涉及文件和作业,所有文件都由某个作业创建或消耗。然而,大多数现有的图查询引擎并没有利用此结构的有点来改善查询评估时间。
同时,可以理解,类似的查询有时在同一图上非常频繁地运行。这种查询可以被识别并物化为视图,以避免在它们的评估过程中产生大量的计算成本。可以利用这些图的前述结构规律来有效且自动地得到这些物化视图。与它们的关系对应物一样,物化图视图允许通过对更少量的数据进行操作并隐藏/摊销计算成本来回答查询,同时提供显著的查询性能改进。
可以有利地采用这种物化图视图,例如,用来管理大型数据湖,在某些情况下,大型数据湖可以包括由数十万个作业处理的数艾字节的数据,每天产生数十亿个任务。操作如此庞大的基础设施需要除了别的事之外还要处理数据治理和法律合规性(例如,欧盟通用数据保护条例[“GDPR”])。有效处理那么多数据和那么多任务可能还需要基于查询工作负载进行优化,而这样的大型数据湖通常还必须支持元数据管理和企业搜索。表示数据并在不同粒度级跟踪数据集和计算的一种自然的方法是构建一个起源图,该起源图捕获湖中的作业、任务、文件、文件块和用户之间的数据依赖关系,其中只允许顶点之间的特定关系,例如,用户可以提交作业或读取文件,作业可以读取或写入文件。
为了在起源图上实现上述应用,需要对广泛的结构查询的支持。例如,查找包含来自特定用户的数据或由特定作业创建的文件是一种锚定图遍历,它通过从源顶点集来计算可达图。另一方面,通过搜索具有相同输入数据集的作业,可以实现跨作业检测重叠的查询子计划而避免了不必要的计算。其他查询可以包括标签传播(即,标记特权衍生数据产品)、数据评估(即,按照数据集对作业或访问它们的用户的“中心性”来量化数据集的价值)、复制检测(即,通过遵循具有相同输入数据集的复制作业来查找多次存储的文件)、和数据推荐(即,查找由访问了用户拥有的同一文件集的其他用户访问的文件)。
这些类型的查询中的优化机会可以借助运行示例来理解:作业爆炸半径。考虑以下在起源图上操作的伪查询:“对于每个作业j,按照(受影响的)下游消费者(即直接或间接取决于j的执行的作业)的执行的CPU小时总和,量化其失败的成本。”图1描绘了根据实施例的示例图100,其包括诸如上文所述的作业影响查询的可视化。例如,假设在作业j=作业1106的情况下执行上述查询。作业1 106的“爆炸半径”120(如虚线框所示)包括直接或间接取决于作业1 106的所有下游作业和文件,其中“直接或间接取决于”意味着下游作业和文件依赖上游作业和文件的结果和/或值,并且执行查询需要遍历图,遵循作业和文件之间的读/写关系,并且计算沿遍历的聚合。如图1中所图示,直接取决于作业1 106的“爆炸半径”120中的作业包括作业2 110和作业3 112,并且还包括所有其他作业直到作业X 114。间接取决于作业1 106的作业包括作业4 118。回答这种假设查询对于集群操作员和分析师量化作业失败的影响来说很重要,因为这种失败可能会影响调度和操作决策。
上述爆炸半径伪查询可以用适合的查询语言来表达,并且以各种方式在现实世界的图数据库平台上执行。例如,考虑下面的Query-1:
根据实施例,Query-1是根据平均CPU消耗对作业进行排名的示例图查询。特别地,Query-1说明了一个查询,其结合在线分析处理(“OLAP”)和锚定路径构造以基于平均CPU消耗对爆炸半径中的作业进行排名。Query-1以Cypher查询语言表达,例如在Neo4j图数据库或包含openCypher实现的其他图数据库中所提供的。然而,应当理解,Query-1及其查询语言仅是示例性的,类似的查询可以通过其他方式在其他图数据库平台上表达。
使用上面讨论的作业爆炸半径查询作为示例,现在将讨论根据实施例的图视图物化。特别地,实施例可以利用上面讨论的一些优化机会来分析查询模式和图结构,以通过以下方式来优化示例的作业爆炸半径查询。首先,可以观察到图1的图100具有结构连通性约束。特别地,作业生成并消耗文件,但没有文件-文件或作业-作业边。其次,并非图100中的所有顶点和边都与回答查询相关。也就是说,例如,不使用或不需要表示任务的顶点。因此,仅包括查询所需类型的顶点和边的图的视图可以从图中修剪大量节点和边。通过仅将查询所需类型的顶点和边存储为视图,我们可以修剪大量数据。在边和/或顶点的群组上操作的这种视图在下文中被称为汇总器。第三,尽管爆炸半径查询遍历作业-文件-作业依赖关系,但它只需要来自作业的元数据。因此,有可能构建仅存储作业节点及其与其他作业的关系(例如,在2跳内)的视图,从而进一步减少待处理数据和待要执行的路径遍历次数。这类型的视图在下文中被称为连接器。在实施例中,这种图的视图本身可以直接被用于回答某些类型的查询(或较大查询的子部分)。在其他实施例中,这种视图也可以被物化并缓存,以使整体或部分依赖于这种视图的查询可以比可能在整个图上操作更快地被计算。
可以以各种方式来完成创建图的汇总器和连接器视图。在实施例中,图G的连接器视图是图G',以使经由两个目标顶点u,v∈V(G)之间的单个有向路径的收缩获得每条边e′=(u,v)∈E(G′)。连接器视图的顶点集V(G')是所有目标顶点的并集,基于对连接器视图的这个通用定义,实施例可以支持若干专用的连接器视图,每个专用连接器视图在其考虑的目标顶点方面不同。例如,实施例可以实现表1的以下连接器类型中的一个或多个:
表1
通过考虑示例可以更好地理解连接器视图。图2-图5描绘了根据实施例的2跳连接器图视图的示例构造。更具体地,图2-图5描绘了在类似于图1的图100的数据沿袭图上的2跳相同顶点类型连接器视图的构造。特别地,图2描绘了根据实施例的将被呈现为2跳连接器视图的输入图200。输入图200包括两个类型的顶点:作业和文件。作业顶点由圆圈表示并被标记为“作业N”,其中N是作业ID号。同样,文件顶点由正方形表示并被标记为“FileN”,其中N是文件ID号。输入图200还包括被标记为“w”和“r”的两个类型的边,它们分别表示写入到文件的作业和从文件读取的作业。
图3描绘了根据实施例的包括图2的输入图200的增强图300,其被增强为包括两种不同类型的2跳连接器边。第一类型的2跳连接器边在作业顶点对之间收缩2跳路径(标记为j-2-j),而第二类型在文件顶点对之间收缩2跳路径(标记为f-2-f).
最后,图4和图5描绘了两个最终的连接器图视图。特别地,图4描绘了根据实施例的图2的输入图200,其被呈现为作业到作业2跳连接器视图。图5描绘了根据实施例的图2的输入图200,其被呈现为文件到文件2跳连接器视图。应当理解,图4和图5的输入图200和产生的连接器视图可以仅仅是示例性的,并且表示可以由实施例执行的相对简单的优化。如此,仅出于更好地理解实施例的操作方面的目的而提供图2-图5,并且不应将其解释为以任何方式进行限制。如下文更详细描述的,实施例能够创建更复杂的视图,这些视图在被有效创建时能够在使用那些视图而不是基础图来评估查询中提供显著的性能优势。
现在转向汇总器视图的进一步描述,在实施例中,图G的汇总器视图是图G',因此并且至少满足以下条件之一:|V(G′)|<|V(G)|或者|E(G′)|<|E(G)|。换言之,汇总器视图是经由稀疏化操作获得的图视图,稀疏化操作减少了原始图中的边数或顶点数。实施例可以实现稀疏化操作,稀疏化操作例如支持指定我们想要从原始图中保留(包含过滤器)或移除(排除过滤器)的顶点或边的类型的过滤器。实施例还可以支持聚合器汇总器,聚合器汇总器将顶点集分组为超顶点、将一袋边分组为超边,或将子图分组为超顶点。
实施例可以实现表2中的以下汇总器类型中的一些或全部:
表2
本领域技术人员将理解,汇总器非常类似于它们的相关对应物(即,过滤器和聚合)。因此,汇总器语义是直截了当的,并且不需要提供详细的示例。
已经描述了激励示例并阐述了形成实施例的操作基础的图视图定义,现在描述将转向更具体的实现细节。更具体地,我们现在描述更多细节,其关于实施例可以如何以上述的图视图定义和图开始并且确定该图的哪些视图(如果有的话)可能需要物化。
在确定哪些视图可用于物化之前,实施例必须首先确定,对于给定的视图定义集和给定图,哪些视图甚至是可能的。确定可能的视图的此过程在本文中被称为视图枚举。实施例可以使用基于推断的方法来执行视图枚举,由此视图枚举算法将查询和连接器集以及以声明方式提供的汇总器视图模板作为输入,并且使用它们生成用于查询的候选视图。
在实施例中,视图模板被表达为推断规则(例如,在Prolog中),并且实施例采用推断引擎经由规则评估从查询生成候选视图。实施例还识别图和查询的结构特性,并使用这种特性通过修剪搜索空间、丢弃不可行的候选(例如,在上面的爆炸半径/起源图示例中,作业到作业边)来优化视图枚举过程。
基于推断的视图枚举方法不仅提供了用于候选视图的搜索空间的有效修剪,而且还提供了不需要实现复杂的变换和搜索算法的附加好处。此外,如下文将更详细描述的,视图模板提供了一种灵活且易于修改的机制,用于定义视图的类型以评估物化。例如,实施例可以使用诸如Prolog之类的推断引擎,其允许以很少的附加代码行快速添加新的功能性。用于在关系设置中进行视图枚举的现有技术通常通过应用特定的转换规则集或通过使用查询优化器来分解给定的查询,然后实施复杂的搜索策略来浏览候选视图。尽管这些方法可以针对给定应用进行高度调整或与查询优化器紧密耦合,但这些方法需要大量的实施工作并且在添加或修改转换规则时不灵活。
回到视图枚举实施例,下面将依次讨论视图枚举过程所需的输入(即,视图模板、图模式/特性)。在实施例中,视图模板将上述连接器和汇总器视图定义到其自然表达的映射表示为用于生成查询的候选视图的Prolog推断规则。例如,考虑下表3,其描绘了根据实施例的示例的连接器视图模板。
本领域技术人员将认识到,视图模板T1-1到T1-62包括Prolog规则,其中一些是从更原始的规则构建的。相对原始的规则的示例可以包括:当顶点X是VTYPE类型时满足的vertex Type(X,VTYPE),或当存在从X到Y的路径时满足的path(X,Y),或当存在仅由ETYPE类型的边组成的从X到Y的路径时满足的pathOfEType(X,Y,ETYPE)。在实施例中,根据这些更原始的规则,可以定义表3的视图模板定义T1-1到T1-6。当然,应当理解,这种视图模板定义不应被解释为限于具有特定简单性或复杂性的定义。
返回表3的视图模板定义,例如,视图模板T1-1定义了从vertexType()和path()构建的connectorSameVertexType视图模板,如上面定义的,当两个顶点X和Y的类型相同并且它们之间存在有效路径时,其可以生成相同顶点类型的连接器视图。同样,视图模板T1-3定义了kHopConnector,它可以生成k跳连接器视图,其中存在顶点X和Y,它们之间的kHopPath正好是k跳。(多个)领域的技术人员将清楚,其余示例的连接器视图模板定义的范围和目的。讨论现在转向汇总器视图模板定义,如下表4中所示。
表4描绘了根据实施例的示例汇总器视图模板定义T2-1到T2-4。与上文描述的连接器视图模板一样,表4的汇总器视图模板定义每个都由Prolog规则语句组成,并且在某些情况下,按照其他规则定义了这种规则语句。例如,在视图模板T2-1中描绘的summaryrRemoveEdges()是按照edge()和edgeType()原始(primitives)来定义的。例如,在实施例中,summarizerRemoveEdges()可以生成汇总器视图,其中满足其组成规则中的每一个。也就是说,summarizerRemoveEdges()生成一个包含所有节点X和Y的视图,以使一条边连接X和Y,并且这种连接边不是ETYPE_REMOVE类型,或者这种连接边是ETYPE_KEEP类型。(多个)领域的技术人员将清楚其余的示例汇总器视图模板定义的范围和目的。已经描述了视图模板类型,现在讨论转向图结构特性的描述。
如上所述,实施例可以利用图结构特征来修剪视图枚举器必须考虑的候选视图集。如(多个)相关领域的技术人员所理解的,图模式反映了兼容图必须遵守的结构规则。因此,实施例可以被配置为从这种图模式中提取一阶逻辑语句。参考图1中描绘的图100和上面讨论的Query-1,对应于图100的模式例如将反映文件不写入到文件,而是仅作业写入到文件。在实施例中,这样提取的逻辑语句然后可以与其他推断规则(诸如下表5中所示的那些规则)组合,以实现对输入图的期望修剪。
/>
表5描绘了根据实施例的示例推断规则T3-1到T3-4,用于基于图模式来生成图结构特性。例如,考虑如上所示的推断规则T3-1的kHopAcyclicSchemaPath()。kHopAcyclicSchemaPath()规则根据输入模式来推断所有有效的非循环图路径。同样,isValidKHopSchemaPath()基于推断路径来修剪候选视图集。这些模式取得约束,并且如下面在视图枚举算法的实施例描述中更详细地讨论的,提高了实施例的效率,因为它们捕获了不能通过简单地查看输入查询或工作负载特性来推断的结构特性。例如,如果没有这些基于模式的约束,用于任何k≥2值的k跳连接器都可能是Query-1的候选对象。然而,鉴于这些基于模式的推断规则,推断引擎将搜索空间限制为仅在给定图模式下可行的k值,即偶数k值。因此,如下文更详细描述的,图结构特性对于限制用于有效图视图的搜索空间来说很重要。
a.算法1——基于推断的视图枚举算法
现在,我们转向根据实施例的示例视图枚举算法的描述。例如,考虑可以在实施例中实现的视图枚举算法的以下伪代码列表:
如上所述,视图枚举算法的实施例可以接收查询、视图模板集和图模式以作为输入,并且生成候选视图集作为输出。参考上面所示的算法1,在第2行将事实初始化为空列表并在第3行对输入查询进行解析之后,算法1继续执行第4行,其中图模式从查询图表达式的MATCH子句中提取并被用于确定图查询事实。特别地,对于图模式中的每个顶点并对于图模式中的每个边,算法1发出Prolog事实集(第5-8行),将这些集附加到事实列表中。
在我们上面介绍的作业爆炸半径查询Query-1的运行示例中,算法1从查询中提取以下图查询事实:
file(f1).
file(f2).
job(j1).
job(j2).
vertex(f2).
vertex(f1).
vertex(j2).
vertex(j1).
edge(f2,j2).
isReadBy(f2,j2).
writesTo(j1,f1).
edge(j1,f1).
variableLengthPath(f1,f2,0,INF).
上述事实集包含查询图模式中的所有命名的顶点和边,以及任何可变长度的正则路径表达式(variableLengthPath)。视图枚举过程还从底层数据图(第9-10行)的模式中提取结构特性(参见上表5的讨论)。在本文通篇使用的数据沿袭图示例中,只有两个类型的顶点(文件和作业),以及两个类型的边,表示它们之间的生产者-消费者数据沿袭关系。因此,关于此模式提取的事实集很简单:
schemaEdge('Job','File','writesTo')。
schemaEdge('File','Job','isReadBy')。
虽然简洁,但这些事实仍然可以生成指数数量的候选视图。为了解决这种可能性,实施例可以采用被选择来正确地限制此空间的推断规则。例如,上面关于表5讨论的kHopAcyclicSchemaPath()规则依赖于schemaEdge(),以使用传递闭包构造在两个类型的顶点之间生成所有可行的k跳非循环路径。实施例中采用的推断引擎可以使用此规则和其他规则作为用于更复杂的不变检查的构建块,从而将它们合并为约束以修剪用于查询的可行候选视图集。
在收集了所有的查询和模式事实之后,该算法执行实际的视图候选生成(第11-17行)。特别地,它为每个视图模板调用推断引擎(第14行)。例如,假设图直径的上限为k=8,算法1输出kHopConnectorSameVertexType()图视图的以下实例:
(VTYPE=Job,K=2),(VTYPE=Job,K=4),
(VTYPE=Job,K=6),(VTYPE=Job,K=8)
类似地,分别为表3和表5的其余的连接器视图模板和汇总器视图模板生成候选。对于生成的每个候选视图,推断引擎还输出输入查询的修改版本,其中输入查询被重写以引用对应的候选视图。在实施例中,这种重写的输出查询可以是Prolog格式并且需要转换回Cypher格式。例如,考虑重写形式的Query-1,如下面由Query-2所示,以合并2跳连接器视图:
根据实施例,上面所示的Query-2描绘了上面所示的Query-1的示例重写,其中Query-2合并了2跳连接器图视图。Query-1和Query-2的比较表明,与前者相比,后者具有相当简化的MATCH表达式。特别地,比较每个MATCH表达式:
因此,在此示例中,查询工作负载的大部分可以被适当的视图替换。特别是在这种视图被物化的情况下,Query-2的执行通常会比Query-1快得多。注意,在本文上面讨论的示例实施例中,虽然可以针对每个查询考虑多个视图候选,但是诸如由查询2所示的典型查询重写可以包括重写查询中的单个视图。应当理解,本文讨论的讨论和示例仅仅是概念的说明,并且可以在其他实施例中重写查询以利用多个视图。尽管物化视图有固有的查询执行加速,但生成这种物化视图的开销可能超过任何这种加速,或者各种候选视图实现的加速取决于特定查询或查询工作负载可以大不相同。在枚举了候选视图之后,实施例现在必须转向确定是否物化任何枚举的候选视图,如果是,具体是哪些。
b.视图选择
确定是否以及如何物化候选视图取决于在时间和空间方面对用于物化这种视图的对应成本的评估。考虑到路径遍历在图查询中的重要性,实施例被配置为使用成本模型来估计涉及这种操作的视图大小,并计算这种视图的创建成本。实施例还可以被配置为将其他类型的成本考虑到关于是否物化视图的决定中。例如,实施例还可以考虑视图维护成本(即,当新数据改变底层图时将物化视图保持最新的成本)。正如下面将更详细讨论的,成本估计对于确定哪些视图最有利于物化是很重要的。关于路径视图,这种视图的大小可以通过利用图模式约束和关联度分布的实施例而被合理地估计。此外,尽管一些基于关系成本的查询优化技术有时可以以过滤器和聚合为目标,但是本领域的大部分工作主要集中在联合基数估计上。这部分是因为联合倾向于支配查询成本,但也是因为估计联合基数比估计过滤基数更难。此外,由于汇总器连接器在很大程度上类似于关系查询优化中的过滤和聚合,所以关系世界中可能存在可用于在汇总器上下文中对过滤和聚合进行基数估计的技术。因此,本文公开的实施例集中于成本模型贡献,因为它们与连接器视图相关,并且这种实施例的描述集中于如何估计图连接器视图的大小,其继而可以支撑成本模型。
实施例可以至少部分地依赖于用于估计视图大小的两个统计数据集。例如,在图的初始加载期间,实施例可以确定以下图特性:(i)用于原始图的每个顶点类型的顶点基数;(ii)粗粒度的出度分布汇总统计,即用于原始图的每个顶点类型的第50、第90和第95个出度。实施例可以选择不使用上述统计数据中的一个或另一个,而是采用由其他统计实现的一个或多个试探法。
i.视图大小估计
当执行视图选择时,估计视图的大小是必不可少的。特别地,当计算各种成本组成部分并确定视图集是否适合给定的空间预算时,它是必需的。在一个实施例中,视图大小的估计可以包括视图具有的边数,因为边数通常支配现实世界图中的顶点数。然而,在其他实施例中,可以使用更复杂的估计。例如,观察在有k跳的有向路径p中估计的边数由下式给出:
其中ni是p中的第i个节点,t(ni)是该节点的类型,degout(t)是类型t的节点的平均出度,而card(t)是类型t的节点数。
然后,我们可以将视图的大小估计为:
其中p是最长的有向路径(从视图定义中获得),length(p)是p中的跳数,而n是图G中从任何源节点s到任何汇节点t的简单路径数。
ii.视图创建成本
当然,视图候选的大小在该视图的物化版本的存储方面具有实际影响。但是,也存在与计算和物化候选视图相关联的计算和I/O成本,并且在实施例中,可以在总体成本模型中考虑这种成本。然而,可以观察到,由于用于计算和物化感兴趣的图视图所需的原始(primitives)相对简单,所以I/O成本在计算成本中占主导地位。因此,其他实施例可以可替代地从成本模型中省略计算成本。因此,在这种实施例中,视图创建成本可以被建模为与成正比。
iii.查询评估成本
实施例还可将查询评估成本合并到成本模型中。如下文将进一步讨论的,查询评估成本影响候选视图的视图选择以及查询重写过程。实施例可以将用于图数据库查询的预存在的查询成本模型作用作成本代理,以使用原始图来计算给定查询。例如,实施例可以利用在现有图数据库平台(例如,Neo4j)中包括的基于成本的优化器,这些优化器能够在没有索引的所有顶点扫描、来自索引的扫描和范围扫描之间建立合理的排序。然而,其他实施例可以整体或部分地并入图视图大小估计技术,以进一步改进查询评估成本模型。此外,估计图查询的评估成本的其他方法在本领域中是已知的。
iv.视图选择作为背包问题
已经如上所述确定了用于每个候选视图的各种成本,并且给出了用于物化视图的特定存储空间预算,实施例可以按照以下一般方式进行视图选择。应该理解,合理的视图选择算法的目标是选择相对于它们的成本得到最大性能增益的视图,同时尊重空间预算。
因此,实施例可以将视图选择算法制定为0-1背包问题(knapsack problem)。一般来说,“背包问题”是组合优化问题的昵称,通常表达如下:给定一组物品,每个物品都有体积(或重量)和价值,确定包含在一个收集(即“背包”)中的每个物品的数目,以使总体积/重量小于或等于尺寸限制(即,背包的体积或重量限制),并且尽可能大。
在此范例下,实施例可以将背包的体积视为专用于视图物化的空间预算。我们想要装入背包的物品是由视图枚举器生成的候选视图。如上所述,每个物品的重量/体积是视图的估计大小。最后,每个物品的价值是通过使用该视图除以该视图的创建成本所获得的性能提升。
假设系统承担包括一组查询的工作负载Q。对于Q中的每个查询q,实施例可以将用于该查询的视图v的性能改进因子定义为v的估计评估成本除以q的估计评估成本(上面讨论了计算这种估计的技术)。如果在q的评估时间替换v的物化,则上面计算出的商表示在假设评估视图v的成本与评估查询q时可以避免的成本完全相同的情况下的性能改进因子估计。因此,性能改进因子表示可以获得的百分比改进。例如,对于没有现实世界意义的数字,假设v的评估成本是2,而q的评估成本是5。性能改进因子是这些值的商,或2/5(或.4或40%),表示在评估q时的性能改进为40%。以稍微不同的方式来看,通过在对q的评估期间避免v的成本(即,2),q可以被评估为仅有3的成本,这确实比5小40%。
自然地,视图v对于整个工作负载Q的性能改进只是视图v对于Q中每个查询的改进的总和。视图v不能用于的查询当然具有零性能改进。以这种一般方式,实施例可以根据每个候选视图v对改进整个工作负载的性能的估计贡献来估计每个候选视图v的价值,同时平衡这种改进的性能与视图的大小,以确定是否物化并缓存该视图以供以后使用(例如,根据背包问题的解决方案)。
c.查询重写
然而,从候选视图集中选择并存储物化视图只是由实施例采用的整体查询优化策略的一部分。在缓存物化视图集之后,本文所公开的实施例还必须确定这些视图中的哪些(如果有的话)最适合用于改进每个后续查询的性能。确定是否以及如何使用物化视图来增强传入查询在本文中通常被称为查询重写。在实施例中,给定查询和物化视图集,基于视图的重写是通过使用一个或多个物化视图找到查询重写的过程,这导致其评估成本的最大降低。实施例可以以下一般方式来执行此过程。当查询q到达系统时,系统调用用于该查询(并且仅用于该查询,查询重写目的不需要考虑查询工作负载的其余部分)的视图枚举器,其与上面结合视图物化所讨论的相同的一般方式为q枚举视图候选集。此后,实施例可以确定哪些视图候选尚未被物化(即,未被缓存),并且从考虑中消除这种视图候选(即,通过丢弃或修剪这种视图)。
在枚举器输出的剩余候选视图中,并且相应的物化视图可用,实施例通常将选择具有最高评估成本(即,花费最长的时间来评估)的物化视图,或以其他方式使用最多的资源)以包含在重写的查询中。注意,在一个实施例中,物化视图的评估成本可以是估计的评估成本,由如上所述的成本模型来估计。然而,在另一个实施例中,可以在这种创建期间测量物化视图的实际创建成本,并保存以备后用。
考虑到在执行重写查询时将避免的非常相同的成本(即,与最初的、非重写的查询相比),以任何度量选择具有最高评估成本的视图是自然选择。在实施例中,查询可以被重写为仅包括单个物化视图,或者可以被重写为包括并利用多个物化视图。如上所述,Query-2描述了重写Query-1以包括2跳连接器图视图的示例重写。
d.示例系统实施例
已经讨论了实施例的一般操作方面,现在讨论转向更具体实施例的描述。例如,图6描绘了根据实施例的用于生成和利用物化图视图的示例系统600。基于以下关于图6的系统600的讨论,其他结构和操作实施例对于(多个)相关领域的技术人员将是明显的。
图6描绘了根据实施例的用于生成和利用物化图视图的示例系统600的系统600。如图6中所示,系统600包括工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624和图数据库616。在实施例中,工作负载分析器608和视图枚举器610可以作为视图选择器604一起操作。查询重写器612和视图枚举器610同样可以作为基于视图的查询重写器606一起操作。
虽然图数据库616被描绘为整体式组件,但是图数据库616可以被实现为包括服务器的任何数量的计算设备,并且可以包括任何类型和数量的其他资源,包括促进与经由网络连接的计算设备以及计算设备之间的通信的资源。在实施例中,实现图数据库616的服务器可以以任何方式组织,包括在服务器机架(例如,每机架8-40个服务器,称为节点或“刀片服务器”)、服务器集群(例如,2-64个服务器、4-8个机架等)、或数据中心(例如,数千台服务器、数百个机架、数十个集群等)。在实施例中,包括图数据库616的服务器可以共同定位(例如,安置在一个或多个具有相关联的组件的附近的建筑物中,诸如备用电源、冗余数据通信、环境控制等)以形成数据中心,或者可以以其他方式排列。因此,在实施例中,图数据库616可以包括数据中心的分布式集合中的数据中心。
在实施例中,图6中所示的系统600的工作负载分析器608被配置为接收包括一组图查询626的查询工作负载602。此外,查询重写器612同样被配置为接收即席查询614,也包括图查询。这种查询可以在系统600本地提供(例如,从终端提供),或者经由网络(诸如例如,互联网)远程提供。然而,网络可以包括一个或多个网络,诸如局域网(LAN)、广域网(WAN)、企业网络,并且可以包括有线和/或无线部分中的一个或多个。例如,可用于向系统600提供查询工作负载602或即席查询614的计算设备的示例包括但不限于台式计算机、膝上型计算机、平板计算机、上网本、智能电话、可穿戴计算设备等。
现在将结合图7讨论图6的系统600的更多操作方面,图7描绘了根据实施例的用于基于查询工作负载生成物化图视图的示例方法的流程图700。尽管参考图6的系统600进行了描述,但图7的方法不限于该实现。基于以下关于图6的系统600的讨论,其他结构和操作实施例对于(多个)相关领域的技术人员将是明显的。
流程图700是用于生成图的物化图视图的示例方法,该图根据对应的图模式而被存储在图数据库中。流程图700开始于步骤702。在步骤702处,接收包括查询工作负载的多个图查询。例如,并参考图6的系统600,如上所述,工作负载分析器608可以从一个或多个位置接收查询工作负载602,在系统600本地和远程接收。尽管如本文描述,实施例使用查询工作负载602的图查询来确定要物化的图视图,但这种查询也可以通过普通查询评估。例如,工作负载查询可以由工作负载分析器608提供给执行引擎624用于评估(在图6中未示出)。可替代地,工作负载分析器608可以与可以负责回答这种查询的一些其他数据库系统(也未示出)并行地被提供查询工作负载602。图7的流程图700在步骤704继续。
图7的流程图700在步骤704处继续。在步骤704中,接收一个或多个包括推断规则的图视图模板。例如,并继续参考图6的系统600,在实施例中,视图枚举器610可以被配置为接收视图模板620。在实施例中,视图模板620可以被存储在图数据库616中并且由图数据库616提供,如图6中所示。然而,在其他实施例中,视图模板620可以由视图枚举器610从某个其他源接收。此外,在实施例中,视图模板620可以类似地被存储在视图枚举器610中,以在最初被接收之后随时间被重新使用。视图模板620可以包括例如连接器和/或汇总器视图模板,诸如在上面分别结合表3和表4描述的那些模板。注意,视图模板620以及表3和表4的连接器视图模板和汇总器视图模板仅是示例,并且在其他实施例中可以采用其他类型的模板。
在步骤706中,为多个图查询中的每一个确定图查询事实。例如,并继续参考图6的系统600,在实施例中,视图枚举器610可以被配置为根据算法1(如上文在II.a节处所讨论的)继续操作。更具体地,视图枚举器610的实施例可以接收查询工作负载602的图查询,并且从每个查询的图表达式的MATCH子句中提取图模式。
图7的流程图700在步骤708处继续。在步骤708中,枚举候选视图集,其中每个候选视图集对应于多个图查询中的相应一个,每个集的候选视图至少部分地基于图查询的图查询事实对应于该集以及一个或多个图视图模板。例如,并继续参考图6的系统600,在实施例中,视图枚举器610可以被配置为根据算法1(如上文在II.a节处所讨论的)继续操作。更具体地,并且如上面更详细地讨论的,在收集图查询事实、图模式事实和视图模板推断规则之后,视图枚举器610可以向推断引擎(例如,Prolog)提供这种事实和推断规则以生成候选视图630。如上所述,候选视图630包括用于来自视图模板620的视图模板与查询工作负载602的每个查询的每一种组合的候选视图,并且可以被组织为集,每个集对应于查询工作负载602的特定查询在实施例中,候选视图630又被提供给工作负载分析器608。
在步骤710处,从候选视图集中选择至少一个候选视图。例如,并继续参考图6的系统600,在实施例中,工作负载分析器608可以被配置为根据算法1(如上文在II.a节处所讨论的)继续操作。更具体地,在实施例中,工作负载分析器608可以确定哪些候选视图630为查询工作负载602提供视图大小和性能改进之间的最佳折衷。例如,实施例可以实现背包问题的解决方案(如上文第II.b.iv节所述),其中每个候选视图具有大小、价值(性能改进因子),并且选择候选视图的最佳组合以最大限度地提高总价值,同时最大限度地利用为物化视图提供的存储。因此,在实施例中,工作负载分析器608被配置为选择最佳的视图集继续物化和缓存。
图7的流程图700在步骤712处结束。在步骤712处,至少部分地基于所选择的至少一个候选视图来创建并存储物化视图。例如,并继续参考图6的系统600,在实施例中,工作负载分析器608和执行引擎624可以被配置为根据上文在II.b节处讨论的视图选择技术继续操作。更具体地,在确定要物化哪些候选视图之后,工作负载分析器608可以被配置为向执行引擎624提供对应的候选视图查询638以供执行。执行引擎624将依次处理与每个候选视图相关联的一个或多个视图查询以生成物化视图,然后将这种物化视图622存储在图数据库616中。
在流程图700的步骤702-712的前述讨论中,应当理解,这些步骤有时可以以不同的顺序或甚至与其他步骤同时执行。例如,步骤704-706的提取、接收和确定可以分别以不同的顺序或甚至同时执行。其他操作实施例对于(多个)相关领域的技术人员来说将是明显的。还要注意,系统600的操作的前述一般描述仅用于说明,并且系统600的实施例可以包括不同的硬件和/或软件,并且可以以与上述不同的方式操作。实际上,流程图700的步骤可以以各种方式执行。
例如,图8描绘了根据实施例的至少部分地基于提取的图结构特性生成物化视图的附加示例方法的流程图,并且其中流程图800包括对图7中描绘的流程图700的方法步骤的改良或添加。因此,还将参考图6的系统600来描述图8的流程图800。然而,基于以下关于流程图800的讨论,其他结构和操作实施例对于(多个)相关领域的技术人员将是明显的。
图8的流程图800开始于步骤802。在步骤802处,至少部分地基于图模式来提取图的图结构特性,并且其中候选视图进一步至少部分地基于图结构特性。例如,并继续参考图6的系统600,视图枚举器610可以获得对图数据库616中的图形618(及其对应的图模式)的访问。在实施例中,视图枚举器610可以被配置为使用如表5中所描绘的推断规则T3-1到T3-4,以上面关于表5描述的方式生成绘制结构特性,并且查看上面在第II.a节中讨论的枚举算法-1。注意,表5中的推断规则仅仅是示例性的,在其他实施例中可以使用其他推断规则。然后,除了步进基于图查询事实、图模式事实和视图模板推断规则,而且还基于提取的图结构特性生成候选视图之外,视图枚举器610可以根据图7的流程图700的步骤708继续操作。在实施例中,并且如上文所讨论的,以在本文中关于流程图800的步骤802所描述的方式生成的候选视图630可以类似地被提供给工作负载分析器608。应该注意,图8的流程图800只是一个示例实施例,并且存在用于物化图视图的其他方法。
例如,图9描绘了根据实施例的用于生成候选视图估计和图查询性能估计的示例方法的流程图900,并且其中流程图900包括分别对在图7和图8中描绘的流程图700和/或800的方法步骤的改良或添加。因此,还将参考图6的系统600来描述图9的流程图900。然而,基于以下关于流程图900的讨论,其他结构和操作实施例对于(多个)相关领域的技术人员将是明显的。
如图9中所示,流程图900开始于步骤902。在步骤902中,为候选视图集中的每个候选视图生成视图大小估计。例如,并继续参考图6的系统600,已经从系统600的视图枚举器610接收到候选视图,工作负载分析器608可以被配置为确定对每个候选视图的视图大小估计。在实施例中,工作负载分析器608可以被配置为根据上文在II.b.i节处对视图大小估计的讨论中的一个或多个公式来确定视图大小估计。然而,在其他实施例中可以采用估计视图大小的其他方法。
在步骤904处,为候选视图集中的每个候选视图生成视图创建成本估计。例如,并继续参考图6的系统600,已经从系统600的视图枚举器610接收到候选视图,工作负载分析器608可以被配置为确定对每个候选视图的创建成本估计。在实施例中,工作负载分析器608可以被配置为根据以上在II.b.ii节处对视图创建成本估计的讨论来确定创建成本估计。特别地,实施例可以将视图创建成本建模为与在步骤902生成的视图大小估计成比例。然而,在其他实施例中可以采用估计创建成本的其他方法,特别是在视图创建的计算成本不可忽略的情况下。
如图9中所示,流程图900在步骤906处继续。在步骤906中,对于多个图查询中的每个图查询,生成查询评估成本估计。例如,并继续参考图6的系统600,在实施例中,工作负载分析器608可以被配置为针对查询工作负载602的每个查询生成查询评估成本估计。特别地,工作负载分析器608可以被配置为根据上面在第II.b.iv节处对查询评估成本的讨论来生成查询评估成本。此外,用于估计图查询的评估成本的其他方法在本领域中是已知的。
流程图900在步骤908处结束。在步骤908中,对于多个图查询中的每个图查询,为候选视图集中的每个候选视图生成候选视图性能改进估计。例如,并继续参考图6的系统600,对于查询工作负载602的每个查询,工作负载分析器608可以确定对例如在上文中的图7的流程图700的步骤708处枚举的每个候选视图的候选视图性能改进估计。在实施例中,工作负载分析器608可以将对特定视图和特定查询的候选视图性能估计确定为对候选视图的视图创建成本估计与对特定图查询的查询评估成本估计之商(具有如前所述确定的这种成本)。
图10描绘了图10的流程图1000。图10描绘了根据实施例的示例方法,用于部分地基于查询工作负载性能改进估计来选择用于物化的视图。继续参考图6的系统600来描述图10。然而,基于以下关于流程图1000的讨论,其他结构和操作实施例对于(多个)相关领域的技术人员来说将是明显的。
如图10中所示,流程图1000开始于步骤1002。在步骤1002中,通过计算对应于每个图查询的候选视图性能改进估计的总和,为候选视图集中的每个候选视图生成工作负载性能改进估计。例如,并继续参考图6的系统600,工作负载分析器608的实施例可以执行图9的流程图900的步骤908,如刚刚讨论的,为查询工作负载602的候选视图和查询的每一种组合生成性能改进估计。这种估计反映了单个视图提供给单个查询的性能改进。然而,更有用的度量可以是该视图为整个查询工作负载602提供的性能改进。因此,工作负载分析器608可以被配置为针对每个候选视图生成工作负载性能改进估计,其准确地表示了前述的度量。特别地,查询工作负载602中每个查询的视图的性能改进估计的总和。
在步骤1004处,至少部分地基于至少一个候选视图的工作负载性能改进估计,从候选视图集中选择至少一个候选视图。例如,并参考图6的系统600以及图7的流程图700,工作负载分析器608被配置为在流程图700的步骤710处选择至少一个候选视图用于实现。在此,在步骤1004处,工作负载分析器608还被配置为至少部分地基于在步骤1002处确定的工作负载性能改进估计继续这种选择。如上所述,为了解决关于视图选择和物化的背包问题,这种估计可以表示候选视图的“价值”。
图11描绘了根据实施例的使用先前生成的物化视图来进行查询优化的示例方法。继续参考图6的系统600来描述图11。然而,基于以下关于流程图1100的讨论,其他结构和操作实施例对于(多个)相关领域的技术人员将是明显的。
如图11中所示,流程图1100开始于步骤1102。在步骤1102中,接收附加的图查询。例如,并继续参考图6的系统600,查询重写器612可以被配置为接收即席查询614。即席查询614可以表示例如由用户运行的推荐或相似性搜索查询。如下文更详细地描述,实施例能够优化查询执行以利用先前物化的(多个)视图。
在步骤1104处,枚举了附加的图查询的第二候选视图。例如,并参考图6的系统600以及图7的流程图700,视图枚举器610可以被配置为枚举针对即席查询614的候选视图集。在实施例中,视图枚举器610被配置为从查询重写器612接收即席查询614,并且以与上文结合图7的流程图700中的步骤708描述相同的方式,并且如在算法1的讨论中进一步描述(如第II.a节所讨论的)的来枚举这种候选视图。更具体地,视图枚举器610可以为即席查询614生成图查询事实,收集或重新计算图模式事实并收集视图模板推断规则,并将这种事实和规则提供给推断引擎(例如,Prolog)以生成返回给查询重写器612的第二候选视图632。
图11的流程图1100在步骤1106进行。在步骤1106中,选择了与第二候选视图中的至少一个相对应的至少一个先前的物化视图。例如,并继续参考图6的系统600,查询重写器612可以被配置为接收由视图枚举器610枚举的第二候选视图632,确定哪些候选视图632之前被物化并且当前被缓存为图数据库616中的物化视图622,并且修剪不可用的候选视图。对于剩余的候选视图中的每一个,查询重写器612可以确定并选择具有最高评估成本(无论是估计的还是在物化期间实际测量的)的一个或多个物化视图622。如上所述,选择具有最高评估成本的(多个)视图,因为这种成本表示将通过使用这种物化的(多个)视图而避免的成本。
在步骤1108处,至少部分地基于至少一个先前物化的视图重写附加的图查询以提供重写的图查询。例如,并继续参考图6的系统600,查询重写器612的实施例可以被配置为,通过用对在上面的步骤1106处选择的(多个)物化视图的引用来替换原始查询的适当部分,重写即席查询614。例如,如上所述,除了用2跳连接器视图替换Query-1中的MATCH约束,Query-2是Query-1的重写版本。
图11的流程图1100在步骤1110处结束。在步骤1110中,执行了重写的图查询以提供查询结果,其中查询结果至少部分取决于至少一个先前物化的视图。例如,并继续参考图6的系统600,查询重写器612的实施例可以被配置为将重写的查询640提供给执行引擎624以用于评估。执行引擎624的实施例可以被配置为使用由重写的查询引用的物化视图来执行重写的查询,以生成查询结果636。从逻辑上讲,如此生成的查询结果实际上必须取决于那个物化的视图。在实施例中,查询结果636可以被提供给查询重写器612,以用于随后中继到即席查询614的发起者(如图6中所示)。可替代地,查询结果636可以被直接提供给即席查询614(未示出)的发起者。
III.示例计算机系统实现
工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624、图数据库616和流程图700、800、900、1000和/或1100可以在硬件中实现,或者在与软件和/或固件结合的硬件中实现。例如,工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624、图数据库616和流程图700、800、900、1000和/或1100可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并被存储在计算机可读存储介质中。可替代地,工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624、图数据库616和流程图700、800、900、1000、1100可以被实现为硬件逻辑/电路系统。
例如,在实施例中,工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624、图数据库616和流程图700、800、900、1000和/或1100可以一起在SoC中实现。SoC可以包括集成电路芯片,该集成电路芯片包括处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口、和/或更多电路中的一个或多个,并且可以可选地执行接收到的程序代码和/或包括嵌入式固件以执行功能。
图12描绘了其中可以实现实施例的计算设备1200的示例性实现。例如,工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624和/或图数据库616可以各自在类似于固定或移动计算机实施例中的计算设备1200的一个或多个计算设备中实现,固定或移动计算机实施例包括计算设备1200的一个或多个特征和/或替代特征。本文提供的计算设备1200的描述是出于说明的目的而提供的,并非旨在进行限制。实施例可以在其他类型的计算机系统中实现,而这是(多个)相关领域的技术人员已知的。
如图12中所示,计算设备1200包括一个或多个被称为处理器电路1202的处理器、系统存储器1204和总线1206,总线1206将包括系统存储器1204在内的各种系统组件耦合到处理器电路1202。处理器电路1202是电和/或光学电路,其在一个或多个物理硬件电路器件元件和/或集成电路器件(半导体材料芯片或管芯)中实现为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路。处理器电路1202可以执行存储在计算机可读介质中的程序代码,诸如操作系统1230的程序代码、应用1232、其他程序1234等。总线1206表示几种类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图端口以及使用各种总线架构中的任何一种的处理器或本地总线。系统存储器1204包括只读存储器(ROM)1208和随机存取存储器(RAM)1210。基本输入/输出系统1212(BIOS)被存储在ROM1208中。
计算设备1200还具有以下驱动器中的一个或多个:用于从硬盘读取和向其中写入的硬盘驱动器1214,用于从可移动磁盘1218读取或向其中写入的磁盘驱动器1216,以及用于从诸如CDROM、DVDROM或其他光学介质之类的可移动光盘1222读取或向其中写入的光盘驱动器1220。硬盘驱动器1214、磁盘驱动器1216和光盘驱动器1220分别通过硬盘驱动器接口1224、磁盘驱动器接口1226和光驱接口1228连接到总线1206。驱动器及其相关联的计算机可读介质为计算机提供了计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管描述了硬盘、可移动磁盘和可移动光盘,但可以使用其他类型的基于硬件的计算机可读存储介质来存储数据,诸如闪存卡、数字视频磁盘、RAM、ROM和其他硬件存储介质。
多个程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统1230、一个或多个应用1232、其他程序1234和程序数据1236。例如,应用1232或其他程序1234可以包括用于计算机程序逻辑(例如,计算机代码或指令),用于实现工作负载分析器608、视图枚举器610、查询重写器612、执行引擎624、图数据库616和流程图700、800、900、1000和/或1100(包括流程图700、800、900和/或1110的任何合适步骤),和/或在本文中描述的更多实施例。
用户可以通过诸如键盘1238和定点设备1240之类的输入设备将命令和信息输入到计算设备1200中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、触摸屏和/或触摸板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其他输入设备通常通过串行端口接口1242连接到处理器电路1202,串行端口接口1242耦合到总线1206,但也可以通过其他接口连接,诸如并行端口、游戏端口或通用串行总线(USB).
显示屏1244还经由诸如视频适配器1246之类的接口连接到总线1206。显示屏1244可以在计算设备1200的外部,或者被并入计算设备1200中。显示屏1244可以显示信息,以及作为用于接收用户命令和/或其他信息(例如,通过触摸、手指手势、虚拟键盘等)的用户界面。除了显示屏1244之外,计算设备1200可以包括其他外围输出设备(未示出),诸如扬声器和打印机。
计算设备1200通过适配器或网络接口1250、调制解调器1252、或用于在网络上建立通信的其他部件连接到网络1248(例如,互联网)。可以是内部的或外部的的调制解调器1252可以通过串行端口接口1242连接到总线1206,如图12中所示,或者可以使用包括并行接口的另一种接口类型连接到总线1206。
如本文所用,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指代物理硬件介质,诸如与硬盘驱动器1214相关联的硬盘、可移动磁盘1218、可移动光盘1222、其他物理硬件介质,诸如RAM、ROM、闪存卡、数字视频磁盘、zip磁盘、MEM、基于纳米技术的存储设备,以及更多类型的物理/有形硬件存储介质。这种计算机可读存储介质与通信介质(不包括通信介质)不同且不重叠。通信介质在诸如载波指令的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据。术语“调制数据信号”是指一种信号,其一个或多个特点以信号中编码信息的方式被设置或改变。作为示例而非限制,通信介质包括无线介质,诸如声学、RF、红外线和其他无线介质,以及有线介质。实施例还涉及与针对计算机可读存储介质的实施例分开且不重叠的这种通信介质。
如上所述,计算机程序和模块(包括应用1232和其他程序1234)可以被存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这种计算机程序也可以通过网络接口1250、串行端口接口1242或任何其他接口类型来接收。这种计算机程序在由应用执行或加载时使得计算设备1200能够实现本文描述的实施例的特征。因此,这种计算机程序表示计算设备1200的控制器。
实施例还针对包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这种计算机程序产品包括硬盘驱动器、光盘驱动器、存储器设备包、便携式存储棒、存储器卡和其他类型的物理存储硬件。
IV.附加示例实施例
本文描述了一种用于生成图的物化图视图的计算机实现的方法,该图根据对应的图模式而被存储在图数据库中。该方法包括:接收包括查询工作负载的多个图查询;接收一个或多个包含推断规则的图视图模板;为多个图查询中的每一个确定图查询事实;枚举候选视图集,每个候选视图集对应于多个图查询中的相应一个,每个集的候选视图至少部分地基于对应于该集的图查询的图查询事实和一个或多个图视图模板;从候选视图集中选择至少一个候选视图;以及至少部分地基于所选择的至少一个候选视图来生成并存储物化视图。
前述方法的一个实施例还包括至少部分地基于图模式来提取图的图结构特性,并且其中候选视图还至少部分地基于图结构特性。
前述方法的附加实施例还包括为多个图查询中的每个图查询生成:查询评估成本估计;以及用于候选视图集中每个候选视图的候选视图性能改进估计。
前述方法的一个实施例还包括为候选视图集中的每个候选视图生成:视图大小估计;和视图创建成本估计;为多个图查询中的每个图查询生成:查询评估成本估计;以及用于候选视图集中每个候选视图的候选视图性能改进估计。
在前述方法的另一个实施例中,候选视图性能改进估计包括用于相应一个候选视图的视图创建成本估计与多个图查询中的相应一个图查询的查询评估成本估计之商。
在前述方法的附加实施例中,一个或多个图视图模板包括以下至少一个:汇总器;或连接器。
前述方法的一个实施例还包括接收附加的图查询;为附加的图查询枚举第二候选视图;选择对应于至少一个第二候选视图的至少一个先前物化的视图;至少部分地基于至少一个先前物化的视图重写附加的图查询以提供重写的图查询;并且执行重写的图查询以提供查询结果,其中查询结果至少部分取决于至少一个先前物化的视图。
本文描述了一种系统。在一个实施例中,该系统包括:一个或多个处理器;图数据库,包括至少一个图和对应的图模式;以及可由一个或多个处理器访问的一个或多个存储器设备,该一个或多个存储器设备存储由一个或多个处理器执行的软件组件,该软件组件包括:工作负载分析器,被配置为接收包括查询作业量的多个图查询;视图枚举器,被配置为:接收一个或多个包括推断规则的图视图模板;为多个图查询中的每一个确定图查询事实;并且枚举候选视图集,每个候选视图集对应于多个图查询中的相应一个,每个集的候选视图至少部分地基于对应于该集的图查询的图查询事实和一个或多个图视图模板;并且其中工作负载分析器还被配置为从候选视图集中选择至少一个候选视图;执行引擎被配置为至少部分地基于所选择的至少一个候选视图来生成并存储至少一个物化视图。
在前述系统的一个实施例中,工作负载分析器还被配置为至少部分地基于图模式来提取图的图结构特性,并且候选视图至少部分地基于该图结构特性。
在前述系统的另一个实施例中,工作负载分析器还用于生成视图大小估计和视图创建成本估计;并且对于多个图查询中的每个图查询:生成查询评估成本估计;并且为第一候选视图的每个候选视图生成候选视图性能改进估计。
在前述系统的附加实施例中,工作负载分析器还被配置为:通过计算与每个图查询对应的候选视图性能改进估计的总和,为候选视图集中的每个候选视图生成工作负载性能改进估计;并且至少部分地基于至少一个候选视图的工作负载性能改进估计,从候选视图集中选择至少一个候选视图。
在前述系统的一个实施例中,候选视图性能改进估计包括对相应一个候选视图的视图创建成本估计与对多个图查询中的相应一个图查询的查询评估成本估计之商。
在前述系统的另一个实施例中,一个或多个图视图模板包括以下至少一个:汇总器;或连接器。
在前述系统的附加实施例中,该系统还包括查询重写器,并且其中视图枚举器还被配置为:为查询重写器接收的附加的图查询枚举第二候选视图,查询重写器被配置为:选择对应于至少一个第二候选视图的至少一个先前物化的视图;至少部分地基于至少一个先前物化的视图重写附加的图查询以提供重写的图查询;并且执行引擎还被配置为执行重写的图查询以提供查询结果,其中查询结果至少部分地取决于至少一个先前物化的视图。
本文描述了一种计算机程序产品,包括其上记录有计算机程序逻辑的计算机可读存储设备,当由计算设备的至少一个处理器执行时,该计算机可读存储设备使得至少一个处理器执行用于生成图的物化图视图的操作,该图根据对应的图模式而被存储在图数据库中。在计算机程序产品的一个实施例中,操作包括:接收包括查询工作负载的多个图查询;接收一个或多个包含推断规则的图视图模板;为多个图查询中的每一个确定图查询事实;枚举候选视图集,买个候选视图集对应于多个图查询中的相应一个,每个集的候选视图至少部分地基于对应于该集的图查询的图查询事实和一个或多个图视图模板;以及至少部分地基于从第一候选视图中选择的候选视图来生成并存储至少一个物化视图。
在前述的计算机可读存储设备的一个实施例中,操作还包括至少部分地基于图模式来提取图的图结构特性,并且其中候选视图还至少部分地基于图结构特性。
在前述计算机可读存储设备的另一个实施例中,操作还包括:为第一候选视图中的每个候选视图生成视图大小估计和视图创建成本估计;并且为多个图查询中的每个图查询生成:查询评估成本估计;以及对候选视图集中每个候选视图的候选视图性能改进估计。
在前述计算机可读存储设备的附加实施例中,操作还包括:通过计算对应于每个图查询的候选视图性能改进估计的总和,为候选视图集中的每个候选视图生成工作负载性能改进估计;至少部分地基于至少一个候选视图的工作负载性能改进估计,从候选视图集中选择至少一个候选视图;生成至少一个候选视图中的至少一个物化视图。
在前述计算机可读存储设备的另一个实施例中,候选视图性能改进估计包括对相应一个候选视图的视图创建成本估计与对多个图的相应一个图查询的查询评估成本估计之商。
在前述计算机可读存储设备的附加实施例中,所述操作还包括:接收附加的图查询;为附加的图查询枚举第二候选视图;选择对应于至少一个第二候选视图的至少一个先前物化的视图;至少部分地基于至少一个先前物化的视图重写附加的图查询以提供重写的图查询;并且执行重写的图查询以提供查询结果,其中查询结果至少部分取决于至少一个先前物化的视图。
V.结论
虽然上面已经描述了所公开主题的各种实施例,但是应当理解,它们仅作为示例而不是限制被呈现。(多个)相关领域的技术人员将理解,在不脱离如所附权利要求中限定的实施例的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,所公开主题的广度和范围不应受上述示例性实施例中的任一个的限制,而应仅根据所附权利要求及其等同物来限定。
Claims (20)
1.一种用于生成图的物化图视图的计算机实现的方法,所述图根据对应的图模式而被存储在图数据库中,所述方法包括:
接收包括查询工作负载的多个图查询;
接收包括推断规则的一个或多个图视图模板;
针对所述多个图查询中的每个图查询确定图查询事实;
枚举候选视图集,每个候选视图集对应于所述多个图查询中的相应一个图查询,每个候选视图集中的候选视图至少部分地基于对应于所述候选视图集的所述图查询的所述图查询事实和所述一个或多个图视图模板;
从所述候选视图集中选择至少一个候选视图;以及
至少部分地基于所选择的所述至少一个候选视图来生成并存储物化视图。
2.根据权利要求1所述的方法,还包括至少部分地基于所述图模式来提取所述图的图结构特性,并且其中所述候选视图进一步至少部分地基于所述图结构特性。
3.根据权利要求1所述的方法,还包括:
为所述候选视图集中的每个候选视图生成:
视图大小估计;以及
视图创建成本估计;
为所述多个图查询中的每个图查询生成:
查询评估成本估计;以及
针对所述候选视图集中的每个候选视图的候选视图性能改进估计。
4.根据权利要求3所述的方法,还包括:
通过计算对应于每个图查询的所述候选视图性能改进估计的总和,为所述候选视图集中的每个候选视图生成工作负载性能改进估计;以及
至少部分地基于所述至少一个候选视图的所述工作负载性能改进估计来从所述候选视图集中选择所述至少一个候选视图。
5.根据权利要求3所述的方法,其中所述候选视图性能改进估计包括针对相应一个候选视图的所述视图创建成本估计与针对所述多个图查询中的所述相应一个图查询的所述查询评估成本估计之商。
6.根据权利要求1所述的方法,其中所述一个或多个图视图模板包括以下至少一项:
汇总器;或者
连接器。
7.根据权利要求1所述的方法,还包括:
接收附加的图查询;
为所述附加的图查询枚举第二候选视图;
选择对应于所述第二候选视图中的至少一个第二候选视图的至少一个先前物化的视图;
至少部分地基于所述至少一个先前物化的视图来重写所述附加的图查询,以提供重写的图查询;以及
执行所述重写的图查询以提供查询结果,其中所述查询结果至少部分地取决于所述至少一个先前物化的视图。
8.一种图视图枚举、生成和查询系统,包括:
一个或多个处理器;
包括至少一个图和对应的图模式的图数据库;以及
所述一个或多个处理器可访问的一个或多个存储器设备,所述一个或多个存储器设备存储供所述一个或多个处理器执行的软件组件,所述软件组件包括:
工作负载分析器,所述工作负载分析器被配置为接收包括查询工作负载的多个图查询;
视图枚举器,所述视图枚举器被配置为:
接收包括推断规则的一个或多个图视图模板;
针对所述多个图查询中的每个图查询确定图查询事实;
枚举候选视图集,每个候选视图集对应于所述多个图查询中的相应一个图查询,每个候选视图集中的候选视图至少部分地基于对应于所述候选视图集的所述图查询的所述图查询事实和所述一个或多个图视图模板;以及
其中所述工作负载分析器还被配置为从所述候选视图集中选择至少一个候选视图;以及
执行引擎,所述执行引擎被配置为至少部分地基于所选择的所述至少一个候选视图来生成并存储至少一个物化视图。
9.根据权利要求8所述的系统,其中所述视图枚举器还被配置为至少部分地基于所述图模式来提取所述图的图结构特性,并且所述候选视图进一步至少部分地基于所述图结构特性。
10.根据权利要求8所述的系统,其中所述工作负载分析器还被配置为:
为所述候选视图集中的每个候选视图:
生成视图大小估计和视图创建成本估计;以及
为所述多个图查询中的每个图查询:
生成查询评估成本估计;以及
生成针对第一候选视图中的每个候选视图的候选视图性能改进估计。
11.根据权利要求10所述的系统,其中所述工作负载分析器还被配置为:
通过计算对应于每个图查询的所述候选视图性能改进估计的总和,为所述候选视图集中的每个候选视图生成工作负载性能改进估计;以及
至少部分地基于所述至少一个候选视图的所述工作负载性能改进估计来从所述候选视图集中选择所述至少一个候选视图。
12.根据权利要求10所述的系统,其中所述候选视图性能改进估计包括针对相应一个候选视图的所述视图创建成本估计与针对所述多个图查询中的所述相应一个图查询的所述查询评估成本估计之商。
13.根据权利要求8所述的系统,其中所述一个或多个图视图模板包括以下至少一项:
汇总器;或者
连接器。
14.根据权利要求8所述的系统,还包括查询重写器,并且其中所述视图枚举器还被配置为:
为所述查询重写器接收到的附加的图查询枚举第二候选视图,所述查询重写器配置为:
选择对应于所述第二候选视图中的至少一个第二候选视图的至少一个先前物化的视图;
至少部分地基于所述至少一个先前物化的视图来重写所述附加的图查询,以提供重写的图查询;以及
所述执行引擎还被配置为执行所述重写的图查询以提供查询结果,其中所述查询结果至少部分地取决于所述至少一个先前物化的视图。
15.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在由计算设备的至少一个处理器执行时使所述至少一个处理器执行用于生成图的物化图视图的操作,所述图根据对应的图模式而被存储在图数据库中,所述操作包括:
接收包括查询工作负载的多个图查询;
接收包括推断规则的一个或多个图视图模板;
针对所述多个图查询中的每个图查询确定图查询事实;
枚举候选视图集,每个候选视图集对应于所述多个图查询中的相应一个图查询,每个候选视图集中的候选视图至少部分地基于对应于所述候选视图集的所述图查询的所述图查询事实、所述一个或多个图视图模板以及图结构特性;以及
至少部分地基于从第一候选视图中选择的候选视图来生成并存储至少一个物化视图。
16.根据权利要求15所述的计算机程序产品,其中所述操作还包括至少部分地基于所述图模式来提取所述图的图结构特性,并且其中所述候选视图进一步至少部分地基于所述图结构特性。
17.根据权利要求16所述的计算机程序产品,其中所述操作还包括:
为所述第一候选视图中的每个候选视图生成视图大小估计和视图创建成本估计;以及
为所述多个图查询中的每个图查询生成:
查询评估成本估计;以及
针对所述候选视图集中的每个候选视图的候选视图性能改进估计。
18.根据权利要求17所述的计算机程序产品,所述操作还包括:
通过计算对应于每个图查询的所述候选视图性能改进估计的总和,为所述候选视图集中的每个候选视图生成工作负载性能改进估计;
至少部分地基于至少一个候选视图的所述工作负载性能改进估计来从所述候选视图集中选择所述至少一个候选视图;以及
生成所述至少一个候选视图的所述至少一个物化视图。
19.根据权利要求17所述的计算机程序产品,其中所述候选视图性能改进估计包括针对相应一个候选视图的所述视图创建成本估计与针对所述多个图查询中的所述相应一个图查询的所述查询评估成本估计之商。
20.根据权利要求15所述的计算机程序产品,所述操作还包括:
接收附加的图查询;
为所述附加的图查询枚举第二候选视图;
选择对应于所述第二候选视图中的至少一个第二候选视图的至少一个先前物化的视图;
至少部分地基于所述至少一个先前物化的视图来重写所述附加的图查询,以提供重写的图查询;以及
执行所述重写的图查询以提供查询结果,其中所述查询结果至少部分地取决于所述至少一个先前物化的视图。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/277,992 | 2019-02-15 | ||
US16/277,992 US11275735B2 (en) | 2019-02-15 | 2019-02-15 | Materialized graph views for efficient graph analysis |
PCT/US2020/015767 WO2020167482A1 (en) | 2019-02-15 | 2020-01-30 | Materialized graph views for efficient graph analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113424173A CN113424173A (zh) | 2021-09-21 |
CN113424173B true CN113424173B (zh) | 2024-06-18 |
Family
ID=69743922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080014468.XA Active CN113424173B (zh) | 2019-02-15 | 2020-01-30 | 用于有效图分析的物化图视图 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11275735B2 (zh) |
EP (1) | EP3924837A1 (zh) |
CN (1) | CN113424173B (zh) |
WO (1) | WO2020167482A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2582782A (en) * | 2019-04-02 | 2020-10-07 | Graphcore Ltd | Graph conversion method |
US11392624B2 (en) | 2019-12-11 | 2022-07-19 | Oracle International Corporation | Hybrid in-memory BFS-DFS approach for computing graph queries against homogeneous graphs inside relational database systems |
US11544280B2 (en) * | 2019-12-18 | 2023-01-03 | Neo4J Sweden Ab | Bi-gram cardinality estimation in a graph database |
US11775363B1 (en) * | 2020-08-05 | 2023-10-03 | Synopsys, Inc. | System and method for auditing a graph-based API |
US11507579B2 (en) | 2020-10-26 | 2022-11-22 | Oracle International Corporation | Efficient compilation of graph queries involving long graph query patterns on top of SQL based relational engine |
US11567932B2 (en) | 2020-10-26 | 2023-01-31 | Oracle International Corporation | Efficient compilation of graph queries on top of SQL based relational engine |
US11989178B2 (en) | 2020-10-26 | 2024-05-21 | Oracle International Corporation | Efficient compilation of graph queries including complex expressions on top of sql based relational engine |
US11500868B2 (en) | 2021-01-29 | 2022-11-15 | Oracle International Corporation | Efficient identification of vertices and edges for graph indexes in an RDBMS |
US11526501B2 (en) * | 2021-03-19 | 2022-12-13 | International Business Machines Corporation | Materialized views assistant |
US11822548B2 (en) * | 2021-12-07 | 2023-11-21 | International Business Machines Corporation | Data warehouse framework for high performance reporting |
US20230214424A1 (en) * | 2021-12-31 | 2023-07-06 | Coupa Software Incorporated | Dynamic determination of data |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110168533A (zh) * | 2016-12-15 | 2019-08-23 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150026158A1 (en) * | 2012-01-31 | 2015-01-22 | Kent State University | Systems, methods, and software for unified analytics environments |
US9053210B2 (en) * | 2012-12-14 | 2015-06-09 | Microsoft Technology Licensing, Llc | Graph query processing using plurality of engines |
US10740329B2 (en) * | 2013-03-15 | 2020-08-11 | Teradata Us, Inc. | Optimization of database queries for database systems and environments |
WO2014209292A1 (en) * | 2013-06-26 | 2014-12-31 | Hewlett-Packard Development Company, L.P. | Modifying an analytic flow |
EP2871577B1 (en) * | 2013-11-06 | 2017-08-09 | Software AG | Complex event processing (CEP) based system for handling performance issues of a CEP system and corresponding method |
US11068482B2 (en) * | 2018-04-13 | 2021-07-20 | Microsoft Technology Licensing, Llc | Computation reuse in analytics job service |
-
2019
- 2019-02-15 US US16/277,992 patent/US11275735B2/en active Active
-
2020
- 2020-01-30 CN CN202080014468.XA patent/CN113424173B/zh active Active
- 2020-01-30 WO PCT/US2020/015767 patent/WO2020167482A1/en unknown
- 2020-01-30 EP EP20709385.7A patent/EP3924837A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110168533A (zh) * | 2016-12-15 | 2019-08-23 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
Also Published As
Publication number | Publication date |
---|---|
US20200265049A1 (en) | 2020-08-20 |
US11275735B2 (en) | 2022-03-15 |
EP3924837A1 (en) | 2021-12-22 |
WO2020167482A1 (en) | 2020-08-20 |
CN113424173A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113424173B (zh) | 用于有效图分析的物化图视图 | |
JP7273045B2 (ja) | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 | |
US10896205B2 (en) | Interactive on-demand hypercube synthesis based multi-dimensional drilldown and a pivotal analysis tool and methods of use | |
Wrembel et al. | Data warehouses and OLAP: concepts, architectures, and solutions | |
US20080288524A1 (en) | Filtering of multi attribute data via on-demand indexing | |
Qiao et al. | Towards efficient business process clustering and retrieval: combining language modeling and structure matching | |
CN104137095B (zh) | 用于演进分析的系统 | |
US11275734B2 (en) | Data lake workload optimization through index modeling and recommendation | |
US12007992B2 (en) | Serverless data lake indexing subsystem and application programming interface | |
Kathuria et al. | Efficient and provable multi-query optimization | |
Rudolf et al. | Synopsys: large graph analytics in the SAP HANA database through summarization | |
Bordawekar et al. | Analyzing analytics | |
Martin et al. | Multi-temperate logical data warehouse design for large-scale healthcare data | |
Aliberti et al. | EXPEDITE: EXPress closED ITemset enumeration | |
US20230222124A1 (en) | Enhancing database query processing | |
Reniers et al. | Schema design support for semi-structured data: Finding the sweet spot between NF and De-NF | |
Dahiya et al. | Effective data warehouse for information delivery: a literature survey and classification | |
US20230289839A1 (en) | Data selection based on consumption and quality metrics for attributes and records of a dataset | |
US20230289696A1 (en) | Interactive tree representing attribute quality or consumption metrics for data ingestion and other applications | |
Sumathi et al. | Data mining and data warehousing | |
Chen et al. | Optimization Design of Apriori Algorithm Based on Big Data Analysis and Cloud Computing | |
Le Khac et al. | Toward Distributed Knowledge Discovery on Grid Systems | |
Maccioni et al. | Information Discovery in Polystores: the Augmented Way (Discussion Paper) | |
Bellatreche et al. | Step by step towards energy-aware data warehouse design | |
Manjula et al. | A methodology for data management in multidimensional warehouse |
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 |