用于分布式数据库系统的系统范围检查点避免的制作方法_3

文档序号:9457678阅读:来源:国知局
日志记录(ULR)可用于指示对卷中的用户数据的改变。由存储系统产生的控制日志记录(CLR)可包含用于追踪元数据(如当前无条件的卷耐用LSN(VDL))的控制信息。在一些实施方案中,空日志记录(NLR)可用作填料,以便填充日志扇区或日志页面中的未用空间。在一些实施方案中,在这些类别中的每一个内可存在各种类型的日志记录,并且日志记录类型可对应于需要被调用以便解释日志记录的功能。例如,一种类型可使用具体的压缩格式来代表压缩格式的用户页面的所有数据;第二类型可代表用于用户页面内的字节范围的新值;第三类型可代表对被解释成整数的字节序列的增量操作;以及第四类型可代表在页面内将一个字节范围复制到另一位置。在一些实施方案中,日志记录类型可由⑶ID(不是由整数或枚举)来识别,所述⑶ID可简化版本控制和发展,特别用于ULR。
[0064]有效负载:日志记录的有效负载为针对一个或多个特定类型的日志记录的数据或参数值。例如,在一些实施方案中,可能存在大部分(或所有的)日志记录包括,并且存储系统本身理解的一组参数或属性。这些属性可为与扇区大小相比可能为相对小的常用日志记录标头/结构的部分。此外,大部分日志记录可包括针对那个日志记录类型的附加的参数或数据,并且这个附加信息可被认为是那个日志记录的有效负载。在一些实施方案中,如果用于特定ULR的有效负载大于用户页面大小,它可由绝对ULR(AULR)来替换,所述绝对ULR的有效负载包括用于用户页面的所有数据。这可使得存储系统能够对等于用户页面大小的ULR的有效负载的大小施行上限。
[0065]注意当将日志记录存储在区段日志中时,在一些实施方案中,有效负载可连通日志标头一起存储。在其他实施方案中,有效负载可存储在独立位置中,并且到在其中存储有效负载的位置的指针可与日志标头一起存储。在另一些实施方案中,有效负载的一部分可存储在标头中,并且有效负载的剩余物可存储在独立位置中。如果整个有效负载与日志标头一起存储,这可被称为带内存储;否则存储可被称为带外的。在一些实施方案中,大部分大型AULR的有效负载可带外存储在日志冷区(其在以下描述)中。
[0066]户页面:用户页面为用于特定卷的字节范围(固定大小的)和其对准,所述特定卷对存储系统的用户/客户端为可见的。用户页面为逻辑概念,并且在特定用户页面中的字节可能或可能不原样存储在任何存储页面中。用于特定卷的用户页面的大小可独立于用于那个卷的存储页面的大小。在一些实施方案中,用户页面大小可被每卷配置,并且在存储节点上的不同区段可具有不同的用户页面大小。在一些实施方案中,用户页面大小可被约束成多个扇区大小(例如,4KB),并且可具有上限(例如,64KB)。另一方面,存储页面大小对于整个存储节点可为固定的,并且可能不改变除非存在对基础硬件的改变。
[0067]数据页面:数据页面为用于存储压缩形式的用户页面数据的一种类型的存储页面。在一些实施方案中,存储在数据页面中的每个数据片与日志记录关联,并且每个日志记录可包括到数据页面内的扇区(也被称为数据扇区)的指针。在一些实施方案中,数据页面可能不包括除由每个扇区提供的之外的任何嵌入式元数据。在数据页面中扇区之间可能不存在关系。反而,到页面中的组织可仅作为到区段的数据分配的间隔尺寸的表达存在。
[0068]存储节点:存储节点为在其上存储节点服务器代码被部署的单个虚拟机器。每个存储节点可包含多个本地附接的SSD,并且可提供网络API用于访问一个或多个区段。在一些实施方案中,各种节点可在活动列表上,或在降级列表上(例如,如果它们缓慢响应或另外被损坏,但未完全不能用)。在一些实施方案中,客户端侧驱动器基于观测的性能可帮助(或负责)将节点分类成活动的或降级的,用于确定它们是否以及何时应被替换,和/或用于确定何时和如何在各种节点中重新分布数据。
[0069]SSD:如本文指出的,术语“SSD”可指如通过存储节点可见的本地块存储卷,不考虑由那个存储卷采用的存储类型,例如,磁盘、固态驱动、电池支持的RAM、非易失性RAM装置(例如,一个或个NV-DIMM)、或另一类型的持久存储装置。SSD不必要直接映射至硬件。例如,单个固态存储装置可能分成多个本地卷,其中在不同的实施方案中,每个卷被分裂成多个区段以及在多个区段上剥离,和/或单个驱动可仅为容易管理而分成多个卷。在一些实施方案中,每个SSD可在单个固定位置处存储分配映射。这个映射可指示特定区段拥有的那些存储页面,以及这些页面中的哪些为日志页面(与数据页面相对)。在一些实施方案中,存储页面可被提前分配至每个区段,以使得向前处理可能不需要等待分配。在新分配的存储页面由区段使用之前,可能需要使得对分配映射的任何改变耐用。
[0070]分布式数据库优化存储系统的一个实施方案由图4中的框图示出。在这个实例中,数据库系统400包括分布式数据库优化存储系统410,所述分布式数据库优化存储系统410通过互连460与数据库引擎头节点420通信。如在3所示的实例中,数据库引擎头节点420可包括客户端侧存储服务驱动器425。在这个实例中,分布式数据库优化存储系统410包括多个存储系统服务器节点(包括被示出为430、440、和450的那些),其中的每一个包括用于数据页面的存储和用于它存储的区段的重做日志,以及被配置来执行各种区段管理功能的硬件和/或软件。例如,每个存储系统服务器节点可包括被配置来执行任何或所有的以下操作中的至少一部分的硬件和/或软件:复制(本地,例如在存储节点内)、合并重做日志以便产生数据页面、快照(例如,创建、复原、删除等)、日志管理(例如,操纵日志记录)、崩溃恢复、和/或空间管理(例如,用于区段)。每个存储系统服务器节点也可具有在其上可存储代表客户端(例如,用户、客户端应用程序、和/或数据库服务订阅者)的数据块的多个附接的存储装置(例如,SSD)。
[0071]在图4所示的实例中,存储系统服务器节点430包括数据页面433、区段重做日志435、区段管理功能437、和附接的SSD 471-478。再次注意标签“SSD”可能或可能不指固态驱动,但更通常地可能指本地块存储卷,不考虑它的基础硬件。类似地,存储系统服务器节点440包括数据页面443、区段重做日志445、区段管理功能447、和附接的SSD 481-488 ;并且存储系统服务器节点450包括数据页面453、区段重做日志455、区段管理功能457、和附接的 SSD 491-498。
[0072]如先前指出的,在一些实施方案中,扇区为在SSD上的对齐单元,并且可为在SSD上可被写入而没有所述写入将仅被部分完成的风险的最大大小。例如,用于各种固态驱动和旋压介质的扇区大小可为4KB。在本文所述的分布式数据库优化存储系统的一些实施方案中,每个以及每一个扇区可在所述扇区开始处包括64比特(8字节)CRC,不考虑扇区为其一部分的较高水平实体。在此类实施方案中,这个CRC (每次当从SSD读取扇区时,其可生效)可在检测破坏中使用。在一些实施方案中,每个和每一个扇区也可包括“扇区类型”字节,其值将所述扇区识别成日志扇区、数据扇区、或未初始化的扇区。例如,在一些实施方案中,为O的扇区类型字节值可指示扇区未初始化。
[0073]在一些实施方案中,在分布式数据库优化存储系统中的每个存储系统服务器节点可实施在节点服务器的操作系统上运行的一组处理,所述处理管理与数据库引擎头节点的通信,例如,以便接收重做日志、送回数据页面等。在一些实施方案中,写入至分布式数据块优化存储系统的所有数据块可备份到长期存储和/或档案存储(例如,在远程键值耐用备份存储系统中)。
[0074]图5为示出根据一个实施方案的数据库系统中的独立分布式数据库优化存储系统的使用的框图。在这个实例中,一个或多个客户端进程510可将数据存储至由数据库系统维持的一个或多个数据库,所述数据库系统包括数据库引擎520和分布式数据库优化存储系统530。在图5所示的实例中,数据库引擎520包括数据库层部件560和客户端侧驱动器540 (其用于分布式数据库优化存储系统530与数据库层部件560之间的接口 )。在一些实施方案中,数据库层部件560可执行功能(如由图3的查询解析、优化和执行部件305以及事务和一致性管理部件330执行的那些),和/或可存储数据页面、事务日志和/或撤销日志(如由图3的数据页面高速缓冲存储器335、事务日志340和撤销日志345存储的那些)。
[0075]在这个实例中,一个或多个客户端进程510可将数据库查询请求515 (其可包括把存储在一个或多个存储节点535a-535n上的数据作为目标的读取和/或写入请求)发送至数据库层部件560,并且可从数据库层部件560接收数据库查询响应517 (例如,包括写入确认和/请求的数据的响应)。包括对写入数据页面的请求的每个数据库查询请求515可被解析和优化,以便产生可被发送至客户端侧驱动器540用于随后路由至分布式数据库优化存储系统530的一个或多个写入记录请求541。在这个实例中,客户端侧驱动器540可产生对应每个写入记录请求541的一个或多个重做日志记录531,并且可将它们发送至分布式数据库优化存储系统530的存储节点535中的具体的一些。分布式数据库优化存储系统530可将用于每个重做日志记录531的对应写入确认523返回至数据库引擎520 (具体至客户端侧驱动器540)。客户端侧驱动器540可将这些写入确认传递至数据库层部件560 (作为写入响应542),所述数据库层部件560随后可将对应的相应(例如,写入确认)发送至一个或多个客户端进程510作为数据库查询响应517中的一个。
[0076]在这个实例中,包括对读取数据页面的请求的每个数据库查询请求515可被解析和优化,以便产生可被发送至客户端侧驱动器540用于随后路由至分布式数据库优化存储系统530的一个或多个读取记录请求543。在这个实例中,客户端侧驱动器540可将这些请求发送至分布式数据库优化存储系统530的存储节点535中的具体的一些,并且分布式数据库优化存储系统530可将请求的数据页面533返回至数据库引擎520 (具体至客户端侧驱动器540)。客户端侧驱动器540可将返回的数据页面发送至数据库层部件560作为返回数据记录544,并且数据库层部件560随后可将数据页面发送至一个或多个客户端进程510作为数据库查询响应517。
[0077]在一些实施方案中,各种错误和/或数据损失消息534可从分布式数据库优化存储系统530发送至数据库引擎520(具体至客户端侧驱动器540)。这些消息可从客户端侧驱动器540传递至数据库层部件560作为错误和/或损失报告消息545,并且随后连同(或代替)数据库查询响应517至一个或多个客户端进程510。
[0078]在一些实施方案中,分布式数据库优化存储系统530的API531-534和客户端侧驱动器540的API 541-545可将分布式数据库优化存储系统530的功能性暴露至数据库引擎520,犹如数据库引擎520为分布式数据库优化存储系统530的客户端。例如,数据库引擎520(通过客户端侧驱动器540)可通过这些API写入重做日志记录或请求数据页面,以便执行(或促进其性能)由数据库引擎520和分布式数据库优化存储系统530的组合实施的数据库系统的各种操作(例如,存储、访问、改变日志、恢复、和/或空间管理操作)。如图5所示,分布式数据库优化存储系统530可在存储节点535a-535n上存储数据块,所述存储节点535a-535n中的每一个可具有多个附接的SSD。在一些实施方案中,分布式数据库优化存储系统530可通过应用各种类型的冗余方案为存储的数据块提供高耐久性。
[0079]注意在各种实施方案中,在图5中,在数据库引擎520与分布式数据库优化存储系统530之间的API调用和响应(例如,API 531-534)和/或在客户端侧驱动器540与数据库层部件560之间的API调用和响应(例如,API 541-545)可在安全代理连接(例如,由网关控制面管理的一个)上执行,或可在公共网络上,或可替代地在专用通道(如虚拟专用网络(VPN)连接)上执行。到本文所述的数据库系统的部件和/或在其之间的这些和其他API可根据不同的技术(包括但不限于,简单对象访问协议(SOAP)技术和表述性状态转移(REST)技术)来实施。例如,这些API可能,但不必须被实施作为SOAP API或RESTfulAP10 SOAP为用于在基于网络的服务的情况下用于交换信息的协议。REST为用于分布式超媒体系统的构造风格。RESTful API (其也可被称为RESTful网络服务)为使用HTTP和REST技术实施的网络服务API。本文描述的API在一些实施方案中可用各种语言(包括但不限C、C++、Java、C#和Perl)中的客户端库来包装,以便支持与数据库引擎520和/或分布式数据库优化存储系统530的合并。
[0080]如以上指出的,在一些实施方案中,数据库系统的功能部件可在由数据库引擎执行的那些与在独立、分布式、数据库优化存储系统中执行的那些之间划分。在一个具体实例中,响应于接收来自客户端进程(或其线程)的对将某物插入至数据库中(例如,通过将记录添加那个数据块来更新单个数据块)的请求,数据库引擎头节点的一个或多个部件可执行查询解析、优化、和执行,以及可将查询的每个部分发送至事务和一致性管理部件。事务和一致性管理部件可确保没有其他客户端进程(或其线程)试图同时修改相同的行。例如,事务和一致性管理部件可负责确保这个改变自动地、一致地、耐久地以及以隔离的方式在数据库中执行。例如,事务和一致性管理部件可与数据库引擎头节点的客户端侧存储服务驱动器一起工作,以便产生将被发送至分布式数据库优化存储服务中的一个节点的重做日志记录,以及将它发送至分布式数据库优化存储服务(连同响应于其他客户端请求产生的其他重做日志),以一个顺序和/或用确保ACID特性满足这个事务的定时。在接收重做日志记录(其可被认为通过存储服务的“更新记录”)后,对应的存储节点可更新数据块,并且可更新用于所述数据块的重做日志(例如,指向数据块的所有改变的记录)。在一些实施方案中,数据库引擎可负责产生用于这个改变的撤销日志,并且也可负责产生用于撤销日志的重做日志记录,其都可本地(在数据库层中)用于确保事务性。然而,不同于常规数据库系统,本文描述的系统可将对数据块应用改变的责任转移至存储系统(不是在数据库层应用它们以及将修改的数据块运送至存储系统)。此外,如本文在图8-9B所述,在各种实施方案中,在数据库系统处可避免系统范围检查点、连同从由于也可由存储系统执行的各种日志记录操作造成的数据库系统崩溃的快速恢复。
[0081]在不同的实施方案中,各种不同的分配模型可被实施用于SSD。例如,在一些实施方案中,日志条目页面和物理应用页面可从与SSD装置关联的单个堆的页面分配。这个方法可具有留下由日志页面和数据页面消耗的相对数量的存储的优点,以便保持未指定的以及自动适应使用。它也可具有允许页面保持未准备的,直到它们随意不用准备地使用和重新目的化的优点。在其他实施方案中,分配模型可将存储装置划分成用于日志条目和数据页面的独立空间。一旦此类分配模型由图6中的框图示出以及在以下描述。
[0082]图6为示出根据一个实施方案的可将数据和元数据存储在分布式数据库优化存储系统的给定存储节点(或持久存储装置)上的方式的框图。在这个实例中,SSD存储空间600将SSD标头和其他固定的元数据存储在标记610的空间的部分中。它将日志页面存储在标记620的空间的部分中,并且包括被初始化和保留用于附加日志页面的标记630的空间。SSD存储空间600的一部分(被示出为640)被初始化,但未分配,并且另一空间部分(被示出为650)未被初始化以及未分配。最终,标记660的SSD存储空间600的部分存储数据页面。
[0083]在这个实例中,第一可用日志页槽被指示成615,并且最后使用的日志页槽(短暂的)被指示成625。最后保留的日志页槽被指示成635,并且最后可用日志页槽被指示成645。在这个实例中,第一使用的数据页槽(短暂的)被指示成665。在一些实施方案中,在SSD存储空间600内的这些元件(615、625、635、645和665)中的每一个的位置可由各自的指针来识别。
[0084]在图6所示的分配方法中,有效日志页面可被包装至平坦存储空间的开始中。在使用地址空间中较远的附加的日志页槽之前,由于被释放的日志页面而打开的孔可再用。例如,在最坏的情况下,第一 η个日志页槽包含有效日志数据,其中η为已经同时存在的有效日志页面的最大数目。在这个实例中,有效数据页面可被包装至平坦存储空间的末端中。在使用地址空间中较低的附加的数据页槽之前,由于被释放的数据页面而打开的孔可再用。例如,在最坏的情况下,最后m个数据页面包含有效数据,其中m为已经同时存在的有效数据页面的最大数目。
[0085]在一些实施方案中,在日志页槽可变成潜在的有效日志页面条目组的部分之前,它可能需要被初始化至对于有效未来日志条目页面不可能为混乱的值。由于引退的日志页面具有足够的元数据以便对于新的有效日志页面为永不混乱的,对于循环的日志页槽这是含蓄真实的。然而,当存储装置被首先初始化时,或当潜在用于存储应用数据页面的空间被改造时,日志页槽可能需要在它们添加至日志页槽池之前被初始化。在一些实施方案中,再平衡/改造日志空间可能作为后台任务来执行。
[0086]在图6所示的实例中,当前日志页槽池包括在第一可用日志页槽(在615处)与最后保留的日志页槽(625)之间的区域。在一些实施方案中,这个池可安全增长至最后可用日志页槽(625),不用再初始化新的日志页槽(例如,通过持续对识别最后保留的日志页槽635的指针的更新)。在这个实例中,超过最后可用日志页槽(其由指针645识别),通过持续初始化的日志页槽,以及持续更新用于最后可用日志页槽的指针(645),所述池可增长至第一使用的数据页槽(其由指针665识别)。在这个实例中,被示出作为650的SSD存储空间600的先前未初始化和未分配的部分可被暂用以便存储日志页面。在一些实施方案中,通过持续对用于最后保留的日志页槽的指针(635)的更新,当前日志页槽池可向下收缩至最后使用的日志页槽(其通过指针来识别)的位置。
[0087]在图6所示的实例中,当前数据页槽池包括在最后可用日志页槽(其由指针645来识别)与SSD存储空间600的端部之间的区域。在一些实施方案中,通过持续对最后可用日志页槽的指针(645)的更新,数据页面池可安全增长至由最后保留的日志页槽的指针(635)识别的位置。在这个实例中,被示出为640的SSD存储空间600的先前未初始化但未分配的部分可被暂用以便存储日志页面。超过这个,通过持续对用于最后保留的日志页槽(635)和最后使用的日志页槽(645)的指针的更新,有效再分配SSD存储空间600的部分(被示出为630和640)以便存储数据页面而不是日志页面,所述池可安全增长至由最后使用的日志页槽的指针(625)识别的位置。在一些实施方案中,通过初始化附加的日志页槽和持续对最后可用日志页槽的指针¢45)的更新,数据页槽池可安全向下收缩至由第一使用的数据页槽的指针(665)识别的位置。
[0088]在采用图6所示的分配方法的实施方案中,用于日志页面池和数据页面池的页面大小可被独立挑选,同时仍促进良好的堆积性能。在此类实施方案中,可能不存在有效日志页面链接至由应用数据形成的欺骗日志页面的可能性,并且可能区分损坏的日志与链接至还未写入的下一页面的有效日志尾部。在采用图6所示的分配方法的实施方案中,在启动时,直到由最后保留的日志页槽的指针(635)识别的位置的所有日志页槽可迅速和相继地被读取,并且整个日志索引可被再构造(包括推测的链接和顺序)。在此类实施方案中,由于可从LSN排序约束推断一切,在日志页面之间可能不需要存在明确的链接。
[0089]在一些实施方案中,区段可包括三个主要部分(或区):包含热日志的一个、包含冷日志的一个、以及包含用户页面数据的一个。区不必要为SSD的连续区域。它们宁可以存储页面的间隔尺寸来散布。此外,可能存在用于每个区段的根页面,所述每个区段存储关于所述区段的元数据和它的性能。例如,用于区段的根页面可存储用于区段的用户页面大小、区段中的用户页面数目、热日志区的当前开始/头部(其可能以刷新数目的形式记录)、卷纪元、和/或访问控制元数据。
[0090]在一些实施方案中,热日志区可从客户端接受新的
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1