CN116635846A - 查询处理下推中的架构和数据修改并发 - Google Patents
查询处理下推中的架构和数据修改并发 Download PDFInfo
- Publication number
- CN116635846A CN116635846A CN202180083756.5A CN202180083756A CN116635846A CN 116635846 A CN116635846 A CN 116635846A CN 202180083756 A CN202180083756 A CN 202180083756A CN 116635846 A CN116635846 A CN 116635846A
- Authority
- CN
- China
- Prior art keywords
- query
- transaction
- version
- page server
- computing node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文描述了包括计算节点和页面服务器的分布式数据库系统,其使计算节点能够将某些查询处理计算任务下推到页面服务器,以利用页面服务器处原本空闲的计算资源,并且减少在计算节点和页面服务器之间移动的数据量。分布式数据库系统包括页面服务器和计算节点,其中页面服务器被配置为维护所存储的数据对象的多个版本。计算节点被配置为接收查询并且生成范围限定为该查询的事务上下文(TC)和修改表架构(MTS),并且将查询、TC和MTS下推到页面服务器,页面服务器被配置为确定在页面服务器处哪些数据对象满足查询,并且对于每个这样的对象,应当基于TC返回对象的哪个版本。
Description
背景技术
典型的分布式数据库系统在多个分布式组件之间划分存储和计算工作负载。这样的系统可以包括例如一个或多个计算节点/服务器、页面服务器和存储组件。这样的系统在计算与存储之间划分系统功能,从而计算节点处理所有传入用户查询和查询处理活动,而页面服务器耦合到存储组件,以提供横向扩展的存储引擎,其中每个页面服务器负责数据库页面的子集。在这样的配置中,页面服务器仅限于为计算节点提供页面并且基于正在进行的事务活动更新相应的页面。
这样的体系结构支持扩展到100+太字节大小的数据库、快速数据库恢复、近乎即时的备份,以及快速向上和向下扩展的能力。上述配置为需要高事务吞吐量同时还支持实时分析的在线事务处理和/或混合分析处理工作负载提供了灵活性、可扩展性和性能。
然而,此类系统可能无法证明对于在非常大的数据集上扫描密集型的纯分析工作负载是最优的,因为所有查询处理都是在(多个)计算节点上执行的,这需要将大量数据从页面服务器移动到计算节点进行处理。
发明内容
提供本发明内容以简化形式介绍选定概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
本文描述了包括计算节点和页面服务器的分布式数据库系统,其使计算节点能够将某些查询处理计算任务下推到页面服务器,以利用页面服务器处原本空闲的计算资源,并且减少在计算节点和页面服务器之间移动的数据量。在示例方面,分布式数据库系统包括第一页面服务器和第二页面服务器以及计算节点,其中页面服务器中的每个页面服务器被配置为维护存储数据对象的多个版本,并且其中每个版本对应于事务。在另一方面,第一页面服务器被配置为从计算节点接收查询和事务上下文,确定对应于第一页面服务器的哪些数据对象满足查询,并且针对每个这样的对象,确定对象的哪个版本应当由第一页面服务器响应于查询而返回。在另一方面,第一页面服务器通过比较某些事务标识符和时间戳来确定哪个版本应当在特定时间处对查询可见,从而确定应当返回对象的哪个版本。
在另一示例方面,计算节点被配置为修改表元数据以允许针对表架构(schema)的不同版本的并发查询。在另一方面,计算节点被配置为修改对象标识符,使得页面服务器处的查询处理将相应的对象视为全局唯一的。
下面参考附图详细描述其他特征和优点,以及各种示例的结构和操作。应注意,想法和技术不限于本文描述的具体示例。此类示例仅出于说明目的在本文中呈现。基于本文包含的教导,其他示例对于相关(多个)领域的技术人员将是清楚的。
附图说明
附图在本文中是暂时的并且构成说明书的一部分,用于说明本申请的实施例,并且与说明书一起进一步用于解释实施例的原理并且使相关领域的技术人员能够实现并且使用实施例。
图1A示出了根据示例实施例的用于查询处理下推中的数据和架构修改并发的系统的框图。
图1B示出了根据示例实施例的用于查询处理下推中的数据和架构修改并发的基于云的系统的框图。
图2示出了根据示例实施例的为查询处理下推中的数据和架构修改并发而配置的计算系统的框图。
图3示出了根据示例实施例的为查询处理下推中的数据和架构修改并发而配置的分布式数据库系统的框图。
图4示出了根据示例实施例的查询处理下推中的数据和架构修改并发的流程图。
图5示出了根据示例实施例的用于在查询处理下推中启用数据和架构修改并发的版本扫描的流程图。
图6示出了根据示例实施例的用于在查询处理下推中启用架构修改并发的方法的流程图。
图7是可以在其中实现实施例的示例计算机系统的框图。
实施例的特征和优点将从下面结合附图进行的详细描述中变得更加清楚,在附图中,相同的附图标记始终标识对应的元素。在附图中,相似的附图标记通常表示相同的、功能相似的和/或结构相似的元素。元素首次出现的附图由相应附图标记中最左边的(多个)数字指示。
具体实施方式
I.简介
本说明书和附图公开了结合本发明的特征的一个或多个实施例。本发明的范围不限于所公开的实施例。所公开的实施例仅例示本发明,并且所公开的实施例的修改版本也包含在本发明中。本发明的实施例由所附权利要求限定。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用表示所描述的实施例可能包括特定特征、结构或特性,但每个实施例可能不必然包括特定特征、结构或特性。此外,这样的短语不必然指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合其他实施例实现此类特征、结构或特性在本领域技术人员的知识范围内,无论是否明确描述。
在本讨论中,除非另有说明,修饰本公开的实施例的一个或多个特征的条件或特征的关系特性的诸如“基本上”和“大约”的形容词被理解为意指该条件或特性被定义为在针对预期应用的实施例的操作可接受的公差内。
多个示例性实施例被描述如下。应注意,本文提供的任何章节/小节标题并非旨在限制。贯穿本文档描述了实施例,并且任何类型的实施例可以包括在任何章节/小节下。此外,任何章节/小节中公开的实施例可以以任何方式与相同章节/小节和/或不同章节/小节中描述的任何其他实施例组合。
下面的章节II描述了查询处理下推中并发数据和架构修改的示例实施例。下面的章节III描述了可用于实现本文描述的实施例的特征的示例计算设备实施例。下面的章节IV描述了更多的示例和优势,并且章节V提供了一些结论性的评论。
II.示例实施例
本文的实施例在查询处理和查询处理下推的上下文中被描述为非限制性和示例说明性示例,包括与查询处理和查询处理下推相关联地执行的各种类型的操作。然而,本文的实施例不限于此,它们的原理和功能适用于其他类型的处理任务、应用和/或服务,其中可以有利地实现从主计算系统卸载操作。下面紧接着是实施例的操作环境和设计动机和描述的一般描述,随后是其他实施例的详细描述。
如上所述,存在分布式数据库系统,其中计算资源和存储资源被隔离,使得一个或多个计算节点(即,专用于执行“计算”功能的服务器)耦合到例如n个页面服务器,每个页面服务器管理对包括存储在数据库中的数据的一个第n页面的访问和/或修改。在这样的系统中,计算节点处理所有传入用户查询和查询处理活动,而页面服务器耦合到存储组件以提供扩展存储引擎,其中每个页面服务器负责其数据库页面子集。在这样的配置中,页面服务器仅限于为计算节点提供页面并且基于正在进行的事务活动来更新相应的页面。
虽然这样的系统可以提供非常高的事务吞吐量,但这样的系统对于在非常大的数据集上扫描密集型的分析工作负载而言,可能不是最优的。例如,考虑以下针对具有1.5B行并且无法利用现有索引进行查找操作的表的分析查询:
查询1
查询1正在寻找事务佣金大于$95.00的平均股票销售。假设有245,598行佣金高于95.00美元,这意味着我们具有考虑到表的整体大小的选择性过滤器。但是因为T_COMM不是现有索引的前导列,我们必须扫描表中的每行。也就是说,必须扫描表的1.5B行中的每行以应用过滤器,其中这些行存储在对应于多个页面服务器的多个页面中。因此,为了执行这样的扫描,数个远程IO必须从(多个)页面服务器发出到计算节点以向其提供所需的页面,其中计算节点然后必须将过滤器应用于每行,并且然后聚合过滤器操作的结果。可以理解的是,这样的查询可能会在网络流量方面消耗大量系统资源,因为必须将对应于表的*所有*页面传输到计算节点,以及计算节点上计算周期的消耗进而导致节点的I/O减少(即每秒事务更少)。
本文描述的实施例启用查询处理(QP)下推,由此对应于查询的某些查询处理操作可以被卸载(“下推”)到相应的页面服务器以提高整体系统性能。例如,计算节点可以被配置为将上面显示的查询1下推到每个页面服务器,然后每个服务器可以将过滤器应用于页面服务器拥有的行,并且将这些行返回给计算节点。此后的计算节点必须简单地聚合由每个页面服务器提供的结果集。在这种情况下,每个页面服务器的计算资源都用于应用过滤器,唯一通过网络的数据是结果集的245,598行,而不是表的所有1.5B行。
然而,由于系统的事务性质,并非所有计算节点和/或页面服务器都会在任何给定时刻同步。本文描述的实施例采用查询下推,同时还提供面对数据和元数据两者(即架构)修改的并发。可以以各种方式配置系统、设备和装置以用于维持查询处理下推中的数据和元数据修改的并发。例如,现在将描述图1A和图1B。图1A示出了系统100A的框图,并且图1B示出了基于云的系统100B的框图,每个被配置用于查询处理下推中的架构和数据修改并发。
如图1A所示,系统100A包括(多个)用户设备102(本文也称为用户设备102)、服务/应用主机103、(多个)计算节点104和(多个)页面服务器106。在实施例中,用户设备102、服务/应用主机103、(多个)计算节点104和(多个)页面服务器106通过网络114相互通信。存储装置112也被示为与(多个)页面服务器106通信。应当注意,在各种实施例中,存在不同数目的用户设备、主机、计算节点、页面服务器和/或存储装置。另外,根据实施例,图1A中所示的系统和/或组件的任何组合都可以存在于系统100A中。
在实施例中,网络114包括连接计算设备和主机/服务器的不同数量和/或类型的通信链路,例如但不限于互联网、有线或无线网络及其部分、点对点连接、局域网、企业网络、云网络/平台等。在示例中,网络114可以是基于云的平台网络和/或企业网络,用户设备通过该网络连接到或访问服务/应用,这进而可以导致计算节点和页面服务器对永久保存在数据存储装置中的数据执行操作。
存储装置112可以是任何类型和/或数目的数据存储设备或系统,并且在各种实施例中可以包括内部和/或外部存储装置。虽然存储装置112被示为与(多个)页面服务器106通信,但在一些实施例中,存储装置112可以连接到网络114,或者可以包括(多个)页面服务器106的部分。存储装置112可以包括单片存储设备/系统、基于云的存储系统、分布式存储系统等。
不同实施例中的(多个)用户设备102是任何数目、类型或组合的计算设备或计算系统,包括终端、个人计算机、膝上型计算机、平板设备、智能电话、个人数字助理、(多个)服务器、游戏控制台等,包括内部/外部存储设备,用于执行本文描述的功能/操作以进行页面拆分检测和查询处理下推中的亲和力,例如,向服务/应用主机103的数据库(DB)服务器提供查询,以及执行客户端功能/客户端-服务器场景的操作。在各种实施例中,用户设备102还包括附加组件(为了简洁和说明清楚而未示出),包括但不限于本文的其他设备和/或系统的组件和子组件。
(多个)用户设备102可以是与域相关联的计算设备,如本文所使用的,域通常是指在实体控制下的物理和/或逻辑系统边界,在该实体内托管、提供、管理和/或以其他方式实现应用和/或服务,并且在实施例中还包含子域等。示例性的、非限制性域包括但不限于web域、托管云平台的租赁(“tenancy”)、云服务提供方、企业系统和/或任何其他类型的网络或系统。租户是特定类型的域,其代表云平台中的组织。租户在云平台中的域是其租赁,租户在其中注册和管理应用、存储数据/文件、访问服务等。
服务/应用主机103包括一台或多台服务器计算机或计算设备,例如作为基于云的服务器的补充或替代的(多个)本地服务器。服务/应用主机103可以托管一个或多个服务或应用,如受益于本公开的相关(多个)领域的技术人员所理解的,并且可以充当用户/租户使用(多个)用户设备102获得对(多个)计算节点104的访问的门户或界面。在一些实施例中,服务/应用主机103可以托管利用(多个)计算节点104和(多个)页面服务器106作为后端的数据库服务器前端。此外,尽管本文描述的实施例是根据计算节点和页面服务器来表达的,但是应当理解,采用这样的术语只是为了说明的目的。也就是说,尽管计算节点和页面服务器的相应角色在本文中被描述为分离的,但是存在其中计算节点可以各自作为页面的一些子集的页面服务器的实施例,并且所有计算节点可以从彼此请求页面和/或向彼此下推查询。
(多个)计算节点104包括一个或多个服务器计算机或计算设备,例如作为基于云的服务器的补充或替代的(多个)本地服务器。如图所示,(多个)计算节点104包括计算节点(CN)下推管理器108。CN下推管理器108被配置为确定并且提供修改操作、操作片段、修改元数据、与操作的数据页面相关联的页面索引、和/或在QP下推到(多个)页面服务器106的上下文中的类似操作。CN下推管理器108还可以被配置为从(多个)页面服务器106管理的数据页面接收数据,并且在实施例中,一些这样的数据可以由(多个)页面服务器106基于从CN下推管理器108提供给(多个)页面服务器106的QP下推请求来处理。在这样的实施例中,CN下推管理器108将该处理的数据提供给(多个)计算节点104的查询处理器或操作处理器(下面进一步详细描述)以在(多个)计算节点104处执行QP操作。
(多个)页面服务器106包括一个或多个服务器计算机或计算设备,例如作为基于云的服务器的补充或替代的(多个)本地服务器。如图所示,(多个)页面服务器106包括页面服务器(PS)下推管理器110。PS下推管理器110被配置为执行由CN下推管理器108从一个或多个计算节点104提供的某些QP下推操作。例如,下推查询处理命令可以过滤在特定时间处不可见的行的版本,这将在下文中进一步详细讨论。
还应当注意,本文的实施例设想(多个)计算节点104、(多个)页面服务器106、存储装置112和/或服务/应用主机103可以包括(多个)用户设备102通过互联网与之通信的(多个)网络114的企业网络部分的部分。
现在转向图1B,系统100B是图1A的系统100A的基于云的实施例。如图所示,系统100B包括云平台118。在实施例中,云平台118是基于云的平台,例如来自华盛顿州雷德蒙德的Microsoft公司的其可由(多个)用户设备132(本文也称为用户设备132)的一个或多个用户通过网络(为了清楚和简洁起见,此处未示出)访问。
用户设备132可以是任何类型和/或数目的用户设备,例如与针对图1A中的用户设备102所描述的那些类似的设备,并且可以对应于不同域(例如,云平台118内的不同租赁)的本文描述的租户和/或终端用户、IT人员、系统的管理员。
图1B的上下文中的租户是组织在云平台中的代表。云平台中租户的域是租户在其中注册和管理由云平台118托管的应用、存储数据/文件、访问服务等的租赁。云平台118被示为托管租赁128,其包括一个或多个租户。租户能够向诸如租赁128的终端用户的用户提供由云平台118托管的应用/服务。在这样做时,租户可以租用或购买云平台118内系统资源的使用权以进行此类托管,并且可以利用系统资源和/或操作来向终端用户提供他们的服务。
例如,在实施例中,云平台118可以托管租赁128的租户(其可以包括云平台118所有者的合作伙伴和/或服务提供方)、为云平台118的服务/应用120的数据库服务器提供服务的租户(本文也称为“服务/应用”120)。具有租赁118中的一个租赁的凭证的(多个)用户设备132的用户被允许针对此租赁进行认证,并且访问针对该租户允许或实例化的数据、信息、服务、应用等,例如云平台118的服务/应用120。
在云平台118的上下文中,(多个)计算节点122和CN下推管理器127可以是图1A的(多个)计算节点104和CN下推管理器108的相应实施例。在云平台118的上下文中,(多个)页面服务器124和PS下推管理器126可以是图1A的(多个)页面服务器106和PS下推管理器110的相应实施例。在云平台118的上下文中,存储装置130可以是图1A的存储装置112的实施例。
在实施例中,云平台118包括一个或多个分布式或“基于云”的服务器。也就是说,云平台118是网络或“云”,用于网络体系结构/云平台中的应用和/或服务的实现。根据实施例,云平台包括一组联网的计算资源,包括服务器、路由器等,它们是可配置的、可共享的、提供数据安全性并且可通过诸如互联网的网络访问。云应用/服务被配置为在这些计算资源上运行,通常在资源上运行的操作系统之上,用于本地和/或通过网络访问应用/服务的实体。诸如云平台118的云平台被配置为支持如上所述的多租户,其中基于云平台的软件服务于多个租户,每个租户包括共享对云平台118的某些软件服务和应用的共同访问的一个或多个用户,如本文所述。此外,云平台被配置为支持实现为硬件、软件和/或固件的管理程序,其为租户运行虚拟机(模拟计算机系统,包括操作系统)。管理程序为租户提供虚拟操作平台。
在实施例中,图1A和1B的部分,分别为系统100A和系统100B,诸如(多个)计算节点104和/或122、(多个)页面服务器106和/或124、存储装置112和/或130、和/或云平台118也包括附加的组件(为了简洁和说明清楚起见而未示出)包括但不限于本文的其他设备和/或系统的组件和子组件,例如操作系统,如下文描述的图8中所示。
此外,如受益于本公开的相关(多个)领域的技术人员将理解的,系统100A和系统100B说明其中用于应用和/或服务的系统资源(诸如,数据库服务器托管)可以按需或根据任何大小、吞吐量、容量等需要扩展的实施例,并且本文的实施例提供将操作下推到页面服务器,这些操作直到现在由计算节点独占执行,并且还提供计算节点和/或页面服务器成功和准确执行这些下推操作的不同操作和功能的特定处理。此类特定处理的非限制性示例的非穷举列表可以包括提供架构和数据修改并发等,如本文所述。在实施例中,系统、设备和装置以各种方式配置用于查询处理下推中的架构和数据修改并发。
图2示出了根据示例实施例的被配置用于查询处理下推中的并发数据和架构修改的系统200的框图。示例图示和描述的系统200被配置为图1A的系统100A和/或图1B的系统100B的实施例。系统200描述如下。
系统200包括计算系统202和存储装置236。计算系统202可以包括任何类型的服务器或计算系统,如本文其他地方提到的,或以其他方式已知的,包括但不限于基于云的系统、本地服务器、分布式网络体系结构等,并且在本文描述的各种示例中,可以被配置为计算节点和/或页面服务器。例如,计算系统202可以被配置为操作为(多个)计算节点104和/或122中的一个计算节点,分别如图1A和图1B所示。同样,计算系统202可以被配置为操作为(多个)页面服务器106和/或124中的一个页面服务器,分别如图1A和图1B所示。
如图2所示,系统200包括计算系统202和存储装置236。计算系统202包括处理器204、存储器/存储装置206、网络接口228、操作处理器222、(多个)页面索引226和查询处理(QP)下推管理器238。存储装置236包括(多个)数据页面222。QP下推管理器238包括CN下推管理器232或PS下推管理器234,这取决于计算系统202是操作为计算节点还是页面服务器,并且将在下面进一步详细描述。CN下推管理器232包括索引管理器210、下推生成器214和元数据管理器212。PS下推管理器234包括下推引擎220和版本扫描器216。系统200的这些组件描述如下。
存储装置236可以配置为或类似于分别在图1A和图1B中的存储装置112和/或130。类似地,QP下推管理器238可以包括分别在图1A和图1B中的CN下推管理器108和/或CN下推管理器127中的一个或多个管理器的实施例,其分别对应于CN下推管理器232和PS下推管理器234。
本文设想系统200的任何组件可以与各种实施例中的任何其他组件分组、组合、分离等,并且图2中的系统200的图示示例在其配置和/或组件数量以及其示例性布置方面是非限制性的。此外,应当理解,诸如(多个)处理器204、(多个)存储器/存储装置206和/或网络接口228的组件可以包括此类组件的多个实例,无论是物理的还是虚拟的。
(多个)处理器204和(多个)存储器/存储装置206可以分别是本文描述的和/或受益于本公开的相关(多个)领域的技术人员所理解的任何类型的(多个)处理器电路/(多个)系统和存储器。(多个)处理器204和(多个)存储器/存储器206可以各自分别包括一个或多个处理器或存储器、不同类型的处理器或存储器(例如,一种或多种类型/数目的用于查询处理的高速缓存、用于数据存储的分配等),远程处理器或存储器,和/或分布式处理器或存储器。处理器204可以是被配置为并发执行多于一个处理线程的多核处理器。(多个)处理器204可以包括被配置为执行和/或处理计算机程序指令的电路,例如但不限于QP下推管理器238的实施例,包括本文描述的其一个或多个组件,其可以实现为计算机程序指令,如本文所述。例如,在图4的流程图400的执行/操作中,如下文详细描述的,(多个)处理器204可以执行所描述的程序指令。
在实施例中,操作处理器222可以是查询处理器或数据库服务器/系统的部分,其被配置为执行数据库操作,诸如对数据库执行查询。操作处理器222可以包括由(多个)处理器204执行的程序指令,或者在实施例中,可以是如本文所描述的基于硬件的处理设备。
在不同的实施例中,(多个)存储器/存储设备206包括诸如随机存取存储器(RAM)的易失性存储部分和/或诸如硬盘驱动器、非易失性RAM等的永久性存储部分,以存储或被配置为存储计算机程序指令/代码,用于如本文所描述的查询处理下推中的架构和数据修改并发,以及存储本公开中描述的其他信息和数据,包括但不限于QP下推管理器238的实施例,包括如本文所描述的一个或多个组件等。
(多个)页面索引226包括与一个或多个数据库相关联的数据页面的索引,其中(多个)索引标识父数据页面结构和叶数据页面结构以及维护特定数据页面的页面服务器。在实施例中,(多个)页面索引226还可以包括在执行本文所描述的操作/功能等时使用和/或生成的数据,诸如元数据等。在计算节点的上下文中,例如,在QP下推管理器238包括CN下推管理器232的情况下,(多个)页面索引226可以包括反映(多个)页面服务器110中的哪个页面服务器维护数据库的特定数据页面的信息。备选地,当在页面服务器的上下文中考虑时,其中QP下推管理器238包括PS下推管理器234,(多个)页面索引226可以包括关于由与PS下推管理器110(即,(多个)页面服务器106)相关联的页面服务器维护的数据库的数据页面的信息。在实施例中,(多个)页面索引226被包括在如图2所示的计算系统202中。因此,(多个)页面索引226可以完全保存在存储器中,例如(多个)存储器/存储设备206。然而,在其他实施例中,(多个)页面索引226可以被维护在存储装置236或计算系统202和存储装置236两者的组合中。
存储装置236可以是内部和/或外部存储装置或任何类型,例如本文公开的那些。在实施例中,存储装置236存储一个或多个数据页面,其包括数据库对象或数据库文件,并且只能由或通过页面服务器访问。当被配置为用作页面服务器时,系统200将任意数目的数据页面存储在存储装置236中。此外,可以经由系统200的多个实例实现一个以上的页面服务器,并且数据库对象或数据库文件的数据页面在数目和/或数据大小上可能足够大,使得单个数据库对象或数据库文件的数据页面跨越多个相应页面服务器的存储装置236的多个实例。在系统200被配置为用作计算节点的实施例中,存储装置236可以响应于来自计算节点的请求而存储从一个或多个页面服务器提供的数据页面和/或数据页面的部分。
网络接口228可以是任何类型或数目的有线和/或无线网络适配器、调制解调器等,它们被配置为使系统200(包括计算系统202)能够与其组件进行系统内通信,以及通过网络与其他设备和/或系统通信,例如,通过诸如网络112和/或云平台134的网络/云平台,计算系统202和图1A中的系统100A和/或图1B中的系统100B的其他设备、系统、主机之间的通信。
系统200还包括附加组件(为了简洁和说明清楚起见而未示出),包括但不限于本文的其他设备和/或系统的组件和子组件,以及下面关于图8描述的那些,例如,根据实施例的操作系统等。
在实施例中,计算系统202可以被配置为计算节点和/或页面服务器,并且计算系统202的QP下推管理器238可以在这样的实施例中相应地被配置。也就是说,QP下推管理器238可以被配置为CN下推管理器或PS下推管理器,各自在图2中分别被示出为CN下推管理器232和PS下推管理器234。因此,QP下推管理器238可以以各种方式实现,以包括多个组件,用于执行本文描述的功能和操作,以在计算节点上下文和/或在页面服务器上下文中,在查询处理下推中提供面对数据和架构修改的并发。
如上所述,图2的系统200示出了用于配置QP下推管理器238的两个非排他性选项:CN下推管理器232和PS下推管理器234。CN下推管理器232包括但不限于索引管理器210、元数据管理器212和下推生成器214。PS下推管理器234包括但不限于下推引擎220和版本扫描器216,尽管在各种实施例中,如本文或其他方式所描述的附加组件也被包括并且一些组件可以被排除。例如,如下文进一步讨论的,PS下推管理器234可以可选地包括它自己的元数据管理器212的实例。现在将依次描述这些组件中的每个组件。
索引管理器210被配置为基于(多个)页面索引226来确定QP下推操作所需的数据页面的索引。在实施例中,这可以包括与要由页面服务器读取的数据页面相关联的下一数据页面。元数据管理器212被配置为确定所需的元数据并且生成元数据的版本和/或修改与数据库相关联的元数据,以执行本文描述的不同操作,例如由页面服务器执行的QP下推操作。这样的元数据可以包括例如一个或多个架构,各自对应于存储在一个或多个页面服务器上的数据页面上的数据库对象(例如,表),其中这样的架构由计算系统202维护。在实施例中,元数据管理器212被配置为序列化提供给页面服务器的操作所需的元数据。元数据管理器212还可以修改元数据以允许针对相同元数据的不同版本的并发查询,并且如下文将进一步详细讨论的。
下推生成器214被配置为在计算节点处生成下推操作以提供给页面服务器。在实施例中,下推生成器214生成查询片段(例如,包括查询运算符、表达式等),这些查询片段与适当的元数据一起被组装以形成用于由一个或多个页面服务器执行的QP下推操作的查询计划,这些页面服务器原本将无法执行所需的QP下推操作。
下推引擎220被配置为根据计算节点提供的信息生成QP下推操作,使得操作处理器222能够处理操作。例如,下推引擎220可以结合操作处理器222工作以确定哪些行在QP下推操作的范围内。
如下面将更详细讨论的,版本扫描器216被配置为接受事务上下文和查询或查询片段,并且在给定事务上下文的情况下确定相关行的哪些版本是可见的,并且选择这些行以包括在由PS下推管理器234返回的查询结果中。
已经提供了对计算节点和页面服务器的实施例的简介连同由这样的实施例的组件执行的功能的一般描述,该书面描述现在转向对由实施例提供的并发优势的需求的描述。这样的描述将参考图3进行,其示出了根据示例实施例被配置用于并发数据和架构修改的分布式数据库系统300的框图。
如图3所示的分布式数据库系统300包括(多个)用户设备102、计算节点302、日志服务器310、页面服务器308和存储装置236。计算节点302包括主要计算节点304和次要计算节点集306-1至306-N。同样,页面服务器308包括页面服务器集308-1至308-N。日志服务器310包括日志缓存312。
(多个)用户设备102耦合到一个或多个计算节点并且以事务和其他查询的形式向分布式数据库系统300提供工作负载。计算节点302的主要和次要计算节点耦合到日志服务器310和一个或多个页面服务器308。
注意,尽管有时可以在诸如(多个)用户设备102的用户设备提供查询或查询的工作负载并且接收返回的查询结果的上下文中描述了实施例,但是实施例不限于与诸如(多个)用户设备102的用户设备一起操作或通过其操作。实际上,本文描述的实施例可以针对或代表此类查询的任何来源执行查询,并且向相同来源或实体,或某些其他来源或实体提供查询结果。例如,查询可以由计算组件(图3中未示出)生成并且提供给实施例以供执行。此后,实施例可以以本文描述的方式执行查询并且将结果直接提供回查询源,或者适当地提供给某些其他位置、实体或组件。
如上所述,页面服务器308中的每个页面服务器被配置为处理构成数据库的页面的子集。尽管存储装置236和存储在其中的(多个)数据页面222被示为单片存储装置,但是实施例不限于此。在备选实施例(未示出)中,页面服务器308中的每个页面服务器可以耦合到仅包括对应于该页面服务器的数据页面的专用存储器。同样,实施例可以配置在其间的任何位置,其中与给定页面服务器相对应的一些页面被存储在一个存储单元上的一个位置,而其他页面在其他位置。
如上所述,分布式数据库系统300可以被配置为执行事务处理。分布式数据库系统300的实施例是ACID兼容的。如本领域已知的,ACID是表示数据库事务的属性集的首字母缩写词,其确保尽管可能由于例如硬件故障或电源故障而出现错误,但永久保存到数据库的数据是有效的。ACID是原子性、一致性、隔离性和永久性。分布式数据库系统300执行的事务是ACID兼容的,因为逻辑上对应于事务的操作共同满足ACID属性。
事务的原子性属性要求事务要么完全成功,要么完全失败。事务完全失败意味着数据库保持不变。例如,假设事务包括从账户A到账户B转移资金。整个事务包括以下数个步骤:资金从账户A中扣除,资金转移到账户B所在的任何地方,资金记入账户B。在这种情况下,原子性保证如果出于任何原因资金未记入账户B,则不会从账户A中扣除任何资金。
一致性属性确保事务符合管理数据存储的所有适用规则,使得事务将数据库从一个有效状态带到另一有效状态。
隔离性属性确保并发执行的不同事务使数据库处于与串行执行事务时所获得的相同状态。隔离性是并发控制的主要目标,并且下文进一步讨论的实施例实施这样的并发控制。
最后,永久性属性保证一旦事务被提交(即,以符合ACID的方式完成并且永久保存到数据库),事务将保持提交状态,并且任何硬件、系统或电源故障都不会导致事务丢失或使数据库进入不一致的状态。进一步参考图3的分布式数据库系统300,分布式数据库系统300执行的事务的ACID属性部分地通过如下使用日志服务器310得到保证。
在实施例中,主要计算节点304被配置为执行读和写操作两者,而次要计算节点306-1至306-N被配置为执行只读操作。因此,只有主要计算节点304可以执行改变数据库状态的事务。为了维护事务的ACID属性,主要计算节点304可以被配置为在事务提交时生成事务的日志记录,并且在由事务引起的任何数据修改被写入盘之前,将该记录本地存储在事务日志中。
已提交事务的日志记录包括在事务修改的数据可以存储(例如,在存储设备236的(多个)数据页面222中)之前出现问题(例如,电源故障)的情况下重新执行事务所需的所有信息。日志记录可以包括信息,该信息包括但不限于事务标识符、日志序列号、时间戳、指示什么数据对象或对象被修改以及如何修改等的信息。
关于日志序列号,事务日志在逻辑上运行就好像事务日志是一系列日志记录,每个日志记录由日志序列号(LSN)标识。每个新日志记录都被写入事务日志的逻辑末尾,其中LSN高于它之前记录的LSN。日志记录按顺序存储,因为它们被创建为使得如果LSN2大于LSN1,则LSN2引用的日志记录描述的更改发生在日志记录LSN1描述的更改之后。每个日志记录还包含其所属事务的事务标识符。也就是说,事务标识符是唯一标识日志记录对应的事务的信息(例如,通用唯一标识(UUID)或全局唯一标识符(GUID))。
在实施例中,该事务对应的日志记录之后被转发到配置为提供日志服务的日志服务器310。日志服务器310上的日志服务接受来自主要计算节点304的日志记录,将它们永久保存在日志缓存312中,并且随后将日志记录转发给其余的计算副本(即,次要计算节点306-1至306-N),这样他们就可以更新他们的本地日志缓存。日志服务器310还将日志记录转发到相关的(多个)页面服务器,使得可以在那里更新数据。以此方式,来自主要计算节点304的所有数据变化都通过日志服务传播到所有次要计算节点和页面服务器。最后,日志记录被推送到长期存储装置,例如存储装置236。除了事务提交之外,其他类型的操作也可以在主要计算节点304处被记录并且随后被转发到包括但不限于事务的开始、范围和页面分配或解除分配、创建或删除表或索引以及每个数据或架构修改。
如上所述,日志服务器310使事务日志记录被复制到次要计算节点和页面服务器。在QP下推的上下文中,可以调用不同的页面服务器来同时(即并发)执行查询处理任务。然而,日志记录可能不会以相同的速率从日志服务器310复制到每个页面服务器和/或次要计算节点,和/或在每个页面服务器或计算节点处理日志记录可能以不同的速率进行。总而言之,这意味着不同的页面服务器/计算节点可能不具有相同的数据视图,这可能会导致不一致性。因此,本文描述的实施例通过使用基于行版本控制的快照隔离来防止面对数据和/或元数据的并发更新的不利影响,同时使系统将对应于数据对象的元数据视为在所有情况下都是唯一的,以避免由于将快照隔离与并发元数据更新混合而通常可能出现的不一致性。下面依次讨论这些中的每个。
请注意,尽管本文的实施例有时根据数据对象和通常与关系数据库相关的概念(例如,诸如“行”、“表”、“架构”等术语)表达,但应理解,实施例不限于关系数据库或特定类型的对象,例如表或行。例如,行版本控制的概念及其在快照隔离中的使用同样适用于关系表中不是行的其他类型的数据对象。例如,版本控制可以有效地用于实现对blob或其他类型的非结构化数据的访问并发。因此,术语“数据对象”和“行”有时可以在本文中以看似等同的方式使用,不应推断出这种等同。
行版本控制是在修改或删除行时调用写时复制机制的框架。这要求在事务运行时,行的旧版本必须可用于需要早期事务一致状态的事务。因此,当启用基于行版本控制的隔离级别时,数据库引擎(例如,如图2所示的计算系统202的操作处理器222)在每次修改该行时存储该行的版本。行的每个新版本可以连同提交行修改的事务的事务标识符以及提交时间戳一起存储,从而允许实施例确定给定版本开始存在的时间点。备选地,提交的事务和关联的时间戳可以与对应的版本分开维护。例如,如下文将进一步讨论的,可以维护提交历史表,其包括每个提交事务的事务标识符和提交时间戳。
此后,下推查询将使用行版本来查看在事务或查询开始时存在的数据,而不是用锁保护所有读取。通过使用行版本控制,读取操作阻止其他事务的可能性大大降低,同时提供语句级或事务级读取一致性。现在将参考图2所示的计算系统202的CN下推管理器232和PS下推管理器234和图3的分布式数据库系统300,并且结合图4的流程图400来描述QP下推中的快照隔离。
参考图3,假设(多个)用户设备102向次要计算节点306-1发送查询。如上所述,计算节点302的次要计算节点306-1被配置为生成和发送QP下推314,由此生成查询结果并且将查询结果返回给(多个)用户设备102所需的一些查询处理被下推到至少一些页面服务器308。注意,虽然QP下推操作目前被描述为由次要计算节点306-1下推,但是实施例不限于此。在实施例中,QP下推操作可以由包括主要计算节点304的计算节点302中发起。执行此类QP下推的第一步骤是次要计算节点306-1确定页面服务器308中的哪个应当接收下推的QP任务。例如,假设次要计算节点306-1是图2的计算系统202的实例,CN下推管理器232的索引管理器210可以被配置为使用接收到的查询并且基于(多个)页面索引226确定QP下推操作所需的数据页面的索引。如上文所述,(多个)页面索引226包括与数据库相关联的数据页面的索引,其中(多个)索引标识父数据页面结构和叶数据页面结构以及维护特定数据页面的页面服务器。这样,CN下推管理器232可以确定哪个页面服务器308应当接收QP下推314。在另一实施例中,适当的页面服务器308可以由下推生成器214结合索引管理器210来确定。
在确定必须将QP下推发送到哪里之后,CN下推管理器232的下推生成器214接下来生成下推操作以提供给页面服务器308的适当页面服务器。具体而言,下推生成器214可以生成包括查询运算符和表达式的查询片段,这些查询片段将由PS下推管理器234接收和处理,如下文将进一步讨论的。备选地,下推生成器214可以简单地提供原始查询作为QP下推314的部分。除了查询和/或查询片段之外,下推生成器214还必须生成事务上下文以作为QP下推314的部分提供。
事务上下文包括由次要计算节点306-1维护的事务相关信息的快照,其反映特定时刻次要计算节点306-1处的数据库的状态。尽管次要计算节点306-1能够确定在任何给定时刻它应当能够看到行的哪个版本,但是页面服务器308不必然如此,因为一个或多个这样的服务器可能不与次要计算节点306-1事务同步。例如,主要计算节点304可能已经提交了多个事务,向日志服务器310提供了对应的日志记录,并且到页面服务器308和次要计算节点306-1的这种日志记录的副本可能不同步。例如,页面服务器308-1可能已经接收并且处理由主要计算节点304执行的所有更新的复制日志记录,而次要计算节点306-1可能没有。在这种情况下,页面服务器308-1不能确定其页面中相关数据对象的哪个版本应当被返回给次要计算节点306-1。因此,实施例必须提供事务上下文作为QP下推314的部分,这将使页面服务器308的相关页面服务器(在该示例中,页面服务器308-1)能够确定返回哪些行版本。
在实施例中,事务上下文可以包括提交历史表的快照、中止事务图、快照时间戳和最大有用事务标识符。提交历史表由每个计算节点302维护,并且包括每个提交事务的事务标识符和事务提交时间戳。虽然理论上提交历史表可以包括所有提交事务的此类信息,但实际上提交历史表仅包括在当前时间之前的某个预定时间段内提交的事务。注意,提交历史表对于计算节点302中的每个计算节点可能不同,因为如上所述,事务日志记录318到每个的复制可能处于不同的完成阶段,并且给定的计算节点302可能还不知道某些提交事务。
中止事务图是计算节点知道的所有中止事务的列表。与提交历史表类似,中止事务图包括每个此类中止事务的事务标识符。同样类似于提交历史表,中止事务图的时间范围可以仅限定在当前时间之前某个预定时间段内中止的那些事务。快照时间戳反映了对提交历史表和中止事务图进行快照时的即时时间。最大有用事务标识符可以包括对应于特定事务的任何信息,例如事务的事务ID,或与事务日志记录相关联的日志序列号。继续参考图2和图3,现在将描述图4和图5的流程图400和500。
参考图4,流程图400开始于步骤402。在步骤402,在第一页面服务器处从计算节点接收查询和对应于该查询的事务上下文。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,如图3所示的页面服务器308的页面服务器308-1被配置为从次要计算节点306-1接收QP下推314,其中QP下推314包括事务上下文和查询或查询片段,如上文所述。流程图400在步骤404继续。
在步骤404处,确定第一页面服务器上存储的满足查询的数据对象。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,页面服务器308-1包括计算系统202的实例以及PS下推管理器234的实例。PS下推管理器234包括下推引擎220和版本扫描器216。如上所述,下推引擎220可以被配置为单独地或结合操作处理器222确定哪些数据库对象(例如,行)满足查询以及针对每个这样的对象。流程图400在步骤406继续。
在步骤406处,对于每个这样确定的数据对象,基于事务上下文来确定相应的确定的数据对象的哪个版本应包括在第一查询子结果中,从而过滤掉不应包括的版本。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,页面服务器308-1包括计算系统202的实例以及PS下推管理器234的实例,PS下推管理器234包括下推引擎220和版本扫描器216。如上所述,版本扫描器216被配置为在给定事务上下文的情况下确定给定对象的哪个版本是可见的。可以以各种方式执行由版本扫描器216执行的版本扫描。例如,根据示例实施例,用于版本扫描的图5的流程图500在查询处理下推中启用数据和架构修改并发。流程图500开始于步骤502。
在步骤502处,确定存储在页面服务器上的满足查询的数据对象。例如,步骤502基本上与如上所述的图4的流程图400的类比步骤404相同。更具体地,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,页面服务器308-1包括计算系统202的实例以及PS下推管理器234的实例。PS下推管理器234包括下推引擎220和版本扫描器216。如上所述,下推引擎220可以被配置为单独地或结合操作处理器222确定哪些数据库对象(例如,行)满足查询以及针对每个这样的对象。流程图500在步骤504继续。
在步骤504处,对于每个这样的数据对象的每个版本,并且基于提交历史表,确定对应于相应版本的版本事务的版本提交时间戳。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,提交历史表被包括在作为QP下推314的部分提供给页面服务器308-1的事务上下文中,如上所述。提交历史表包括最近提交的事务的事务标识符和提交时间戳,也如上所述。同样,数据库的数据对象(例如,行)的每个版本包括负责提交该特定版本的事务的事务标识符。版本扫描器216被配置为针对与提交相应版本的事务相对应的事务来扫描提交历史表,并且确定包括版本提交时间戳的其提交时间戳。流程图500在步骤506处结束。
在步骤506处,对于每个这样的数据对象的每个版本,只有在确定对应于相应版本的版本事务标识符不包括在中止事务图中,对应于相应版本的版本事务标识符小于最大有用事务标识符,并且快照时间戳大于版本提交时间戳的情况下,相应版本才应包括在结果集中。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,版本扫描器216被配置为如果满足三个条件则在结果集中选择给定的对象版本。首先,版本扫描器216可以获得数据对象的每个版本的事务标识符,并且将这些标识符与作为QP下推314的事务上下文的部分提供给页面服务器308-1的中止事务图中包括的那些进行比较。结果集中不应包括与中止事务对应的任何版本。
第二,版本扫描器216被配置为过滤掉对应于比最大有用事务标识符更新的事务的任何版本的数据对象。更具体地,版本扫描器216应仅在结果集中包括对应于该版本的事务标识符小于最大有用事务标识符的版本。
第三并且最后,版本扫描器216被配置为将QP下推314中次要计算节点306-1提供的事务上下文包括的快照时间戳与上面在步骤502确定的版本提交时间戳进行比较,并且过滤掉比快照时间戳更新的版本(即,仅选择快照时间戳大于版本提交时间戳的版本)。
注意,尽管图5的流程图500是根据要包括在结果集中的版本必须满足的条件集来表达的,但实施例不需要从字面上实现这样的逻辑,而是可以实现逻辑补充。例如,图5的流程图500的步骤504可以解释为:如果A且B且C,则包括版本X。逻辑等同的测试包括:如果非A或非B或非C,则排除版本X。也就是说,可以依次考虑对象的每个版本,其中如果任何补充条件为假,则将从结果集中排除版本。更具体地,如果以下任何项为真,则版本将被排除:对应于版本的事务在中止事务图上,版本事务标识符大于最大有用事务标识符或快照时间戳小于版本提交时间戳。图4的流程图400的描述现在继续到步骤408。
在步骤408处,每个确定的版本的副本被包括在第一查询子结果中。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,在确定了响应于查询并且可见的(多个)数据对象的(多个)版本之后,版本扫描器216可以将这些版本的标识符提供给下推引擎220和/或操作处理器222以供选择此类对象以包括在查询结果中的(例如,行集)。流程图400在步骤410处结束。
在步骤410处,将第一查询子结果返回给计算节点。例如,并且继续分别参考图2和图3的计算系统200和分布式数据库系统300,操作处理器222和/或下推引擎220被配置为将查询结果返回给次要计算节点306-1。
以上分别对图4和图5的流程图400和500的描述,以及计算系统202的计算节点和页面服务器实例及其组件的操作的相应描述是根据单个计算节点和单个页面服务器之间的交互来构建的。然而,应当理解,QP下推314可以指向页面服务器308的多个页面服务器,其中指向每个页面服务器的QP下推314根据每个页面服务器管理的数据对象专门为该页面服务器定制。备选地,分发给每个页面服务器的QP下推314可以是相同的。当然,由每个页面服务器返回给计算节点的查询结果会有所不同,因为由每个页面服务器管理的底层数据不同,并且每个返回的此类结果仅包括子结果。计算节点302的实施例被配置为从页面服务器接受结果,并且将该数据聚合成最终结果以传输给调用者(例如,如图3所示的(多个)用户设备102)。此外,计算节点302的实施例可以被配置为聚合这样的数据用于返回,而不在聚合之前或之后对行进行进一步过滤。
上述基于版本控制的快照隔离实现了数据修改并发。实施例同样被配置为启用架构修改并发,如现在将继续分别参考图2和图3的计算系统200和分布式数据库系统300描述的那样。元数据是关于数据的数据,并且在数据库的上下文中,被称为架构。术语“架构”指的是数据组织,作为数据库构建方式的蓝图。例如,在关系数据库的上下文中,架构示出了数据库如何划分为表,同样可以定义表的每列的类型和含义。
某些传统的数据库系统,无论是否是分布式的,通常在任何时候都受限于单个活动架构版本。也就是说,尽管可以使用数据定义语言(DDL)操作来修改架构,但是缺少元数据版本控制意味着不可能进行如上所述的快照隔离。然而,本文描述的实施例通过本质上欺骗相关架构标识符来解决这个问题,使得包括在QP下推操作中的所有架构是全局唯一的。该技术一般描述如下。
考虑这样的场景,例如,图3的分布式数据库系统300的主要计算节点304接收架构修改(DDL)命令以修改表架构,并且执行这种命令。架构修改最终将通过上文描述的日志记录复制过程复制到计算节点302的其他节点和页面服务器308的服务器。在对应于DDL命令的日志记录复制到页面服务器(例如页面服务器308-1)之后,从主要计算节点304到页面服务器308-1的后续QP下推命令将针对由DDL命令修改的任何一个或多个架构来执行,因为主要计算节点304和页面服务器308-1两者相对于表数据和描述该表的元数据在事务上同步。
现在考虑上面的相同示例,但是第二计算节点,例如次要计算节点306-1想要执行范围限定为由上面的DDL命令修改的表的QP下推操作,但是次要计算节点306-1尚未接收到与DDL命令相对应的复制事务日志记录318。在这种情况下,存储在页面服务器308-1上的针对表的最新数据对应于新架构(即,DDL命令修改之后),而从次要计算节点306-1传播到页面服务器308-1的QP下推314中包括的查询/查询片段和元数据必然对应于旧架构(即,在DDL命令之前存在的架构)。即使存储在页面服务器308-1上的表的最新数据对应于新架构,请注意,页面服务器308-1上的表的旧版本继续对应于旧架构。因此,页面服务器308-1在理论上可以服务QP下推操作,范围限定为或者对应于前DDL架构的表的版本,或者对应于后DDL架构的表的版本。然而,在分布式数据库系统300中没有架构版本控制支持的情况下,页面服务器308-1不能同时(即并发地)执行这样的操作。
实施例通过在将架构下推到页面服务器之前执行架构修改步骤来解决这个问题。具体而言,次要计算节点306-1可以通过修改要被下推的任何一个或多个架构来避免QP下推操作中的架构冲突,使得某些标识符是全局唯一的。这样的标识符包括表名、表标识符、对象标识符和行集标识符。通过使用修改的一个或多个架构,下推引擎220在为下推的查询/查询片段构建可执行查询计划时将不会遇到架构冲突。
在这种情形中,回想页面服务器308-1正在针对最新数据进行操作,并且此类数据对应于DDL修改的架构,而次要计算节点306-1尚不知道架构修改,因此正在从较旧的架构操作。较旧的架构仍然适用于修改后的表,因为表中的数据本身已按上述方式进行了版本控制。也就是说,上面分别关于图4和5的流程图4和5描述的行过滤操作的应用将过滤掉对应于新架构的任何行,并且可见的和未过滤的行可以通过参考从次要计算节点306-1发送的QP下推314中包括的适当的修改架构来正确地解释。换言之,实施例通过将其标识符更改为全局唯一,允许QP下推操作使用架构的不同版本,从而允许系统将查询标识为使用唯一架构而不是同一架构的不同版本执行,并且依赖于行过滤机制以过滤掉范围限定为较新架构的行版本。
此外,实施例不仅可以为不同的架构而且可以为下推查询使用的索引生成全局唯一的名称和id。例如,假设表具有聚簇B-树索引(标识为“Id_1”)和两个非聚簇B-树索引(标识为‘ID_2’和‘ID_3’)。在三个不同的QP下推操作各自范围为在这些索引中的不同一个索引的情况下,实施例可以将每个索引的标识符修改为全局唯一的。
这样的操作可以以多种方式完成。例如,假设图2的计算系统202被配置为计算节点,例如次要计算节点306-1,并且正在执行QP下推。如上所述,CN下推管理器232的下推生成器214生成下推操作以提供给页面服务器308的适当页面服务器。除了查询和/或查询片段和事务上下文之外,下推生成器214同样可以被配置为针对被下推的查询操作范围内的对象生成修改的一个或多个架构,并且在QP下推314中提供这样的修改的一个或多个架构,如提供给一个或多个页面服务器308的。
在其他实施例中,CN下推管理器232的元数据管理器212可以替代地被配置为生成修改的架构或针对被下推的查询操作范围内的对象的架构。在其他实施例中,元数据管理器212的实例可以被包括在PS下推管理器234中并且被配置为以相同的方式修改(多个)架构。也就是说,不是在例如次要计算节点306-1上执行架构修改,CN下推管理器232的下推生成器214可以将未修改的架构下推到页面服务器308中的一个或多个页面服务器,同时向页面服务器发信号通知它(经由它自己的元数据管理器实例212)应当根据需要修改架构。
图6的流程图600中示出了执行这些操作的一种方式,其示出了在一个实施例中用于在查询处理下推中启用架构修改并发的方法。图1A中的系统100A、图1B中的系统100B、图2中的系统200和/或图3的分布式数据库系统300被配置为根据流程图600操作。基于以下描述,其他结构和操作示例对于相关(多个)领域的技术人员将是清楚的。
流程图600开始于步骤602处。在步骤602中,维护表架构集,该组表架构对应于存储在分布式数据库的页面中的关系表。例如,并且分别参考图2和图3的计算系统200和分布式数据库系统300,分布式数据库系统300的主要计算节点304包括计算系统202的实例,并且如上所述,维护对应于页面服务器308维护的页面中存储的那些表的架构。流程图600在步骤604继续。
在步骤604处,接收查询。例如,并且继续分别参考图1和图2的计算系统200和分布式数据库系统300,查询可以从如图3的分布式数据库系统300中所示的(多个)用户设备102发送,并且被主要计算节点304接收。流程图600在步骤606继续。
在步骤606,标识对应于查询的关系表的表集。例如,并且继续分别参考图1和图2的计算系统200和分布式数据库系统300,图2示出的计算系统202的元数据管理器212被配置为确定要由页面服务器执行的QP下推操作所需的元数据,如上所述。流程图600在步骤608继续。
在步骤608处,通过以下方式生成修改表架构集:对于所标识的表集中的每个表,生成修改表架构,其至少包括对应于相应表的表架构的部分副本并且包括修改为全局唯一的标识符。例如,并且继续分别参考图1和图2的计算系统200和分布式数据库系统300,图2示出的计算系统202的元数据管理器212被配置为确定所需的元数据,并且生成元数据的版本和/或修改与数据库相关联的元数据,以执行如上所述要由页面服务器执行的QP下推操作。更具体地,元数据管理器212被配置为创建在上面的步骤606处标识的每个表架构的副本,并且修改该副本以使得其中的至少一个标识符被修改为全局唯一的。例如,表名、表标识符、对象标识符和行集标识符中的一个或多个可以被修改为全局唯一的。流程图600在步骤610处继续。
在步骤610处,请求被传输到第一页面服务器,该请求包括下推查询和修改表架构集。例如,并且继续分别参考图1和图2的计算系统200和分布式数据库系统300,主要计算节点304被配置为以上述方式将QP下推314传输到页面服务器308中的至少一个页面服务器,例如页面服务器308-1。除了上文描述的事务上下文和查询或查询片段之外,主要计算节点304还在QP下推315中包括修改表架构。流程图600在步骤612继续。
在步骤612处,在第一页面服务器,使用修改表架构集生成并且返回查询结果,其中查询结果包括存储在第一页面服务器上的满足查询的数据。例如,并且继续分别参考图1和图2的计算系统200和分布式数据库系统300,页面服务器308-1包括如图2所示的计算系统202的实例,并且包括PS下推管理器234。PS下推管理器234的下推引擎220被配置为使用在QP下推314中接收到的任何一个或多个架构和查询/查询片段来生成用于QP操作的可执行查询计划,该计划此后可以由操作处理器222执行以生成查询结果。因为包括在QP下推314中的修改的一个或多个表架构是全局唯一的,所以在这种架构对应于架构的早期版本的情况下不会出现架构冲突。作为此类QP操作的部分,版本扫描器216如上所述配置为基于包括在QP下推314中的事务上下文过滤掉不可见的查询结果,并且在这样做时,消除范围限定为比QP下推314中下推的架构版本更新的架构版本的行。过滤后剩余的任何(多个)行随后作为查询结果返回给主要计算节点304。流程图600在步骤614处结束。
在步骤614处,从第一页面服务器接收查询结果。例如,并且继续分别参考图1和图2的计算系统200和分布式数据库系统300,主要计算节点304被配置为从例如页面服务器308-1接收查询结果。
III.示例计算机系统实现
如本文所述,所描述的实施例包括但不限于图1A的系统100A、图1B的系统100B和/或图3的系统300,以及其任何组件和/或子组件,以及本文描述的流程图/流程表的任何操作和部分和/或本文描述的其他示例,可以在硬件或结合软件和/或固件的硬件中实现,包括实现为计算机程序代码/指令,被配置为在一个或多个处理器中执行并且存储在计算机可读存储介质中,或者实现为硬件逻辑/电路,例如在片上系统(SoC)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可信平台模块(TPM)等中一起实现。SoC可以包括集成电路芯片,该集成电路芯片包括处理器(例如,微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口和/或另外的电路和/或嵌入式固件中的一个或多个,以执行其功能。
本文描述的实施例可以在类似于移动系统的一个或多个计算设备和/或固定或移动计算机实施例中的计算设备中实现,包括本文描述的移动系统和/或计算设备的一个或多个特征,以及备选特征。本文提供的计算设备的描述是为了说明的目的而提供的,并不旨在限制。实施例可以在其他类型的计算机系统中实现,如相关(多个)领域的技术人员已知的那样。
本文描述的实施例可以在类似于移动系统的一个或多个计算设备和/或固定或移动计算机实施例中的计算设备中实现,包括本文描述的移动系统和/或计算设备的一个或多个特征,以及备选特征。本文提供的计算设备的描述是为了说明的目的而提供的,并不旨在限制。实施例可以在其他类型的计算机系统中实现,如相关(多个)领域的技术人员已知的那样。
图7示出了可以在其中实现实施例的计算设备700的示例性实现。例如,本文描述的实施例可以在类似于固定或移动计算机实施例中的计算设备700的一个或多个计算设备中实现,包括计算设备700的一个或多个特征和/或备选特征。本文提供的计算设备700的描述是为了说明的目的而提供的,并不旨在限制。实施例可以在其他类型的计算机系统中实现,如相关(多个)领域的技术人员已知的那样。
如图7所示,计算设备700包括一个或多个处理器,称为处理器电路702、系统存储器704和将包括系统存储器704的各种系统组件耦合到处理器电路702的总线706。处理器电路702是电子和/或光学电路,其在一个或多个物理硬件电路设备元件和/或集成电路设备(半导体材料芯片或管芯)中实现为中央处理单元(CPU)、微控制器、微处理器、和/或其他物理硬件处理器电路。处理器电路702可以执行存储在计算机可读介质中的程序代码,例如操作系统730的程序代码、应用732、其他程序734等。总线706表示多种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用任何多种总线架构的处理器或局部总线。系统存储器704包括只读存储器(ROM)708和随机存取存储器(RAM)710。基本输入/输出系统712(BIOS)存储在ROM 708中。
计算设备700还具有以下驱动器中的一项或多项:用于从硬盘读取和向其写入的硬盘驱动器714、用于从可移动磁盘718读取或向其写入的磁盘驱动器716、以及用于从可移动光盘722读取或向其写入的光盘驱动器720,例如CD ROM、DVD ROM或其他光学介质。硬盘驱动器714、磁盘驱动器716和光盘驱动器720分别通过硬盘驱动器接口724、磁盘驱动器接口726和光盘驱动器接口728连接到总线706。驱动器及其关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。虽然描述了硬盘、可移动磁盘和可移动光盘,但是其他类型的基于硬件的计算机可读存储介质可以用于存储数据,例如闪存卡、数字视频磁盘、RAM、ROM和其他硬件存储介质。
硬盘、磁盘、光盘、ROM或RAM中可能存储有多个程序模块。这些程序包括操作系统730、一个或多个应用732、其他程序734和程序数据736。应用732或其他程序734可以包括例如用于实现本文描述的实施例的计算机程序逻辑(例如,计算机程序代码或指令),诸如但不限于图1A的系统100A、图1B的系统100B和/或图3的系统300,以及其任何组件和/或子组件,以及本文描述的流程图/流程表,包括其部分,和/或本文描述的其他示例。
用户可以通过诸如键盘738和定点设备740的输入设备将命令和信息输入到计算设备700中。其他输入设备(未示出)可以包括麦克风操纵杆、游戏手柄、卫星天线、扫描仪、触摸屏和/或触摸板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其他输入设备通常通过耦合到总线706的串行端口接口742连接到处理器电路702,但也可以通过其他接口连接,例如并行端口、游戏端口或通用串行总线(USB).
显示屏744也通过诸如视频适配器746的接口连接到总线706。显示屏744可以在计算设备700的外部或并入其中。显示屏744可以显示信息,也可以作为用于接收用户命令和/或其他信息(例如,通过触摸、手指手势、虚拟键盘等)用户界面。除了显示屏744之外,计算设备700还可以包括其他外围输出设备(未示出),例如扬声器和打印机。
计算设备700通过适配器或网络接口750、调制解调器752或用于在网络上建立通信的其他装置连接到网络748(例如互联网)。调制解调器752可以是内部的或外部的,可以经由串行端口接口742连接到总线706,如图7所示,或者可以使用另一种口类型连接到总线706,包括并行接口。
如本文所使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指物理硬件介质,例如与硬盘驱动器714相关联的硬盘、可移动磁盘718、可移动光盘722、其他物理硬件介质(例如RAM、ROM)、闪存卡、数字视频盘、zip盘、MEM、基于纳米技术的存储设备,以及其他类型的物理/有形硬件存储介质。这样的计算机可读存储介质与通信介质和传播信号不同并且不重叠(不包括通信介质或传播信号)。通信介质实施计算机可读指令、数据结构、程序模块或调制数据信号(例如载波)中的其他数据。术语“调制数据信号”是指具有以编码信号中的信息的方式设置或改变的其特性中的一个或多个特性的信号。作为示例而非限制,通信介质包括无线介质,例如声学、RF、红外线和其他无线介质,以及有线介质。实施例还针对与针对计算机可读存储介质的实施例分离并且不重叠的此类通信介质。
如上所述,计算机程序和模块(包括应用732和其他程序734)可以存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这样的计算机程序也可以经由网络接口750、串行端口接口742或任何其他接口类型来接收。这样的计算机程序在被应用执行或加载时使计算设备700能够实现本文描述的实施例的特征。因此,这样的计算机程序代表计算设备700的控制器。
实施例还针对包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。此类计算机程序产品包括硬盘驱动器、光盘驱动器、存储器设备包、便携式记忆棒、记忆卡和其他类型的物理存储硬件。
IV.附加示例实施例
如所描述的,实施本文技术的系统和设备可以以各种方式被配置和启用以执行它们各自的功能以在查询处理下推中启用架构和数据修改并发。在实施例中,可以不执行本文描述的任何流程图和/或流程表的步骤或操作中的一个或多个。此外,可以执行附加于或替代本文描述的任何流程图和/或流程表中的那些的步骤或操作。此外,在示例中,本文描述的任何流程图和/或流程表的一个或多个操作可以无序地、以替代顺序、或部分地(或完全地)彼此并发地或与其他操作并发地执行。
如本文所述,被配置为执行功能和/或操作的实施例的系统、设备、组件等也被设想为执行这样的功能和/或操作。
本文的实施例还包括分布式查询处理系统的区别方面。例如,在分布式查询处理中,元数据可以存储在远程或链接服务器上,并且在需要编译查询时由主要计算节点获取或读取。在这种情况下,可以委托远程查询而不将元数据传送到远程服务器,因为元数据已经存在并且在那里维护。相比之下,本文的实施例考虑了在计算节点上或由计算节点维护的元数据,其中数据库的数据页面的子集可以存储在每个页面服务器上或由每个页面服务器管理,但是其中没有单个页面服务器具有数据库的完整元数据集。根据所描述的实施例,页面服务器执行下推查询操作所需的元数据在计算节点处被序列化,然后提供给页面服务器,以便启用在其上编译和执行所述操作。
根据所描述的在查询处理下推中启用架构和数据修改并发的实施例,提供了具有独特组件和配置的解决方案,以提高计算节点和页面服务器系统中的处理负载和效率,降低计算节点处的存储器压力,并且大大减少计算节点和页面服务器之间的网络带宽使用和I/O操作,同时还提供更快的时间来完成操作,例如,经由下推操作,这在以前不可用于基于软件的服务,更不用说本文描述的计算节点和关联的页面服务器的特定实施例。因此,所描述的实施例实现了针对大数据集的分析查询的改进的查询性能。
本部分中描述的附加示例和实施例可适用于本公开的任何其他章节或小节中公开的示例。
本发明提供了一种分布式数据库系统的第一页面服务器中的方法。分布式数据库系统还包括计算节点,第一页面服务器被配置为存储包括数据对象的数据页面,为这些数据对象维护这些对象的多个版本,并且其中每个版本对应于与版本事务标识符和版本提交时间戳相关联的版本事务,该方法包括:从计算节点接收查询和与该查询对应的事务上下文;确定第一页面服务器上存储的哪些数据对象满足查询;针对每个这样确定的数据对象确定相应确定的数据对象的哪个版本应当包括在第一查询子结果中,从而过滤掉不应当包括的版本,所述确定基于事务上下文;在第一查询子结果中包括每个确定版本的副本;以及将第一查询子结果返回给计算节点。
在上述方法的另一实施例中,事务上下文由计算节点响应于接收到查询而生成,事务上下文包括:提交历史表和中止事务图中的每个的快照,其中,提交历史表包括:先前提交给数据库的一个或多个事务中的每个事务的事务标识符和事务提交时间戳,并且其中中止事务图包括先前中止且未提交到数据库的一个或多个事务中的每一个的事务标识符;与快照拍摄时间相对应的快照时间戳;和最大有用事务标识符。
在上述系统的又一实施例中,基于事务上下文来确定相应确定的数据对象的哪个版本应当包括在第一查询子结果中包括:针对相应确定的数据对象的每个版本:基于提交历史表确定对应于相应版本的版本事务的版本提交时间戳;确定相应确定的数据对象的相应版本仅在以下情况下应当包括在结果集中:对应于相应版本的版本事务标识符不包括在中止事务图中;对应于相应版本的版本事务标识符小于最大有用事务标识符;以及快照时间戳大于版本提交时间戳。
上述方法的实施例还包括:在计算节点接收第一查询子结果;以及计算节点基于第一查询子结果来提供查询结果,而不对第一查询子结果进行进一步过滤。
上述方法的实施例中,分布式数据库系统还包括第二页面服务器,该方法还包括:在第二页面服务器接收查询和事务上下文,第二页面服务器被配置为执行查询以生成第二查询子结果;在计算节点接收第二查询子结果;以及计算节点然后基于第一和第二查询子结果的组合来提供查询结果。
本文提供了一种分布式数据库系统。分布式数据库系统包括分布式数据库,该数据库存储包括关系表的页面,至少一个关系表能够维护相应表中至少一行的多个版本,每个版本对应于与版本事务标识符和版本提交时间戳相关联的版本事务,分布式数据库系统包括:第一页面服务器,被配置为存储分布式数据库的页面的子集;主要计算节点维护表架构集,其中的子集对应于页面子集的关系表,主要计算节点被配置为:接收第一查询;收集针对第一查询引用的每个表的第一查询表架构;针对所收集的每个第一查询表架构,将相应架构的标识符修改为全局唯一的,从而生成第一修改查询表架构;生成对应于第一查询的事务上下文;将第一修改查询表架构、事务上下文和第一查询下推至第一页面服务器;第一页面服务器还被配置为:从主要计算节点接收第一修改查询表架构、事务上下文和第一查询;使用第一修改查询表架构来执行接收的第一查询以生成第一查询结果;以及将第一查询结果返回给主要计算节点。
在上述分布式数据库系统的实施例中,相应架构的标识符包括以下一项或多项:表名;表标识符;对象标识符;以及行集标识符。
在上述分布式数据库系统的实施例中,其中,事务上下文包括:提交历史表和中止事务图中的每个的快照,其中提交历史表包括先前提交的到数据库的一个或多个事务中的每一个的事务标识符和事务提交时间戳,并且其中中止事务包括针对先前中止并且未提交到数据库的一个或多个事务中的每个事务的事务标识符;与快照拍摄时间相对应的快照时间戳;以及最大有用事务标识符。
在上述分布式数据库系统的实施例中,第一页面服务器还被配置为通过以下方式执行接收的第一查询:标识满足第一查询的行,并针对维护了多个版本的每个这样的行,过滤掉不应在第一查询结果中返回的相应行的版本,所述过滤事务上下文;在第一查询结果中包括每个未过滤掉的行的副本;将第一查询结果返回给主要计算节点。
在上述分布式数据库系统的实施例中,过滤掉不应当在第一查询结果中返回的相应行的版本包括,针对相应的每个版本:基于提交历史表确定对应于相应行的相应版本的版本事务的版本提交时间戳;在以下情况下,确定应当过滤掉相应行的相应版本,并且不在第一查询结果中返回:在中止事务图中找到与相应行的相应版本相对应的版本事务标识;与相应行的相应版本相对应的版本事务标识大于最大可用事务标识;或者快照时间戳小于版本提交时间戳。
上述分布式数据库系统的实施例还包括:在主要计算节点接收第一查询结果;以及主要计算节点基于第一查询结果来提供查询结果,而不对第一查询结果进行进一步过滤。
在上述分布式数据库系统的实施例中,主要计算节点还被配置为:接收架构修改命令;以及执行架构修改命令以执行修改第一查询表架构中的至少一个架构的事务,所述事务生成事务日志记录。
上述分布式数据库系统的实施例还包括:次要计算节点;日志服务器,被配置为从主要计算节点接受事务日志记录,将事务日志记录永久保存到缓存,以及然后将事务日志记录复制到第一页面服务器和次要计算节点。
上述分布式数据库系统的实施例还包括第二页面服务器,被配置为:在事务日志记录复制到第一页面服务器完成之后,从主要计算节点接收第一查询和第一事务上下文;执行第一查询以生成第二查询结果,并且其中,主要计算节点还被配置为:从第二页面服务器接收第二查询结果;以及基于第一查询和第二查询结果的组合来提供最终查询结果。
在上述分布式数据库系统的实施例中,次要计算节点被配置为:在事务日志记录到次要计算节点的复制完成之前,接收第二查询;收集针对由第二查询引用的每个表的第二查询表架构,至少一个第二查询表架构对应于由架构修改命令修改的架构;针对每个所收集的第二查询表架构,将对应于相应架构的标识符修改为全局唯一的,从而生成第二修改查询表架构;将第二修改查询表架构和第二查询下推到第一页面服务器;第一页面服务器通过进一步配置为执行以下操作而能够并发执行第一查询和第二查询:从次要计算节点接收第二修改查询表架构和第二查询;使用第二修改查询表架构来执行接收的第二查询以生成第三查询结果;以及将第三查询结果返回给次要计算节点。
本文提供了一种包括存储数据的页面的分布式数据库的系统。该系统包括:主要计算节点;第一页面服务器,被配置为存储分布式数据库的页面子集,并且执行由主要计算节点提供的下推查询,所述查询的范围限定为所存储的页面子集,主要计算节点被配置为:维护与存储在分布式数据库页面中的关系表相对应的表架构集;接收查询;标识与查询相对应的关系表的表集;通过针对已标识的表集中的每个表,基于对应于相应表的表架构集中的表架构生成修改表架构,来生成修改表架构集;向第一页面服务器发送请求,该请求包括下推查询和修改表架构集,其中第一页面服务器还被配置为使用该组修改表架构生成并且返回查询结果,其中查询结果包括存储在第一页面服务器上的满足查询的数据;以及从第一页面服务器接收查询结果。
在上述系统的实施例中,生成修改表架构包括生成表架构的至少部分副本,该部分副本包括被修改为全局唯一的所复制的表架构的标识符。
在上述系统的一个实施例中,所复制的表架构的标识符包括以下一项或多项:表名;表标识符;对象标识符;以及行集标识符。
在上述系统的实施例中,主要计算节点还被配置为:接收架构修改命令;以及执行架构修改命令以执行修改第表架构集中的至少一个架构的事务,所述事务生成事务日志记录。
上述系统的实施例还包括:日志服务器,被配置为从主要计算节点接受事务日志记录,将事务日志记录永久保存到缓存,以及然后将事务日志记录复制到第一页面服务器和次要计算节点。
V.结语
虽然上面已经描述了所公开主题的各种实施例,但是应当理解,它们仅以示例的方式呈现,而不是限制。相关(多个)领域的技术人员将理解,在不脱离所附权利要求所限定的实施例的精神和范围的情况下,可以在其中进行形式和细节的各种改变。因此,所公开主题的广度和范围不应受限于任何上述示例性实施例,而应当仅根据所附权利要求及其等同形式来限定。
Claims (15)
1.一种分布式数据库系统的第一页面服务器中的方法,所述分布式数据库系统还包括计算节点,所述第一页面服务器被配置为存储数据库的数据页面,所述页面包括数据对象,为这些数据对象维护这些对象的多个版本,并且其中每个版本对应于与版本事务标识符和版本提交时间戳相关联的版本事务,所述方法包括:
从所述计算节点接收查询和对应于所述查询的事务上下文;
确定所述第一页面服务器上存储的哪些数据对象满足查所述询;
针对每个这样确定的数据对象确定相应确定的数据对象的哪个版本应当包括在第一查询子结果中,从而过滤掉不应当被包括的版本,所述确定基于所述事务上下文;
在所述第一查询子结果中包括每个确定版本的副本;以及
将所述第一查询子结果返回到所述计算节点。
2.根据权利要求1所述的方法,其中所述事务上下文由所述计算节点响应于接收到所述查询而被生成,所述事务上下文包括:
提交历史表和中止事务图中的每个的快照,其中所述提交历史表包括先前提交到所述数据库的一个或多个事务中的每个事务的事务标识符和事务提交时间戳,并且其中所述中止事务图包括先前中止并且未提交到所述数据库的一个或多个事务中的每个事务的事务标识符;
与所述快照被拍摄的所述时间相对应的快照时间戳;以及
最大有用事务标识符。
3.根据权利要求2所述的方法,其中基于所述事务上下文来确定所述相应确定的数据对象的哪个版本应当被包括在所述第一查询子结果中包括,针对所述相应确定的数据对象的每个版本:
基于所述提交历史表,确定对应于相应版本的所述版本事务的所述版本提交时间戳;以及
确定所述相应确定的数据对象的所述相应版本仅在以下情况下应当被包括在结果集中:
与所述相应版本相对应的所述版本事务标识符不被包括在所述中止事务图中;
与所述相应版本相对应的所述版本事务标识符小于所述最大可用事务标识符;以及
所述快照时间戳大于所述版本提交时间戳。
4.根据权利要求1所述的方法,还包括:
在所述计算节点处接收所述第一查询子结果;以及
所述计算节点基于所述第一查询子结果来提供查询结果,而不对所述第一查询子结果进行进一步过滤。
5.根据权利要求1所述的方法,其中所述分布式数据库系统还包括第二页面服务器,所述方法还包括:
在所述第二页面服务器处接收所述查询和事务上下文,所述第二页面服务器被配置为执行所述查询以生成第二查询子-结果;
在所述计算节点处接收所述第二查询子结果;以及
所述计算节点然后基于所述第一查询子结果和所述第二查询子结果的组合来提供查询结果。
6.一种分布式数据库系统,包括存储页面的分布式数据库,所述页面包括关系表,至少一个关系表能够维护相应的所述表中至少一行的多个版本,每个版本对应于与版本事务事务标识符和版本提交时间戳相关联的版本事务,所述分布式数据库系统包括:
第一页面服务器,被配置为存储所述分布式数据库的所述页面的子集;以及
主要计算节点,维护表架构集,所述表架构集的子集对应于所述页面的子集的所述关系表,所述主要计算节点被配置为:
接收第一查询;
收集针对由所述第一查询引用的每个表的第一查询表架构;
针对所收集的每个第一查询表架构,将相应的所述架构的标识符修改为全局唯一的,从而生成第一修改查询表架构;
生成对应于所述第一查询的事务上下文;以及
将所述第一修改查询表架构、所述事务上下文和所述第一查询下推至所述第一页面服务器;
所述第一页面服务器还被配置为:
从所述主要计算节点接收所述第一修改查询表架构、所述事务上下文和所述第一查询;
使用所述第一修改查询表架构来执行接收的所述第一查询以生成第一查询结果;以及
将所述第一查询结果返回给所述主要计算节点。
7.根据权利要求6所述的分布式数据库系统,其中所述相应架构的标识符包括以下一项或多项:
表名;
表标识符;
对象标识符;以及
行集标识符;并且
其中所述事务上下文包括:
提交历史表和中止事务图中的每个的快照,其中所述提交历史表包括先前提交到所述数据库的一个或多个事务中的每个事务的事务标识符和事务提交时间戳,并且其中所述中止事务包括针对先前中止并且未提交到所述数据库的一个或多个事务中的每个事务的事务标识符;
与所述快照被拍摄的所述时间相对应的快照时间戳;以及
最大有用事务标识符。
8.根据权利要求6所述的分布式数据库系统,其中所述第一页面服务器还被配置为通过以下方式执行接收的所述第一查询:
标识满足所述第一查询的行,并且针对维护了多个版本的每个这样的行,过滤掉不应在所述第一查询结果中被返回的相应的所述行的所述版本,所述过滤基于所述事务上下文;
在所述第一查询结果中包括每个未被过滤掉的行的副本;以及
将所述第一查询结果返回给所述主要计算节点。
9.根据权利要求8所述的分布式数据库系统,其中过滤掉不应当在所述第一查询结果中被返回的相应的所述行的所述版本包括,针对相应的所述行的每个版本:
基于所述提交历史表,确定对应于相应的所述行的相应的所述版本的所述版本事务的版本提交时间戳;以及
在以下情况下,确定相应的所述行的相应的所述版本应当被过滤掉并且不在第一查询结果中被返回:
与相应的所述行的相应的所述版本相对应的所述版本事务标识符在所述中止事务图上被找到;
与相应的所述行的相应的所述版本相对应的所述版本事务标识符大于所述最大可用事务标识;或者
所述快照时间戳小于所述版本提交时间戳。
10.根据权利要求6所述的分布式数据库系统,其中:
所述主要计算节点被配置为接收所述第一查询结果;以及
所述主要计算节点被配置为基于所述第一查询结果来提供查询结果,而不对所述第一查询结果进行进一步过滤。
11.根据权利要求6所述的分布式数据库系统,其中所述主要计算节点还被配置为:
接收架构修改命令;以及
执行所述架构修改命令,以执行修改所述第一查询表架构中的至少一个架构的事务,所述事务生成事务日志记录;并且
其中所述分布式数据库系统还包括:
次要计算节点;以及
日志服务器,被配置为从所述主要计算节点接受所述事务日志记录,将所述事务日志记录永久保存到缓存,并且然后将所述事务日志记录复制到所述第一页面服务器和所述次要计算节点。
12.根据权利要求11所述的分布式数据库系统,还包括第二页面服务器,被配置为:
在所述事务日志记录到所述第一页面服务器的复制完成之后,从所述主要计算节点接收所述第一查询和所述第一事务上下文;
执行所述第一查询以生成第二查询结果;并且
其中所述主要计算节点还被配置为:
接收来自所述第二页面服务器的所述第二查询结果;以及
基于所述第一查询结果和所述第二查询结果的组合来提供最终查询结果。
13.根据权利要求12所述的分布式数据库系统,其中所述次要计算节点被配置为:
在所述事务日志记录到所述次要计算节点的所述复制完成之前,接收第二查询;
收集针对由所述第二查询引用的每个表的第二查询表架构,至少一个第二查询表架构对应于由所述架构修改命令修改的架构;
针对所收集的每个第二查询表架构,将对应于相应的所述架构的标识符修改为全局唯一的,从而生成第二修改查询表架构;以及
将所述第二修改查询表架构和所述第二查询下推至所述第一页面服务器;
所述第一页面服务器通过进一步配置为以下操作而能够并发执行所述第一查询和所述第二查询:
从所述次要计算节点接收所述第二修改查询表架构和所述第二查询;
使用所述第二修改查询表架构来执行接收的所述第二查询以生成第三查询结果;以及
将所述第三查询结果返回给所述次要计算节点。
14.一种包括存储数据的页面的分布式数据库的系统,所述系统包括:
主要计算节点;以及
第一页面服务器,被配置为存储所述分布式数据库的页面子集,并且执行由所述主要计算节点提供的下推查询,所述查询的范围限定为所存储的所述页面子集,所述主要计算节点被配置为:
维护与存储在所述分布式数据库页面中的关系表相对应的表架构集;
接收查询;
标识与所述查询相对应的所述关系表的表集;
通过针对已标识的所述表集中的每个表,基于对应于相应的所述表的所述表架构集中的表架构来生成修改表架构,来生成修改表架构集;
向所述第一页面服务器发送请求,所述请求包括下推查询和所述修改表架构集,其中所述第一页面服务器还被配置为使用所述修改表架构集来生成和返回查询结果,其中所述查询结果包括存储在所述第一页面服务器上的、满足所述查询的数据;以及
从所述第一页面服务器接收所述查询结果。
15.根据权利要求14所述的系统,其中生成修改表架构包括生成所述表架构的至少部分副本,所述部分副本包括被修改为全局唯一的所复制的所述表架构的标识符;
其中,所复制的表架构的所述标识符包括以下一项或多项:
表名;
表标识符;
对象标识符;以及
行集标识符;
其中所述主要计算节点还被配置为:
接收架构修改命令;以及
执行所述架构修改命令,以执行修改所述第一表架构集中的至少一个架构的事务,所述事务生成事务日志记录;并且
其中所述分布式数据库系统还包括:
日志服务器,被配置为从所述主要计算节点接受所述事务日志记录,将所述事务日志记录永久保存到缓存,并且然后将所述事务日志记录复制到所述第一页面服务器和次要计算节点。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/127,847 | 2020-12-18 | ||
US17/180,519 US11797523B2 (en) | 2020-12-18 | 2021-02-19 | Schema and data modification concurrency in query processing pushdown |
US17/180,519 | 2021-02-19 | ||
PCT/US2021/058374 WO2022132333A1 (en) | 2020-12-18 | 2021-11-08 | Schema and data modification concurrency in query processing pushdown |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116635846A true CN116635846A (zh) | 2023-08-22 |
Family
ID=87617467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180083756.5A Pending CN116635846A (zh) | 2020-12-18 | 2021-11-08 | 查询处理下推中的架构和数据修改并发 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116635846A (zh) |
-
2021
- 2021-11-08 CN CN202180083756.5A patent/CN116635846A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110799960B (zh) | 数据库租户迁移的系统和方法 | |
US11132350B2 (en) | Replicable differential store data structure | |
US11599514B1 (en) | Transactional version sets | |
US11625389B2 (en) | Snapshot isolation query transactions in distributed systems | |
US11704335B2 (en) | Data synchronization in a data analysis system | |
US20230315721A1 (en) | Snapshot isolation query transactions in distributed systems | |
US20240028598A1 (en) | Transaction Processing Method, Distributed Database System, Cluster, and Medium | |
US11797523B2 (en) | Schema and data modification concurrency in query processing pushdown | |
US20230376479A1 (en) | Schema and data modification concurrency in query processing pushdown | |
EP4356257A2 (en) | Versioned metadata using virtual databases | |
US11709809B1 (en) | Tree-based approach for transactionally consistent version sets | |
US20230394027A1 (en) | Transaction execution method, computing device, and storage medium | |
US10872073B1 (en) | Lock-free updates to a data retention index | |
US11860829B2 (en) | Page split detection and affinity in query processing pushdowns | |
US11886422B1 (en) | Transactional protocol for snapshot isolation without synchronized clocks | |
CN116635846A (zh) | 查询处理下推中的架构和数据修改并发 | |
Yao et al. | Adaptive logging for distributed in-memory databases | |
Krogh et al. | Pro MySQL NDB Cluster | |
US11914613B2 (en) | Data visibility for nested transactions in distributed systems | |
US11853319B1 (en) | Caching updates appended to an immutable log for handling reads to the immutable log | |
US11422733B2 (en) | Incremental replication between foreign system dataset stores | |
US11468045B2 (en) | Transactional support for non-relational database | |
US11914571B1 (en) | Optimistic concurrency for a multi-writer database | |
WO2022132361A1 (en) | Page split detection and affinity in query processing pushdowns |
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 |