从备份系统流式恢复数据库的制作方法

文档序号:8491686阅读:215来源:国知局
从备份系统流式恢复数据库的制作方法
【专利说明】
【背景技术】
[0001]分布式存储服务可包括在例如一个或多个计算机集群的分布式硬件基础设施上执行的多个并发进程。这些进程中的各种进程可在集群中不同物理和/或逻辑(例如,虚拟)机器上执行。在存储服务中,例如,在不同机器上的进程(例如,软件服务器)可各自将编程接口暴露给客户端,客户端可使用所述编程接口来访问可在多个存储资源上实施的存储系统。存储服务可存储系统中每个数据项的多个复本,使得一个服务器上的数据项的任何改变必须被传播到一个或多个其它服务器。
[0002]一旦节点或磁盘驱动器出现故障,发生故障的设备上的数据必须被恢复。在提供数据库服务的许多现有存储系统中,整个数据集必须被恢复(例如,从备份或归档文件恢复),然后系统才可恢复接受并处理查询。在执行增量备份的一些系统中,设备出现故障后恢复系统涉及执行多个增量恢复操作(对应于多个增量备份操作)。在其它存储系统中,设备出现故障后恢复系统涉及追踪事务记录来重建系统的状态。对于包括大量存储设备的数据仓库系统,系统必须停止服务以在一个或少数设备上执行恢复操作的时间量可代表系统的显著成本。
【附图说明】
[0003]图1是示出从远程关键字-值持久存储系统执行流式恢复操作的方法的一个实施方案的流程图。
[0004]图2是示出根据一些实施方案从客户的角度来看的分布式数据仓库服务的各种部件的框图。
[0005]图3是示出根据一个实施方案的分布式数据仓库系统的各种部件的框图。
[0006]图4是示出根据一个实施方案的分布式数据仓库系统中集群的框图。
[0007]图5是示出根据一个实施方案的超级块数据结构的框图。
[0008]图6是示出根据一个实施方案的用于备份被存储在分布式数据仓库系统中的数据的远程关键字-值持久存储系统的使用的框图。
[0009]图7是示出用于将数据块存储在分布式数据仓库系统中的方法的一个实施方案的流程图。
[0010]图8是示出用于在分布式数据仓库系统中执行备份操作的方法的一个实施方案的流程图。
[0011]图9A-9B描绘了示出用于在分布式数据仓库系统中出现故障之后重建数据块的方法的一个实施方案的流程图。
[0012]图10是示出用于在分布式数据仓库系统中响应于查询请求的方法的一个实施方案的流程图。
[0013]图11是示出用于响应于查询而确定返回数据块的哪个副本的方法的一个实施方案的流程图。
[0014]图12是示出用于从远程关键字-值持久存储系统临时接入数据块的备份副本来满足查询的方法的一个实施方案的流程图。
[0015]图13是示出用于以优先次序从远程关键字-值持久存储系统恢复分布式数据仓库系统中的数据块的方法的一个实施方案的流程图。
[0016]图14是示出用于确定从关键字-值持久备份存储恢复数据块的顺序的方法的一个实施方案的流程图。
[0017]图15是示出根据各种实施方案被配置以实施分布式数据仓库系统和对应关键字-值持久备份存储系统的至少一部分的计算机系统的框图。
[0018]虽然本文以若干实施方案和说明性附图举例描述了实施方案,但是本领域技术人员将认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图及其详细描述不旨在将实施方案限制为所公开的具体形式,相反,意图在于涵盖落入如由所附权利要求书所限定的精神和范围内的所有的修改、等效物和替代物。本文所用的标题仅用于组织目的,而非意味着被用来限制本说明书或权利要求书的范围。如本申请通篇所使用,词语“可”用于宽容的意义(即,意思是有可能),而非强制的意义(即,意思是必须)。类似地,词语“包括(include/including/includes) ”的意思是包括但不限于。
【具体实施方式】
[0019]在一些实施方案中,本文所描述的系统可实施使得客户(例如,用户)在云计算环境中快速、简单且具有成本效益地设置、操作并缩放数据仓库的网络服务。网络服务可管理费时的管理任务,从而允许用户专注于他们自己的应用和业务。在一些实施方案中,数据仓库系统可为高度可伸缩且可扩展的企业级数据库查询和管理系统。它可提供对结构化数据的快速查询功能,可提供与各种数据加载和ETL(提取、转换和加载)工具的集成,可向客户连接提供一流的商务智能(BI)报告、数据挖掘和分析工具,且可被优化以非常快速地执行复杂的分析查询,例如包括多表连接、子查询和聚集的分析查询。在一些实施方案中,查询可被分布并平行放置于多个物理资源上,且数据仓库系统可在需要的基础上被放大或缩小。在一些实施方案中,用户可仅支付他们所使用的资源。在不同的实施方案中,数据仓库系统可有效地适用于各种类型和/或组织的数据库模式。
[0020]在一些实施方案中,本文所描述的分布式数据仓库系统可从使用分治策略来执行编译查询的计算节点的大规模并行处理(MPP)和集群的使用导出性能和快速计算能力中的一些。在一些实施方案中,集群可包括一个或多个节点,每个节点包括一个或多个磁盘、固态设备或代表客户存储数据块的其它永久存储设备。在一些实施方案中,客户/用户可能以例如交互地通过至数据仓库系统的SQL接口的多种方式来提交查询。在其它实施方案中,外部应用和程序可使用至数据仓库系统的开放式数据库连接(ODBC)和/或Java数据库连接(JDBC)驱动程序接口来提交查询。
[0021]在典型的大型数据库系统中,从备份恢复数据需要的时间可代表系统的显著成本。例如,在许多现有的系统中,在数据库系统故障之后需要恢复整个数据集,然后数据库系统才可重新启动。在一些实施方案中,本文描述的数据仓库系统可被配置以增量地(例如,一次一个物理数据块)将数据(例如,组成各种数据库表的数据)备份到远程关键字-值存储系统,且作为每个增量备份操作的一部分,将所有数据块的列表存储到系统中,而不管它们是作为所述增量备份的一部分而备份或是作为先前增量备份操作的一部分而备份。在一些实施方案中,远程关键字-值存储系统可专用于备份存储,而在其它实施方案中,远程关键字-值存储系统可提供通用存储以用于各种客户和/或客户应用。在各种实施方案中,数据仓库系统、通用计算系统或提供将数据本地存储于存储器(例如,短暂地)中的另一种类型的服务的计算系统可将数据的一个或多个副本写入远程关键字-值存储系统,所述远程关键字-值存储系统采用磁盘、固态存储设备或另一类型的持续性的存储介质以提供耐久性。如下文更详细地描述,本文所述的数据仓库系统可能能够在故障之后重新启动代表存储系统用户存储数据(例如,在数据库中)的集群(即,允许其接受并提供查询),而无需等待从备份恢复整个数据集。相反,任何丢失或破坏的数据块的备份副本可通过使用数据块的唯一标识符作为密钥以直接在远程系统中对其进行寻址来从备份系统流入数据仓库系统的存储器。
[0022]注意,在本文的描述中,术语“数据块”和“物理数据块”可用以代表被代表客户(例如,用户、客户端应用和/或数据仓库服务用户)存储在分布式数据仓库系统和/或远程关键字-值持久备份存储系统中作为个别(或可分离)对象的数据的部分(或块),或可用以代表当数据被存储在分布式数据仓库系统中物理磁盘上,被存储在分布式仓库系统中(例如,在实施存储器内数据库的系统中)节点上的系统存储器中和/或被存储在远程关键字-值持久备份存储系统中时数据的部分(或块),这取决于这些术语出现的上下文。在一些实施方案中,数据可被存储在具有与被存储在系统的存储器架构中的数据的标准单位的尺寸相同尺寸的数据块中,其可对应于存储器中的“页”。在其它实施方案中,数据块的大小可能与存储器的页面大小不同。
[0023]在一些实施方案中,本文所述的分布式数据仓库系统可在系统中本地存储每个数据块的两个或更多个副本(例如,在集群架构上)。例如,在一个实施方案中,每个IMB物理数据块的主要副本可被存储在集群中节点的一个磁盘上,且所述物理数据块的一个或多个次要副本(复本)可被存储在所述同一集群中其它节点的其它磁盘上。然而,没有将整个磁盘复制(或镜像)到一个其它磁盘上,被存储在给定磁盘上的数据块中的一些的副本可被分布在与被存储在给定磁盘上的其它数据块的副本不同的磁盘上。分布式数据仓库系统也可将每个数据块的副本存储在提供持久关键字-值存储的远程备份存储系统中作为单独的对象(即,值),且可将每个数据块的密钥存储在系统中数据块的列表内。例如,列出被存储在数据仓库系统中(或其节点中)的所有数据块的超级块数据结构可包括多个条目,每个条目存储关于个别数据块的元数据,且每个块的元数据可包括唯一标识符(ID),所述唯一标识符充当密钥以访问被存储在远程备份存储系统中的数据块的副本。在一些实施方案中,分布式数据仓库系统可通过将每个数据块的两个副本存储到给定集群中(例如,主要副本和次要副本)且将第三个副本存储到远程关键字-值持久存储系统中来向其客户/用户提供非常高的耐久性存储。
[0024]在一些实施方案中,当分布式数据仓库中的磁盘或节点发生故障时,有可能或不可能从集群内的其它磁盘恢复丢失或破坏的数据块,这取决于故障的类型和/或程度。例如,如果故障是磁盘故障或节点故障,那么有可能通过从集群内存储这些数据块的复本的其它磁盘拷贝数据块来恢复丢失或破坏的数据块(即,以从被存储在集群自身内的数据快速重建数据库)。然而,如果故障是整个集群的故障,或者是其后不可能从集群内重建丢失或破坏的数据块的另一种类型的故障,那么分布式数据仓库可被配置以从备份存储系统检索数据以重建丢失或破坏的数据块。如本文更详细地描述,在一些实施方案中,远程存储系统中数据块的副本可被访问以在从远程存储系统检索到副本(即,流入)之前或之后满足查询请求。例如,在一些实施方案中,分布式数据仓库系统可被配置以当在后台重建数据集时继续(或重新开始)接受并处理查询。换句话说,在故障之后,本文所述的分布式数据仓库系统可被配置以按需将数据从备份系统流入,直到整个数据集(或至少任何接收的查询所针对的数据)被恢复为止或除非整个数据集被恢复。如下文更详细地描述,在一些实施方案中,数据块可被以在最近什么时候在分布式数据仓库中访问数据块或在分布式数据仓库中访问数据块的频率的顺序,或在不久的将来将访问所述数据块的可能性的顺序从远程存储恢复。
[0025]图1中以流程图示出用于从远程关键字-值持久存储系统执行流式恢复操作的方法的一个实施方案。如在110示出,在这个实例中,方法可包括分布式数据仓库系统代表客户(例如,用户、客户端应用或存储服务用户)将数据块存储在集群中。方法可包括数据仓库系统通过将数据块的副本存储在远程关键字-值持久存储中来备份数据块,如120示出。如在这个实例中示出,响应于数据仓库系统中的故障,方法可包括数据仓库系统启动一个或多个数据块从远程关键字-值持久存储的恢复,如130示出。方法也可包括,在所有目标数据块被从远程关键字-值持久存储恢复之前,数据仓库系统接受并服务于针对客户数据的查询(例如,读取请求和/或写入请求),如140示出。换句话说,分布式数据仓库系统可能能够在故障之后开始或继续接受并提供查询请求,而无需恢复整个数据集,如在一些先前数据库系统中一般。例如,如果数据仓库系统中集群仅有一部分出现故障,那么集群可继续接受并提供查询而无中断。如果整个集群发生故障(并且影响所述集群中节点上所有超级块),那么超级块中一个或多个可能需要被引入系统存储器,然后针对集群的查询才可被接受和/或服务,使得可在远程关键字-值持久存储中访问目标数据。在一些实施方案中,每个超级块可被镜像到存储信息(即,关于被存储在特定节点上作为主要副本的数据块的信息)的特定节点之外的一个或多个节点上。
[0026]在一些实施方案中,本文所述的分布式数据仓库系统可对数据库表使用列存储。换句话说,来自数据库表的列信息可被存储到磁盘上数据块中,而非将列的整行存储在每个数据块中(如在传统的数据库方案中)。在一些实施方案中,以这样的列的方式存储表格数据可减少对各种查询的整体磁盘I/o要求并可提高解析查询性能。例如,以列的方式存储数据库表信息可减少当将数据检索到存储器中以执行数据库操作作为处理查询的一部分时(例如,当在表格中检索所有行的所有列字段值时)执行的磁盘I/o请求的数量,且可减少当处理查询时需要从磁盘加载的数据量。相反,对于给定数量的磁盘请求,比起如果每个数据块存储整个表的行,可以检索更多的行中的列字段值。在一些实施方案中,磁盘要求可使用与列存储数据类型相匹配的压缩方法来进一步减少。例如,由于每个块包含统一的数据(即,列字段值都是相同的数据类型),所以磁盘存储和检索要求可通过施加最适合于特定的列数据类型的压缩方法来进一步减少。在一些实施方案中,节省用于存储仅包含单一列的字段值的数据块在磁盘上的空间可转化为节省当检索数据且然后将所述数据存储在系统存储器中时(例如,当分析或以其它方式处理检索的数据)的空间。例如,对于一次只需要访问和/或操作一列或少量列的数据库操作,比起传统的基于行的存储,可能需要较少的存储器空间,因为只可检索到存储执行查询实际需要的特定列中的数据的数据块并将所述数据块存储在存储器中。
[0027]在各种实施方案中,本文所述的分布式数据仓库系统可支持标准或自定义应用编程接口(API)以进行各种数据库操作。例如,API可支持创建数据库、创建表格、改变表格、创建用户、删除用户、在表格中插入一个或多个行、拷贝值、从表格内选择数据(例如,查询表格)、取消或中止查询的操作,和/或其它操作。
[0028]在一些实施方案中,本文所述的分布式数据仓库系统的每个集群可包括领导节点和多个计算节点(即,非领导节点,例如查询引擎),其中每个节点是具有一定量的存储(例如,多个磁盘)和/或处理能力的虚拟机。在一些实施方案中,一旦被配置,集群可由客户/用户通过网络地址直接可见(且可访问)。换句话说,客户/用户可直接连接到集群(例如,以提交查询并接收对这些查询的响应),且可能不需要经过网络服务器(或服务)来访问集群,除了设置并管理集群的配置。在一些实施方案中,每个集群中的领导节点(其可能并不存储客户/用户数据)可保持用于对由计算节点存储在集群中的数据执行各种类型的查询的查询计划(例如,包括模式信息和/或元数据)。在领导节点内,调度进程可向计算节点发送查询任务(例如,通过专用网络通信织物)以进行执行。在一些实施方案中,领导节点也可负责划分输入数据(即,被包括在写入请求中的数据),以存储在集群的各种节点上。例如,领导节点可确定将存储所接收数据的不同部分的主要副本的节点。
[0029]在一些实施方案中,当客户请求来执行查询(例如,读取请求或写入请求)或接收到某一其它类型的数据库操作(例如,由集群中的领导节点)时,分布式数据仓库系统可产生一个新的过程,以保持客户的会话信息,且只要客户的会话仍然开放且该客户正将查询请求发送到领导节点,所述过程就可得以保持。请求的操作(SQL查询或某一其它数据库操作)可通过分析器和优化器来路由,以制定查询执行计划,从而进行或执行指定的查询或数据库操作(即,执行查询所需的逻辑步骤)。查询计划然后可被路由到执行引擎,所述执行引擎产生并编译领导节点和非领导节点(本文中有时称为计算节点)将执行以完成查询的查询执行代码。在一些实施方案中,每个个别执行计划步骤可能涉及将由计算节点或领导节点执行的数据的简单操作或操纵,且连接领导节点和计算节点的通信网络可用以分配中间结果。在一些实施方案中,分布式数据仓库系统可通过在多个节点片中每一个中分开查询过程以并行执行编译查询代码来实现优良的查询执行性能。此外,分布式数据仓库系统可利用优化的网络通信、存储器和磁盘管理,以将中间结果从一个查询计划步骤传递到下一个查询计划步骤,这也可能有助于加速查询执行。在一些实施方案中,查询的最后一个段可返回请求的数据。如果返回设置要被汇集或排序,那么计算节点可各自将中间结果的各自的部分发送到领导节点,所述领导节点然后可合并返回的数据,使得查询的最终结果可被发送回做出请求的客户/用户。
[0030]图2是示出根据一些实施方案从客户(其可包括用户、客户端应用和/或数据仓库服务用户)的角度来看的分布式数据仓库服务的各种部件的框图。在这个实例中,客户端212、222和232中每一个能够访问虚拟计算环境200中的集群210、220、230和240中一个或多个。如图2示出,集群210、220、230和240中每一个包括两个或更多个节点,其可代表能够访问这些集群的客户端212、222和232中的特定客户端来将数据存储在所述节点上。如在这个实例中示出,客户端212、222和232可能能够访问分布式数据仓库服务管理器202,例如,以设置并管理其访问的集群的配置,但是,一旦这些集群已被配置,客户端就可能能够直接访问它们(例如,而无需通过分布式数据仓库服务的服务接口)。
[0031]图3也是示出根据一个实施方案的分布式数据仓库系统的各种部件的框图,其中一些部件可能是分布式数据仓库系统的客户不可见的。如在这个实例中示出,存储客户端350a-350n可通过网络360访问分布式数据仓库系统380内的分布式数据仓库服务管理器302和/或数据仓库集群325和335 (例如,这些部件对于存储客户端350a_350n可为网络可寻址与可访问的)。然而,在不同的实施方案中,当自动执行例如本文所述的各种备份和恢复操作时分布式数据仓库系统380可使用的关键字-值持久备份存储370对于存储客户端350a-350n可为网络可寻址与可访问的或者可能不是网络可寻址与可访问的。例如,在一些实施方案中,分布式数据仓库系统380可能以对于存储客户端350a-350n不可见的方式来执行这些操作和/或涉及关键字-值持久备份存储370的其它操作(包括临时接入分布式数据仓库系统380中当前不可用的数据块的备份副本,以满足从存储客户端350a-350n接收到的查询)。
[0032]如前文所述,分布式数据仓库系统集群可包括单个领导节点服务器,所述单个领导节点服务器接收来自各种客户端程序(例如,应用)和/或用户(使用者)的请求,然后解析所述请求并开发执行计划以执行相关数据库操作。更具体来说,领导节点可开发获得复杂的查询和联
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1