基于页面的关系数据库的云本机对象存储的制作方法

    专利查询2022-09-02  77


    基于页面的关系数据库的云本机对象存储
    1.相关申请的交叉引用
    2.本专利申请根据35 usc
    §
    119要求2020年11月23日提交的第202011050825号印度临时专利申请的利益和优先权,其全部内容通过引用并入本技术。


    背景技术:

    3.软件供应商越来越多地将其产品转移到云上,例如软件即服务(software-as-a-service,saas)。基于云的实施为供应商提供了计算和存储资源的弹性、内置的容错和灾难恢复以及规模经济。基于云的实施的用户受益于现收现付的定价模式和用户体验,这通常比本地或内部部署更可取。
    4.传统的基于磁盘的关系数据库管理系统旨在使用提供强大一致性保证的存储设备持久化数据。例如,如果事务(transaction)将数据写入基于posix兼容文件系统的存储设备(例如,固定磁盘驱动器)的块,然后提交,则读取该块的后续事务将检索写入该块的数据的最新版本。因此,在云上部署这样的关系数据库管理系统需要使用基于文件系统的云存储资源,这些资源提供类似的强一致性保证。这样的资源是昂贵的,它们的使用可能会大大降低数据库管理系统的云部署所带来的任何成本优势。
    5.基于云的对象存储比基于文件系统的云存储资源便宜得多,而且还可以提供增强的耐久性、改进的弹性和更高的吞吐量。然而,基于云的对象存储不适合与传统的基于磁盘的关系数据库管理系统一起使用,因为基于云的对象存储通常提供最终但不强的一致性保证。换句话说,传统的基于磁盘的关系数据库管理系统(使用对象存储而不是基于文件系统的存储)最终将为数据库客户端提供更新对象的最新版本,但同时可能提供对象的过时版本。
    6.此外,传统的基于磁盘的关系数据库管理系统定期要求对持久化数据库页面进行就地更新。也就是说,事务可能需要更新数据库页面的特定版本,在这种情况下,确定页面在基于文件的存储系统中的位置,并在该位置更新页面。并非所有基于云的对象存储都允许对具有强读写一致性的存储对象进行更新,因此与传统基于磁盘的关系数据库管理系统的页面更新协议不兼容。
    7.需要的是一个关系数据库管理系统,其能够向最终一致的对象存储写入数据并从中读取数据。


    技术实现要素:
    附图说明
    8.图1是根据一些实施例提供本机基于块的存储和云对象存储的基于页面的关系数据库管理系统的框图。
    9.图2示出了根据一些实施例的基于页面的关系数据库管理系统的组件。
    10.图3示出了根据一些实施例的数据库系统的页面缓冲池。
    11.图4a和4b包括根据一些实施例的将数据库页面选择性地写入基于块的存储或云对象存储的过程的流程图。
    12.图5示出了根据一些实施例的数据库系统的页面缓冲池。
    13.图6示出了根据一些实施例的基于页面的关系数据库管理系统的组件。
    14.图7示出了根据一些实施例的数据库系统的页面缓冲池。
    15.图8示出了根据一些实施例的基于页面的关系数据库管理系统的组件。
    16.图9示出了根据一些实施例的数据库系统的页面缓冲池。
    17.图10示出了根据一些实施例的基于页面的关系管理数据库系统的组件。
    18.图11是根据一些实施例的基于页面的分布式关系数据库管理系统的框图,该数据库管理系统提供本机基于块的存储和云对象存储。
    19.图12是根据一些实施例的用于描述数据库节点崩溃之后的垃圾收集和恢复的事件表。
    20.图13是根据一些实施例的使用对象缓存管理器的基于页面的关系数据库管理系统的框图。
    21.图14是示出根据一些实施例的快照管理的框图。
    22.图15是根据一些实施例的云实现的框图。
    具体实施方式
    23.一些实施例将数据存储在包括对象存储的分布式一致数据库管理系统中。实施例通过为每个创建或修改的页面生成可与块id区分的唯一对象id,并基于多版本一致性控制和块映射(blockmap)管理页面数据,克服了对象存储的最终一致性保证。
    24.一些传统关系数据库管理系统的操作基于数据页面的逻辑(存储器中)表示和数据页面的物理(持久)表示之间的区别。页面的持久形式和位置对数据库系统的查询引擎是透明的,查询引擎仅基于页面的逻辑页号识别页面。页面持久性、更新和检索由位于查询引擎和持久性存储设备之间的缓冲管理器进行管理。缓冲管理器利用“块映射”来维护数据库页面的逻辑编号与块编号之间的映射,块编号指示存储数据库页面的文件的物理块。文件位于一个或多个基于文件的存储设备(以下称为“块存储设备”)上,并且这些数据库页面在此将被称为属于基于文件的数据库空间。
    25.除了上述传统功能外,本文描述的实施例还支持在基于云的对象存储中作为对象持久化的数据库页面。这些数据库页面在此将被称为属于云数据库空间。对于这些页面,块映射维护数据库页面的逻辑编号与存储数据库页面的基于云的对象的对象键(object key)之间的映射。
    26.响应于接收到检索逻辑页面的请求,缓冲管理器按照典型协议导航块映射,以识别与逻辑页面相关联的块编号。如果块编号指存储在块存储设备上的物理块,则根据块编号从块存储设备检索页面。然而,如果块编号在特定的保留数字范围内(或显示某些其他预先指定的特性),则缓冲管理器确定所识别的块编号表示对象键,并且使用对象键从对象存储检索页面。
    27.通常,当基于文件的数据库空间的新逻辑页面要被写入块存储设备时,缓冲管理器访问空闲列表以识别合适的空闲物理块,将新逻辑页面写入所识别的块,并更新块映射
    以识别写入页面的块编号。在接收到将更新持久化到此逻辑页面的指令时,缓冲管理器导航块映射以识别写入相应物理页面的块编号,并就地更新物理页面。
    28.根据一些实施例,当要写入云数据库空间的新逻辑页面时,生成唯一对象键,并且使用唯一对象键将新逻辑页面写入对象存储。对云数据库空间的现有逻辑页面的更新不能像上面关于基于文件的数据库空间的逻辑页面所描述的那样被持久化,因为与文件不同,对象的部分不能被重新写入。因此,为了持久化对云数据库空间的现有逻辑页面的更新,生成另一唯一对象键,并且使用唯一对象键将更新的页面作为对象写入对象存储。由于页面的物理位置已更改,因此块映射将被相应更新,如下所述。
    29.根据前述内容,空闲列表仅在一些实施例中用于管理系统数据结构(可以被存储在块存储设备中)的存储和任何基于文件的数据库空间的页面。由于空闲列表通常是重量级数据结构和进程争用点(process contention point),因此减少对空闲列表的依赖可以改善吞吐量并减少所需的处理资源。
    30.根据一些实施例的数据库管理系统的基于云的实现可以是分布式的,其中每个数据库节点都是可以从系统中弹性地添加和移除的基于云的服务器。如下文所述,实施例可以提供在写入器节点中的对象键的有效分配,以及这些对象键的持久性和恢复。
    31.根据一些实施例的数据库管理系统的事务管理器可以包括跟踪存储在不再被需要的对象存储上的页面并提供其垃圾收集的机制。由于在基于云的对象存储内中维护过时页面版本的成本降低,因此一些实施例还支持频繁和近乎即时的数据库快照。此外,鉴于基于云的对象存储的等待时间,一些实施例可以包括缓冲管理器和基于云的对象存储之间的读/写缓存。
    32.图1是根据一些实施例的系统100的视图。系统100包括数据库管理系统110,其可以使用一个或多个计算机服务器和/或计算硬件和软件的任何适当组合来实现。系统110的一个或多个组件可以彼此远离,并且可以在云计算环境中分配一个或多个组件。这种云计算环境可以取决于需求、成本和/或其他因素弹性地分配和去分配计算(例如,虚拟机)和存储(例如,基于文件的、基于块的、基于对象的)资源。
    33.数据库管理系统110可以包括已知或变得已知的任何查询响应数据库系统,包括但不限于结构化查询语言(即sql)关系数据库管理系统。根据一些实施例,系统100是专为在线分析处理(online analytical processing,olap)工作负载设计的柱状关系数据库管理系统,并利用表级版本控制和快照隔离实现多版本并发控制(multi-version concurrency control,mvcc)。
    34.通常,系统110管理保存在块存储设备120和对象存储130中的数据库实例的数据。实施例可以使用多个块存储设备和/或对象存储。如本领域所知的,块存储设备120持久化属于由系统110管理的任何基于文件的数据库空间的系统文件和数据库页面。另一方面,对象存储130持久化属于由系统110管理的任何基于云的数据库空间的数据库页面。例如,对象存储130可以包括由两个不同的存储提供商提供的两个不同的对象存储。每个对象存储可以与单独的基于云的数据库空间相关联,因此可能会持久化其关联数据库空间的数据库页面。实施例可以允许用户基于价格和性能特性选择存储提供商,并根据需要在不同存储提供商之间移动数据。
    35.系统110执行从客户端140接收的查询。此类查询可以包括与数据库实例的数据相
    关联的创建、读取、更新和删除操作。客户端140可以包括服务于许多用户的服务器应用程序,而系统110又可以服务于许多这样的服务器应用程序。根据一些实施例,客户端140是服务器应用程序,并且客户端140和系统110都在向其提供服务的云平台上执行。用户可以经由到云平台的基于web的用户门户访问客户端140。
    36.查询引擎112从存储子系统114接收查询和请求相关联的逻辑页面。缓冲管理器115负责在缓冲池117中定位逻辑页面的正确版本,或者,如果不在缓冲池117中则从永久化存储120或130。如上文所述,缓冲管理器115可以利用块映射116来确定存储120或130中是否存在持久化的逻辑页面。当从持久化存储120或130读取页面时,该页面被缓存在缓冲池117中。该页面可以以解压缩形式被缓存在缓冲池117中。
    37.在一些实施例中,在缓冲池117中创建新页面。当事务修改缓冲池117中的页面时,它被标记为脏(dirty)。缓冲管理器115维护与活动事务相关联的所有脏页面的列表。在事务提交之前,与该事务相关联的所有脏页面都被刷新到持久性存储120或130,这取决于这些页面是与基于文件的数据库空间相关联还是与基于云的数据库空间相关联。如果缓冲管理器需要为较新的(more recent)页面腾出空间,则脏页面也可以从缓冲池117被刷新。
    38.当从缓冲池117刷新属于基于云的数据库空间的脏页面时,使用键生成器118生成的新唯一对象键将脏页面存储在对象存储130中。该唯一键被记录在块映射中,使得在将来的查找(lookup)中可以定位该页面的刷新版本。键生成器118确保永远不会重用对象键,并且在数据库重新启动时保持和恢复适当的元数据。
    39.图2示出了根据一些实施例的数据库管理系统的数据库空间。给定的数据库实例包括系统数据库空间和一个或多个用户创建(即,用户)数据库空间。系统数据库空间包括临时系统数据库空间,用于存储由查询引擎生成的哈希表、排序运行的输出等。在如下所述的多路复用系统中,临时系统数据库空间用于在节点之间共享中间查询结果。
    40.主系统数据库空间存储空闲列表210和系统目录。空闲列表是一个比特图,表示数据库实例中跨所有数据库空间已分配块的可用性。例如,在空闲列表中设置比特指示与该比特对应的块正在被使用,而清除比特表示与该比特对应的块可供使用。因此,在将新页面写入块存储设备期间(即,标识页面将被写入的空闲块,并指示页面被写入块之后该块正在被使用)以及从块存储设备删除和垃圾收集页面之后(即,指示存储页面的块现在可供使用),使用空闲列表。
    41.标识对象220是存储在系统数据库空间中的系统目录的一部分。标识对象220可以指向对应于数据库实例的每个用户数据库空间的块映射的根页面。主系统数据库空间的数据结构210和220被存储在具有强一致性保证的设备(即,块存储设备)上,因此可以就地更新。
    42.数据库实例可以包括一个或多个用户数据库空间,每个用户数据库空间可以由用户定义为基于文件的数据库空间或基于云的数据库空间。每个用户数据库空间与一组对应的块映射对象相关联,其中每个块映射对象(或块映射)具有指向对应数据库空间的持久化页面240的位置的页面树230。基于云的数据库空间的块映射与标记或其他指示器相关联,该标记或指示器指示在数据库空间中创建的任何新页面将被持久化到云对象存储250中。因此,如下文将更详细地描述,这种新页面的存储包括生成对象键(不参考空闲列表210)和使用生成的对象键将页面存储在云对象存储250中。
    43.图3的缓冲池300基于缓存策略存储逻辑页面。缓冲池300可以存储一个或多个块映射页面230和数据页面240。如上所述,新页面最初在缓冲池中被创建,并与逻辑页号关联。
    44.第一次持久化与逻辑页号对应的页面时,缓冲管理器标识与逻辑页号相关联的块映射和包括指向所标识块映射的根页面的指针标识对象220。接下来,基于前述标记确定块映射是否与基于云的数据库空间相关联。如果不是,则参考空闲列表以确定块存储设备260的块编号,相应的物理页面将被存储在该块存储设备260处。相应的物理页面被存储在块存储设备260的块编号处,并且更新块映射的适当页面以将逻辑页号与本领域已知的块编号相关联。
    45.然而,如果与逻辑页号相关联的块映射与基于云的数据库空间相关联,则会生成对象键,用作与逻辑页面相关联的块编号。使用对象键将相应的物理页面存储为对象存储250中的对象,并且更新块映射的适当页面以将逻辑页号与块编号/对象键相关联。例如,使用新生成的对象键将新创建的页面h作为对象存储在对象存储250中,并且块映射页面d被更新以将逻辑页面h与该对象键相关联,使得如果需要,可以在将来定位持久化页面h。
    46.根据一些实施例,并且为了最小化对现有格式的更改,为存储云对象而生成的对象键和用于在块存储设备中存储页面的块编号都是64比特整数,但属于不同的独占范围。例如,最大物理块编号可能为2
    48-1,而较大的64比特编号保留给对象键。根据一些实施例,对象键被生成为严格单调递增。如下文所述,此属性允许在多节点体系结构中创建和垃圾收集页面期间,使用键范围而不是单例键来优化空间和性能。
    47.图4a和4b包括根据一些实施例的用于选择性地将数据库页面写入块存储或云对象存储的过程400的流程图。过程400可以例如由数据库管理系统的存储子系统的组件执行。
    48.过程400和本文提及的所有其他过程可以体现为从一个或多个非暂时性计算机可读介质(诸如硬盘驱动器、闪存驱动器、dvd-rom和磁带)读取的程序代码,然后以压缩、未编译和/或加密格式被存储。程序代码可由一个或多个处理单元(诸如但不限于微处理器、微处理器内核和微处理器执行线程)执行。在一些实施例中,硬连线电路可以用于代替程序代码或与程序代码结合用于根据一些实施例的过程的实现。因此,实施例不限于硬件和软件的任何特定组合。
    49.最初,在s405,接收将页面写入非易失性存储器的请求。该请求包括逻辑页号和版本号,并且可以包括将缓冲池的脏页面刷新到持久存储器的请求。如上所述,这样的请求可以发生在事务提交之前,或者由于缓存逐出策略(例如,缓冲管理器需要逐出最近使用的页面,以便为较新的页面留出空间)而发生。
    50.假设前面提到的页面h被交易修改或“弄脏的”。图5示出了显示产生脏页面h’的缓冲池300。根据一些实施例,在s405接收的请求可以包括将页面h’刷新到持久存储器的请求。
    51.返回到过程400,s410包括识别与在s405接收到的逻辑页面以及请求的版本相关联的块映射页面。根据一些实施例,s410包括例如通过查阅系统目录来确定逻辑页面所属的用户数据库空间。用户数据库空间的标识对象也可以从系统目录中识别。所识别的标识对象包括指向与用户数据库空间相关联的块映射的根页面的指针。从根页面开始,基于本
    领域已知的逻辑页号遍历块映射页面,直到在s410到达控制逻辑页面的块映射页面为止。
    52.参考图4a,s410可以包括识别与逻辑页面h的用户数据库空间相对应的块映射页面230的根块映射页面a。遍历块映射页面230,直到到达块映射页面d,块映射页面d包括关于页面h的元数据(包括存储页面h的持久化对象的对象键)。
    53.接下来,在s415,从识别的块映射页面确定与逻辑页号和版本号相关联的块编号。在传统系统中,块编号指示块存储设备的一个块,在该块处存储了相应的物理页面。实施例也考虑了这种可能性,其中块编号指示存储物理页面的块存储设备的块。然而,如上所述,在一些实施例中,块编号还可以包括存储物理页面的云对象的对象键。
    54.返回到过程400,在s420确定所确定的块编号是否与云对象相关联。换句话说,s420包括确定与所识别的块映射页面中的逻辑页号相关联的块编号是块存储设备的块编号还是云对象的对象键。如上所述,块编号和对象键占据不同的数字范围。因此,s420可以包括确定所确定的块编号是否在对象键的数字范围内。
    55.在本示例中,与块映射页面d中的页面h相关联的块编号是对象键。因此,流程从s420进行到s425。在s425,为逻辑页面生成新的块编号。新的块编号在与对象键相关联的数字范围内。新的块编号可以由如上所述的对象键生成器组件生成,并且,与块存储设备内的存储不同,在生成新的块编号期间不需要参考空闲列表。
    56.在s430,页面作为对象被写入云对象存储。在s425生成的块编号用作对象键,以将页面写入对象存储。图6示出写入云对象存储250的页面h’。如图所示,存储页面h’的对象不同于存储页面h的对象。也就是说,在s430不覆写页面h对象,因为页面h对象与不同于在s425为页面h’生成的对象键的对象键相关联。
    57.根据一些实施例,用于将页面写入对象存储的对象键不同于在s425为页面生成的对象键。例如,通过将计算效率高的哈希函数应用于为逻辑页面生成的64比特对象键,在存储之前构造前缀。前缀在64比特对象键之前,结果值用作对象存储中相应物理页面的对象键。使用这些前缀可以避免某些对象存储对共享相同前缀的对象施加的吞吐量限制。
    58.如上所述,应将新对象键写入相应的块映射页面,以确保将来可以通过查找获取持久化页面。在s435,确定逻辑页面是否是块映射的根页面。如果不是,则在s440用新的块编号更新所识别的块映射页面。例如,块映射页面d被更新为参考存储页面h’的对象的对象键。此更新将缓冲池中的块映射页面d弄脏,产生如图7所示和图8所示的页面d’。
    59.因此,在来自缓冲池300的脏页面的下一次刷新时,如上所述执行s410到s430以识别块映射页面a,确定与块映射页面d相关联的块编号/对象键,使用唯一生成的对象键将块映射页面d’写入对象存储250,如图8所示。在s435,确定块映射页面d不是根块映射页面,并且流程继续到s440以更新块映射页面a。如图9所示,该更新将缓冲池300中的页面a弄脏。
    60.在下一次刷新缓冲池300的脏页面时,如上所述执行s410到s430,以使用唯一生成的对象键将块映射页面a’写入对象存储250,如图10所示。由于写入的页面是块映射根页面,因此流程从s435前进到s445,以利用存储对象a’的对象键更新与块映射对应的标识对象。标识对象被存储在块存储设备上,因此在s445被就地更新。
    61.如图10所示,对逻辑页面a、d和h进行标记,以便在提交修改页面h的事务时,如果需要,可以从对象存储250对页面进行垃圾收集。
    62.返回到过程400,如果确定要写入的逻辑页面的块编号不对应于对象存储(即,块
    编号在块存储设备块编号的范围内),则流程从s420进行到s450。在s450,确定逻辑页面是反映新的表级版本还是仅仅反映对当前表级版本的逻辑页面的更新。如果是后者,则在s460按照传统过程简单地就地更新页面。也就是说,存储在块存储设备的块编号处的持久化页面被更新的页面的数据覆写。然后,流程返回到s405。
    63.如果要刷新的逻辑页面反映了新的表级版本,则在s465处参考空闲列表,以确定块存储设备的空闲物理块的块编号,在该空闲物理块处可以持久化页面。在s470,页面被写入到块存储设备的块中。然后,流程继续到s435,以利用新的块编号更新与逻辑页面相关联的块映射页面,并如上所述继续。
    64.因此,与传统的基于块的存储模型一样,如果表级版本没有改变,实施例会在就地(即,在磁盘上)更新基于文件的数据库空间的页面。相反,云数据库空间的逻辑页面在每次页面被写出到对象存储时都会进行版本控制。然而,对于基于文件和云数据库空间两者的逻辑页面,如果逻辑页面被更新为新的表级版本,则会将相应标识对象的新版本添加到目录中。此外,对于所有逻辑页面,只要页面仍在缓冲池中,就不需要在更新时对其进行物理版本控制。
    65.图11是根据一些实施例的分布式数据库1100的框图。数据库1100包括分布式服务器1110和1120的集群,以可伸缩的方式并发地执行加载和查询。系统1100包括协调器节点1110和若干辅节点1120。辅节点1120可以包括写入器节点或读取器节点。实施例可以根据需要无缝地添加或移除一个或多个写入器节点和/或读取器节点。
    66.写入器辅节点1120和协调器节点1110能够执行数据库更新,而读取器节点1110不能。在一些实施例中,写入器节点1120用于数据操作语言操作,协调器节点1110主要用于数据描述语言操作。数据库1100可以利用表级版本控制和快照隔离实现mvcc。
    67.与辅节点1120不同,协调器节点1110包括对象键生成器1118,并负责生成在数据库1100中使用的对象键。生成对象键的请求可以由协调器节点1110经由远程过程调用(rpc)从写入器辅节点1120接收,也可以来自协调器节点1110本身。读取器辅节点120不需要对象键,因为读取器辅节点120不在持久存储中存储页面。
    68.对象键生成器1118按范围和单调递增的方式将对象键分配给请求节点。例如,辅写入器节点1120可以从协调器节点1110请求100个键。作为响应,协调器节点1110生成对象键0-99,存储将对象键的范围与请求辅写入器节点1120相关联的记录,并向请求辅写入器节点1120提供对象键0-99。辅写入器节点1120在本地缓存分配的键,然后可以以任何期望的方式消耗对象键,包括不使用部分或全部对象键。如果另一辅写入器节点1120从协调器节点1110请求100个键,则协调器节点1110可以生成对象键100-199,存储将对象键的范围与另一辅写入器节点1120相关联的元数据,并向另一辅写入器节点1120提供对象键100-199。
    69.在本地缓存分配的键可以避免每次需要新的对象键时都需要向协调器节点1110发出昂贵的rpc调用。根据一些实施例,由节点请求的键的数量(即,范围大小)从缺省值开始,并且基于节点上的负载在随后的rpc调用上动态地增加或减少。
    70.从辅写入器节点1120到协调器节点1110的rpc调用在协调器节点1110上启动新事务。该事务包括在事务日志中记录最大的分配对象键,更新维护已分发给辅写入器节点(和协调器节点1110)的对象键范围的数据结构,并将该数据结构刷新到磁盘。在成功后,事务
    提交,并将新分配的键范围返回给请求辅节点。该过程确保在崩溃恢复之后,协调器节点1110可以以严格单调递增的方式继续分配对象键的范围,并且可以执行准确的垃圾收集。
    71.如果在协调器节点1110上启动了对新范围对象键的请求,则协调器节点1110不会对自身进行rpc调用,而是直接在事务内执行分配。因此,如果协调器节点1110崩溃,它能够通过恢复自上次检查点以来存储在事务日志中的最大对象键来恢复在服务器集群中分配的最大对象键。
    72.根据一些实施例,当事务修改数据时,会创建新版本的表。只要仍然存在引用这些版本的事务,旧版本的表就会继续存在。在仅使用块存储设备进行持久化的传统数据库系统中,事务管理器的任务是确定不再引用旧版本的表,然后删除与旧版本相关联的物理页面。
    73.一些实施例扩展了此类事务管理器,以跟踪存储在对象存储上的页面,并在不再需要时适当地删除这些页面。这些垃圾收集事件分为两种情况:(i)对提交或回滚事务使用的页面进行垃圾收集;以及(ii)响应于协调器节点或写入器辅节点的崩溃的垃圾收集。
    74.在没有协调器节点或写入器辅节点崩溃的情况下,事务管理器依靠现有的前滚/后滚(rf/rb)比特图来确定要从底层对象存储1134中删除哪些页面。每个事务都与自己的一对rf/rb比特图相关联。rf比特图记录由事务标记为删除的页面,rb比特图记录已分配的页面。在仅块存储部署中,这些比特图将页面在共享块存储上占据的块范围记录为比特图中的1比特序列。在一些实施例中,对于与基于云的数据库空间相关联的逻辑页面,rf/rb比特图用于将对象键记录为比特图中的单个比特。rf/rb比特图是否表示物理块编号或对象键序列可以通过简单地检查记录比特的范围来确定。
    75.当事务回滚(roll back)时,可以删除记录在其rb比特图中的页面(从块存储器或对象存储器中,具体取决于rb比特图的比特范围)。然而,当事务提交时,无法立即删除由事务标记为删除的页面,因为其他事务可能仍在使用快照隔离的mvcc系统中访问这些页面。相反,当事务提交时,其rf/rb比特图被刷新到存储中,比特图的标识被记录在事务日志中,垃圾收集的责任被传递给事务管理器。
    76.在这方面,事务管理器利用指向相关联的rf/rb比特图的指针维护提交事务链,并跟踪链中最旧的事务(其页面仍由分布式系统中的活动事务引用)。一旦事务管理器确定链中最旧的事务的页面不再被引用,则最旧的事务的rf/rb比特图将用于确定可以删除的持久化页面,包括对象存储上持久化的页面。这些页面将被删除,最旧的事务将从链中被除去。
    77.响应于协调器节点或写入器节点崩溃的垃圾收集尝试满足以下三个要求。首先,如果协调器节点崩溃,则必须将由对象键生成器维护的元数据结构(即,最大对象键和分发给辅节点的对象键活动集)恢复到一致状态。接下来,如果节点宕机,则活动事务可能会在其rf/rb比特图持久化之前中止,如果是这样,则由中止的事务执行的分配必须在不访问rb比特图的情况下被撤消。最后,如果由协调器节点分配的对象键活动集在崩溃时未被接收方节点完全使用,则必须对与未使用的对象键对应的存储对象进行垃圾收集。
    78.rf/rb比特图可以用于恢复已分发给辅节点的对象键活动集。在传统的仅块存储部署中,崩溃恢复从最后一个检查点开始,在该检查点中保留了空闲列表的副本,并将所有已提交事务的rf/rb比特图按顺序应用于空闲列表。rf比特图中的页面从空闲列表中被删
    除(即,重分配被应用于空闲列表),rb比特图中的页面在空闲列表中被标记为“使用中”。
    79.在包括在云对象存储上持久化的页面的实施例的情况下,rf/rb比特图用于恢复已分发给辅节点的对象键活动集。例如,图12的表1200列出了包括协调器节点和写入器节点(即,w1)的分布式系统中的事件序列。事件涉及三个事务t1–
    t3和两个崩溃点。
    80.在协调器节点在时钟110处崩溃的情况下,事务日志将从时钟50处存在的检查点状态被重放(replay)。在检查点时,对象键活动集为空,因此重放从空的对象键集开始。在一般情况下,活动集可能包含来自先前分配事件的对象键。
    81.在时钟60处发生的分配事件被重放,对象键活动集被重建为w1:{101

    200}。当t1的提交在时钟90处被重放时,活动集被更新为w1:{131

    200},因为不再需要跟踪对象键{101

    130}的提交范围。不需要对云持久化对象进行垃圾收集,因为协调器节点上没有因崩溃而中止的活动事务。
    82.现在考虑在时钟140处写入器节点崩溃的情况。如果崩溃时写入器节点上存在任何活动事务,则必须对由这些事务执行的分配进行垃圾收集,因为这些事务永远不会被提交。此外,还必须对写入器节点上任何未完成的分配进行垃圾回收。
    83.在时钟150处重新启动写入器节点时,写入器节点向协调程序节点发出rpc调用,以启动垃圾收集过程。当协调器节点接收到rpc调用时,它根据其存储的元数据确定写入器节点w1的活动集。接下来,对活动集w1:{131

    200}中的每个对象键进行轮询以进行垃圾收集。对象存储中与轮询对象键相关联的每个页面都将被删除。
    84.根据该示例,具有对象键在{151

    160}范围内的一些页面可能尚未刷新到底层对象存储。无论如何,协调器节点将轮询范围内的每个页面,作为用于垃圾收集的潜在候选。此外,在t2回滚时,{131

    150}范围中的页面已经被垃圾收集,但是该信息没有被通信给协调器节点。因此,当重新启动节点w1时,会轮询相同的范围以进行垃圾收集。此过程可以被视为减少用于事务回滚的节点间通信量的优化,事务回滚的发生频率预计将高于节点重启。
    85.如上所述,直接在对象存储上存储页面可以显著降低存储成本,同时受益于对象存储的弹性和扩展(scale-out)属性。然而,对象存储的i/o特性与传统存储解决方案(诸如硬盘驱动器或固态驱动器)的i/o特性不同。特别是,虽然对象存储可以允许提高吞吐量,但单独的读写操作可能会比传统存储解决方案产生更高的等待时间,从而对查询性能产生负面影响。
    86.图13示出了包括查询引擎1310、缓冲管理器1320、块存储设备1330和对象存储1340的数据库体系结构,其中每一个都可以实现以执行上述功能。为了抵消对象存储1340的高等待时间的影响而不利用更多的随机存取存储器(ram),对象缓存管理器1350被布置在缓冲管理器1320和对象存储1340之间。对象缓存管理器1350可以被视为缓冲管理器1320的基于磁盘的扩展。
    87.每个对象缓存管理器1350使用本地附接到节点的快速固态驱动器(ssd)或硬盘驱动器(hdd)1360。本地附接的ssd/hdd 1360上的等待时间显著低于对象存储,并且其价格比ram更便宜。在分布式环境中,每个节点都包括自己的对象缓存管理器(以及相关联的ssd/hdd),并且由一个对象缓存管理器实例缓存的对象不会与另一个实例共享。
    88.对象缓存管理器1350用作读写缓存。在读取期间,页面首先由驻留在ram上的缓冲
    管理器1320查找。如果未找到该页面,则由对象缓存管理器1350查找该页面。如果在对象缓存管理器1350中找到该页面,则从本地附接的存储器1360读取该页面并将其返回给调用者。如果找不到该页面,则对象缓存管理器1350从底层对象存储1340读取该页面,将该页面返回给调用者,并在存储1360中异步缓存新页面以供将来查找。页面也被缓存在ram中,在传统的缓冲管理器缓冲管理器1320中。与从对象存储1340读取页面的读取等待时间相比,这种读通语义显著减少了对象缓存管理器1350中缓存页面的读取等待时间。
    89.对象缓存管理器1350支持回写模式和写通模式下的写入操作。在回写模式下,页面被同步写入本地附接的存储1360,同时被异步写入对象存储1340。回写模式下的写入操作的等待时间由本地附接的存储1360的等待时间决定,因此写入速度相对较快。在写通模式下,页面同步写入对象存储1340,同时在本地附接的存储1360中异步缓存。因此,写通模式下写入操作的等待时间由对象存储1340的等待时间决定,因此写入速度比在回写模式下慢。
    90.因此,在读取和写入操作两者期间,页面被缓存在对象缓存管理器1350中。对象缓存管理器1350依赖最近最少使用的逐出策略(该策略与缓冲管理器1320的页面逐出策略一致)在存储器1360中为新页面创建空间。对象缓存管理器1350可以维护表示读取和写入的最近最少使用的列表,假设对象缓存管理器1350最近写出或读取的页面比其他页面更有可能再次被读取。如本文所述,由于不能利用相同的对象键再次写出通过对象缓存管理器1350读取的页面,因此对象缓存管理器1350中的页面缓存主要有利于读取操作。此外,在回写操作期间,在页面成功写入对象存储1340之前,不会将页面添加到对象缓存管理器1350维护的最近最少使用的列表中。此要求可以防止在存储1360中不必要地累积页面(即失败/回滚事务的页面)。
    91.根据一些实施例,事务以三个阶段与缓冲管理器1320交互:(i)预热(ii)搅动(churn);以及(iii)提交。在预热阶段,页面开始占用ram中的缓冲池。在搅动阶段,最近最少使用的页面将从缓冲池中被移出,以便为最近使用的页面创建空间。在提交阶段,缓冲管理器1320清除已被提交事务弄脏的页面,包括驻留在对象缓存管理器1350中的页面。
    92.在olap系统中,长时间运行的事务是正常的和预期的,则搅动阶段构成了事务期间最长的时段。因此,搅动阶段的优化优先于其他两个阶段的优化。因此,为了保持低等待时间,在搅动阶段从缓冲池中移出的页面使用对象缓存管理器135的回写模式被写出。在提交阶段,为了确保脏页面被刷新到对象存储1340,对象缓存管理器1350利用写通模式,其将对对象存储134的写入优先于对本地附接存储1360的缓存。
    93.在存在多个事务的情况下,对象缓存管理器1350优先处理提交事务的写入操作。事务通过向对象缓存管理器1350发送flushforcommit信号来表示其希望启动提交阶段。对象缓存管理器1350收到此信号后,将属于提交事务的脏页面移动到写入队列的头部,从而对该事务的所有先前启动的后台作业进行优先级排序。对象缓存管理器1350还将其写入模式从回写更改为写通。写入模式中的此更改确保来自提交事务的所有后续写入请求直接在对象存储1340上执行,而不是被视为后台作业。
    94.对象缓存管理器1350旨在实现性能优化,因此其存在与否不会影响事务一致性。在没有对象缓存管理器1350的情况下,将直接向对象存储1340发出写入操作。将重试对对象存储1340的失败写入,并在同一页面的预定失败写入次数后,回滚相应的事务。最终,事
    务管理器垃圾收集属于回滚事务的页面。
    95.在对象缓存管理器1350存在的情况下,写入操作采取如上所述的两种形式:(i)写入存储器1360以进行缓存;以及(ii)直接写入对象存储1340。如果写入存储1360失败,错误将被忽略,页面将被直接写入对象存储1340。如果写入对象存储1340失败,事务将在预先确定的重试次数后回滚,如上所述。
    96.如果启用了加密,则缓冲管理器1320以加密的形式向对象缓存管理器1350提供页面,并解密从对象缓存管理器1350读取的页面。因此,缓存在存储器1360中的页面和永久化在对象存储器1340上的页面被加密。
    97.传统的完全基于文件的关系数据库管理系统支持多种类型的备份场景(例如,完整备份、增量备份、自完整以来的增量备份、虚拟备份和解耦备份),以在软件或硬件出现故障时提供容错能力。相反,大多数对象存储以复制的形式提供本机容错,从而减轻了关系数据库管理系统提供容错的负担。因此,实施例可以利用基于云的对象存储的属性来支持(i)频繁和接近瞬时的快照,以及(ii)使用时间点恢复恢复到一致的快照。除了上述传统的基于文件的备份方案之外,还可以提供此类支持。
    98.为了支持频繁和近乎即时的快照,将从对象存储中删除页面的操作延迟一段用户定义的保留时段。这种延迟利用了基于云的对象存储提供的相对便宜的存储。
    99.传统上,事务管理器负责确定不再引用表的某个版本,并且作为对该确定的响应,负责删除与该版本相关联的物理页面。根据一些实施例,如果事务管理器确定不再引用与基于云的数据库空间相关联的页面的版本,页面不会从对象存储中被删除,并且页面的所有权被转移到快照管理器,如图14所示。然后,快照管理器负责在后台过程中,当该页面的用户定义保留时段(例如,两个月)到期时,永久删除该页面。由于不同页面的所有权在不同的时间点被转移到快照管理器,因此快照管理器针对每向其转移一页维护包含记录的先进先出列表《对象键,到期》。记录可以用于标识应从对象存储中删除的页面(即到期》当前时间),并从对象存储中删除页面(即使用相关联的对象键)。先进先出列表存储在对象存储中,并在永久删除页面时进行删减(prune)。
    100.根据如图14所示和上文所述的实施例,拍摄快照涉及备份快照管理器的先进先出列表,以及拍摄系统目录和包括系统数据库空间在内的所有基于文件的数据库空间的完整备份。由于快照管理器保留了云存储的页面,因此拍摄快照不需要备份基于云的数据库空间。当快照到期时(即快照的保留时段结束时),快照管理器会自动删除快照操作期间备份的数据。
    101.如果数据库实例中的所有用户数据库空间都是基于云的,则拍摄快照几乎是即时的。在这种情况下,只需要完全备份系统数据库空间,并且由于空闲列表的角色减少,系统数据库空间明显小于传统数据库实例中的空间。因此,即使是频繁的快照也会对处理资源造成最小的负担。
    102.要从保留时段内拍摄的快照恢复数据库,只需恢复快照管理器、系统目录、系统数据库空间和任何基于文件的数据库空间的先进先出列表即可。系统目录中标识对象引用的基于云的数据库空间的块映射页面和数据页面已保留在基础对象存储中。在恢复之后,数据库将不再需要在快照和恢复操作之间创建的任何页面。由于对象键生成器以单调递增的方式提供对象键,因此可以从快照操作(记录在快照拍摄期间存储的元数据中)和恢复操作
    期间使用的对象键计算恢复后要进行垃圾收集的对象键的范围。
    103.图15示出了根据一些实施例的基于云的数据库部署。所示组件可以驻留在一个或多个公共云中,提供自服务和即时供应、自动缩放、安全性、法规遵从性和身份管理功能。
    104.数据库系统1510包括协调器节点1511、辅节点1512、基于云的块存储设备1513以及云对象存储1514和1515。如本文所述,节点1511和1512可操作以将基于文件的数据库空间的页面持久化到基于云的块存储设备1513,并将基于云的数据库空间的页面持久化到云对象存储1514和1515。
    105.协调器节点1511和辅节点1512中的每一个都可以包括由公共云提供商提供的基于云的计算资源,诸如虚拟机。基于云的块存储设备1513可以包括供节点1511和1512中的任何一个使用的保留块存储设备,并且云对象存储1514和1515可以包括如本文所述的键值对象存储。两个或更多个节点或数据存储可能由不同的公共云提供商提供。
    106.应用服务器1520还可以包括由公共云提供商分配的基于云的计算资源。因此,应用服务器1520还可以表现出基于需求的弹性。用户设备1530可以例如经由在用户设备1530上执行的web浏览器与在应用服务器1520上执行的应用交互,以便创建、读取、更新和删除由数据库管理系统1510管理的数据。
    107.上述附图表示根据一些实施例用于描述过程的逻辑架构,实际实现可能包括以其他方式布置的更多或不同组件。其他拓扑可结合其他实施例使用。此外,本文描述的每个组件或设备可以由经由任何数量的其他公共和/或专用网络进行通信的任何数量的设备实现。两个或更多个这样的计算设备可以彼此远离,并且可以经由任何已知的网络方式和/或专用连接彼此通信。每个组件或设备可以包括适合于提供本文所述功能以及任何其他功能的任意数量的硬件和/或软件元件。
    108.本文描述的实施例仅用于说明。本领域技术人员将认识到,其他实施例可以通过对上述实施例的修改和改变来实施。

    技术特征:
    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.根据权利要求15所述的数据库系统,所述服务器节点用于:确定要被持久化的第二数据库页面的第二逻辑页号;识别与所述第二逻辑页号相关联的第二块映射页面;
    基于所述第二块映射页面,确定与所述第二逻辑页号相关联的第二块编号;确定所述第二块编号与所述块存储设备的块相关联;以及响应于确定所述第二块编号与所述块存储设备的块相关联,将所述第二数据库页面写入所述块存储设备的所述块。18.根据权利要求17所述的数据库系统,其中,确定所述块编号是对象键包括确定所述块编号在与对象存储的对象键相关联的范围中,以及其中,确定所述第二块编号与块存储设备的块相关联包括确定所述第二块编号在与块存储设备的块相关联的范围中。19.根据权利要求15所述的数据库系统,还包括本地附接的非易失性存储器设备,其中,使用所述第一对象键将所述第一数据库页面写入所述对象存储包括将所述第一数据库页面同步写入所述本地附接的非易失性存储器设备以及使用所述第一对象键将所述第一数据库页面异步写入所述对象存储。20.根据权利要求15所述的数据库系统,还包括本地附接的非易失性存储器设备,其中,使用所述第一对象键将所述第一数据库页面写入所述对象存储包括将所述第一数据库页面异步写入所述本地附接的非易失性存储器设备以及使用所述第一对象键将所述第一数据库页面异步写入所述对象存储。

    技术总结
    一种系统和方法,包括:确定要被持久化的第一数据库页面的第一逻辑页号;识别与第一逻辑页号相关联的第一块映射页面;从第一块映射页面确定与第一逻辑页号相关联的块编号;确定块编号是对象键;响应于确定块编号是对象键,确定与第一逻辑页号相关联的第一对象键;以及使用第一对象键将第一数据库页面写入对象存储器。储器。储器。


    技术研发人员:M.阿布佐尔 G.阿卢克 I.鲍曼 X.邓 N.马拉特 S.拉纳迪夫 M.沙里克 J.斯米尔尼奥斯
    受保护的技术使用者:SAP欧洲公司
    技术研发日:2021.08.17
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-12176.html

    最新回复(0)