CN108694231A - 使用nvm并通过多个日志记录缓冲器来预写式日志记录 - Google Patents
使用nvm并通过多个日志记录缓冲器来预写式日志记录 Download PDFInfo
- Publication number
- CN108694231A CN108694231A CN201810321921.6A CN201810321921A CN108694231A CN 108694231 A CN108694231 A CN 108694231A CN 201810321921 A CN201810321921 A CN 201810321921A CN 108694231 A CN108694231 A CN 108694231A
- Authority
- CN
- China
- Prior art keywords
- timestamp
- daily record
- nvm
- time
- record data
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 83
- 238000003860 storage Methods 0.000 claims abstract description 91
- 230000001360 synchronised effect Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000011010 flushing procedure Methods 0.000 claims abstract description 11
- 238000013500 data storage Methods 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 55
- 230000015654 memory Effects 0.000 claims description 15
- 230000004888 barrier function Effects 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 8
- 230000014759 maintenance of location Effects 0.000 claims description 4
- 238000004080 punching Methods 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 3
- 230000009977 dual effect Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000002688 persistence Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 125000004122 cyclic group Chemical group 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Abstract
公开了使用NVM并通过多个日志记录缓冲器来预写式日志记录。一种使用NVM并通过多个日志记录缓冲器来预写式日志记录的示例系统包括被耦接到来自一个或多个客户端应用程序的一个或多个控制器的处理单元。该示例还包括基于预定时间戳范围来接收多个第一日志数据线程的多个日志记录缓冲器,其中每个日志记录缓冲器存储来自多个时间戳日志数据线程的单个第一时间戳日志数据线程。该示例还包括将来自多个日志记录缓冲器的多个第一时间戳日志数据线程冲洗为第一时间戳日志数据的冲洗器。冲洗器将第一时间戳日志数据存储到NVM以构建经过冲洗的时间戳日志数据。该示例还包括用于以时间戳顺序次序来将经过冲洗的时间戳日志数据从NVM同步到HD设备的同步器。
Description
背景技术
针对恢复算法存在有不同的方法。例如,卷影复制机制(shadow copy mechanism)通过将数据写入新位置、将数据同步到磁盘并且然后原子性地更新指针以指向该新位置来进行工作。对于大对象而言,卷影复制可以较好的工作,但是由于碎片和磁盘搜索,卷影复制将会导致大量的开销。另一示例是预写式日志记录(Write-Ahead Logging,WAL),它提供了就地更新式变更:在就地更新之前将重做和/或撤消日志条目写入到日志,以便在发生崩溃时可以重做或撤消。
在计算机科学中,WAL是用于在数据库系统中提供原子性(atomicity)和持久性的一系列技术。在使用WAL的系统中,所有修改都会在其被应用之前被写入日志。WAL的目的可以在下面的示例中被说明。该示例包括在运行中的机器断电时处于执行某些操作的过程中的程序。重新启动后,程序可能需要知道它正在执行的操作是否已成功。如果WAL被启用,则程序可以检查WAL日志并且对在机器意外断电时应该是在做什么与实际已完成了什么进行比较。基于先前的比较,程序可以决定撤消已经开始的内容、完成已经开始的内容、或者保持原样。
附图说明
与以下结合附图的详细描述相结合,可以更全面地理解本申请,其中相同的附图标记始终表示相同的部分,并且其中:
图1是示出使用非易失性存储器(NVM)并通过多个日志记录缓冲器来进行预写式日志记录的系统示例的框图。
图2是示出使用NVM和元数据存储装置并通过多个日志记录缓冲器来进行预写式日志记录的系统示例的框图。
图3是使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的示例的流程图。
图4是用于经由NV段、使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的示例的流程图。
图5是示出使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的另一系统示例的框图。
具体实施方式
在要求显著持久性的各种示例(例如数据库管理系统(DBMS))中,WAL是中心组件。WAL与许多其他数据结构不同,原因在于:针对附加到端操作(append-to-end operation)以及顺序回读(例如扫描)操作,WAL被高度优化。WAL的更好性能允许在数据库事务的提交中降低延迟。
WAL日志可以被存储在诸如非易失性存储器(NVM)或硬盘(HD)等存储器设备中。NVM具有低延迟(例如,可能包括约60-300ns的高速)以及小容量(例如8-32GB)。磁盘(例如HD和SSD(固态硬盘))具有较高的延迟(例如,可能包括约15us-10ms的低速)以及较大的容量(例如1TB)。作为一个示例,WAL可以将WAL日志存储在NVM(例如,非易失性双列直插式存储器模块(NVDIMM))中。
NVDIMM是一种计算机存储器随机存取存储器(RAM)DIMM,即使在电力因意外断电、系统崩溃或者因正常系统关机而被移除时,该NVDIMM也可以保留数据。NVDIMM可以被用于提高应用性能、数据安全性和系统崩溃恢复时间。对于WAL,NVDIMM的持久性和低延迟可能是首选。但是,现有的客户端应用程序(例如,通过日志数据线程来写入WAL的数据库)可能需要更改其WAL模块以充分利用NVDIMM。在WAL日志仅被存储在NVRAM中的示例中,日志的大小受可用NVRAM的数量的限制。
公开了一种用于执行WAL的增强系统和方法。增强系统和方法将NVM的低延迟与HD的高容量相结合。客户端应用程序可以通过多个日志记录缓冲器来并行地执行WAL日志记录。本公开的示例包括处理单元,该处理单元被耦接到来自一个或多个客户端应用程序的一个或多个控制器。该示例还包括用于基于预定时间戳范围来接收多个第一日志数据线程的多个日志记录缓冲器,其中每个日志缓冲器存储来自多个时间戳日志数据线程的单个第一时间戳日志数据线程。该示例还包括用于将来自多个日志记录缓冲器的多个第一时间戳日志数据线程冲洗为第一时间戳日志数据的冲洗器(flusher);冲洗器被配置为将第一时间戳日志数据存储到NVM以构建经过冲洗的时间戳日志数据。该示例还包括NVM和用于以时间戳顺序次序来将经过冲洗的时间戳日志数据从NVM同步到HD设备的同步器。
以下讨论将针对本公开的各种示例。本文所公开的示例不应当被解释为或以其他方式被用作对包括权利要求在内的本公开的范围进行限制。另外,以下的描述具有广泛的应用,并且任何示例的讨论仅意味着描述该示例,而并不旨在暗示:包括权利要求在内的本公开的范围被限于该示例。在前面的描述中,阐述了许多细节以提供对本文所公开的示例的理解。然而,本领域技术人员将理解的是,这些示例可以在没有这些细节的情况下被实践。虽然有限数量的示例已经被公开,但是本领域的技术人员将从中想到许多的修改和变型。旨在所附权利要求覆盖落入示例范围内的这些修改和变型。贯穿本公开,术语“一”和“一个”旨在表示特定元素中的至少一个。另外,如本文所使用的,术语“包括”意味着包括但并不限于,术语“包含”意味着包含但不限于。术语“基于”意味着至少部分地基于。
现在参照附图,图1是示出使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的系统示例的框图。系统100包括处理单元110、多个日志记录缓冲器120、冲洗器130、NVM 140和同步器150。系统100被连接到HD 160以及一个或多个客户端应用程序控制器180A-180N。客户端应用程序控制器180A-180N还被连接到一个或多个客户端应用程序170A-170N。
客户端应用程序170A-170N可以是通过日志数据线程来写入WAL的数据库管理系统(DBMS),并且每个客户端应用程序可以输入一个或多个日志数据线程。例如,系统可以被连接到三个客户端应用程序:第一客户端应用程序(例如,CA1)、第二客户端应用程序(例如,CA2)和第三客户端应用程序(例如,CA3)。CA1可以将一个日志数据线程(例如,LDT11)提供到系统,CA2可以将四个日志数据线程(例如,LDT21、LDT22、LDT23和LDT24)提供到系统,以及CA3可以不将任何数据线程提供到系统。在该示例中,被连接到三个客户端应用程序CA1-CA3的系统可以具有五个日志数据线程的输入:来自CA1的一个日志数据线程(LDT11)和来自CA2的四个日志数据线程(LDT21、LDT22、LDT23、LDT24)。每个日志数据线程可以产生一个或多个日志条目。
系统100是基于时间戳(例如时间间隔(Epoch))的。如本文一般描述的,时间戳表示预定义的持续时间。在本公开中,术语“时间间隔”可以被理解为由不同特征或事件标记的、应用程序定义的时段。时间间隔或时间戳可以由用户或客户端应用程序170A-170N来确定。取决于客户端应用程序170A-170N的类型,该时间间隔或时间戳可以对应于一个事务(例如10秒)。应用程序时间戳是粗粒度的,不与纳秒或读时间戳计数器(RDTSC)相像。每个时间戳可以包含一到几百万或更多的日志条目。每个日志条目可以属于一个时间戳,用于表示日志何时被写入并且日志何时变为持久性的(例如,在日志被存储在NVM中时)。例如,如果预定时间戳持续时间是10秒,并且现场时间(spot time)(基准时间)被参照为T,第一时间戳包括从T秒到T+10秒;第二时间戳包括从T+10s到T+20s;以此类推,直到包括从T+(N-1)×10s到T+N×10s的第N时间戳,其中N是正整数。
系统100包括多个日志记录缓冲器120。该多个日志记录缓冲器120适用于在每个时间戳接收多个日志数据线程。处理单元110将来自多个日志记录缓冲器120的每个日志数据线程写入到单个日志记录缓冲器中。例如,如果系统被输入有五个日志数据线程(例如,LDT1、LDT2、LDT3、LDT4、LDT5),则处理单元可以将来自每个日志数据线程的日志数据线程日志并行地写入单独的日志缓冲器中。因此,在该示例之后,系统将需要五个日志记录缓冲器(例如,LB1、LB2、LB3、LB4、LB5)。例如,来自LDT1的日志可以被写入LB1中,来自LDT2的日志可以被写入LB2中,来自LDT3的日志可以被写入LB3中,来自LDT4的日志可以被写入LB4中,并且来自LDT5的日志可以被写入LB5中。如果日志数据线程包括来自多于一个时间戳的日志,则来自每个时间戳的日志可以被写入单独的日志记录缓冲器中。例如,日志数据线程包括来自多于一个时间戳的日志(例如,来自时间戳A的日志A和来自时间戳B的日志B,并且时间戳B在时间戳A之后)。来自时间戳A的日志A可以被写入第一日志记录缓冲器(例如,LB_A),并且来自时间戳B的日志B可以被写入第二日志记录缓冲器(例如,LB_B)。来自多个日志记录缓冲器120的一个或多个缓冲器可以是循环缓冲器。由于多个日志记录缓冲器120被并行地写入,因此可以有任意数量的日志记录缓冲器来充分利用系统100的带宽,从而优化系统100的计算资源。
术语“循环缓冲器”在本领域中也称为循环队列,环状缓冲器或环形缓冲器可以被理解为使用单个固定大小的缓冲器的数据结构,就好像它被端对端连接一样。循环缓冲器是先进先出(First-In First-Out,FIFO)缓冲器,因此被写入在缓冲器中的第一数据单元(缓冲器中最早的)是将被替换的第一数据单元。非循环标准缓冲器可以使用后进先出(Last-In First-Out,LIFO)协议。
一旦来自该时间戳的多个日志数据线程的时间戳日志被写入多个日志记录缓冲器120中,则应用程序编程接口(API)可以向冲洗器130通知新写入的日志。API是用于构建应用程序的一组子例程定义、协议和工具。一般而言,API可以被理解为一组明确定义的在各种组件之间进行通信的方法。
系统100包括负责对来自多个日志记录缓冲器120的日志活动进行监视的单个冲洗器130。冲洗器130访问在每个时间戳被写入了日志(以下称为多个时间戳日志数据)的多个日志记录缓冲器120,并将这些多个时间戳日志数据写入NVM 140中。冲洗器130还可以释放多个日志记录缓冲器120,使得它们能够再次被使用。例如,系统具有三个日志记录缓冲器(例如,LB1、LB2、LB3),该三个日志记录缓冲器包含来自第一时间戳的日志:被写入LB1中的来自第一时间戳的日志(例如LFT1)、被写入LB2中的来自第一时间戳的日志(例如LFT2)、以及被写入LB3中的来自第一时间戳的日志(例如LFT3);则多个时间戳日志数据包括LFT1、LFT2和LFT3。在该示例中,冲洗器从LB1、LB2和LB3访问LFT1、LFT2和LFT3,并将LFT1、LFT2和LFT3写入NVM;然后冲洗器释放LB1、LB2和LB3,使得处理单元能够使用它们来写入来自以后的时间戳的日志。为了实现最大灵活性,系统100可以释放客户端应用程序170A-170N以启动冲洗器线程并自己调用冲洗器功能,而不是通过处理单元110来启动冲洗器线程。
在一些示例中,固定段大小由用户或客户端应用程序170A-170N预先确定。如果将被冲洗器130冲洗的时间戳日志数据在大小方面大于预定段大小,则冲洗器130可以将时间戳日志数据划分成多个非易失性(NV)段,其中NV段在大小方面小于时间戳日志数据。然后,冲洗器130可以以NV段创建顺序次序来将NV段存储在NVM 140中。例如,用户可以指定100兆字节(Mb)的段大小。冲洗器然后可能需要冲洗400(Mb)的时间戳日志数据,然后将100Mb的时间戳日志数据划分成四个NV段:第一NV段(例如,NVS1)包括从1Mb到100Mb的时间戳日志数据,第二NV段(例如,NVS2)包括从101Mb到200Mb的时间戳日志数据,第三NV段(例如,NVS3)包括从201Mb到300Mb的时间戳日志数据,以及第四NV段(例如,NVS4)包括从301Mb到400MB的时间戳日志数据。然后,冲洗器130可以首先将NVS1存储到NVM 140中,将NVS2存储到NVM 140中,将NVS3存储到NVM 140中,并且最后冲洗器130可以将NVS4存储到NVM 140中。
NVM 140存储由冲洗器130冲洗后的时间戳日志数据。一旦来自经过冲洗的时间戳日志数据的日志被存储在NVM 140中,则它们将是持久的,并且因此,如果NVM 140耗尽电力或系统100崩溃,经过冲洗的时间戳日志数据也不会丢失。由于经过冲洗的日志数据由冲洗器130以时间戳顺序次序来冲洗,所以日志数据也以时间戳顺序次序被存储在NVM 140中。NVM 140的示例可以是NVDIMM。NVM 140可以是小而快的存储器。
系统100进一步包括用于以时间戳顺序次序来将经过冲洗的时间戳日志数据从NVM 140同步到HD设备160的单个同步器150。为了实现最大灵活性,系统100可以释放客户端应用程序170A-170N以启动同步器150线程并且自己调用同步器功能,而不是通过处理单元110来启动同步器线程。为了进一步的灵活性和时间最大化的使用,在冲洗器130将时间戳日志数据从多个日志记录缓冲器120冲洗到NVM 140的同时,同步器150可以将时间戳日志数据从NVM 140同步到HD设备160。在NVM140存储多个NV段的情况下,同步器150可以以时间戳顺序次序来将多个NV段从NVM140同步到HD设备160。例如,NVM 140可以存储四个段(例如,NVS1、NVS2、NVS3、NVS4),其中NVS1可以是被存储在NVM140中的第一段,NVS2可以是被存储在NVM140中的第二段,NVS3可以是被存储在NVM 140中的第三段,以及NVS4可以是被存储在NVM 140中的第四段;那么同步器150可以首先将NVS1同步到HD160,然后同步器可以将NVS2同步到HD160,随后同步器150可以将NVS3同步到HD160,并且随后同步器150可以将NVS4同步到HD160。作为另一示例,在同步器150将NV段从NVM 140同步到HD 160的同时,冲洗器130可以将NV段冲洗到NVM 140。
客户端应用程序170A-170N可以在它们自己的时间戳概念之间具有变化的映射,因此本公开对基于时间戳的客户端应用程序和非基于时间戳的客户端应用程序加以区分。基于时间戳的客户端应用程序(例如,FOEDUS、SILO等)在没有任何困难的情况下被映射到时间戳,因为该架构是基于时间戳的。但是,非基于时间戳的应用程序不能直接被映射。通过将每个事务视为时间戳,可以对非基于时间戳的应用程序(例如,MySQL、PostgreSQL等)进行映射。在本公开中,术语“事务”可以被理解为多个操作的分组,其中客户端应用程序的用户可以决定分组标准。
图2是示出使用NVM和元数据存储装置并通过多个日志记录缓冲器来进行预写式日志记录的系统示例的框图。系统200包括处理单元210、多个日志记录缓冲器220、冲洗器230、NVM 240、元数据存储装置245和同步器250。系统200被连接到HD 260和一个或多个客户端应用程序控制器280A-280N。客户端应用程序控制器280A-280N还被连接到一个或多个客户端应用程序270A-270N。客户端应用程序270A-270N可以是通过日志数据线程来写入WAL的DBMS。每个客户端应用程序270A-270N可以输入一个或多个日志数据线程。
系统200是基于表示预定义的持续时间的时间戳(例如,时间间隔)的,该时间戳可以由用户或由客户端应用程序270A-270N来确定。取决于客户端应用程序270A-270N的类型,该时间戳可以对应于一个事务(例如10秒)。应用程序时间戳是粗粒度的,不与纳秒或RDTSC相像。每个时间戳可以包含一到几百万或更多的日志条目。每个日志条目可以属于一个时间戳,用于表示日志何时被写入并且日志何时变为持久性的(例如,在日志被存储在NVM中时)。
系统200包括多个日志记录缓冲器220。该多个日志记录缓冲器220适用于在每个时间戳接收多个日志数据线程。处理单元210将来自多个日志记录缓冲器220的每个日志数据线程写入到单个日志记录缓冲器中。因此,处理单元210可以将来自每个日志数据线程的日志数据线程日志并行地写入单独的日志记录缓冲器中。如果日志数据线程包括来自多于一个时间戳的日志,则来自每个时间戳的日志可以被写入单独的日志记录缓冲器中。来自多个日志记录缓冲器220的一个或多个缓冲器可以是循环缓冲器。由于多个日志记录缓冲器220被并行地写入,因此可以有任意数量的日志记录缓冲器来充分利用系统200的带宽,从而优化系统200的计算资源。
一旦来自该时间戳的多个日志数据线程的时间戳日志被写入多个日志记录缓冲器220中,则API(未示出)可以向冲洗器230通知新写入的日志。API是用于构建应用程序的一组子例程定义、协议和工具。一般而言,API可以被理解为一组明确定义的在各种组件之间进行通信的方法。
系统200包括负责对来自多个日志记录缓冲器220的日志活动进行监视的单个冲洗器230。冲洗器230访问在每个时间戳被写入了日志(以下称为多个时间戳日志数据)的多个日志记录缓冲器220,并将这些多个时间戳日志数据写入NVM 240中。冲洗器230还可以释放多个日志记录缓冲器220,使得它们能够再次被使用。为了实现最大的灵活性,系统200可以释放客户端应用程序270A-270N以启动冲洗器线程并自己调用冲洗器功能,而不是由处理单元210来启动冲洗器线程。
在一些示例中,固定段大小由用户或客户端应用程序270A-270N预先确定。如果将被冲洗器230冲洗的时间戳日志数据在大小方面大于预定段大小,则冲洗器230可以将时间戳日志数据划分成多个NV段,其中NV段在大小方面小于时间戳日志数据。然后,冲洗器230可以以NV段创建顺序次序来将NV段存储在NVM 240中。
系统200包括用于存储时间戳元数据的元数据存储装置245。元数据存储装置245可以提供用于存储每个时间戳的时间戳元数据信息的持久储存装置。元数据存储装置245能够将存储在NVM 240中的时间戳数据(例如,多个第一时间间隔日志数据线程)与存储在元数据存储装置245中的时间戳元数据分开。这样做使得系统200能够将时间戳数据直接映射到NVM 240中的连续存储器访问范围。
在一个示例中,元数据存储装置245可以是独立的持久存储装置。元数据存储装置245将时间戳元数据存储在存储器(例如,M1)中,并且NVM 240将时间戳日志数据存储在与M1不同的存储器(例如,M2)中。在另一示例中,元数据存储装置245可以是被保留以用于将元数据存储在NVM240内的特定部分;因此NVM 240可以分成两部分(例如,NVM_data和NVM_metadata),其中NVM_data存储时间戳日志数据并且NVM_metadata存储时间戳元数据。在先前的示例中,因为元数据(例如时间戳元数据)在大小方面小于数据(例如,日志时间戳数据),所以NVM_metadata在大小方面可以小于NVM_data。在先前的两个示例中,数据和元数据被分开地存储而不是被混合,这带来了如下的技术优势:元数据对于客户端应用程序270A-270N是不可见的,并且数据(被写入在日志中的数据)对于客户端应用程序270A-270N是可见的。前一个技术优势在于如下事实:被用于跟踪时间戳数据的元数据是系统内部的,并且不希望将其公开给客户端应用程序。将数据及其关联的元数据分开地存储的另一技术优点在于:如若不然,一旦客户端应用程序270A-270N想要读取日志,就可能会很难分开什么是数据、什么是元数据。
将被存储到元数据存储装置245中的时间戳元数据可以包括例如时间戳长度参数、NV段大小、HD存储策略、时间戳屏障书签(timestamp barrier bookmark)和标记元数据。先前这些可以被理解为示例,并且因此时间戳元数据可以不受它们的限制。时间戳长度参数可以定义时间戳中的每一个时间戳的长度(例如,10[s]的时间戳预定持续时间);时间戳长度参数可以由用户或客户端应用程序270A-270N来定义。NV段大小可以定义每个NV段的长度。HD存储策略可以定义用于将时间戳日志数据或NV段从NVM 240同步到HD 260的将要遵循的策略。作为第一示例,HD存储策略可以是:一旦NVM 240已满,从NVM 240同步到HD260。作为第二示例,HD存储策略可以是:一旦NVM 240处于其全部容量的某一百分比(例如,在NVM 240达到其总容量的60%时),从NVM 240同步到HD 260。此外,作为第三示例,HD存储策略可以是:以连续方式从NVM 240同步到HD 260,使得NVM 240连续保持在其全容量的某一百分比(例如,NVM 240处于其总容量的80%)并且遵循FIFO协议来执行同步。作为第四示例,HD存储策略可以是:一旦NVM 240包含来自预定数量时间戳的时间戳日志数据(例如,NVM 240包含来自四个不同时间戳的时间戳日志数据或NV段),从NVM 240同步到HD 260。在第四示例中,预定数量时间戳也可以被存储在元数据存储装置245中。时间戳屏障书签可以指向两个连续时间戳之间的边界线(例如,TBM34可以指向第三时间戳日志数据与第四时间戳日志数据之间的边界线)。标记元数据可以指向NV段内的两个连续时间戳之间的边界线,其中NV段包含来自多于一个时间戳的时间戳日志数据(例如,NV段NV_34包含来自第三时间戳和第四时间戳的时间戳日志数据,则NV_34还可以包含标记元数据MM_34,该标记元数据MM_34指向NV_34内的第三时间戳日志数据与第四时间戳日志数据之间的边界线)。元数据存储装置245还可以包括客户端应用程序270A-270N想要将其与时间戳相关联的元数据(例如时间戳标签)。
元数据存储装置245支持:写入功能,以写入用于单调增加时间戳的时间戳元数据;截断(truncating)功能,以截断存储装置来包括时间戳元数据直到给定的时间戳标识符并丢弃其余部分;以及读取功能,以读取给定时间戳范围的时间戳元数据。
由元数据存储装置245支持的写入功能利用时间戳单调增加的事实。写入功能利用该事实并使用例如日志结构布局来顺序地将时间戳元数据写入HD 260,并且因此使HD260的有效带宽最大化。系统200将时间戳日志数据写入中间持久性NVM 240中以实现低延迟,因为NVM 240比HD 260快。在正常操作期间,系统200可以将元数据条目写入元数据存储装置240并且确保元数据条目被持久性地存储。系统200还可以将被写入到存储装置(例如,NVM 240和元数据存储装置245)的最新时间戳(例如,第三时间戳)指示为另一个元数据条目。有时,基于HD存储策略,元数据存储装置245将其内容传送到HD 260。将元数据从元数据存储装置245传送到HD 260的一个示例是通过如下来进行的:首先将来自NVM 240的关联数据和来自元数据存储装置245的元数据写入HD 260,然后将时间戳标记更新为持久性时间戳标记(二者都被存储在元数据存储装置245中)以指示被传送并被写入到HD 260的最新时间戳。元数据存储装置245的被传送到HD 260的内容随后可以遵循FIFO协议、通过写入新元数据条目而被回收。在本公开中,持久性时间戳标记也可以被称为时间戳屏障书签。
先前的更新协议可以确保在写入期间发生的崩溃不会损坏元数据存储装置245。可能存在两个崩溃场景需要考虑。作为第一示例,崩溃可能在写入到元数据存储装置245期间发生;由于持久性时间戳标记仅在元数据条目被写入之后才被更新,所以持久性时间戳标记可以指向被成功保存的时间戳元数据条目。作为第二示例,崩溃可能在将元数据条目从元数据存储装置245传送到HD 260时发生,这可能导致被部分写入的元数据条目。由于元数据存储装置245仅在传送被完成之后更新持久性时间戳标记,所以系统200可以使用该持久性时间戳标记来找到HD260中的最新传送的时间戳元数据条目的位置,并且截断该元数据条目以移除在持久性时间戳标记之后被部分写入的元数据条目。先前的示例还可以应用于从NVM 240到HD 260的对应时间戳日志数据线程条目。
元数据存储装置245所支持的截断功能设置最新持久性时间戳标记以指向新的最新时间戳,并且采取额外步骤以确保该新的最新持久性时间戳或截断点始终指向针对时间戳元数据条目的元数据存储装置245并且指向针对时间戳日志数据的NVM 240。作为一个示例,截断点落入元数据存储装置245或NVM 260中,则截断完成并且不需要进一步的动作。作为另一示例,截断点落入HD260中,则截断需要确保:元数据存储装置245(或NVM 240)包含最新持久性时间戳。为了确保先前的内容,系统200首先将包含新的持久性时间戳的HD 260页面复制到元数据存储装置245(或NVM 240),并将持久性时间戳标记设置为来自被包含在元数据存储装置245(或NVM 240)中的持久性时间戳标记的先前时间戳,然后将HD 260文件截断至新的持久性时间戳标记。先前的操作顺序确保元数据存储装置245(或NVM 240)可以完成由于崩溃而中断的截断。
元数据存储装置245所支持的读取功能通过迭代器接口来进行读取,该迭代器接口允许遍历一系列时间戳。迭代器接口对用户隐藏中间NVM 240和元数据存储装置245。在时间戳元数据落入到元数据存储装置245中时,迭代器可以直接从元数据存储装置245中透明地读取,或者迭代器以其他方式从HD 260中读取。在从HD 260中读取时间戳元数据时,迭代器接口将多个条目预提取到专用缓冲器中,以通过多次元数据读取来摊销HD 260访问并使HD读取带宽最大化。
作为示例,为了使可扩展的并发性成为可能,读取在不涉及锁定的情况下可能是乐观的,因此在回收元数据存储装置245时使读取器面临竞争条件。可能可行的是,在并发读取器找到并尝试从元数据存储装置245读取来自页面的时间戳日志时,系统200逐出并回收该时间戳日志。为了检测先前的场景,元数据存储装置245可以保留当前被逐出并被回收的页面的页码。页码单调增加,因此其可被用作版本号。在页面被逐出之后但在其被回收之前,系统200可以将元数据存储装置245页码更新为新页码。由于页码单调增加,读取器可以通过以下操作来检测页面回收:首先读取元数据存储装置245的页码,然后读取时间戳日志,并且最终重新读取元数据存储装置245的页码以验证元数据存储装置245页面尚未被回收,这可能意味着尚未发生版本改变。
为了读取一系列持久性时间戳日志,系统200可以导出日志游标(log cursor)接口。日志游标接口可以包括用于创建、初始化、前进、读取和销毁游标的操作。然而,本公开聚焦在用于使游标前进到下一个可用时间戳并读取时间戳日志数据的游标点接口。
在日志游标被创建并初始化时,它可以最初指向给定时间戳范围中的第一持久性时间戳。前进阶段可以移动到能通过日志游标访问的下一个时间戳。作为一个示例,日志游标指向在HD 260中找到的时间戳,然后日志游标将经过冲洗的时间戳日志数据或NV段透明地映射到进程虚拟地址空间,并且然后返回映射到时间戳开头的虚拟地址。作为另一示例,日志游标指向在NVM 240中找到的时间戳,然后被存储在NVM 240中的时间戳日志数据或NV段已经被映射到进程虚拟地址空间中,并且日志游标返回映射到时间戳开头的虚拟地址。在返回映射时间戳的虚拟地址之后,用户可以通过存储器接口直接访问时间戳日志数据。由于时间戳可能会被分解成多个NV段的事实,因此使日志游标前进可能并不总是指向下一个时间戳。在这种情况下,时间戳可以被分解成多个映射,并且前进阶段可以更新日志游标以指向可访问的下一个映射。
图3是使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的示例的流程图。方法300以及本文所描述的方法例如可以以存储在计算系统的存储器中的机器可读指令的形式(参见例如图5的系统500的实施方式)、以电子电路的形式或者其他适当的形式来实现。方法300可以由图1的系统100使用。方法300也可以由图2中的系统200使用。
在框320处,方法300基于预定时间戳范围从一个或多个客户端应用程序接收多个第一日志数据线程。预定时间戳范围可以是由一个或多个客户端应用程序确定的时间间隔。
在框340处,方法300在每个时间戳将多个第一日志数据线程并行地存储在多个日志记录缓冲器中,其中每个日志缓冲器存储多个时间戳日志数据线程中的单个第一时间戳日志数据线程。
在框360处,方法300通过冲洗器将来自多个日志记录缓冲器的多个第一时间戳日志数据线程冲洗为到NVM的第一时间戳日志数据,以构建经过冲洗的时间戳日志数据。冲洗器可以由来自客户端应用程序的客户端应用程序控制器启动。
在框380处,方法300通过同步器以时间戳顺序次序来将所存储的时间戳日志数据从NVM同步到HD。同步器可以由来自客户端应用程序的客户端应用程序控制器启动。基于由用户或客户端应用程序先前定义的HD存储策略,来自NVM的时间戳日志数据(例如,第一时间戳日志数据)可以异步地被同步在HD中。
在示例中,方法300还可以包括不是基于时间戳的客户端应用程序的客户端应用程序,并且将每个时间戳映射为事务以及将每个事务映射为时间戳。
在另一示例中,方法300还可以包括元数据存储步骤。方法300还可以包括将预定长度参数存储到元数据存储装置中,和基于预定时间戳长度参数来打开和关闭时间戳。方法300还可以包括将时间戳屏障书签存储到元数据存储装置中。
在又一示例中,在系统(例如,图1的系统100)在第二时间戳内故障之后,方法300恢复,其中第一时间戳日志数据和第二时间戳日志数据被存储在NVM中。该方法还可以包括基于先前被存储在元数据存储装置中的时间戳屏障书签来丢弃第二时间戳日志数据。
在另一示例中,方法300还可以包括来自一个或多个客户端应用程序的客户端应用程序经由日志游标来读取所存储的时间戳日志数据。
图4是用于经由NV段、使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的示例的流程图。方法400以及本文所描述的方法例如可以以存储在计算系统的存储器中的机器可读指令的形式(参见例如图5的系统500的实施方式)、以电子电路的形式或者其他适当的形式来实现。方法400可以由图1的系统100、图2的系统200或者另一个这样的系统使用。
在框420处,方法400基于预定时间戳范围来从一个或多个客户端应用程序接收多个第一日志数据线程。预定时间戳范围可以是由一个或多个客户端应用程序确定的时间间隔。
在框440处,方法400包括在每个时间戳将多个第一日志数据线程并行地存储在多个日志记录缓冲器中,其中每个日志缓冲器存储多个时间戳日志数据线程中的单个第一时间戳日志数据线程。
在框460处,方法400包括通过将第一时间戳日志数据划分成多个时间戳NV段来将多个第一时间戳日志数据线程冲洗为第一时间戳日志数据,其中每个第一时间戳NV段在大小方面可以小于第一次时间戳日志数据。冲洗器可以由来自客户端应用程序的客户端应用程序控制器启动。
在框480处,方法400包括通过同步器以时间戳顺序次序来将经过冲洗的NV段从NVM同步到HD。同步器可以由来自客户端应用程序的客户端应用程序控制器启动。基于由用户或客户端应用程序先前定义的HD存储策略,来自NVM的NV段可以异步地被同步在HD中。NV段的大小可以由用户或客户端应用程序控制器来决定。
在示例中,在基于时间戳的客户端应用程序的情况下,该方法还可以包括将每个时间戳映射为事务并且将每个事务映射为时间戳。
在另一个示例中,方法400还可以包括元数据存储步骤。方法400还可以包括将预定长度参数存储到元数据存储装置中,和基于预定时间戳长度参数来打开和关闭时间戳。方法400还可以包括将时间戳屏障书签存储到元数据存储装置中。方法400还可以包括由通过标记划分的多个时间戳来共享时间戳NV段,并且将标记元数据存储到元数据存储装置中。
在又一示例中,在系统(例如,图1的系统100)在第二时间戳内故障之后,方法400恢复,其中第一时间戳NV段和第二时间戳NV段被存储在NVM中。该方法还可以包括基于先前被存储在元数据存储装置中的时间戳屏障书签来丢弃第二时间戳NV段。
在另一示例中,方法400还可以包括来自一个或多个客户端应用程序的客户端应用程序经由日志游标来读取所存储的时间戳NV段。
图5是示出使用NVM并通过多个日志记录缓冲器来进行预写式日志记录的系统示例的框图。图5描述了包括物理处理器510和非暂时性机器可读存储介质520的系统500。处理器510可以是微控制器、微处理器、中央处理单元(CPU)核心、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或类似物。机器可读存储介质520可以存储或被编码有指令521-525,该指令521-525可以由处理器510执行以执行本文所描述的功能。系统500可以被连接到HD。系统500还可以被连接到一个或多个客户端应用程序控制器,并且客户端应用程序控制器还可以被连接到一个或多个客户端应用程序。系统500的实体可以与图1的系统100中的实体相同或相似。系统500可以使用图3的方法300。
在示例中,指令521-525和/或其他指令可以是可以由处理器510执行以实现本文所描述的功能的安装包的一部分。在这种情况下,非暂时性机器可读存储介质520可以是便携式介质,例如CD、DVD或闪存设备、或者可从其下载并安装安装包的计算设备所维护的存储器。在另一示例中,程序指令可以是已经被安装在非暂时性机器可读存储介质520中的一个或多个应用程序的一部分。
非暂时性机器可读存储介质520可以是包含或存储可执行数据的任何电子存储设备、磁存储设备、光学存储设备或其他物理存储设备,该可执行数据可以被系统500访问。因此,非暂时性机器可读存储介质520可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储设备、光盘等。非暂时性机器可读存储介质520不包括暂时性传播信号。非暂时性机器可读存储介质520可以被分配在系统500中和/或与系统500进行通信的任何其他设备中。
在图5的示例中,指令521在由处理器510执行时使处理器510从一个或多个客户端应用程序接收多个第一日志数据线程。
系统500还可以包括指令522,该指令522在由处理器510执行时使处理器510在每个时间戳将多个第一日志数据线程并行地存储在多个日志记录缓冲器中,其中每个日志缓冲器存储单个第一时间戳日志数据线程。
系统500还可以包括指令523,该指令523在由处理器510执行时使处理器510将第一时间戳日志数据划分成多个第一时间戳NV段,其中每个第一时间戳NV段在大小方面小于第一时间戳日志数据。
系统500还可以包括指令524,该指令524在由处理器510执行时使处理器510将多个第一时间戳NV段冲洗到NVM中。
系统500还可以包括指令525,该指令525在由处理器510执行时使处理器510借以NVM已满来以时间戳顺序次序将经过冲洗的NV段从NVM同步到HD。
上述示例可以通过硬件、固件或者它们的组合来实现。例如,本文所描述的各种方法、过程和功能模框可以通过物理处理器(术语“处理器”被广义地解释为包括CPU、处理模框、ASIC、逻辑模框或者可编程门阵列等)来实现。过程、方法和功能模框可以全部由单个处理器来执行或者分摊在多个处理器之间;在本公开或权利要求中对“处理器”或“处理单元”的引用因此应当被解释为意指“至少一个处理器”。过程、方法和功能模框被实现为机器可读指令,该机器可读指令可由至少一个处理器、该至少一个处理器的硬件逻辑电路或者它们的组合来执行。
本文已经描述和说明的是本公开的示例及其一些变型。本文所使用的术语、描述和附图是通过说明的方式来阐述的。本公开的范围内的许多变型是可能的,本公开的范围旨在由所附权利要求及其等同物来限定。
Claims (20)
1.一种用于执行预写式日志记录WAL的系统,所述系统被连接到一个或多个客户端应用程序并且被连接到硬盘HD设备,所述客户端应用程序将多个第一日志数据线程输入到所述系统,所述系统包括:
处理单元,所述处理单元被耦接到来自所述一个或多个客户端应用程序的一个或多个控制器;
多个日志记录缓冲器,所述多个日志记录缓冲器用于基于预定时间戳范围来接收所述多个第一日志数据线程,其中每个日志缓冲器存储多个时间戳日志数据线程中的单个第一时间戳日志数据线程;
非易失性存储器NVM;
冲洗器,所述冲洗器用于将来自所述多个日志记录缓冲器的所述多个第一时间戳日志数据线程冲洗为第一时间戳日志数据,所述冲洗器用于将所述第一时间戳日志数据存储到所述非易失性存储器NVM以构建经过冲洗的时间戳日志数据;和
同步器,所述同步器用于以时间戳顺序次序来将经过冲洗的时间戳日志数据从所述NVM同步到所述HD设备。
2.根据权利要求1所述的系统,其中所述预定时间戳范围是由所述一个或多个客户端应用程序确定的时间间隔。
3.根据权利要求1所述的系统,其中所述NVM是非易失性双列直插式存储器模块NVDIMM。
4.根据权利要求1所述的系统,进一步包括用于存储时间戳元数据的元数据存储装置。
5.根据权利要求4所述的系统,其中所述元数据存储装置位于所述NVM中。
6.根据权利要求1所述的系统,其中所述多个日志记录缓冲器是循环日志记录缓冲器。
7.根据权利要求1所述的系统,进一步其中
所述冲洗器用于:
将所述第一时间戳日志数据划分成多个第一时间戳非易失性NV段,其中每个第一时间戳NV段在大小方面小于所述第一时间戳日志数据;
将所述多个第一时间戳NV段冲洗到所述NVM中;以及
所述同步器用于:
基于先前由用户或客户端应用程序定义的HD存储策略,以时间戳顺序次序来将经过冲洗的NV段从所述NVM同步到所述HD。
8.一种用于执行预写式日志记录WAL的方法,所述方法包括:
基于预定时间戳范围,从一个或多个客户端应用程序接收多个第一日志数据线程;
在每个时间戳,将所述多个第一日志数据线程并行地存储在多个日志记录缓冲器中,其中每个日志缓冲器存储多个时间戳日志数据线程中的单个第一时间戳日志数据线程;
通过冲洗器将来自所述多个日志记录缓冲器的所述多个第一时间戳日志数据线程冲洗为到非易失性存储器NVM的第一时间戳日志数据,以构建经过冲洗的时间戳日志数据;和
通过同步器以时间戳顺序次序来将经过冲洗的时间戳日志数据从所述NVM同步到硬盘HD。
9.根据权利要求8所述的方法,其中所述预定时间戳范围是由所述一个或多个客户端应用程序确定的时间间隔。
10.根据权利要求8所述的方法,进一步包括:
通过将第一时间戳日志数据划分成多个时间戳NV段,来将所述多个第一时间戳日志数据线程冲洗为所述第一时间戳日志数据,其中每个第一时间戳NV段在大小方面小于所述第一时间戳日志数据;和
基于先前由用户或客户端应用程序定义的HD存储策略,通过同步器以时间顺序次序来将经过冲洗的NV段从所述NVM同步到所述HD。
11.根据权利要求10所述的方法,其中所述每个第一时间戳NV段的大小由用户或者客户端应用程序控制器来决定。
12.根据权利要求10所述的方法,其中所述时间戳NV段能够由通过标记划分的多个时间戳来共享,并且所述标记元数据被存储到元数据存储装置中。
13.根据权利要求8所述的方法,进一步包括:将预定时间戳长度参数存储到元数据存储装置中,以及基于所述预定时间戳长度参数来打开和关闭时间戳。
14.根据权利要求8所述的方法,其中所述冲洗器和所述同步器通过来自客户端应用程序的客户端应用程序控制器被启动。
15.根据权利要求8所述的方法,其中基于由用户或客户端应用程序先前定义的HD存储策略,来自所述NVM的所述第一时间戳日志数据异步地被同步在所述HD中。
16.根据权利要求8所述的方法,进一步包括将时间戳屏障书签存储到元数据存储装置中。
17.根据权利要求16所述的方法,进一步包括:
在第二时间戳内从系统故障恢复,其中所述第一时间戳日志数据和第二时间戳日志数据被存储在所述NVM中;和
基于先前存储在所述元数据存储装置中的所述时间戳屏障书签,丢弃第二时间戳日志数据。
18.根据权利要求8所述的方法,进一步包括:来自所述一个或多个客户端应用程序的客户端应用程序经由日志游标读取所存储的时间戳日志数据。
19.根据权利要求8所述的方法,进一步包括:在客户端应用程序不是基于时间戳的客户端应用程序时,将每个时间戳映射为事务并且将每个事务映射为时间戳。
20.一种用于存储机器可读指令的非暂时性机器可读介质,所述机器可读指令由物理处理器可执行以使得所述处理器:
从一个或多个客户端应用程序接收多个第一日志数据线程;
在每个时间戳,将所述多个第一日志数据线程并行地存储在多个日志记录缓冲器中,其中每个日志记录缓冲器存储单个第一时间戳日志数据线程;
将所述第一时间戳日志数据划分成多个第一时间戳非易失性NV段,其中每个第一时间戳NV段在大小方面小于所述第一时间戳日志数据;
将所述多个第一时间戳NV段冲洗到非易失性存储器NVM中;和
借以所述NVM已满,以时间戳顺序次序将经过冲洗的NV段从所述NVM同步到硬盘HD。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/485,399 US20180300083A1 (en) | 2017-04-12 | 2017-04-12 | Write-ahead logging through a plurality of logging buffers using nvm |
US15/485,399 | 2017-04-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108694231A true CN108694231A (zh) | 2018-10-23 |
Family
ID=63790644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810321921.6A Pending CN108694231A (zh) | 2017-04-12 | 2018-04-11 | 使用nvm并通过多个日志记录缓冲器来预写式日志记录 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180300083A1 (zh) |
CN (1) | CN108694231A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491837A (zh) * | 2018-11-01 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种非易失性内存储器的日志容错处理方法与装置 |
CN110505238A (zh) * | 2019-09-06 | 2019-11-26 | 杭州安恒信息技术股份有限公司 | 基于edr的消息队列的处理装置和方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990516B1 (en) | 2017-06-08 | 2021-04-27 | Liberty Mutual Insurance Company | Method, apparatus, and computer program product for predictive API test suite selection |
US11048590B1 (en) | 2018-03-15 | 2021-06-29 | Pure Storage, Inc. | Data consistency during recovery in a cloud-based storage system |
KR102583787B1 (ko) * | 2018-11-13 | 2023-10-05 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 |
WO2021052230A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种存储系统、存储节点和数据存储方法 |
CN111061690B (zh) * | 2019-11-22 | 2023-08-22 | 武汉达梦数据库股份有限公司 | 一种基于rac的数据库日志文件读取方法和装置 |
US11941436B1 (en) * | 2020-04-24 | 2024-03-26 | Astera Labs, Inc. | Retimer with host-interactive data logging engine |
US11526490B1 (en) * | 2021-06-16 | 2022-12-13 | International Business Machines Corporation | Database log performance |
CN114741367B (zh) * | 2022-06-13 | 2023-02-24 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置、电子设备、存储介质和程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103392207A (zh) * | 2011-10-05 | 2013-11-13 | Lsi公司 | 非易失性存储的自身日志记录和层级一致性 |
CN103985415A (zh) * | 2013-02-10 | 2014-08-13 | Lsi公司 | 基于保留漂移历史的非易失性存储器读取阈值最优化 |
CN105183628A (zh) * | 2015-10-22 | 2015-12-23 | 湖南国科微电子股份有限公司 | 一种嵌入式系统日志收集装置、记录系统及方法 |
WO2017013701A1 (ja) * | 2015-07-17 | 2017-01-26 | 株式会社日立製作所 | 計算機システム及びデータベース管理方法 |
-
2017
- 2017-04-12 US US15/485,399 patent/US20180300083A1/en not_active Abandoned
-
2018
- 2018-04-11 CN CN201810321921.6A patent/CN108694231A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103392207A (zh) * | 2011-10-05 | 2013-11-13 | Lsi公司 | 非易失性存储的自身日志记录和层级一致性 |
CN103985415A (zh) * | 2013-02-10 | 2014-08-13 | Lsi公司 | 基于保留漂移历史的非易失性存储器读取阈值最优化 |
WO2017013701A1 (ja) * | 2015-07-17 | 2017-01-26 | 株式会社日立製作所 | 計算機システム及びデータベース管理方法 |
CN105183628A (zh) * | 2015-10-22 | 2015-12-23 | 湖南国科微电子股份有限公司 | 一种嵌入式系统日志收集装置、记录系统及方法 |
Non-Patent Citations (1)
Title |
---|
WOOK-HEE KIM等: "NVWAL:Expoiting nvram in Write-Ahead Logging", 《SIGOPS》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491837A (zh) * | 2018-11-01 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种非易失性内存储器的日志容错处理方法与装置 |
CN110505238A (zh) * | 2019-09-06 | 2019-11-26 | 杭州安恒信息技术股份有限公司 | 基于edr的消息队列的处理装置和方法 |
CN110505238B (zh) * | 2019-09-06 | 2022-01-21 | 杭州安恒信息技术股份有限公司 | 基于edr的消息队列的处理装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180300083A1 (en) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694231A (zh) | 使用nvm并通过多个日志记录缓冲器来预写式日志记录 | |
CN106471478B (zh) | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 | |
CN102792276B (zh) | 闪速复制级联中的缓冲磁盘 | |
US8060713B1 (en) | Consolidating snapshots in a continuous data protection system using journaling | |
US10817390B2 (en) | Imparting durability to a transactional memory system | |
JP6026538B2 (ja) | 検証されたデータセットの不揮発性媒体ジャーナリング | |
EP2972891B1 (en) | Multiversioned nonvolatile memory hierarchy for persistent memory | |
US11086850B2 (en) | Persisting of a low latency in-memory database | |
US10430285B2 (en) | Backing up metadata | |
CN104881371A (zh) | 持久性内存事务处理缓存管理方法与装置 | |
CN108431783B (zh) | 访问请求处理方法、装置及计算机系统 | |
CN100498796C (zh) | 逻辑日志生成方法、数据库备份/恢复方法与系统 | |
JP2000284995A (ja) | データ処理装置及び記録媒体 | |
CN106716395B (zh) | 事务处理的方法、装置及计算机系统 | |
CN109725840A (zh) | 利用异步冲刷对写入进行节流 | |
KR20150104434A (ko) | 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법 | |
EP2590078A2 (en) | Shadow paging based log segment directory | |
JP2003513357A (ja) | 論理フラッシュメモリ装置を用いて原子的更新を実行する方法および装置 | |
CN106201335A (zh) | 存储系统 | |
JPH07249063A (ja) | 階層形チェックポイントを使用する論理シミュレータ | |
US9003106B1 (en) | Crash consistency | |
US9335941B1 (en) | Crash consistency | |
US20170017405A1 (en) | Systems and methods for improving flash-oriented file system garbage collection | |
CN115705152A (zh) | 使用存储器内日志在非易失性存储器装置中的元数据管理 | |
CN106258006A (zh) | 使用状态信息恢复系统 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181023 |