用于多个访问方法的无锁存、日志结构化的存储的制作方法

文档序号:9650615阅读:241来源:国知局
用于多个访问方法的无锁存、日志结构化的存储的制作方法
【专利说明】用于多个访问方法的无锁存、日志结构化的存储
[0001]
[0002]电子设备的用户常常需要访问数据库系统以获得各种类型的信息。许多不同的技术已被设计用于对数据项的存储和检索。例如,一些最近硬件平台利用最近硬件发展,如多核处理器、多级存储器分层结构以及辅助存储设备(如闪存),来力图提供更高性能。这提高了潜在的系统性能,但对系统而言,对新开发的平台方面以及常规平台方面作出高效使用是困难的。
[0003]概述
[0004]根据一个一般方面,一种系统可包括包含至少一个处理器的设备,该设备包括包含有形地体现在计算机可读存储介质上以供至少一个处理器执行的指令的数据管理器。数据管理器可包括配置成向任意选择的面向页的访问方法提供对页数据存储的接口访问的数据不透明接口,该接口访问包括对页数据存储的无锁存访问。
[0005]根据另一方面,一种系统可包括包含至少一个处理器的设备,该设备包括包含有形地体现在计算机可读存储介质上以供至少一个处理器执行的指令的数据管理器。数据管理器可包括配置成基于安置到映射表中的转储清除增量(Λ)记录的指针经由比较并交换(CAS)操作来将页状态转储清除到辅助存储的页管理器,转储清除增量记录被前缀到经由CAS操作在映射表中被替换的现有页状态。
[0006]根据另一方面,一种系统可包括包含至少一个处理器的设备,该设备包括包含有形地体现在计算机可读存储介质上以供至少一个处理器执行的指令的数据管理器。数据管理器可包括配置成基于以下操作来发起高速缓存层存储中的第一页到辅助存储中的位置的转储清除操作的页管理器:发起所述第一页的页状态到辅助存储缓冲区的复制,发起转储清除增量记录到所述页状态的前缀,所述转储清除增量记录包括指示所述第一页在辅助存储中的存储位置的辅助存储地址以及与调用者相关联的注释,以及基于将所述转储清除增量记录的地址安置在映射表中经由比较并交换(CAS)操作来发起对所述页状态的更新。
[0007]根据另一方面,一种系统可包括包含至少一个处理器的设备,该设备包括包含有形地包括在计算机可读存储介质上以供至少一个处理器执行的指令的数据管理器。数据管理器可包括配置成经由无锁存更新操作来控制对日志结构化辅助存储缓冲区的更新的缓冲区管理器。
[0008]根据另一方面,一种系统可包括包含至少一个处理器的设备,该设备包括包含有形地包括在计算机可读存储介质上以供至少一个处理器执行的指令的数据管理器。数据管理器可包括页管理器,所述页管理器被配置成基于发起部分交换增量记录到与第一页相关联的页状态的前缀,来发起高速缓存层存储中的所述第一页的一部分到辅助存储中的位置的交换操作,所述部分交换增量记录包括指示转储清除增量记录的存储位置的主存储器地址,所述转储清除增量记录指示所述第一页的丢失部分在辅助存储中的位置。
[0009]提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本
【发明内容】
并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。一个或多个实现的细节在以下的附图和说明书中阐述。其它特征将从描述和附图、以及权利要求书中显见。
[0010]MM
[0011]图1解说用于高速缓存/存储层的访问方法的示例体系结构分层。
[0012]图2是用于多种访问方法的无锁存、日志结构化存储的示例体系结构的框图。
[0013]图3示出示例映射表。
[0014]图4a_4b示出示例映射表上的示例增量更新。
[0015]图5描绘示例部分页换出以及示例部分交换增量。
[0016]图6示出各示例时期以及它们相应的垃圾收集列表。
[0017]图7a_7c示出了在闪存上的示例日志结构化存储组织。
[0018]图8描绘了示例转储清除缓冲区状态。
[0019]图9示出了示例事务模板。
[0020]图10示出了示例检查点数据。
[0021]图11是用于多种访问方法的无锁存、日志结构化存储的示例系统的框图。
[0022]图12a_12d是示出图11的系统的示例操作的流程图。
[0023]详细描沐
[0024]1.介绍
[0025]硬件平台的最近发展利用了多核处理器、多级存储器分层结构以及辅助存储设备(如闪存)来力图提供更高性能。例如,中央处理单元(CPU)变化包括了多核处理器以及涉及多级高速缓存的主存储器访问。例如,闪存存储和硬盘供应商认识到就地更新损害了容量,导致对日志结构化的增加的使用。例如,云数据中心提高了系统规模,且商用硬件的使用日益着重于高可用性技术。
[0026]然而,尽管潜在系统性能可能提高,但对系统而言,对这些最近平台方面作出高效使用是困难的。例如,支持多个用户访问大量数据的数据中心系统可能利用针对过去多年来它存在于其上的硬件来设计的软件体系结构(例如,它们可能以单处理器为目标,操作单级存储器(极少处理器高速缓存,且只具有对主存储器的适度等待时间),以及访问磁盘)。
[0027]改变该方法的努力已经改进了该环境,但继续遗漏了显著的潜在性能增益。例如,已经有努力来避免锁存,锁存在对数据的访问相冲突时造成阻塞;然而,这些努力可能涉及分区,使得各线程避免这样的冲突,这可引入显著开销。例如,就地更新数据可能对存储器性能产生负面影响,这可导致考虑高速缓存行对齐并使用逻辑树代替向量上的二分搜索。然而,继续存在不利数量的就地更新,这不利地影响处理器高速缓存性能,例如经由高速缓存无效。此外,各实现已开始利用闪存来用于其更高访问/辅助以及降低的访问等待时间。然而,随机更新可能是相对昂贵的,甚至使用闪存转换层。
[0028]J.Levandoski 等人的“Deuteronomy: Transact1n Support for CloudData (Deuteronomy:对云数据的事务支持)”,Conference on Innovative Data SystemsResearch(新数据系统研究会议)(CIDR) (2011年1月),第123-133页以及D.Lomet等人的 “Unbundling Transact1n Services in the Cloud (云中的分别处理事务服务)”,Conference on Innovative Data Systems Research (CIDR),2009 年,讨论了用于提供云环境中的一致性(即,事务)的示例技术。本文讨论的示例技术可集中于示例DEUTERONOMY数据组件(DC)以及在当前硬件上最大化其性能。例如,DC可以管理对经由CRUD(创建、读、更新、删除)原子操作访问的数据的存储和检索。例如,DC可以是非分布式的,代替使用可经由其上的软件层被合并到分布式系统的本地机制(例如,DEUTERONOMY事务组件(TC)和/或查询引擎)。
[0029]如本文进一步讨论的,看来存在由当前硬件提出的可能影响访问方法(例如,B树、散列、多属性、时间,等)的问题。此外,如本文讨论的,这些问题可以用适用于大多数(例如,任意选择的)访问方法的示例一般机制来解决。
[0030]例如,根据本文讨论的示例技术,无锁存技术可被用来达到有利的处理器利用以及针对多核处理器进行伸缩。例如,如本文讨论的,降低高速缓存无效的增量更新可被用来达到针对基于多级尚速缓存的存储器系统的有利性能。例如,与受限存储(其具有随机与的受限性能和闪存写限制)可经由日志结构化来被克服。
[0031]例如,BW树(参见例如 J.Levandoski 等人的 “The Bw-Tree: A B-tree for NewHardware Platforms (Bw_ 树:用于新硬件平台的 B 树)”,第 29 届 IEEE Internat1nalConference on Data Engineering(IEEE数据工程国际会议)(ICDE2013),2013年4月 8-11日,有点类似于B树(参见例如R.Bayer等人的“Organizat1n and Maintenance of LargeOrdered Indices (大型有序索引的组织和维护)”,Acta Informatica (Acta信息学),卷1,第 3 期,1972 年,第 173-189 页,以及 D.Comer 的 “The Ubiquitous B-tree (无所不在的 B 树)”,ACM Computing Surveys (ACM 计算综述)(CSUR),卷 11,第 2 期,1979 年 6 月,第121-137页)的索引,是可利用这些示例技术的DC或键-值存储的示例。示例BW树可涉及用于更一般地达成无锁存和日志结构化的技术的范例。根据本文讨论的示例技术,无锁存和日志结构技术可被实现在能支持多种访问方法的高速缓存/存储子系统中,有点类似于常规高速缓存/存储子系统可处理对被写回盘来作为就地更新的固定大小页的锁存访问。
[0032]根据本文讨论的示例技术,本文中可被称为LLAMA(无锁存、日志结构化访问方法知晓)的示例系统包括用于(至少)最近开发的硬件环境(例如,闪存、多核)的高速缓存和存储子系统,但数据处理领域的技术人员将理解,这样的示例技术不仅限于最近开发的硬件。
[0033]例如,LLAMA可以支持用于任意选择的面向页的访问方法的应用编程接口(API),该API提供高速缓存和存储管理两者,从而优化处理器高速缓存和辅助存储。例如,高速缓存(CL)和存储(SL)层可使用将页的逻辑和物理位置分开的共同映射表。例如,高速缓存层(CL)可经由其映射表上的无锁存比较并交换原子状态变化来支持数据更新和管理更新(例如,用于索引再组织)。
[0034]例如,存储层(SL)可以使用同一映射表来处理由每一页转储清除时的日志结构化所产生的页位置变化。例如,无锁存BW树实现(例如,使用BW树的实现,作为有序B树型索引的示例)可被使用。在这一上下文中,“转储清除”操作可以指通过将页复制到输出缓冲区来将该页从主存储器(例如,高速缓存存储)传送到辅助存储。
[0035]本文讨论的示例技术可以提供可将页的位置和大小两者虚拟化的映射表。例如,这样的虚拟化可被用于主存储器设计和稳定存储设计(例如,日志结构化的存储设计)两者,如本文进一步讨论的。
[0036]在这一上下文中,“页”可以指存储中的对象,这可以经由物理存储地址来访问。如本文所使用的,“页”可以与灵活的大小相关联,且可表示分布在多个不毗连地存储的存储段上的存储的页单位。存储可包括易失性和/或稳定存储。
[0037]本文讨论的示例技术可以将访问方法层与高速缓存/存储管理分开。作为示例,本文讨论的技术可被用来实施预写日志协议。例如,在将页转储清除之前,常规数据库内核可检查页日志序列号(LSN)来确定是否存在尚未被稳定在事务日志中的更新。例如,LLAMA高速缓存管理可以利用示例增量更新来“换出”部分页。例如,它可以从高速缓存丢弃该页的已存在于辅助存储(它不包括最近增量更新)上的那一部分。例如,访问方法层将定期转储清除以用于事务日志检查点。因而,高速缓存管理器将找出足够的候选(可能是部分)页来满足任何缓冲区大小约束。
[0038]本文讨论的示例技术可以提供允许大量访问方法(即,并非单个实例)通过实现提供这些技术的子系统层来利用这些技术的框架。此外,日志结构化存储可被实现以用于将数据写入提供有利效率的辅助存储。因此,访问方法可集中于其索引的主存储器方面,且本文讨论的示例技术可以提供该框架以用于达成与BW树的性能度量类似的性能度量。
[0039]例如,诸如LLAMA等技术通过其API可以提供无锁存页更新,这在主存储器中经由针对映射表的比较并交换(CAS)原子操作来实现。
[0040]例如,在管理高速缓存时,诸如LLAMA等技术可以通过仅丢弃从存储器中先前已转储清除的页部分来回收主存储器,因而不涉及任何输入/输出(I/O)操作,甚至在换出“脏”页时。因而,诸如LLAMA等技术可能够控制其缓冲区高速缓存存储器大小而无需来自其访问方法用户的输入。
[0041 ] 例如,为了高效地管理辅助存储,诸如LLAMA等技术可以利用日志结构化。例如,与常规日志结构化相比,诸如LLAMA等技术可以通过使用部分页转储清除以及具有基本上非空空间(即,基本上100%存储利用率)的页来改进性能。这些可以在将页转储清除时降低输入/输出操作(I/O)的数量以及每页消耗的存储量,并且因此可降低在使用日志结构化时体验到的写放大。此外,所有存储相关操作可以是完全无锁存的。
[0042]例如,诸如LLAMA等技术可以提供(至少)有限形式的系统事务。在这一意义上,系统事务不是用户级事务,而是相反,利用日志结构化存储来提供原子性,纯用于访问方法的“私有使用”(例如,对于索引结构修改(SM0))。例如,这可允许索引在并发更新继续的同时随着它们增加来适配。
[0043]例如,BW树结构可包括一种类型的无锁存B树结构。例如,对BW树节点的更新可以基于将更新增量前缀到先前页状态来执行。因而,BW树可以是无锁存的,因为它可允许多个线程对各页的并发访问。因为这样的增量更新保留了页的先前状态,所以它也可以提供经改进的处理器高速缓存性能。
[0044]使用BW树的示例技术可进一步提供也是无锁存且可采用B链路树型侧指针的页拆分技术。拆分(以及其他结构修改操作)可以是在主存储器内以及在稳定时两者情况下是原子的。例如,原子记录存储可以基于BW树体系结构来实现。
[0045]数据处理领域技术人员将明白,可存在许多完成本文讨论的无锁存和日志结构化存储的多种方式,而不背离本文讨论的精神。
[0046]I1.示例操作环境
[0047]在此讨论的特征被提供为可用数据处理领域的技术人员所理解的多种不同方式来实现,而不背离在此的讨论的精神。这样的特征被解释为仅为示例实施例特征,并且不旨在被解释为限制到仅为那些详细的描述。
[0048]图1解说用于高速缓存/存储层的访问方法的示例体系结构分层。访问方法层102是顶层,如图1所示。访问方法层102与作为中间层的高速缓存层104交互。应用编程接口(API) 106可被用于访问方法层102与高速缓存层104之间的活动。示例存储层108可以与映射表110交互,映射表110在高速缓存层104与存储层108之间共享。例如,LLAMA112包括高速缓存层104和存储层108。例如,存储层可以支持日志结构化闪存存储。根据本文讨论的示例技术,日志结构化存储可以管理闪存和盘存储两者。这一设计可在体系结构上兼容现有数据库内核,同时还适于作为独立或DEUTERONOMY型原子记录存储(ARS)。
[0049]例如,诸如LLAMA等技术可支持页抽象,从而支持针对高速缓存/存储层的访问方法实现。此外,事务组件(例如,DEUTERONOMY型事务组件)可被添加到顶部。图2是用于多种访问方法的无锁存、日志结构化存储的示例体系结构的框图。如图2所示,事务组件202可以支持事务键-值存储,且可与可包括原子键-值存储的数据组件204 —起操作。如图2所示,数据组件204可包括无锁存有序索引206和/或无锁存线性散列索引208。如图2所示,数据组件204可进一步包括示例无锁存、日志结构化的、访问方法知晓(LLAMA)的存储引擎210 (例如,图1的LLAMA 112)。
[0050]示例API 106可以是“数据不透明”的,意味着示
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1