首页> 中国专利> 物化视图的增量刷新

物化视图的增量刷新

摘要

公开了用于增量刷新物化视图的系统、方法和装置。方法包括基于源表生成物化视图。该方法包括合并源表和物化视图以生成合并表,从而识别对该源表是否执行了未反映在该物化视图中的更新。该方法包括响应于检测到对源表所做的未反映在物化视图中的更新,将该更新应用于该物化视图。

著录项

  • 公开/公告号CN113228000A

    专利类型发明专利

  • 公开/公告日2021-08-06

    原文格式PDF

  • 申请/专利权人 斯诺弗雷克公司;

    申请/专利号CN201980086492.1

  • 申请日2019-10-24

  • 分类号G06F16/22(20190101);G06F16/23(20190101);G06F16/24(20190101);G06F16/27(20190101);

  • 代理机构11262 北京安信方达知识产权代理有限公司;

  • 代理人俞立文;杨明钊

  • 地址 美国蒙大拿州

  • 入库时间 2023-06-19 12:07:15

说明书

相关申请的交叉引用

本申请要求于2018年10月26日提交的题为“INCREMENTAL REFRESH OF AMATERIALIZED VIEW”的第62/751,123号的美国临时专利申请的优先权,该申请的全部内容通过引用并入本文,包括但不限于以下具体出现的那些部分,通过引用并入的部分以下除外:如果上述申请的任何部分与本申请不一致,则本申请取代上述申请。

技术领域

本公开的实施例涉及数据库,并且更具体地,涉及数据库系统中的物化视图(materialized view)。

背景

数据库被广泛用于计算应用中的数据存储和访问。数据库存储的目标是以有组织的方式提供大量信息,以便可以对其进行访问、管理和更新。在数据库中,数据可以组织成行、列和表。不同的数据库存储系统可以用于存储不同类型的内容,诸如书目、全文、数字和/或图像内容。此外,在计算中,可以根据数据库的组织方法对不同的数据库系统进行分类。有许多不同类型的数据库,包括关系数据库,分布式数据库,云数据库,面向对象的数据库和其他数据库。

各种实体和公司都使用数据库来存储可能需要访问或分析的信息。在示例中,零售公司可以将所有销售交易的清单存储在数据库中。数据库可以包括有关交易何时发生,交易在哪里发生,交易的总成本,在交易中购买的所有物品的标识符和/或描述等信息。同一家零售公司还可能在同一数据库中存储例如员工信息,该信息可能包括员工姓名、员工联系信息、员工工作历史记录、员工薪酬率等。根据该零售公司的需求,员工信息和交易信息可以存储在同一数据库的不同表中。当零售公司想要得知存储在数据库中的信息时,可能需要“查询”其数据库。该零售公司可能希望查找有关例如在特定商店工作的所有员工的姓名、在特定日期工作的所有员工、在特定时间范围内针对特定产品进行的所有交易等的数据。

当零售公司想要查询其数据库以从数据库中提取某些组织的信息时,将针对数据库数据执行查询语句。该查询根据一个或更多个查询谓词(query predicates)返回特定数据,这些查询谓词指示该查询应返回哪些信息。该查询从数据库中提取特定数据,并将该数据格式化为可读形式。可以用数据库可以理解的语言(诸如,结构化查询语言(“SQL”))编写查询,以便数据库系统可以确定应定位哪些数据以及应如何返回数据。该查询可以请求存储在数据库内的任何相关信息。如果可以找到适当的数据来响应查询,则数据库有可能揭示复杂的趋势和活动。只能通过使用成功执行的查询来利用此功能。

然而,除上述示例外,零售公司可能具有存储大量信息的数据库表。在非常大的表上执行查询可能具有挑战性,因为要扫描整个表需要大量的时间和计算资源。因此,可能希望在不扫描整个表的情况下执行查询。在一些实施方式中,可以通过读取物化视图来执行查询,该物化视图包括关于与该查询有关的表的摘要信息。

附图简述

参考以下附图描述了本公开的非限制性和非穷举性的实施方式,其中,除非另外指明,否则贯穿各个视图,相似的附图标记指代相同或相似的部分。关于以下描述和附图,将更好地理解本公开的优点,其中:

图1是示出了根据本公开的实施例的物化视图维护系统的部件的示意框图;

图2是示出了根据本公开的实施例的用于更新物化视图的过程流的示意框图;

图3是示出了根据本公开的实施例的用于更新物化视图的过程流的示意框图;

图4是示出了根据本公开的实施例的示例物化视图和源表的相关联的微分区的示意框图;

图5是根据本公开的实施例的用于更新物化视图的方法的示意过程图;

图6是根据本公开的实施例的用于更新物化视图的方法的示意过程图;

图7是示出了根据本公开的实施例的用于数据库系统的处理平台的框图;

图8是示出了根据本公开的实施例的计算服务管理器的部件的框图;

图9是示出了根据本公开的实施例的执行平台的部件的框图;以及

图10是根据本公开的实施例的示例计算装置的示意图。

详细描述

本文公开了用于增量刷新数据库系统中的物化视图的系统、方法和装置。本文公开的系统、方法和装置通过确保物化视图是最新的并且相对于其源表而言不是陈旧的,提高了数据库性能。物化视图可用于加快查询性能并减少响应查询所需的存储量。另外,本文公开的系统、方法和装置确保了诸如刷新物化视图的“内部”数据库任务不限制用于执行诸如客户端查询的“外部”数据库任务的处理能力。

在本公开的实施例中,公开了用于维护物化视图的方法。该方法包括基于源表生成物化视图。该方法包括合并源表和物化视图,以检测未反映在物化视图中的源表的更新。源表的更新包括以下中的一项或更多项:自物化视图的先前刷新和/或先前压缩以来在源表中添加、删除或更新行。该方法包括,响应于检测到源表的更新,将该更新应用于物化视图。

在实施例中,该方法包括基于源表生成物化视图,其中,源表被组织成多个微分区。该方法包括合并源表和物化视图以生成合并表。该方法包括扫描合并表以检测插入到源表中的物化视图中不存在的新微分区并扫描合并表以检测从源表中移除的仍存在于物化视图中的删除的分区的不存在。该方法包括检测源表的更新,其中该更新包括以下一项或更多项:自物化视图的先前刷新以来插入到源表中的新分区,或者自物化视图的先前压缩以来从源表中移除的删除的分区。该方法包括,响应于检测到插入到源表中的新的微分区,通过将新的微分区插入到物化视图中来刷新物化视图。该方法包括,响应于检测到从源表中移除的删除的微分区,通过从物化视图中移除删除的微分区来压缩物化视图。

数据库被广泛用于计算应用中的数据存储和数据访问。数据库可以包括一个或更多个表,这些表包括或引用可以使用查询进行读取、修改或删除的数据。然而,对于某些现代数据仓库系统来说,执行查询可能会特别耗费时间和资源,因为现代数据仓库系统通常包括存储拍字节数据的表。查询非常大的数据库和/或表可能需要扫描大量的数据。减少为数据库查询而扫描的数据量是数据组织和处理的主要挑战之一。当针对大量数据处理查询时,使用物化视图来减少执行查询所需的时间和处理资源可能很重要。本公开的系统、方法和装置提供了用于通过增量刷新物化视图以确保物化视图是最新的来提高查询性能的装置,并且可以提供在响应查询时要使用的准确信息。

物化视图是数据库对象,其包括数据库查询的最终或中间结果。物化视图可以包括数据库数据的本地高速缓存副本、表的行或列的子集、连接(join)的结果、聚合函数的结果等。物化视图可以由客户端或系统管理员定义,并且可以包括任何适当的信息。通常生成物化视图以帮助执行特定的通用查询。

如本申请中所公开的物化视图是对持久查询结果的声明性规范,该持久查询结果是自动维护和透明利用的。在实施例中,物化视图包括位于远程的数据的本地副本,或者可以包括源表或连接结果的行和/或列的子集(可以称为“分区”或“微分区”)或者可替代地包括使用聚合函数的摘要。物化视图是通过物化生成的,其中查询结果类似于在函数语言中函数值的记忆进行高速缓存。物化视图通过物化和重用工作负荷中的公共中间查询结果来提高昂贵查询的性能。物化视图用于提高查询性能,但以维护成本和增加的存储需求为代价。

为了帮助理解本公开,提供了使用物化视图的示例实施方式。数据库平台的示例客户端是营销组织。在该示例中,营销组织存储与可能购买由营销组织广告的商品或服务的潜在客户有关的大量数据库数据。营销组织可以存储例如姓名、联系信息、性别、社会经济状况以及有关每个潜在客户的其他信息。营销组织通常可以运行特定于不同地理区域的广告活动。因为营销组织对其潜在客户的位置感兴趣,所以营销组织通常可以运行查询以标识特定城市、州或地理区域中的所有潜在客户。例如,营销组织可以请求了解在美国加利福尼亚州有多少男性潜在顾客和多少女性潜在顾客。因为营销组织经常想了解不同营销活动的此信息,所以营销组织可以为该信息定义物化视图。物化视图可能会给出两个摘要数字,一个指示加利福尼亚州的男性潜在客户量,另一个指示加利福尼亚州的女性潜在客户量。这些数字是基于物化视图的“源表”确定的。源表可能非常大,并且可以包括有关营销组织的每个潜在客户的信息。当更新源表时,物化视图可能相对于源表变得“陈旧”,使得物化视图不再提供有关加利福尼亚州男性和女性潜在客户量的准确数字。因此,需要确保物化视图相对于其源表刷新,以便在执行数据库查询时可以依赖物化视图。应当认识到,提供该示例实施方式仅用于帮助理解本公开,并且不应该限制本公开的范围。物化视图可以提供任何合适的信息,并且可以由客户账户自定义。物化视图不一定提供示例实施方式中所讨论的聚合信息,并且可以提供适合客户账户需求的不同信息。

物化视图可以为数据库操作提供某些性能优势。与物化视图所基于的源表相比,物化视图可以需要少量的附加存储。物化视图可以由数据库系统自动更新和维护,并且可以透明地使用,而无需更改源表上的现有工作负荷。

在公开和描述用于维护物化视图的方法、系统和装置之前,应当理解,本公开不限于本文公开的配置、处理步骤和材料,因为这样的配置、处理步骤和材料可以有些变化。还应理解,本文所采用的术语仅用于描述实施方式,并不旨在限制本公开的范围,因为本公开的范围仅由所附权利要求及其等同物限制。

在描述和要求保护本公开内容时,将根据以下阐述的定义使用以下术语。

必须指出,如本说明书和所附权利要求书中使用的,单数形式“一(a)”、“一(an)”和“所述”包括复数指代,除非上下文另外明确指出。

如本文所用,术语“包括(comprising)”、“包括(including)”、“包含”、“特征在于”及其语法等价形式是包括性或开放性的术语,其不排除附加的、未叙述的元素或方法步骤。

如本文所用,数据库表是记录(行)的集合。每个记录包含表属性(列)的值的集合。数据库表通常物理上存储在多个较小(大小变化或大小固定)的存储单元中,例如文件或块中。

如本文所用,微分区是数据库表中的不可变的存储装置,其不能就地更新,并且当修改存储在其中的数据时必须重新生成。

本申请人已经开发了用于物化视图的低成本增量维护的系统、方法和装置。这样的系统、方法和装置以低成本方式提供了对数据库的物化视图的维护,确保了物化视图的新鲜度。在一些实施方式中,客户账户可以指示仅当物化视图相对于其源表是“新鲜的”并且包括正确且最新的数据时才可以使用该物化视图。尤其是在非常大的数据仓库中,对每种数据操作语言(DML)操作维护新鲜的物化视图可能很困难且成本很高。由于在某些实施例中,物化视图可能非常大,并且包括许多分区或微分区,因此物化视图的维护成本很高且效率不高。因此,要实现物化视图的高效使用可能是一项挑战,因为物化视图的维护成本很高。

在实施例中,通过相对于物化视图的源表增量刷新该物化视图来一致地维护和更新该物化视图。物化视图的维护可以异步进行,使得源表的更新与刷新或压缩物化视图分离。本文公开的是用于物化视图的增量和低成本维护的系统、方法和装置,使得物化视图与其源表一致并响应于源表的更改而不断刷新。

本公开的一些实施例可以将“微分区”称为将数据的一部分存储在数据库表中。可以将本文讨论的微分区视为批处理单元,其中每个微分区具有连续的存储单元。举例来说,每个微分区可以包含介于50MB和500MB之间的未压缩数据(请注意,存储中的实际大小可以更小,因为数据可以被压缩存储)。表中的行组可被映射到以列的方式组织的单独的微分区中。这种大小和结构允许对待扫描的微分区进行极细粒度的选择,该待扫描的微分区可以包括数百万甚至数亿个微分区。该细粒度选择过程在本文中可以被称为基于元数据的“修剪(pruning)”。修剪涉及使用元数据来确定表的哪些部分(包括表中的哪些微分区或微分区组)与查询无关,然后在响应查询和扫描时避免那些无关的微分区,只有相关的微分区才能响应查询。可以自动收集关于微分区中存储的所有行的元数据,包括:微分区中每个列的值范围;不同值的数量;和/或用于优化和高效查询处理的附加属性。在一个实施例中,可以在所有表上自动执行微分区。例如,可以使用插入/加载数据时发生的排序对表进行透明分区。然而,应当认识到,本公开的微分区仅是示例性的,并且应被认为是非限制性的。应当理解,在不脱离本公开的范围的情况下,微分区可以包括其他数据库存储装置。

本文公开的实施例可以应用于数据库中的数据或表。通过维护源表的新鲜物化视图,可以提高多个数据库查询。实施例可以包括存储查询结果的能力,使得查询响应可以包括直接来自物化视图而不是来自源表的数据。通过查询物化视图实现数据的快速检索,物化视图可以促进提高复杂连接的性能。另外,在数据仓库中,物化视图可以预先计算并存储聚合数据,以消除与大型或频繁使用的查询类别的昂贵连接或聚合相关联的开销。物化视图可以获取远程源表的快照并存储远程数据的本地副本。物化视图还可以使账户能够通过从中央服务器定期刷新并由客户端将更新传播回中央服务器来将数据的子集下载到移动客户端。

下面提供与本公开的各个实施例一致的系统和方法的详细描述。尽管描述了几个实施例,但是应当理解,本公开不限于任何一个实施例,而是包括许多替代、修改和等同形式。另外,尽管在以下描述中阐述了许多具体细节以提供对本文公开的实施例的透彻理解,但是可以在没有这些细节中的一些或全部细节的情况下实施一些实施例。此外,为了清楚起见,没有详细描述现有技术中已知的某些技术材料,以避免不必要地模糊本公开。

现在参考附图,图1示出了物化视图维护模块100的示意框图。物化视图维护模块100包括物化视图(“MV”)生成部件102、合并部件104、更新检测部件106、刷新部件108、压缩部件110和统计信息部件112。物化视图维护模块100与诸如数据库存储装置的存储装置114通信。

物化视图维护模块100可以配置用于实现与数据库源表相关联的物化视图的自动增量刷新。例如,MV生成部件102可以基于源表生成物化视图。合并部件104可以更新物化视图和源表,使得更新检测部件106可以检测源表上是否发生了未反映在物化视图中的任何更新。刷新部件108可以通过添加自源表的先前刷新以来被添加到源表的新行来刷新物化视图。压缩部件110可以从物化视图中移除行,该行与自源表的先前压缩以来从源表中移除的删除的行相对应。统计信息部件112可以生成关于源表、物化视图以及物化视图的增量刷新的统计信息。

MV生成部件102基于源表生成物化视图。MV生成部件102生成物化视图,以具有其自己的域并具有表和视图的特征,该视图具有链接到源表的附加信息和与源表相关的版本控制信息。物化视图是对自动维护并透明使用的持久查询结果的声明性规范。物化视图是数据库对象,其包括对源表的持久查询结果的结果。物化视图可以是位于远程的数据的本地副本,它可以是源表或连接结果的行和/或列的子集,或者可以是使用聚合函数的摘要。MV生成部件102可以被配置用于通过由物化过程高速缓存查询结果使得将高速缓存的查询结果存储为可以从原始源表更新的具体“物化”表,来生成物化视图。物化视图可以提高对大型选择、连接或聚合语句的数据库查询的性能。物化视图提供了比源表小的附加存储,物化视图可以自动维护物化视图,并且物化视图可以透明地使用,而无需更改源表上的现有工作负荷。物化视图包括链接到其管理的附加信息,包括源表标识符、自物化视图的上一个刷新版本以来被物化的一组微分区、以及自物化视图的上一个压缩版本以来移除的一组微分区。

在实施例中,MV生成部件102在物化视图中存储与表(例如,阶和视图(例如,视图定义)相同的信息。另外,MV生成部件102存储源表标识符。在编译期间将源表标识符标记到物化视图,以指示将用于维护和增量更新物化视图的源表。MV生成部件102还存储物化视图的类型的指示,其中物化视图的类型指示用于确定物化视图的范围的枚举类型(例如,投影、摘要、提要、连接等)。另外,MV生成部件102可以包括特定于DML版本控制的信息,该信息被添加到与物化视图相关联的表版本中。可以用物化视图的先前刷新时间和先前压缩时间来标记物化视图。

在实施例中,MV生成部件102截断(truncate)物化视图的内容,使得所有微分区都被删除,并且执行完全刷新。可能需要此命令来支持物化视图的重写增强,并且可以将此命令实现为从结构化查询语言(SQL)解析器生成的专用插入命令。此外,可以将新的子命令添加到SQL DML,以指示在对物化视图开始插入或刷新之前需要截断。MV生成部件102可以将该语句生成为两个步骤,包括(1)进行截断,以及(2)根据从物化视图的定义获得的子查询执行插入。

合并部件104被配置用于合并物化视图和源表。合并部件104将(1)用一组丢弃的微分区过滤的物化视图的微分区与(2)已添加但尚未物化的源表的微分区合并。在实施例中,物化视图和源表的合并类似于局部视图扩展。合并部件104获得自源表的先前刷新以来已添加的一组微分区,并且进一步获得自源表的先前压缩以来移除的一组微分区。应当认识到,微分区包括多个行,并且在不脱离本公开的范围的情况下,微分区可以可替代地被称为行,例如,添加的微分区可以被称为新的行,而移除的微分区可以被称为删除的行。

更新检测部件106被配置用于检测未反映在物化视图中的源表的更新。在实施例中,更新检测部件106与合并部件104集成在一起,并且当物化视图与源表合并时,对物化视图执行扫描。

在实施例中,更新检测部件106通过基于事务日志的变化跟踪来检测源表的更新。事务日志包括添加到源表或从源表中移除的微分区/行的指示。事务日志将添加新的微分区/行的源表的刷新与从源表中移除微分区/行的源表的刷新区分开来。在实施例中,物化视图维护两个版本,包括最近的刷新版本和最近的压缩版本。更新检测部件106维护刷新构造,该刷新构造通过拉取自物化视图的上一次刷新以来添加到源表中的添加的微分区的日志来指示要插入到物化视图中的一组微分区。更新检测部件106维护压缩构造,该压缩构造通过拉取自物化视图的上一次压缩以来从源表中移除的微分区的日志来指示要从物化视图中移除的一组微分区。

刷新部件108被配置用于通过将一个或更多个微分区或新的行添加到物化视图来对物化视图执行刷新。刷新部件108从更新检测部件108接收自从物化视图的上一次刷新以来微分区或行插入到源表中的指示。然后,刷新部件108将该微分区或行插入到物化视图中。刷新部件108可以针对它生成的每个物化视图接收单个源表标识符。刷新部件108从源表中插入一组给定的微分区,并更新物化视图的上一个刷新版本。在实施例中,刷新部件108由用户利用命令来手动触发、启用或禁用。在实施例中,当启用刷新部件108时,刷新部件108自动更新物化视图。

在实施例中,刷新部件108执行插入命令。刷新部件108接收自物化视图的先前刷新以来添加到源表中的新的微分区的日志。刷新部件108将新的微分区插入到物化视图中,并且可以被配置用于在物化视图的列中对新的微分区进行分组,并在物化视图中对新的微分区进行排序。在实施例中,用于新的微分区的元数据在源表和物化视图之间是一致的。

压缩部件110被配置用于通过从物化视图中移除一个或更多个微分区或删除的行来对物化视图执行压缩。压缩部件110从更新检测部件106接收自物化视图的上一次压缩以来从源表中移除微分区或行的指示。然后,压缩部件110从物化视图中移除行的微分区。压缩部件110可以针对它生成的每个物化视图接收单个源表标识符。压缩部件110从相应的物化视图微分区中移除源表微分区,以更新物化视图的上一个压缩版本。在实施例中,刷新部件108的优先级高于压缩部件110,因为物化视图的压缩可能特别昂贵且耗时。在实施例中,压缩部件110仅在接收到自物化视图的先前压缩以来从源表中移除的阈值数量的行、列和/或微分区之后才压缩该物化视图。在这样的实施例中,压缩部件110将不在源表上的每次移除操作之后操作,而是仅在源表上已经发生了阈值数量的移除之后才操作。

在实施例中,压缩部件110执行删除命令。压缩部件110接收自物化视图的先前压缩以来从源表中删除的删除的微分区的日志。压缩部件110从物化视图中删除已删除的微分区。在实施例中,对物化视图的活动文件的访问可能比对删除的微分区的列表的访问更有效。

在实施例中,由刷新部件108和压缩部件110中任一者执行的更新根据从客户账户接收到的约束自动更新。客户账户可以指示对新鲜度和成本的约束。约束可以指示客户账户的优先级,以始终保持新鲜的物化视图或优先考虑成本并允许物化视图在一段时间内不进行更新。系统可以基于从客户账户接收到的约束自动调度物化视图的刷新或压缩。在实施例中,系统提供对将物化视图更新到客户账户的成本的可见性。

统计信息部件112维护关于物化视图的新鲜度和有用性的统计信息。统计信息部件112生成关于物化视图的新鲜度的维护统计信息。这样的维护统计信息包括物化的源表的微分区的数量、源表的微分区的总数量和/或物化视图的微分区的总数量。统计信息部件112生成关于物化视图的有用性的使用量统计信息。这样的有用性统计信息可以包括查询访问物化视图的次数和查询访问源表的次数。

存储装置114可以包括数据库存储装置,并且可以被配置用于存储包括多个数据库文件的多个数据库表中的每个数据库表。存储装置114可以包括高速缓冲存储器存储装置和/或长期或较慢的检索存储装置。

在实施例中,由物化视图维护模块100执行的工作在后台执行,并且可以以连续的方式发生。在实施例中,一旦基于源表生成了物化视图,物化视图维护模块100就被配置用于维持物化视图的新鲜度。在实施例中,用于物化视图维护的最大预算可以被客户账户改变。客户账户可以为某些物化视图的维护操作提供大量预算,但为其他物化视图提供较小的预算。客户账户可以具有对用于各种物化视图的维护操作的多个优先级设置的访问权。客户账户还可以接收指示刷新或压缩物化视图的频率和效率的信息。

图2示出了用于物化视图的增量更新的过程流200的示意框图。过程流200可以由任何合适的计算装置来执行,包括例如计算服务管理器(参见图7-图8中的计算服务管理器702)和/或物化视图维护模块(参见图8中的100)。过程流200包括在202处创建物化视图,其中,该物化视图基于源表。过程流200包括在204处更新源表,这可以包括在206处将新的微分区插入到源表中和/或在208处从源表中移除删除的微分区。过程流200包括在210处查询物化视图和源表。在210处的查询包括检测源表上是否发生了未反映在物化视图中的任何更新。例如,可以将新的微分区添加到尚未添加到物化视图的源表中。可以从仍保留在物化视图中的源表中移除删除的微分区。过程流200包括在212处将更新应用于物化视图。应用更新212可以包括在214处通过将新的微分区插入到物化视图中来刷新物化视图,和/或在216处通过移除删除的微分区来压缩物化视图。

图3示出了用于物化视图的增量更新的示例过程流300的示意框图。过程流300可以由任何合适的计算装置来执行,包括例如计算服务管理器(参见图7-图8中的计算服务管理器702)和/或物化视图维护模块(参见图8中的100)。过程流300包括在302处基于源表生成物化视图。过程流300包括在304处更新源表,这可以包括在306处插入微分区和/或在308处移除微分区。过程流包括在310处查询物化视图和源表以检测未反映在物化视图中的源表的任何更新。过程流300包括在312处将更新应用于物化视图。

在图3所示的示例中,在302处通过扫描源表来生成物化视图。如图所示,源表包括数据集{1 2 3 4 5 6}。相应的物化视图包括数据集[1(1 2 3)]和[2(4 5 6)],这些数据集可指示数据库中的微分区,其中微分区是数据库中的不可变存储对象。

在图3所示的示例中,在304处,通过添加(+7)和删除(-2)来更新源表(参见Δ1)。在306处,通过添加(+8)和添加(+9),将两个微分区插入到源表中(参见Δ2)。在308处,通过移除(-1)和(-3),从源表中移除两个微分区(参见Δ3)。如Δ(delta)所示,源表的整体更新包括{+7+8+9-1-2-3},其中包括对源表进行的各个更新(参见Δ1、Δ2和Δ3)中的每个更新。

在图3所示的示例中,在310处查询物化视图和源表。查询310包括合并物化视图和源表。扫描源表并在源表中检测到微分区{7 8 9},而在物化视图中未检测到这些微分区。扫描物化视图,并在物化视图中检测到微分区(1 2 3)但在源表中未检测到微分区(1 23)。

在图3所示的示例中,在312处对物化视图应用更新。扫描物化视图,并且系统检测到微分区[1(1 2 3)]和[2(4 5 6)],并且系统检测到微分区[1(1 23)]存在于物化视图中,但应移除。系统删除微分区[1(1 2 3)],使得保留微分区[2(4 5 6)]。系统扫描源表并发现微分区{7 8 9}并将该微分区插入到物化视图中,使得物化视图包括微分区[2(4 5 6)]和[3(7 8 9)]。

图4示出了源表402的示例微分区和基于源表生成的示例物化视图404。源表402经过线性变换,生成多个微分区(参见分区第7号,分区第12号和分区第35号)。在如图4所示的一个实施例中,多个微分区可以生成物化视图404的单个微分区。微分区是数据库系统中的不可变存储对象。在实施例中,微分区被表示为微分区的显式列表,并且在某些实施例中,这可能是特别昂贵的。在可替代的实施例中,微分区被表示为微分区的范围。在实施例中,微分区被表示为DML版本,该DML版本指示源表402的上一次刷新和上一次压缩。

示例源表402被标记为“第243号源表”,以说明可以利用任意数量的源表来生成物化视图404,物化视图404可以索引多个源表中的每个源表(参见物化视图404中的“表”列),和/或可以针对多个可能的源表生成任意数量的多个物化视图。如图4中的示例实施例所示,源表402包括三个微分区。源表402的三个微分区包括第7号分区、第12号分区和第35号分区。图4示出了在物化视图404中在“分区”列下对微分区进行索引。图4还示出了物化视图404包括基于源表402的三个微分区的单个微分区。当对物化视图404进行增量更新时,可以将另外的微分区添加到物化视图404中和/或从物化视图404中移除。

如图4所示,源表402和物化视图404之间的元数据是一致的。物化视图404的元数据被更新以反映源表402的元数据的任何更新。

图5示出了用于物化视图的增量更新的方法500的示意流程图。方法500可以由任何合适的计算装置执行,包括例如计算服务管理器702a、物化视图维护模块100。方法500开始,并且在502处计算装置基于源表生成物化视图。在504处,计算装置合并源表和物化视图,以检测未反映在物化视图中的源表的更新。方法500使得源表的更新包括以下一项或更多项:自物化视图的先前刷新以来插入到源表中的新行,或者自物化视图的先前压缩以来从源表中移除的删除的行(参见506)。方法500继续,并且在508处,响应于检测到源表的更新,计算装置将更新应用于物化视图。

图6示出了用于物化视图的基于微分区的更新的方法600的示意流程图。方法600可以由任何合适的计算装置执行,包括例如计算服务管理器702或物化视图维护模块100。方法600开始,并且在602处,计算装置基于源表生成物化视图,其中源表包括多个微分区。方法600继续,并且在604处,计算装置合并源表和物化视图以生成合并表。在606处,计算装置扫描合并表以检测插入到源表中的不存在于物化视图中的新的微分区。在608处,计算装置扫描合并表,以检测从源表中移除的仍存在于物化视图中的删除的微分区的不存在。方法600继续,并且在610处,响应于检测到插入到源表中的新的微分区,计算装置通过将新的微分区插入到物化视图中来刷新物化视图。在612处,响应于检测到从源表中移除的删除的微分区,计算装置通过从物化视图中移除删除的微分区来压缩物化视图。

图7是描绘数据处理平台700的示例实施例的框图。如图7所示,计算服务管理器702与队列704、客户账户708、元数据706和执行平台716通信。在实施例中,计算服务管理器702不从客户账户708接收任何直接通信,而仅从队列704接收与作业有关的通信。在这样的实施例中,计算服务管理器702可以被配置用于仅执行不包括从客户账户接收到的查询的“内部”数据库任务。例如,这样的内部任务可以包括重新聚类本文公开的表、更新物化视图、刷新元数据等。在特定实施方式中,计算服务管理器702可以支持任意数量的客户账户,诸如提供数据存储和检索请求的终端用户、管理本文所述系统和方法的系统管理员以及与计算服务管理器702交互的其他部件/装置。如本文所使用的,计算服务管理器702也可以被称为执行如本文所讨论的各种功能的“全局服务系统”。

计算服务管理器702与队列704通信。队列704可以响应于触发事件将作业提供给计算服务管理器702。可以按接收顺序和/或优先级顺序将一个或更多个作业存储在队列704中,并且可以将这些一个或更多个作业中的每个作业传送到计算服务管理器702以进行调度和执行。队列704可以基于触发事件来确定要执行的作业,诸如数据的摄取、删除表中的一个或更多个行、更新表中的一个或更多个行、物化视图相对于其源表而言已过时、表达到指示该表应重新聚类的预定义的聚类阈值等。在实施例中,队列704包括用于刷新物化视图的条目。队列704可以包括用于刷新在本地(即,对于操作计算服务管理器702的同一账户是本地的)源表上生成的物化视图的条目和/或用于刷新在由不同账户管理的共享源表上生成的物化视图的条目。

计算服务管理器702还耦合到元数据706,该元数据与整个数据处理平台700中存储的数据整体相关联。在一些实施例中,元数据706包括存储在远程数据存储系统中的数据以及可从本地高速缓存获得的数据的摘要。另外,元数据706可以包括有关在远程数据存储系统和本地高速缓存中数据如何组织的信息。元数据706允许系统和服务确定是否需要访问数据片段,而无需从存储装置加载或访问实际数据。

在实施例中,计算服务管理器702和/或队列704可以基于元数据706确定应执行作业。在这样的实施例中,计算服务管理器702和/或队列704可以扫描元数据706并且确定应执行作业以提高数据组织或数据库性能。例如,计算服务管理器702和/或队列704可以确定已生成用于物化视图的源表的新版本,并且尚未刷新物化视图以反映源表的新版本。元数据706可以包括事务性(transactional)变化跟踪流,该事务性变化跟踪流指示生成源表的新版本的时间以及最近刷新物化视图的时间。基于该元数据706事务流,计算服务管理器702和/或队列704可以确定应执行作业。在实施例中,计算服务管理器702基于触发事件来确定应执行作业,并将该作业存储在队列704中,直到计算服务管理器702准备好调度和管理该作业的执行为止。在本公开的实施例中,计算服务管理器702基于正在执行的DML命令来确定是否需要重新聚类表,其中,DML命令构成触发事件。

计算服务管理器702可以从客户账户708接收规则或参数,并且这样的规则或参数可以指导计算服务管理器702调度和管理内部作业。客户账户708可以指示内部作业应仅在特定时间执行或者应仅利用设定的最大数量的处理资源。客户账户708还可以指示应提示计算服务管理器702确定应执行作业的一个或更多个触发事件。客户账户708可以提供关于任务可以被重新执行多少次和/或任务应在何时被重新执行的参数。

计算服务管理器702还耦合到执行平台716,执行平台提供执行各种数据存储和数据检索任务的多个计算资源,如下面更详细地讨论的。执行平台716耦合到作为存储平台710的一部分的多个数据存储装置712a、712b和712n。尽管在图7中示出了三个数据存储装置712a、712b和712n,但是执行平台716能够与任意数量的数据存储装置进行通信。在一些实施例中,数据存储装置712a、712b和712n是位于一个或更多个地理位置的基于云的存储装置。例如,数据存储装置712a、712b和712n可以是公共云基础设施或私有云基础设施的一部分。数据存储装置712a、712b和712n可以是硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群、亚马逊S3

在特定的实施例中,经由一个或更多个数据通信网络来实现计算服务管理器702、队列704、元数据706、客户账户708与执行平台716之间的通信链路。类似地,执行平台716与存储平台710中的数据存储装置712a-712n之间的通信链路经由一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。在可替代的实施例中,使用任何类型的通信介质和任何通信协议来实现这些通信链路。

如图7所示,数据存储装置712a、712b和712n与同执行平台716相关联的计算资源分离。该架构支持基于变化的数据存储/检索需求以及访问数据处理平台700的用户和系统的变化的需求,对数据处理平台700进行动态更改。动态更改的支持允许数据处理平台700响应于对数据处理平台700内的系统和部件的变化的需求来快速扩展。计算资源与数据存储装置的分离支持大量数据的存储,而无需相应的大量的计算资源。类似地,资源的这种分离支持在特定时间使用的计算资源的显著增加,而无需相应增加可用数据存储资源。

计算服务管理器702、队列704、元数据706、客户账户708、执行平台716和存储平台710在图7中被示为单独的部件。然而,计算服务管理器702、队列704、元数据706、客户账户708、执行平台716和存储平台710中的每一个都可以被实现为分布式系统(例如,分布在多个地理位置处的多个系统/平台)。另外,计算服务管理器702、元数据706、执行平台716和存储平台710中的每一个都可以根据从队列704和/或客户账户208接收到的请求的更改和数据处理平台700的变化的需求(彼此独立地)进行放大或缩小。因此,在所描述的实施例中,数据处理平台700是动态的并且支持定期更改以满足当前数据处理需求。

在典型操作期间,数据处理平台700处理从队列704接收到的或由计算服务管理器702确定的多个作业。这些作业由计算服务管理器702调度和管理,以确定何时以及如何执行该作业。例如,计算服务管理器702可以将作业划分成多个离散任务,并且可以确定需要什么数据来执行多个离散任务中的每个离散任务。计算服务管理器702可以将多个离散任务中的每个离散任务分配给执行平台716的一个或更多个节点来处理任务。计算服务管理器702可以确定需要什么数据来处理任务,并且进一步确定执行平台716内的哪些节点最适合于处理任务。一些节点可能已经高速缓存了处理任务所需的数据,因此是处理任务的良好候选。元数据706协助计算服务管理器702确定执行平台716中的哪些节点已经高速缓存了处理任务所需的数据的至少一部分。执行平台716中的一个或更多个节点使用由节点高速缓存的数据以及必要时从存储平台710检索到的数据来处理任务。期望从执行平台716内的高速缓存中检索尽可能多的数据,因为检索速度通常比从存储平台710中检索数据快得多。

如图7所示,数据处理平台700将执行平台716与存储平台710分开。在这种布置中,执行平台716中的处理资源和高速缓存资源独立于存储平台710中的数据存储资源712a-712n进行操作。因此,计算资源和高速缓存资源不限于特定的数据存储资源712a-712n。相反,所有计算资源和所有高速缓存资源都可以从存储平台710中的任何数据存储资源中检索数据并将数据存储到其中。另外,数据处理平台700支持向执行平台716添加新的计算资源和高速缓存资源,而无需对存储平台710进行任何更改。类似地,数据处理平台700支持向存储平台710添加数据存储资源,而无需对执行平台716中的节点进行任何更改。

图8是描绘了计算服务管理器702的实施例的框图。如图8所示,计算服务管理器702包括耦合到数据存储装置806的访问管理器802和关键字(key)管理器804。访问管理器802处理针对本文描述的系统的认证和授权任务。关键字管理器804管理在认证和授权任务期间使用的关键字的存储和认证。例如,访问管理器802和关键字管理器804管理用于访问存储在远程存储装置(例如,存储平台710中的数据存储装置)中的数据的关键字。如本文所用,远程存储装置也可以被称为“永久存储装置”或“共享存储装置”。请求处理服务808管理接收到的数据存储请求和数据检索请求(例如,待对数据库数据执行的作业)。例如,请求处理服务808可以确定处理接收到的数据存储请求或数据检索请求所使用的数据。数据可以存储在执行平台716内的高速缓存内(如下文更详细讨论),或可以存储在存储平台710中的数据存储装置中。管理控制台服务810支持管理员和其他系统管理器对各种系统和过程的访问。另外,管理控制台服务810可以接收执行作业并监视系统上的工作负荷的请求。

计算服务管理器702还包括作业编译器812、作业优化器814和作业执行器810。作业编译器812将作业解析成多个离散任务,并为多个离散任务中的每个离散任务生成执行代码。作业优化器814基于需要处理的数据来确定执行多个离散任务的最佳方法。作业优化器814还处理各种数据修剪操作和其他数据优化技术,以提高执行作业的速度和效率。作业执行器816执行从队列704接收到的或由计算服务管理器702确定的作业的执行代码。

作业调度器和协调器818将接收到的作业发送到适当的服务或系统,以进行编译、优化并调遣到执行平台716。例如,可以按该优先顺序对作业进行优先考虑和处理。在实施例中,作业调度器和协调器818确定由计算服务管理器702与其他“外部”作业(诸如,可以由数据库中的其他系统调度但可以利用执行平台716中的相同处理资源的用户查询)调度的内部作业的优先级。在一些实施例中,作业调度器和协调器818识别或分配执行平台716中的特定节点来处理特定任务。虚拟仓库管理器820管理在执行平台716中实现的多个虚拟仓库的操作。如下所述,每个虚拟仓库都包括多个执行节点,每个执行节点都包括高速缓存和处理器。

另外,计算服务管理器702包括配置和元数据管理器822,其管理与存储在远程数据存储装置和本地高速缓存(即,执行平台716中的高速缓存)中的数据有关的信息。如下面更详细地讨论的,配置和元数据管理器822使用元数据来确定需要访问哪些数据微分区来检索用于处理特定任务或作业的数据。监视器和工作负荷分析器824监督由计算服务管理器702执行的过程,并管理跨执行平台716中的虚拟仓库和执行节点的任务(例如,工作负荷)的分配。监视器和工作负荷分析器824还根据需要基于整个数据处理平台700的变化的工作负荷重新分配任务,并基于也可以由执行平台826处理的用户(即“外部”)查询工作负荷进一步重新分配任务。配置和元数据管理器822以及监视器和工作负荷分析器824耦合到数据存储装置826。图8中的数据存储装置806和826表示数据处理平台700内的任何数据存储装置。例如,数据存储装置806和826可以表示执行平台716中的高速缓存、存储平台710中的存储装置或任何其他存储装置。

计算服务管理器702还包括如本文公开的物化视图维护模块100。物化视图维护模块100被配置为确保物化视图相对于其源表而言是新鲜的。

图9是描绘了执行平台716的实施例的框图。如图9所示,执行平台716包括多个虚拟仓库,包括虚拟仓库1、虚拟仓库2和虚拟仓库n。每个虚拟仓库都包括多个执行节点,每个执行节点都包括数据高速缓存和处理器。虚拟仓库可以通过使用多个执行节点并行执行多个任务。如本文中所讨论的,执行平台716可以基于系统和用户的当前处理需求实时地添加新的虚拟仓库并丢弃现有的虚拟仓库。这种灵活性允许执行平台716在需要时快速部署大量计算资源,而无需在不再需要那些计算资源时继续为它们付费。所有虚拟仓库都可以访问任何数据存储装置(例如,存储平台710中的任何存储装置)中的数据。

尽管图9中所示的每个虚拟仓库都包括三个执行节点,但是特定的虚拟仓库可以包括任意数量的执行节点。此外,虚拟仓库中执行节点的数量是动态的,使得在存在额外需求时创建新的执行节点,并在不再需要现有执行节点时将其删除。

每个虚拟仓库都能够访问图7中所示的任何数据存储装置712a-712n。因此,虚拟仓库不必分配给特定的数据存储装置712a-712n,而是可以访问来自存储平台710内的任意数据存储装置712a-712n的数据。类似地,图9中所示的每个执行节点都可以访问来自任意数据存储装置712a-712n的数据。在一些实施例中,可以将特定的虚拟仓库或特定的执行节点临时分配给特定的数据存储装置,但是该虚拟仓库或执行节点可以稍后访问来自任意其他数据存储装置的数据。

在图9的示例中,虚拟仓库1包括三个执行节点902a、902b和902n。执行节点902a包括高速缓存904a和处理器906a。执行节点902b包括高速缓存904b和处理器906b。执行节点902n包括高速缓存904n和处理器906n。每个执行节点902a、902b和902n都与处理一个或更多个数据存储和/或数据检索任务相关联。例如,虚拟仓库可以处理与内部服务(诸如,聚类服务、物化视图刷新服务、文件压缩服务、存储规程服务或文件升级服务)相关联的数据存储和数据检索任务。在其他实施方式中,特定的虚拟仓库可以处理与特定的数据存储系统或特定类别的数据相关联的数据存储和数据检索任务。

类似于以上讨论的虚拟仓库1,虚拟仓库2包括三个执行节点1912a、1912b和1912n。执行节点1912a包括高速缓存914a和处理器916a。执行节点1912n包括高速缓存1914n和处理器1916n。执行节点1912n包括高速缓存1914n和处理器1916n。另外,虚拟仓库3包括三个执行节点922a、922b和922n。执行节点922a包括高速缓存924a和处理器926a。执行节点922b包括高速缓存924b和处理器926b。执行节点922n包括高速缓存924n和处理器926n。

在一些实施例中,相对于执行节点正在高速缓存的数据,图9所示的执行节点是无状态的。例如,这些执行节点不存储或以其他方式维护有关执行节点的状态信息或由特定执行节点高速缓存的数据。因此,在执行节点发生故障的情况下,可以用另一个节点透明地替换发生故障的节点。由于没有与发生故障的执行节点相关联的状态信息,因此新的(替换)执行节点可以轻松替换发生故障的节点,而无需担心重新形成特定状态。

尽管图9所示的执行节点各自包括一个数据高速缓存和一个处理器,但是可替代的实施例可以包括包含任意数量的处理器和任意数量的高速缓存的执行节点。另外,高速缓存的大小在不同执行节点之间可能有所不同。图9中所示的高速缓存在本地执行节点中存储从存储平台710中的一个或更多个数据存储装置检索到的数据。因此,高速缓存降低或消除了在从远程存储系统中不断检索数据的平台中出现的瓶颈问题。代替从远程存储装置重复访问数据,本文所述的系统和方法访问来自执行节点中的高速缓存的数据,这明显更快并且避免了上面讨论的瓶颈问题。在一些实施例中,使用提供对高速缓存的数据的快速访问的高速存储装置来实现高速缓存。每个高速缓存可以存储来自存储平台710中的任何存储装置的数据。

此外,高速缓存资源和计算资源可以在不同的执行节点之间有所不同。例如,一个执行节点可以包含大量的计算资源和最少的高速缓存资源,使该执行节点可用于需要大量计算资源的任务。另一执行节点可以包含大量的高速缓存资源和最少的计算资源,使该执行节点可用于需要高速缓存大量数据的任务。又另一执行节点可以包含提供更快的输入-输出操作的高速缓存资源,这对于需要快速扫描大量数据的任务很有用。在一些实施例中,基于执行节点将要执行的预期任务,在创建执行节点时确定与特定执行节点相关联的高速缓存资源和计算资源。

另外,与特定执行节点相关联的高速缓存资源和计算资源可以基于由执行节点执行的更改任务而随时间改变。例如,如果执行节点执行的任务变得更处理器密集,则可以为执行节点分配更多的处理资源。类似地,如果执行节点执行的任务需要更大的高速缓存容量,则可以为执行节点分配更多的高速缓存资源。

尽管虚拟仓库1、2和n与同一执行平台716相关联,但是可以使用在多个地理位置处的多个计算系统来实现虚拟仓库。例如,虚拟仓库1可以由第一地理位置处的计算系统来实现,而虚拟仓库2和n可以由第二地理位置处的另一计算系统来实现。在一些实施例中,这些不同的计算系统是由一个或更多个不同的实体维护的基于云的计算系统。

另外,每个虚拟仓库在图9中被示为具有多个执行节点。可以使用在多个地理位置处的多个计算系统来实现与每个虚拟仓库相关联的多个执行节点。例如,虚拟仓库1的实例在一地理位置处的一个计算平台上实现执行节点902a和902b,并在另一地理位置处的不同计算平台处实现执行节点902n。选择特定的计算系统来实施执行节点可以取决于各种因素,诸如特定的执行节点所需的资源水平(例如,处理资源要求和高速缓存要求)、特定的计算系统处可用的资源、地理位置内或地理位置之间的网络的通信能力、以及哪些计算系统已在虚拟仓库中实现其他执行节点。

执行平台716也是容错的。例如,如果一个虚拟仓库发生故障,那么该虚拟仓库将很快被在不同地理位置处的不同虚拟仓库替换。

特定的执行平台716可以包括任意数量的虚拟仓库。另外,特定执行平台中虚拟仓库的数量是动态的,使得在需要附加的处理和/或高速缓存资源时创建新的虚拟仓库。类似地,当不再需要与虚拟仓库关联的资源时,可以删除现有的虚拟仓库。

在一些实施例中,虚拟仓库可以在存储平台710中的同一数据上操作,但是每个虚拟仓库具有其自己的具有独立处理和高速缓存资源的执行节点。此配置允许对不同虚拟仓库上的请求进行独立处理,并且请求之间不会相互干扰。这种独立的处理与动态添加和删除虚拟仓库的能力相结合,支持为新用户添加新的处理能力,而不会影响现有用户观察到的性能。

在实施例中,将不同的执行平台716分配给多租户数据库中的不同账户。这可以确保存储在不同的执行平台716中的高速缓存中的数据仅对相关联的账户可访问。每个不同的执行平台716的大小可以被定制以适应多租户数据库中每个账户的处理需求。在实施例中,提供者账户具有其自己的执行平台716,并且接收者账户具有其自己的执行平台716。在实施例中,接收者账户从提供者账户接收共享对象,该共享对象使接收者账户能够对提供者账户拥有的数据生成物化视图。接收者账户的执行平台716可以生成物化视图。当对物化视图的源表(即,提供者账户拥有的数据)进行更新时,提供者账户的执行平台716将执行更新。如果接收者账户生成了物化视图,则接收者账户的执行平台716可以负责相对于其源表刷新该物化视图。

图10是描绘了示例计算装置1000的框图。在一些实施例中,计算装置1000用于实现本文所讨论的系统和部件中的一个或更多个。此外,计算装置1000可以与本文所述的任何系统和部件进行交互。因此,计算装置1000可以用于执行各种规程和任务,诸如本文所讨论的那些规程和任务。计算装置1000可以充当服务器、客户端或任何其他计算实体。计算装置1000可以是多种计算装置中的任何一种,诸如台式计算机、笔记本计算机、服务器计算机、手持式计算机、平板计算机等。

计算装置1000包括一个或更多个处理器1002、一个或更多个存储装置1004、一个或更多个接口1006、一个或更多个大容量存储装置1008以及一个或更多个输入/输出(I/O)装置1010,它们都耦合到总线1012。处理器1002包括执行存储在存储器装置1004和/或大容量存储装置1008中的指令的一个或更多个处理器或控制器。处理器1002还可以包括各种类型的计算机可读介质,诸如高速缓存。

存储装置1004包括各种计算机可读介质,诸如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储装置1004还可以包括可重写ROM,诸如闪存。

大容量存储装置1008包括各种计算机可读介质,诸如磁带、磁盘、光盘、固态存储器(例如,闪存)等。大容量存储装置1008中还可包括各种驱动器,以使得能够从各种计算机可读介质读取和/或写入各种计算机可读介质。大容量存储装置1008包括可移动介质和/或不可移动介质。

I/O装置1010包括允许将数据和/或其他信息输入到计算装置1000或从计算装置1800检索的各种装置。示例I/O装置1010包括光标控制装置、键盘、小键盘、麦克风、监视器或其他显示装置、扬声器、打印机、网络接口卡、调制解调器、镜头、CCD或其他图像捕获装置等。

接口1006包括允许计算装置1000与其他系统、装置或计算环境交互的各种接口。示例接口1006包括任意数量的不同网络接口,诸如到局域网(LAN)、广域网(WAN)、无线网络和因特网的接口。

总线1012允许处理器1002、存储装置1004、接口1006、大容量存储装置1008和I/O装置1010彼此通信,以及与耦合到总线1012的其他装置或部件通信。总线1012代表几种类型的总线结构中的一种或更多种,诸如系统总线、PCI总线、IEEE 1394总线、USB总线等。

出于说明的目的,程序和其他可执行程序部件在本文中被示为离散块,尽管应当理解,这样的程序和部件可以在不同时间驻留在计算装置1000的不同存储部件中并且由处理器1002执行。可替代地,本文描述的系统和规程可以以硬件或者硬件、软件和/或固件的组合来实现。例如,可以对一个或更多个专用集成电路(ASIC)进行编程,以执行本文所述的系统和规程中的一个或更多个。如本文中所用,术语“模块”或“部件”旨在传达用于诸如通过硬件或者硬件、软件和/或固件的组合完成过程的实现装置,以执行本文公开的全部或部分操作。术语“模块”或“部件”旨在独立于模块、部件或其功能或硬件如何在不同实施例中实现而传达。

示例

以下示例涉及其他实施例。

示例1是一种用于增量更新物化视图的方法。该方法包括基于源表生成物化视图。该方法包括合并源表和物化视图,以检测未反映在物化视图中的源表的更新。源表的更新包括以下一项或更多项:自源表的先前刷新以来插入到源表的新的行,或者自源表的先前压缩以来从源表中移除的删除的行。该方法包括,响应于检测到源表的更新,将该更新应用于物化视图。

示例2是根据示例1所述的方法,其中,将更新应用于物化视图包括:响应于插入到源表中的新的行,通过将新的行插入到物化视图中来刷新物化视图;以及响应于从源表中移除的删除的行,通过从物化视图中删除与所述删除的行相对应的行来压缩物化视图。

示例3是根据示例1-2中任一项所述的方法,其中,更新包括插入到源表中的新的行和从源表中移除的删除的行,并且其中,将新的行插入到物化视图中的优先级高于从物化视图中删除与删除的行相对应的行。

示例4是根据示例1-3中任一项所述的方法,其中,仅在检测到从源表中移除的多个删除的行等于或超过预定阈值数目的删除的行之后,才从物化视图中删除行。

示例5是根据示例1-4中任一项所述的方法,其中:通过将新的行插入到物化视图中来刷新物化视图包括在物化视图上执行DML命令;以及通过从物化视图中删除与所述删除的行相对应的行来压缩物化视图包括在物化视图上执行DML命令。

示例6是根据示例1-5中任一项所述的方法,其中,源表包括一个或更多个微分区,并且其中:插入到源表中的新的行包括插入到源表中的新的微分区;以及从源表中移除的删除的行包括从源表中移除的删除的微分区。

示例7是根据示例1-6中任一项所述的方法,其中,将更新应用于物化视图包括:响应于检测到插入到源表中的新的微分区,通过将新的微分区插入到物化视图中来刷新物化视图;以及响应于检测到从源表中移除的删除的微分区,通过从物化视图中删除与删除的微分区相对应的微分区行集来压缩物化视图。

示例8是根据示例1-7中任一项所述的方法,其中,合并源表和物化视图包括生成合并表,并且其中,该方法还包括扫描合并表以检测包括以下一项或更多项的一个或更多个受影响的微分区:插入到源表中的不存在于物化视图中的新的微分区;或从源表中移除的仍存在于物化视图中的删除的微分区的不存在。

示例9是根据示例1-8中任一项所述的方法,其中,在将更新应用到物化视图之前,客户账户无法访问该物化视图。

示例10是根据示例1-9中任一项所述的方法,其中:源表包括线性变换,该线性变换包括多个微分区;物化视图包括与源表的多个微分区相对应的对应微分区;以及源表的微分区构成数据库存储系统中的不可变存储对象。

示例11是根据示例1-10中任一项所述的方法,还包括生成源表日志,该源表日志包括:自源表的先前刷新以来插入到该源表中的一个或更多个新的行的日志;以及自源表的先前压缩以来从源表中移除的一个或更多个删除的行的日志。

示例12是根据示例1-11中任一项所述的方法,还包括维护物化视图的两个版本,其中,这两个版本包括:物化视图的上一次刷新版本,其中,将新的行插入到物化视图中;以及物化视图的上一次压缩版本,其中,与删除的行相对应的行从物化视图中移除。

示例13是根据示例1-12中任一项所述的方法,其中,源表和物化视图包括元数据,并且其中,源表和物化视图的元数据是一致的。

示例14是根据示例1-13中任一项所述的方法,还包括生成成本统计信息,包括:维护统计信息,其包括以下一项或更多项:源表上已被物化的微分区的数量;源表上的微分区总数;或物化视图的分区总数;以及使用量统计信息包括以下一项或更多项:在物化视图上访问查询的次数;或在源表上访问查询的次数。

示例15是存储指令的非暂时性计算机可读存储介质,该指令在由一个或更多个处理器执行时使一个或更多个处理器执行以下操作:为源表生成物化视图;合并源表和物化视图以检测未反映在物化视图中的源表的更新,其中,源表的更新包括以下一项或更多项:自源表的先前刷新以来已插入到源表中的新的行;或自源表的先前压缩以来从源表中移除的删除的行;以及响应于检测到源表的更新,将更新应用于物化视图。

示例16是根据示例15中所述的非暂时性计算机可读存储介质,其中,指令通过以下操作使一个或更多个处理器将更新应用于物化视图:响应于插入到源表中的新的行,通过将新的行插入到物化视图中来刷新物化视图;以及响应于检测到从源表中移除的删除的行,通过从物化视图中删除与删除的行相对应的行来压缩物化视图。

示例17是根据示例15-16中任一项所述的非暂时性计算机可读存储介质,其中,更新包括插入到源表中的新的行和从源表中移除的删除的行,并且其中,所述指令使一个或更多个处理器:与从物化视图中删除与删除的行相对应的行相比,优先将新的行插入到物化视图中。

示例18是根据示例15-17中任一项所述的非暂时性计算机可读存储介质,其中:通过将新的行插入到物化视图中来刷新物化视图包括在物化视图上执行DML命令;以及通过从物化视图中删除与删除的行相对应的行来压缩物化视图包括在物化视图上执行DML命令。

示例19是根据示例15-18中任一项所述的非暂时性计算机可读存储介质,其中,指令使一个或更多个处理器合并源表和物化视图以生成合并表,并且其中,指令还使一个或更多个处理器扫描合并表以检测一个或更多个受影响的行,这些行包括以下一项或更多项:插入到源表中的不存在于物化视图中的新的行;或从源表中移除的仍存在于物化视图中的删除的行的不存在。

示例20是根据示例15-19中任一项所述的非暂时性计算机可读存储介质,其中:源表包括线性变换,该线性变换包括多个微分区;物化视图包括与源表的多个微分区相对应的对应微分区;以及源表的微分区构成数据库存储系统中的不可变存储对象。

示例21是一种增量更新物化视图的系统。该系统包括用于为源表生成物化视图的装置。该系统包括用于合并源表和物化视图以检测未反映在物化视图中的源表的更新的装置。源表的更新包括以下一项或更多项:自源表的先前刷新以来插入到源表的新的行或者自源表的先前压缩以来从源表中移除的删除的行。该系统包括用于响应于检测到源表的更新而将更新应用于物化视图的装置。

示例22是根据示例21中所述的系统,其中,用于将更新应用于物化视图的装置被配置用于:响应于插入到源表中的新的行,通过将新的行插入到物化视图中来刷新物化视图;以及响应于从源表中移除的删除的行,通过从物化视图中删除与删除的行相对应的行来压缩物化视图。

示例23是根据示例21-22中任一项所述的系统,其中,更新包括插入到源表中的新的行和从源表中移除的删除的行,并且其中,用于应用更新的装置被配置为:与从物化视图中删除与删除的行相对应的行相比,优先将新的行添加到物化视图中。

示例24是根据示例21-23中任一项所述的系统,其中,用于合并源表和物化视图的装置被配置用于生成合并表,并且其中,该系统还包括用于扫描合并表以检测包括以下一项或更多项的一个或更多个受影响的微分区的装置:插入到源表中的不存在于物化视图中的新的行;或从源表中移除的仍存在于物化视图中的删除的行的不存在。

示例25是根据示例21-24中任一项所述的系统,其中:源表包括线性变换,该线性变换包括多个微分区;物化视图包括与源表的多个微分区相对应的对应微分区;以及源表的微分区构成数据库存储系统中的不可变存储对象。

示例26是一种系统或装置,用于实现根据示例1-25中的任一项所述的方法、系统或装置。

各种技术或其某些方面或其部分可以采用有形介质(诸如,软盘、CD-ROM、硬盘驱动器、非暂时性计算机可读存储介质或任何其他机器可读存储介质)中包含的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机的机器中并由其执行时,该机器成为用于实践各种技术的装置。在可编程计算机上执行程序代码的情况下,计算装置可以包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。易失性和非易失性存储器和/或存储元件可以是RAM、EPROM、闪存、光盘驱动器、磁性硬盘驱动器或用于存储电子数据的其他介质。可以实现或利用本文所述的各种技术的一个或更多个程序可以使用应用程序编程接口(API)、可重用控件等。这些程序可以用高级程序、功能、面向对象的编程语言实现以与计算机系统通信。然而,如果需要,程序可以用汇编语言或机器语言实现。在任何情况下,语言可以是编译或解释语言,并与硬件实施方式相结合。

应当理解,在本说明书中描述的许多功能单元可以被实现为一个或更多个部件,这是用于更具体地强调其实现独立性的术语。例如,部件可以实现为硬件电路,该硬件电路包括定制的超大规模集成(VLSI)电路或门阵列、现有的半导体(诸如,逻辑芯片、晶体管或其他分立元件)。部件还可以以可编程硬件器件(诸如,现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等)实现。

部件也可以以软件实现,以便由各种类型的处理器执行。标识的可执行代码的部件可以例如包括计算机指令的一个或更多个物理或逻辑块,其可以例如被组织为对象、规程或函数。然而,标识的部件的可执行文件不需要物理上位于一起,而是可以包括存储在不同位置的不同指令,当逻辑上连接在一起时,这些指令包括部件并实现该部件的所述目的。

实际上,可执行代码的部件可以是单个指令或许多指令,甚至可以分布在几个不同的代码段上、不同的程序中以及几个存储装置上。类似地,操作数据可以在本文中在部件内被标识和说明,并且可以以任何合适的形式实施并且被组织在任何合适类型的数据结构内。操作数据可以作为单个数据集收集,或者可以分布在包括不同存储装置的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。部件可以是被动的或主动的,包括可操作以执行所需功能的代理。

整个本说明书对“示例”的引用意味着结合该示例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,整个本说明书在各个地方出现的短语“在示例中”不一定都指代相同的实施例。

如本文所用,为方便起见,可以在共同列表中呈现多个项、结构元素、组成元素和/或材料。然而,这些列表应该被解释为好像列表中的每个成员都被单独标识为一个独立且独特的成员。因此,此类清单中的任何个别成员不应被解释为事实上等同于同一清单中的任何其他成员,仅基于其在共同组中的表述而没有相反的指示。另外,本文中可以参考本公开的各种实施例和示例以及其各种部件的替代方案。应当理解,这些实施例、示例和替代方案不应被解释为彼此的事实上的等同物,而是应被视为本公开的单独和自主的表示。

尽管为了清楚起见已经详细描述了前述内容,但是将显而易见的是,可以在不脱离其原理的情况下进行某些更改和修改。需指出,存在实现本文所述的进程和装置的许多替代方式。因此,本实施例应被认为是说明性的而不是限制性的。

本领域技术人员将理解,可以在不脱离本公开的基本原理的情况下对上述实施例的细节进行许多更改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号