CN111611223B - 非易失性数据的访问方法、系统、电子设备和介质 - Google Patents
非易失性数据的访问方法、系统、电子设备和介质 Download PDFInfo
- Publication number
- CN111611223B CN111611223B CN202010427533.3A CN202010427533A CN111611223B CN 111611223 B CN111611223 B CN 111611223B CN 202010427533 A CN202010427533 A CN 202010427533A CN 111611223 B CN111611223 B CN 111611223B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- terminal
- log
- cache
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种非易失性数据的访问方法和非易失性数据存储系统。该非易失性数据的访问方法,应用于第一终端,包括:从所述第一终端的缓存获取数据;对于未能从所述缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取;执行修改操作并刷新操作日志;基于刷新的操作日志生成并缓存内存日志;以及,将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端。这样,实现了更高吞吐量、灵活性、细粒度和可变大小的字节寻址访问。
Description
技术领域
本发明总体地涉及分布式数据存储领域,特别是涉及一种非易失性数据的访问方法和非易失性数据存储系统。
背景技术
新兴的非易失性内存模糊了内存和存储之间的界线。这些类型的存储器,例如Intel Optane DC、相变存储器(PCM)、自旋转移矩磁存储器(STTM)是字节可寻址的,并同时提供类似于DRAM的性能,高密度和持久性。为了发挥非易失性内存的潜力,现有的解决方案将非易失性内存直接连接到处理器,从而可以使用本地存储器上的加载和存储指令来实现持久性数据结构的高性能实现。
虽然通过本地内存访问非易失性内存提供了足够的性能,但由于非易失性内存不能够方便地在数据中心中共享,因此它不是数据中心中最合适的设置。由于非易失内存高密度的特性,它可以提供更大的容量,这可能会超出单个服务器的需求。在数据中心服务器中,资源利用率会比较低,比如Google的研究显示资源利用率平均低于40%。可预计持续的资源利用将遵循相同的趋势。
为了启用非易失性内存共享,Hotopt构建了一个分布式共享持久存储系统。该系统为集群提供了全局共享和持久的存储空间,在主存储器总线上,每台计算机都具有非易失性内存。此设置从本质上影响可用性,即,将非易失性内存设备连接到特定计算机后,当主机关闭时,其数据将不可用。解决此问题的一种方法是将数据复制到远程非易失性内存。但是,它需要完全复制本地内存中的数据结构,从而限制了工作集的大小。要访问复制的数据,对于每个操作,网络开销的下限至少是一个网络往返。
因此,期望提供一种改进的对于非易失性内存的数据访问方案。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种非易失性数据的访问方法和非易失性数据存储系统,其通过结合第一终端的缓存和操作/内存日志以远程直接内存读和写操作来访问第二终端的非易失内存,实现了更高吞吐量、灵活性、细粒度和可变大小的字节寻址访问。
根据本申请的一方面,提供了一种非易失性数据的访问方法,应用于第一终端,包括:从所述第一终端的缓存获取数据;对于未能从所述缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取;执行修改操作并刷新操作日志;基于刷新的操作日志生成并缓存内存日志;以及,将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端。
在上述非易失性数据的访问方法中,通过远程直接内存读从第二终端获取包括:通过远程直接内存读直接从所述第二终端读取冷数据。
在上述非易失性数据的访问方法中,通过远程直接内存读从第二终端获取包括:通过远程直接内存读交换热数据的页面;以所述页面在所述缓存中进行页面替换;以及,从所述缓存获取数据。
在上述非易失性数据的访问方法中,将所述页面存储在所述缓存中包括:选择所述页面中的一组随机的页面在所述缓存中进行页面替换;以及,从所述替换的页面中选择使用最少的页面进行丢弃。
在上述非易失性数据的访问方法中,基于刷新的操作日志生成并缓存内存日志包括:将所述内存日志中的实际数据替换为指向所述刷新的操作日志的指针;以及,以标记指示所述内存日志的数据/指针。
在上述非易失性数据的访问方法中,将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端包括:响应于所述修改操作成功执行了预定次数或者所述缓存已满,将所述缓存的内存日志和附加的事务提交标记通过远程直接内存写刷新到所述第二终端。
在上述非易失性数据的访问方法中,进一步包括:响应于确定所述第二终端发生故障,中止事务并清除缓存。
根据本申请的另一方面,提供了一种非易失性数据的访问方法,应用于第二终端,包括:从所述第一终端接收通过远程直接内存写刷新的内存日志;将所述刷新的内存日志写到非易失内存;以及,将所述非易失内存中的数据复制到镜像节点。
根据本申请的再一方面,提供了一种非易失性数据存储系统,包括:多个前端设备;以及,分布式的多个后端设备,每个后端设备包括非易失性内存,且可由所述多个前端设备中两个或者两个以上的前端设备共享;其中,所述多个前端设备中的每个前端设备根据如上所述的非易失性数据的访问方法访问所述多个后端设备中的两个或者两个以上的后端设备。
在上述非易失性数据存储系统中,所述多个后端设备包括至少一个与所述非易失性内存连接的、部署在不同机架的镜像节点。
在上述非易失性数据存储系统中,通过日志机制保证所述多个前端设备和所述多个后端设备中存储的非易失性数据和日志的崩溃一致性。
在上述非易失性数据存储系统中,所述分布式的多个后端设备被划分为多个密钥哈希分区,每个密钥哈希分区具有各自的写锁和索引数据结构。
根据本申请的又一方面,提供一种电子设备,包括:处理器;以及,存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如上所述的应用于第一终端的非易失性数据的访问方法或者如上所述的应用于第二终端的非易失性数据的访问方法。
根据本申请的又一方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被计算装置执行时,可操作来执行如上所述的应用于第一终端的非易失性数据的访问方法或者如上所述的应用于第二终端的非易失性数据的访问方法。
本申请提供的非易失性数据的访问方法和非易失性数据存储系统,通过结合第一终端的缓存和操作/内存日志以远程直接内存读和写操作来访问第二终端的非易失内存,实现了更高吞吐量、灵活性、细粒度和可变大小的字节寻址访问。
附图说明
从下面结合附图对本发明实施例的详细描述中,本发明的这些和/或其它方面和优点将变得更加清楚并更容易理解,其中:
图1图示了根据本申请实施例的非易失性内存存储结构的示意图。
图2图示了根据本申请实施例的应用于第一终端的非易失性数据的访问方法的流程图。
图3图示了根据本申请实施例的非易失性内存存储结构的工作流程的示意图。
图4图示了根据本申请实施例的应用于第二终端的非易失性数据的访问方法的流程图。
图5图示了根据本申请实施例的非易失性数据存储系统在单写多读模式下的性能示意图。
图6图示了根据本申请实施例的非易失性数据存储系统在不同缓存大小下的性能示意图。
图7图示了根据本申请实施例的应用于第一终端的非易失性数据的访问装置的框图。
图8图示了根据本申请实施例的应用于第二终端的非易失性数据的访问装置的框图。
图9图示了根据本申请实施例的电子设备的框图。
具体实施方式
下面,将参考附图详细描述根据本申请的示例实施例。显然,所描述的实施例仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解本申请不受这里描述的示例实施例的限制。
申请概述
如上所述,目前在非易失性内存的部署中,还存在一些挑战。并且,本申请的申请人发现,从本质上讲,这些挑战是由于大多数当前非易失性内存部署的对称性造成的。因此,为了从根本上克服这些缺点,本申请的申请人重新考虑了非易失性内存的部署,并提出了字节可寻址的非对称非易失性内存体系结构。其中,非易失性内存设备不与单个计算机关联,并且仅通过快速网络被动地访问字节级别。在非对称性的非易失性内存体系结构中,非易失性内存设备的数量可以比机器数量少得多,并且可以将它们安装在专用的服务器上来提供服务。
相应地,由于前端设备基于非对称性的非易失性内存体系结构来访问后端设备中的非易失性内存,需要相应的数据访问方法来进行非易失性内存中的数据的访问。
因此,本申请的基本构思是在前端设备中,以远程直接内存读从第二终端的非易失性内存获取缓存中未存储的数据,并在本地执行修改操作、刷新操作日志并生成和缓存内存日志,再以远程直接内存写操作来更新所述非易失性内存。
具体地,本申请提供的应用于第一终端的非易失性数据的访问方法首先从所述第一终端的缓存获取数据,再对于未能从所述缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取,然后执行修改操作并刷新操作日志,再基于刷新的操作日志生成并缓存内存日志,最后将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端。
并且,本申请提供的应用于第二终端的非易失性数据的访问方法,首先从所述第一终端接收通过远程直接内存写刷新的内存日志;然后将所述刷新的内存日志写到非易失内存,最后将所述非易失内存中的数据复制到镜像节点。
另外,本申请提供的非易失性数据存储系统包括多个前端设备以及分布式的多个后端设备,每个后端设备包括非易失性内存,且可由所述多个前端设备中两个或者两个以上的前端设备共享,其中,所述多个前端设备中的每个前端设备根据如上所述的非易失性数据的访问方法访问所述多个后端设备中的两个或者两个以上的后端设备。
在本申请提供的非易失性数据存储系统及其数据访问方法中,非对称性非易失性内存可以部署在基于直接远程内存访问技术的机架规模数据中心中,并通过单边通信来减少后端服务器的CPU资源占用。从而解决了块访问接口作为用于细粒度访问数据的网络附加存储导致了读写放大的问题。
在本申请提供的非易失性数据存储系统及其数据访问方法中,非易失性内存设备的数目可以比前端设备的数目小得多,从而可以仅将它们附加到几个专门的后端服务器上,因此,非易失性内存设备可以由多个前端设备共享,并且这些前端设备的内存空间比非易失性内存设备的容量小得多。
与对称式的非易失性内存存储结构相比,本申请提供的非易失性数据的访问方法和非易失性数据存储系统具有如下优点:
1)能够共享非易失性内存资源,并且可以确保多个后端的可用性,由于具有更简单的后端,可靠性更高。
2)由于前端设备和后端设备解耦,前端设备可以一直以接近100%的CPU占用率运行,后端只会产生非常小的CPU占用率,大概4%10%,即,后端设备几乎没有计算开销,并且由于简单性可以使后端更加可靠,并且能够支持许多前端。
3)通过结合缓存,与简单的直接使用远程直接内存访问技术来访问后端的非易失内存的方案相比,可以提供近6倍到22倍的性能提升。
4)本申请实施例可以通过交易基准评估应用程序性,例如,采用两个交易基准,SmallBank和TATP,分别使用哈希表和B+树作为SmallBank和TATP的索引数据结构,结果表明在SmallBank中吞吐量提高到1.42倍,在TATP中吞吐量提高到12.5倍。
在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。
示意性存储结构
图1图示了根据本申请实施例的非易失性内存存储结构的示意图。
如图1所示,后端设备在其内存总线上连接了非易失性内存(NVM),该非易失性内存与CPU/FPGA/ASIC等处理器连接。前端设备可以配置有高速和易失性的DRAM。当前端设备需要操作非易失性内存中的数据结构时,只能通过RNIC(远程直接内存访问网卡)经由单边远程直接内存访问(RDMA)来访问后端设备。这里,单边RDMA具有低延迟和旁路特性。
在本申请实施例中,所述前端设备和所述后端设备通常是应用于数据中心中的不同类型的服务器,由于RDMA需要专用的交换机和网卡,其通常不应用于一般的诸如智能手机或者家用计算机等终端设备。当然,本领域技术人员可以理解,本申请实施例中的前端设备和后端设备可以是任意能够进行RDMA的终端设备,比如应用于其它数据服务的服务器等。
具体地,虽然在图1中未示出,在根据本申请实施例的非易失性内存存储结构中,前端设备与后端设备之间的关系是“多对多”,即,前端设备可以访问多个后端设备,并且后端设备也可以由多个前端设备共享。并且,后端可以具有至少一个镜像设备,该镜像设备可以是非易失性存储设备(如SSD,磁盘或非易失性内存)。并且,为了提高容错能力,可以将镜像设备部署到不同的机架。
在提交事务并确认前端设备之前,后端设备将内存日志/操作日志复制到镜像设备,以避免高开销。如果镜像设备配备了非易失性内存,则镜像设备也可以使用日志重播功能,以将日志应用于复制的数据结构。镜像设备中的复制日志可以是只读的。当后端设备崩溃时,如果镜像设备装备了非易失性内存,则它可以被选为新的后端设备。否则,前端设备将使用镜像设备中的日志和数据结构将数据结构恢复到新的后端设备。在一种可能的实现中,后端设备负责确保副本在其镜像设备中是持久的,前端设备只需要确保数据存储在后端设备的非易失性内存中,而无需在复制完成后等待确认。因此,复制阶段是异步执行的。
在根据本申请实施例的非易失性内存存储结构中,通过日志机制来确保前端设备与后端设备中存储的非易失性数据和日志的崩溃一致性。例如,可以使用基于共识的投票系统来检测设备故障。副本实例需要在至少三个其他设备上运行。此外需要使用租约标识节点是否仍处于活动状态。如果租约到期且该设备无法续签其租约,则该设备被视为已崩溃。可以将该过程称之为保活服务。接下来,将讨论不同的崩溃情况。
情况1:前端设备读操作时崩溃。如果前端设备在执行读取时崩溃,则需要通过命名机制获取元数据并在重启后恢复执行。
情况2:前端设备写操作时崩溃。如果前端设备在执行写操作时崩溃,则后端设备将通过保活服务知道此信息。前端设备重新引导后,如果仍然存在未从前端设备重播的内存日志,则后端设备将验证是否通过校验和将上次事务的所有日志条目刷新到非易失性内存。如果此事务日志一致(情况2.a),则后端将通知前端恢复正常(情况1)。否则(情况2.b),后端设备将通知前端设备最后一个事务日志不一致。因此,前端设备将获取未重播其内存日志的LPN,OPN和操作日志,然后重新执行未提交的事务。(情况2.c)在大多数情况下,有几个操作日志,其相应的内存日志尚未刷新到后端设备。则前端设备将按照情况2.b进行处理。
情况3:后端瞬态故障。当后端在执行RDMA_写/读操作时发生故障时,前端设备可以通过网卡的反馈检测到该故障。然后前端设备将等待后端设备恢复或新的后端设备的通知。重新启动后,后端设备将首先重建物理地址和虚拟地址之间的映射。映射存储在非易失性内存中,并且通过全局寻址模式进行恢复,之后后端设备检查最后一个事务日志是否一致。如果没有剩余的事务/操作日志,或者事务日志是一致的(情况3.a),则后端设备可以立即开始其正常执行。如果事务日志不一致(情况3.b),则前端设备一定没有收到持久确认,则后端设备将通知相应的前端设备,并且前端设备将再次刷新内存日志以重做此事务。如果现有操作日志位于当前内存日志之前(情况3.c),这意味着由于批处理尚未从前端设备清除内存日志,后端设备将通知前端设备,而前端设备将在通知结束后继续执行下一个操作。
情况4:后端永久性故障。在这种情况下,其中一个镜像设备将被选为新的后端设备,并为前端设备提供服务。新的后端设备将广播通知消息到正常工作的前端设备。之后,前端设备将使用数据将数据结构重建到新的后端设备并登录到镜像设备。
情况5:镜像设备崩溃。基于共识的服务将检测到故障并将镜像设备从组中删除。
如果前端设备和后端设备都崩溃,则保活服务会协调前端设备和后端设备,并让后端设备首先恢复。将首先像情况2一样检查状态。然后,前端设备将根据情况1中的后端设备故障情况确定如何恢复。
下面,将继续说明根据本申请实施例的非易失性内存存储结构的工作流程。
示意性方法
图2图示了根据本申请实施例的应用于第一终端的非易失性数据的访问方法的流程图。
如图2所示,根据本申请实施例的于第一终端的非易失性数据的访问方法包括如下步骤。
步骤S110,从所述第一终端的缓存获取数据。这里,所述第一终端是如上所述的前端设备,其可以包括比如高速和易失性的DRAM作为缓存,但是不包括非易失性内存,因此,如果要进行非易失性内存中的非易失性数据的访问,即,读和写,需要访问包括非易失性内存的第二终端。另外,在本申请实施例中,为了减少第一终端对第二终端的远程直接内存访问操作的数目,优先从所述缓存中获取数据。
图3图示了根据本申请实施例的非易失性内存存储结构的工作流程的示意图。
如图3所示,在根据本申请实施例的非对称性非易失性内存存储结构中,可以将每个操作分为两部分,收集数据和应用修改。在本申请中,使用术语“收集“和“修改”来解释包括批处理和缓存在内的整体流程,其中可能涉及多次读/写。批处理可以一起执行多个操作,并合并内存日志以减少远程直接内存写和远程直接内存读操作的数量。此外,如上所述,缓存将在收集阶段减少远程直接内存读操作的数量。它们适用于所有数据结构。
步骤S120,对于未能从所述缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取。
也就是,在步骤S110中,尽可能从所述第一设备的缓存中获取数据,如图3的①。如果可以从缓存中获取数据,则认为缓存命中。而如果未命中缓存,则通过使用远程直接内存读直接从后端设备读取数据,如图3的③,或者通过远程直接内存读交换相应的页面并将其替换到前端设备的缓存中,如图3的②。并且,在完成页面替换后,将从前端缓存中读取数据①。
另外,图3中的③或者②的选择取决于特定的数据结构,并遵循以下原则:对热数据使用交换②,对冷数据使用远程直接内存读③。与冷数据(例如B+树的叶子结点)相比,热数据(例如B+树的根节点)的访问频率更高。在持久性上,使用内存屏障之后的读取将需要等到内存日志记录之后,数据才能确保在后端设备中持久存在。
因此,在根据本申请实施例的非易失性数据的访问方法中,通过远程直接内存读从第二终端获取包括:通过远程直接内存读直接从所述第二终端读取冷数据。
并且,在上述非易失性数据的访问方法中,通过远程直接内存读从第二终端获取包括:通过远程直接内存读交换热数据的页面;以所述页面在所述缓存中进行页面替换;以及,从所述缓存获取数据。
这里,在本申请实施例中,在所述第一终端缓存数据时,可以采用结合了LRU(最近最少使用)和RR(随机替换)的缓存替换策略。因为LRU在选择热数据时效果很好,但是其实现成本很高,而RR易于实现,但不能提供任何保留热点数据的保证。因此,使用一种结合的方法,即先选择一组随机的页面进行替换,然后从该页面中选择使用最少的页面以进行丢弃。经过验证,使用Zipf分配工作负载时,当数据集的大小为32直接时,如上所述的缓存替换策略可以将丢失率比RR(62.7%)降低33.5%,即达到29.2%,可以获得与LRU相似的丢失率,并且吞吐量提高近27.5%。
因此,在上述非易失性数据的访问方法中,将所述页面存储在所述缓存中包括:选择所述页面中的一组随机的页面在所述缓存中进行页面替换;以及,从所述替换的页面中选择使用最少的页面进行丢弃。
步骤S130,执行修改操作并刷新操作日志。如图3所示,在应用修改时,每个修改操作都会刷新一个操作日志,并且操作日志除了在前端设备刷新以外,也要刷新到后端设备以进行恢复,如图3的(+)所示。具体地,格式为{插入操作(insert_op),秘钥(key),值(value)}的操作日志,将被放置在后端设备的操作日志域中。
步骤S140,基于刷新的操作日志生成并缓存内存日志。在刷新操作日志之后,生成例如格式为{地址(address),数据(data)}的内存日志。在本申请示例中,内存日志不立即刷入远端设备的非易失性内存。替代地,将内存日志中的实际数据替换为指向先前刷新的操作日志的指针,以减少数据写入的大小,该数据/指针由内存日志的“标记”指示。这样,保证将操作日志存储在后端之后,数据结构修改是持久的且可恢复的。在刷新内存日志时,如果存在缓存的数据,将对缓存的数据进行相应的修改,如图3的④所示。
也就是,在根据本申请实施例的非易失性数据的访问方法中,基于刷新的操作日志生成并缓存内存日志包括:将所述内存日志中的实际数据替换为指向所述刷新的操作日志的指针;以及,以标记指示所述内存日志的数据/指针。
步骤S150,将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端。如果成功执行了许多操作,或者缓冲区已满,则将缓冲的内存日志以及附加的事务提交标记也将通过远程直接内存写刷新到后端设备的非易失性内存,如图3的⑤所示。然后,这些日志由后端设备处理,如图3的⑥所示,并复制到镜像节点,如图3的⑦所示。
如上所述,如果后端设备发生故障,则前端设备处理异常,中止事务,例如内存日志的刷新,远程直接内存读操作等,并清除缓存。
在本申请实施例中,当存在多个后端设备时,多个后端设备可以一致地管理元数据。并且,在本申请实施例中,远程直接内存访问技术提供几个原子动词,以确保对于关键元数据的任何更新都是原子的。例如,可以将远程直接内存访问的原子操作应用于关键元数据,例如64位的数据结构的根指针,使得保证关键元数据的原子性。此外,由于后端设备的非易失性内存的非易失性,如果在单个远程直接内存写操作期间后端设备崩溃,则数据可能会损坏,可以通过校验来实现数据完整性。
因此,在根据本申请实施例的非易失性数据的访问方法中,将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端包括:响应于所述修改操作成功执行了预定次数或者所述缓存已满,将所述缓存的内存日志和附加的事务提交标记通过远程直接内存写刷新到所述第二终端。
并且,在上述非易失性数据的访问方法中,进一步包括:响应于确定所述第二终端发生故障,中止事务并清除缓存。
图4图示了根据本申请实施例的应用于第二终端的非易失性数据的访问方法的流程图。
如图4所示,根据本申请实施例的应用于第二终端的非易失性数据的访问方法包括步骤:S210,从所述第一终端接收通过远程直接内存写刷新的内存日志,即如图3的⑤所示;S220,将所述刷新的内存日志写到非易失性内存,即如图3的⑥所示;和S230,将所述非易失内存中的数据复制到镜像节点,即如图3的⑦所示。
在本申请实施例中,为了支持甚至大于单个后端设备中的非易失性内存容量的数据结构,可以采用跨多个后端设备的分布式数据结构,每个后端设备作为一个分区。使用分区可以消除由于锁导致的潜在性能瓶颈,以实现高吞吐量和更好的可扩展性。另外,可以采用密钥哈希分区来提高各种数据结构的性能,即每个分区都有自己的写锁和索引数据结构。当写程序在一个分区中执行写操作时,多个读程序仍可以并发访问其他分区。当前端设备执行数据结构操作时,首先使用密钥哈希定位适当的后端设备,并且处理类似于单个后端设备的方案。这些键的范围和分区之间的映射表可以存储在全局命名空间中以进行恢复。
此外,由于树状数据结构具有层次结构,在本申请实施例中,还可以针对特定树状数据结构进行优化。与较低级别的节点相比,较高级别(接近根)的节点的访问频率更高。因此,可以以更高的优先级来缓存更高级别的节点。具体来说,在前端设备设置阈值N,并且级别大于N的节点将不被缓存,将通过远程直接内存读访问。根据高速缓存未命中率α,即,如果α>50%,则N=N-1动态地调整N,而如果α<25%,则N=N+1。否则,N保持不变。如果采用LRU算法,因为以相同的方式处理较高级别的节点和较低级别的节点,会频繁发生高速缓存未命中,上述机制与LRU相比,提供了“提示”来缓存热数据。
综上所述,在根据本申请实施例的非易失性数据的访问方法中,1)以部分本地读写操作来替换远程直接内存读写操作,可以提高性能,并减少网络延迟。2)充分利用前端设备的较小的易失性内存,在前端设备保留数据结构的完整副本可以提供最佳性能。3)提供简单可靠有效的后端设备接口,具体地,后端设备仅需要支持少量逻辑简单接口,例如远程内存读/写/分配/释放,锁获取/释放等。
示意性存储系统
根据本申请实施例,提供了一种非易失性数据存储系统,包括:多个前端设备;以及,分布式的多个后端设备,每个后端设备包括非易失性内存,且可由所述多个前端设备中两个或者两个以上的前端设备共享;其中,所述多个前端设备中的每个前端设备根据如上所述的非易失性数据的访问方法访问所述多个后端设备中的两个或者两个以上的后端设备。
在一个示例中,在上述非易失性数据存储系统中,所述多个后端设备包括至少一个与所述非易失性内存连接的、部署在不同机架的镜像节点。
在一个示例中,在上述非易失性数据存储系统中,通过日志机制保证所述多个前端设备和所述多个后端设备中存储的非易失性数据和日志的崩溃一致性。
在一个示例中,在上述非易失性数据存储系统中,所述分布式的多个后端设备被划分为多个密钥哈希分区,每个密钥哈希分区具有各自的写锁和索引数据结构。
这里,本领域技术人员可以理解,根据本申请实施例的非易失性数据存储系统的其它细节与之前在“示意性方法”部分中描述的根据本申请实施例的非易失性数据的访问方法中的相应细节完全相同,为了避免冗余便不再赘述。
经过测试,根据本申请实施例的非易失性数据存储系统在单写多读模式下,即,使用多个读取器和一个写入器来测试非易失性数据存储系统的可伸缩性,随着前端设备的数量的增加,读写表现可以很好地扩展。图5图示了根据本申请实施例的非易失性数据存储系统在单写多读模式下的性能示意图。如图5所示,当使用基于锁的二叉搜索树,6个读者机器(即,读取器)的平均吞吐量比仅1个读者机器的平均吞吐量低26%,而对于多版本二叉搜索树,性能下降约8%。
另外,在不同的批处理参数下,将该批处理参数从1调节到4096,根据本申请实施例的非易失性数据存储系统对于多版本二叉搜索树的性能可以提高3.38倍,对于多版本B+树的性能可以提升约为3.13倍。另外,对于二叉搜索树,B+树和跳表的性能可以分别提升126%,139%和63%。因为多版本数据结构需要执行路径复制,会导致许多写入操作,而批处理可以有效地减少这种开销。
此外,图6图示了根据本申请实施例的非易失性数据存储系统在不同缓存大小下的性能示意图。如图6所示,根据本申请实施例的非易失性数据存储系统在不同缓存大小下,吞吐量随着缓存大小的增加而增加。另外,如果对树状数据结构的特殊优化而进行改进,结果表明,使用本地LRU策略(通过前端缓存访问包括低层节点的任何数据)时,B+树只能达到42.5KOPS,比AsymNVM低44%。
示意性装置
图7图示了根据本申请实施例的应用于第一终端的非易失性数据的访问装置的框图。
如图7所示,根据本申请实施例的应用于第一终端的非易失性数据的访问装置300包括:获取单元310,用于从所述第一终端的缓存获取数据;读取单元320,用于对于未能从所述缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取;修改单元330,用于执行修改操作并刷新操作日志;缓存单元340,用于基于刷新的操作日志生成并缓存内存日志;以及,刷新单元350,用于将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端。
在一个示例中,在上述非易失性数据的访问装置中,所述读取单元320用于:通过远程直接内存读直接从所述第二终端读取冷数据。
在一个示例中,在上述非易失性数据的访问装置中,所述读取单元320用于:通过远程直接内存读交换热数据的页面;以所述页面在所述缓存中进行页面替换;以及,从所述缓存获取数据。
在一个示例中,在上述非易失性数据的访问装置中,所述读取单元320将所述页面存储在所述缓存中包括:选择所述页面中的一组随机的页面在所述缓存中进行页面替换;以及,从所述替换的页面中选择使用最少的页面进行丢弃。
在一个示例中,在上述非易失性数据的访问装置中,所述缓存单元340用于:将所述内存日志中的实际数据替换为指向所述刷新的操作日志的指针;以及,以标记指示所述内存日志的数据/指针。
在一个示例中,在上述非易失性数据的访问装置中,所述刷新单元350用于:响应于所述修改操作成功执行了预定次数或者所述缓存已满,将所述缓存的内存日志和附加的事务提交标记通过远程直接内存写刷新到所述第二终端。
在一个示例中,在上述非易失性数据的访问装置中,进一步包括:清除单元,用于响应于确定所述第二终端发生故障,中止事务并清除缓存。
图8图示了根据本申请实施例的应用于第二终端的非易失性数据的访问装置的框图。
如图8所示,根据本申请实施例的应用于第二终端的非易失性数据的访问装置400包括:接收单元410,用于从所述第一终端接收通过远程直接内存写刷新的内存日志;写入单元420,用于将所述刷新的内存日志写到非易失内存;以及,复制单元430,用于将所述非易失内存中的数据复制到镜像节点。
这里,本领域技术人员可以理解,上述应用于第一终端的非易失性数据的访问装置300和应用于第二终端的非易失性数据的访问装置400中的各个单元和模块的具体功能和操作已经在上面参考图1到图4描述的非易失性数据的访问方法中详细介绍,并因此,将省略其重复描述。
如上所述,根据本申请实施例的非易失性数据的访问装置300和400可以实现在各种终端设备中,例如用于分布式数据存储的存储服务器上。在一个示例中,根据本申请实施例的非易失性数据的访问装置300和400可以作为一个软件模块和/或硬件模块而集成到所述终端设备中。例如,该非易失性数据的访问装置300和400可以是该终端设备的操作系统中的一个软件模块,或者可以是针对于该终端设备所开发的一个应用程序;当然,该非易失性数据的访问装置300和400同样可以是该终端设备的众多硬件模块之一。
替换地,在另一示例中,该非易失性数据的访问装置300和400与该终端设备也可以是分立的终端设备,并且该非易失性数据的访问装置300和400可以通过有线和/或无线网络连接到该终端设备,并且按照约定的数据格式来传输交互信息。
示意性电子设备
下面,参考图9来描述根据本申请实施例的电子设备。
图9图示了根据本申请实施例的电子设备的框图。
如图9所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓存存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的非易失性数据的访问方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如操作日志、内存日志等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,该输入装置13可以是例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括访问数据等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图9中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示意性计算机程序产品
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的应用于第一终端和第二终端的非易失性数据的访问方法的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“,还语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的应用于第一终端和第二终端的非易失性数据的访问方法的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (12)
1.一种非易失性数据的访问方法,应用于第一终端,其特征在于,包括:
从所述第一终端的缓存获取数据;
对于未能从所述缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取;
执行修改操作并刷新操作日志;
基于刷新的操作日志生成并缓存内存日志;以及
将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端,
通过远程直接内存读从第二终端获取包括:通过远程直接内存读直接从所述第二终端读取冷数据,
通过远程直接内存读从第二终端获取包括:通过远程直接内存读交换热数据的页面;以所述页面在所述缓存中进行页面替换;以及从所述缓存获取数据。
2.根据权利要求1所述的非易失性数据的访问方法,其特征在于,将所述页面存储在所述缓存中包括:
选择所述页面中的一组随机的页面在所述缓存中进行页面替换;以及
从所述替换的页面中选择使用最少的页面进行丢弃。
3.根据权利要求1所述的非易失性数据的访问方法,其特征在于,基于刷新的操作日志生成并缓存内存日志包括:
将所述内存日志中的实际数据替换为指向所述刷新的操作日志的指针;
以标记指示所述内存日志的数据/指针。
4.根据权利要求1所述的非易失性数据的访问方法,其特征在于,将所述缓存的内存日志通过远程直接内存写刷新到所述第二终端包括:
响应于所述修改操作成功执行了预定次数或者所述缓存已满,将所述缓存的内存日志和附加的事务提交标记通过远程直接内存写刷新到所述第二终端。
5.根据权利要求4所述的非易失性数据的访问方法,其特征在于,进一步包括:
响应于确定所述第二终端发生故障,中止事务并清除缓存。
6.一种非易失性数据的访问方法,应用于第二终端,其特征在于,包括:
从第一终端接收通过远程直接内存写刷新的内存日志;
将所述刷新的内存日志写到非易失内存;以及
将所述非易失内存中的数据复制到镜像节点,
所述第一终端对于未能从自己的缓存获取的数据,通过远程直接内存读从第二终端的非易失内存获取,通过远程直接内存读从第二终端获取包括:通过远程直接内存读直接从所述第二终端读取冷数据,以及通过远程直接内存读从第二终端获取包括:通过远程直接内存读交换热数据的页面;以所述页面在所述缓存中进行页面替换;以及从所述缓存获取数据。
7.一种非易失性数据存储系统,其特征在于,包括:
多个前端设备;以及
分布式的多个后端设备,每个后端设备包括非易失性内存,且可由所述多个前端设备中两个或者两个以上的前端设备共享;
其中,所述多个前端设备中的每个前端设备根据如权利要求1到6中任意一项所述的非易失性数据的访问方法访问所述多个后端设备中的两个或者两个以上的后端设备。
8.根据权利要求7所述的非易失性数据存储系统,其特征在于,所述多个后端设备包括至少一个与所述非易失性内存连接的、部署在不同机架的镜像节点。
9.根据权利要求7所述的非易失性数据存储系统,其特征在于,通过日志机制保证所述多个前端设备和所述多个后端设备中存储的非易失性数据和日志的崩溃一致性。
10.根据权利要求7所述的非易失性数据存储系统,其特征在于,所述分布式的多个后端设备被划分为多个密钥哈希分区,每个密钥哈希分区具有各自的写锁和索引数据结构。
11.一种电子设备,包括:
处理器;以及,
存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如权利要求1到5中任意一项的应用于第一终端的非易失性数据的访问方法或者如权利要求6所述的应用于第二终端的非易失性数据的访问方法。
12.一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被计算装置执行时,可操作来执行如权利要求1到5中任意一项的应用于第一终端的非易失性数据的访问方法或者如权利要求6所述的应用于第二终端的非易失性数据的访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010427533.3A CN111611223B (zh) | 2020-05-20 | 2020-05-20 | 非易失性数据的访问方法、系统、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010427533.3A CN111611223B (zh) | 2020-05-20 | 2020-05-20 | 非易失性数据的访问方法、系统、电子设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611223A CN111611223A (zh) | 2020-09-01 |
CN111611223B true CN111611223B (zh) | 2023-09-26 |
Family
ID=72200420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010427533.3A Active CN111611223B (zh) | 2020-05-20 | 2020-05-20 | 非易失性数据的访问方法、系统、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611223B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312300B (zh) * | 2021-06-17 | 2024-05-03 | 上海天玑科技股份有限公司 | 一种融合数据传输和存储的非易失内存缓存方法 |
CN115827660B (zh) * | 2023-02-14 | 2023-05-12 | 本原数据(北京)信息技术有限公司 | 数据更新方法、装置、电子设备及非易失性存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
CN111078607A (zh) * | 2019-12-24 | 2020-04-28 | 上海交通大学 | 面向rdma与非易失性内存的网络访问编程框架部署方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10009438B2 (en) * | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
US9619270B2 (en) * | 2015-06-27 | 2017-04-11 | Vmware, Inc. | Remote-direct-memory-access-based virtual machine live migration |
US10977193B2 (en) * | 2018-08-17 | 2021-04-13 | Oracle International Corporation | Remote direct memory operations (RDMOs) for transactional processing systems |
-
2020
- 2020-05-20 CN CN202010427533.3A patent/CN111611223B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
CN111078607A (zh) * | 2019-12-24 | 2020-04-28 | 上海交通大学 | 面向rdma与非易失性内存的网络访问编程框架部署方法及系统 |
Non-Patent Citations (1)
Title |
---|
一种分布式持久性内存文件系统的一致性机制;陈波 等;计算机研究与发展(第03期);204-211 * |
Also Published As
Publication number | Publication date |
---|---|
CN111611223A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360863B2 (en) | Key-value store on persistent memory | |
KR101764897B1 (ko) | 데이터베이스 엔진 및 개별 분산 저장 서비스를 갖는 데이터베이스 시스템 | |
KR101833114B1 (ko) | 분산 데이터베이스 시스템들을 위한 고속 장애 복구 | |
KR101827239B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
US6996674B2 (en) | Method and apparatus for a global cache directory in a storage cluster | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
US8074014B2 (en) | Storage systems using write off-loading | |
US20050203961A1 (en) | Transaction processing systems and methods utilizing non-disk persistent memory | |
EP2879040B1 (en) | Data storage method, data storage apparatus, and storage device | |
US20090327608A1 (en) | Accelerated resume from hibernation in a cached disk system | |
CN110196818B (zh) | 缓存数据的方法、缓存设备和存储系统 | |
US11611617B2 (en) | Distributed data store with persistent memory | |
US20160291881A1 (en) | Method and apparatus for improving disk array performance | |
WO2014011481A1 (en) | Solid state drives as a persistent cache for database systems | |
JP2006155623A (ja) | データベースクラスタリカバリ方法及び装置 | |
CN111611223B (zh) | 非易失性数据的访问方法、系统、电子设备和介质 | |
CN113220729A (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
US11288237B2 (en) | Distributed file system with thin arbiter node | |
US20110276776A1 (en) | Addressing for Huge Direct-Mapped Object Systems | |
US20050203974A1 (en) | Checkpoint methods and systems utilizing non-disk persistent memory | |
US11983438B2 (en) | Technique for improving operations log indexing | |
CN113031876A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN112748865B (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
US11886728B2 (en) | Undo capability for memory devices | |
US11237925B2 (en) | Systems and methods for implementing persistent data structures on an asymmetric non-volatile memory architecture |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |