CN110402436B - 处理预写日志的方法和装置 - Google Patents
处理预写日志的方法和装置 Download PDFInfo
- Publication number
- CN110402436B CN110402436B CN201780002706.3A CN201780002706A CN110402436B CN 110402436 B CN110402436 B CN 110402436B CN 201780002706 A CN201780002706 A CN 201780002706A CN 110402436 B CN110402436 B CN 110402436B
- Authority
- CN
- China
- Prior art keywords
- value pair
- state
- wal
- key
- set key
- 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
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种处理预写日志的方法和装置,通过将多个预写日志WAL记录在WAL集键值对中,并基于状态键值对中记录的WAL集键值对的状态,以WAL集键值对为粒度,对WAL集键值对中记录的WAL进行处理,避免了现有技术中,只能逐条对WAL进行处理,有利于简化对存储设备中记录的WAL的进行回放或删除的过程。
Description
技术领域
本申请涉及存储领域,并且更具体地,涉及处理预写日志的方法和装置。
背景技术
基于键值(key-value,KV)存储的存储设备中,预写日志(write ahead log,WAL)是以键值对(key value pair)的数据结构存储的。图1示出了预写日志在存储设备中的组织结构。从图1所示的组织结构中可以看出,预写日志以树状图(treemap)的组织结构存储。树状图包括多个根块和多个叶子块,每个根块对应一个叶子块。叶子块用于存储WAL,以及该WAL记录的事务的执行结果,其中执行结果为完成时,用于指示WAL记录的事务被执行成功,执行结果为未完成时,用于指示WAL记录的事务没有被执行成功,需要被回放。根块用于存储叶子块的信息,例如,根块中存储叶子块中预写日志的键的取值范围以及对应的叶子块的存储地址。
在图1所示的WAL的组织结构中,每条WAL对应一条执行结果,在对存储设备中的WAL进行回放或者删除的过程中,需要逐条判断WAL是否符合回放的条件或者删除的条件之后,再对WAL进行回放或删除操作。然而,这种根据WAL的执行结果逐条对WAL进行回放或删除操作的方式,使得对WAL进行回放或删除的过程比较繁琐。
发明内容
本申请提供一种处理预写日志的方法和装置,有利于简化对存储设备中存储的WAL的进行回放或删除的过程。
第一方面,提供一种处理预写日志的方法,所述方法应用于存储设备,所述存储设备中记录有多个预写日志WAL集键值对和状态键值对,所述多个WAL集键值对中的每个WAL集键值对用于记录多条WAL,所述状态键值对用于记录所述多个WAL集键值对中至少部分WAL集键值对的状态,所述多个WAL集键值对的状态包括完成状态或密封状态,其中,处于所述密封状态的WAL集键值对禁止记录新的WAL;处于所述完成状态的WAL集键值对中所记录的WAL记录全部执行完成;所述方法包括:从所述状态键值对中,确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态;对处于所述密封状态的目标WAL集键值,读取所述目标WAL集键值对,并对所述目标WAL集键值对中的所有未完成WAL进行回放,回放完成后,将所述目标WAL集键值的状态修改为完成状态;对处于所述完成状态的所述目标WAL集键值对进行删除。
具体地,上述状态键值对可以为至少一个状态键值对。
需要说明的是,上述对所述目标WAL集键值对中的所有未完成WAL进行回放,可以指将目标WAL集键值对中WAL记录的事务的执行结果为未完成的WAL进行回放,其中,目标WAL集键值对中WAL记录的事务的执行结果为完成的WAL可以不用进行回放。
还应理解,上述回放完成可以指WAL集键值对中的全部待回放的WAL记录的事务的执行结果都为完成,其中待回放的WAL可以至上文中WAL记录的事务的执行结果为未完成的WAL。
在本申请实施例中,通过将多个WAL存储在WAL集键值对中,并基于状态键值对中存储的WAL集键值对的状态,以WAL集键值对为粒度,对WAL集键值对中存储的WAL进行处理,避免了现有技术中,只能逐条对WAL进行处理,有利于简化对存储设备中存储的WAL的进行回放或删除的过程。
一方面,使用本申请实施例的方法,在删除WAL的过程中,可以直接将处于完成状态的WAL集键值对一起删除,避免了现有技术中,由于每条WAL对应一个执行结果,在删除WAL的过程中,必须逐条WAL判断,逐条WAL删除,有利于简化删除存储设备中存储的WAL的过程。
另一方面,使用本申请实施例的方法,在回放WAL的过程中,可以以WAL集键值对为粒度,一次读取整个处于密封状态的WAL集键值对,再对处于密封状态的WAL集键值对中的待回放的WAL进行回放。避免了现有技术中,由于每条WAL对应一个执行结果,在回放WAL的过程中,必须逐条WAL判断,逐条WAL回放,有利于简化对存储设备中存储的WAL的进行回放的过程。
结合第一方面,在一种可能的实现方式中,所述多个WAL集键值对的状态还可以工作状态,处于工作状态的WAL集键值对用于记录所述存储设备新收到的WAL。
结合第一方面,在一种可能的实现方式中,上述处于所述密封状态的WAL集键值对禁止记录新的WAL,可以指所述至少一个WAL集键值对中处于密封状态的WAL集键值对中存储的WAL的数量等于所述至少一个WAL集键值对中的每个WAL集键值对存储WAL的最大数量,或所述处于密封状态的WAL集键值对处于工作状态的时间的长度等于预设时间长度。
结合第一方面,在一种可能的实现方式中,处于所述工作状态的WAL集键值对中存储的WAL的数量小于所述最大数量。
结合第一方面,在一种可能的实现方式中,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
结合第一方面,在一种可能的实现方式中,所述至少一个WAL集键值对中的每个WAL集键值对的值包括多条WAL。
结合第一方面,在一种可能的实现方式中,所述存储设备中还存储有第二游标键值对,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录的WAL集键值对的状态包括所述密封状态,所述从所述状态键值对中确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态,还包括:确定所述第二游标键值对当前指向的所述状态键值对中的第二状态键值对,所述第二状态键值对中记录有所述目标WAL集键值对状态;从所述第二状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述密封状态。
在本申请实施例中,通过第二游标键值对,从存储设备中存储的状态键值对中,确定记录WAL集键值对的状态包括密封状态的状态键值对,有利于提高从存储设备中存储的状态键值对中查找处于密封状态的WAL集键值对的效率。
结合第一方面,在一种可能的实现方式中,所述存储设备中还存储有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,所述从所述至少一个状态键值对中确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态,还包括:确定所述第三游标键值对当前指向的所述状态键值对中的第三状态键值对,所述第三状态键值对中记录有所述目标WAL集键值对状态;从所述第三状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述完成状态。
在本申请实施例中,通过第三游标键值对,从存储设备中存储的状态键值对中,确定记录WAL集键值对的状态包括所述完成状态的状态键值对,有利于提高从存储设备中存储的状态键值对中查找处于完成状态的WAL集键值对的效率。
结合第一方面,在一种可能的实现方式中,在对所述目标WAL集键值对中的WAL进行回放之后,所述方法还包括:在所述第二状态键值对中,将所述目标WAL集键值对的状态从所述密封状态修改为所述完成状态。
结合第一方面,在一种可能的实现方式中,在所述删除所述目标WAL集键值对之后,所述方法还包括:在所述第三状态键值对中,将所述目标WAL集键值对的状态从所述完成状态修改为删除状态。
在第三状态键值对中,将被删除的WAL集键值对的状态标记为删除状态,以便后期通过查阅状态键值对,可以获取WAL集键值对的状态的更加详尽的信息。
结合第一方面,在一种可能的实现方式中,所述方法还包括:将指向所述第二状态键值对的所述第二游标键值对,修改为指向所述至少一个WAL集键值对中的第四状态键值对,所述第四状态键值对为在所述第二状态键值对之后生成的下一个状态键值对。
结合第一方面,在一种可能的实现方式中,所述方法包括:将指向所述第三状态键值对的所述第三游标键值对,修改为指向所述至少一个WAL集键值对中的第五状态键值对,所述第五状态键值对为在所述第三状态键值对之后生成的下一个状态键值对。
第二方面,提供一种处理预写日志的方法,所述方法应用于存储设备,所述存储设备中存储有至少一个预写日志WAL集键值对,所述至少一个WAL集键值对用于多条存储WAL,所述方法包括:获取待存储至所述存储设备的第一预写日志WAL;根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,所述第一WAL集键值对的状态为工作状态,处于所述工作状态的WAL集键值对用于存储新收到的WAL;将所述第一WAL存储至所述第一WAL集键值对中。
在本申请实施例中,通过将多个WAL存储在WAL集键值对中,以便于在对WAL进行回放或删除的过程中可以以WAL集键值对为粒度,对WAL集键值对中存储的WAL进行回放或删除,避免了现有技术中,只能逐条对WAL进行处理,有利于简化对存储设备中存储的WAL的进行回放或删除的过程。
结合第二方面,在一种可能的实现方式中,处于所述工作状态的WAL集键值对中存储的WAL的数量小于所述至少一个WAL集键值对中每个WAL集键值对存储WAL数量的最大值。
结合第二方面,在一种可能的实现方式中,所述存储设备中存储有至少一个状态键值对,所述至少一个状态键值对用于存储所述至少一个WAL集键值对的状态,所述根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,包括:根据所述至少一个状态键值对中存储的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对。
在本申请实施例中,通过将WAL集键值对的状态存储在状态键值对中,以便于可以直接通过查询状态键值对查找处于不同状态的WAL集键值对,以WAL集键值对为粒度,对处于不同状态的WAL集键值对中的WAL进行处理,有利于简化对WAL进行处理的过程。
进一步地,上述状态键值对可以存储多个WAL集键值对的状态,也就是说,状态键值对的数量会小于WAL集键值对的数量,因此,在通过状态键值对对WAL集键值对的状态进行查询时,可以减小查询WAL集键值对的状态的时间。
结合第二方面,在一种可能的实现方式中,所述存储设备中存储有第一游标键值对,所述第一游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述工作状态,所述根据所述至少一个状态键值对中记录的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对,包括:确定所述第一游标键值对当前指向的所述至少一个状态键值对中的第一状态键值对;从所述第一状态键值对记录的WAL集键值对的状态中,选取处于所述工作状态的WAL集键值对为所述第一WAL集键值对。
在本申请实施例中,通过第一游标键值对指向至少一个状态键值对中处于工作状态的WAL集键值对,有利于提高从至少一个状态键值对中查找处于工作状态的WAL集键值对的效率。
结合第二方面,在一种可能的实现方式中,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
结合第二方面,在一种可能的实现方式中,所述至少一个WAL集键值对中的每个WAL集键值对的值包括多条WAL。
结合第二方面,在一种可能的实现方式中,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述密封状态,所述方法还包括:确定所述第二游标键值对当前指向的所述至少一个状态键值对中的第二状态键值对;从所述第二状态键值对记录的WAL集键值对的状态中,确定所述处于密封状态的WAL集键值对,并回放所述处于密封状态的WAL集键值对中的待回放的WAL;若所述处于密封状态的WAL集键值对中的全部WAL处于回放完成或不需要进行回放状态,在所述第二状态键值对中,将所述处于密封状态的WAL集键值对的状态修改为完成状态。
具体地,上述待回放的WAL可以指WAL中记录的事务的执行结果为未完成的WAL。
在本申请实施例中,通过第二游标键值对指向至少一个状态键值对中处于密封状态的WAL集键值对,有利于提高从至少一个状态键值对中查找处于密封状态的WAL集键值对的效率。
结合第二方面,在一种可能的实现方式中,所述存储设备中还记录有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,所述方法还包括:确定所述第三游标键值对当前指向的所述至少一个状态键值对中的第三状态键值对;从所述第三状态键值对记录的WAL集键值对的状态中,确定所述第三状态键值对中所述处于完成状态的WAL集键值对,并删除所述处于完成状态的WAL集键值对。
在本申请实施例中,通过第三游标键值对指向至少一个状态键值对中处于完成状态的WAL集键值对,有利于提高从至少一个状态键值对中查找处于完成状态的WAL集键值对的效率。
结合第二方面,在一种可能的实现方式中,在所述删除所述处于完成状态的WAL集键值对之后,所述方法还包括:在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。
结合第二方面,在一种可能的实现方式中,所述方法还包括:将指向所述第二状态键值对的所述第二游标键值对,修改为指向所述至少一个WAL集键值对中的第四状态键值对,所述第四状态键值对为在所述第二状态键值对之后生成的下一个状态键值对。
结合第二方面,在一种可能的实现方式中,所述方法包括:将指向所述第三状态键值对的所述第三游标键值对,修改为指向所述至少一个WAL集键值对中的第五状态键值对,所述第五状态键值对为在所述第二状态键值对之后生成的下一状态键值对。
结合第二方面,在一种可能的实现方式中,所述存储设备预设有第一并发标识和第二并发标识,所述第一WAL与所述第一并发标识对应,所述第一WAL集键值对于所述第一并发标识对应,所述第一状态键值对中存储有多个处于工作状态的WAL集键值对,所述多个处于工作状态的WAL集键值对包括所述第一WAL集键值对和第二WAL集键值对,在从所述第一游标键值对指向的所述第一状态键值对中,选取所述第一WAL集键值对之前,所述方法还包括,获取待存储至存储设备的第二WAL键值对,所述第二WAL键值对与所述第二并发标识对应;从所述第一游标键值对指向的所述第一状态键值对中,选取与所述第二并发标识对应的所述第二WAL集键值对;在所述第一WAL存储至所述第一WAL集键值对中的过程中,将所述第二WAL存储至所述第二WAL集键值对中。
在本申请实施例中,基于并发标识可以同时为待存储的多个WAL,选择不同的处于工作状态的WAL集键值对,使得上述对个WAL可以同时存储至存储设备中,有利于提高存储WAL的效率。
在可选地的一种实现方式中,上述WAL集键值对用于记录多条WAL可以理解为上述WAL集键值对用于存储多条WAL。
在可选地的一种实现方式中,上述状态键值对用于记录WAL集键值对的状态可以理解为状态键值对用于存储WAL集键值对的状态。
第三方面,提供了一种处理预写日志的装置,所述装置包括用于执行上述方法中的各个模块。
第四方面,提供了一种控制装置,所述控制装置具有实现上述第一方面的方法设计中的控制装置的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的单元。
第五方面,提供了一种控制器,包括处理器和存储器。该处理器用于控制收发器收发信号,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该处理器执行上述方面中的方法。
第六方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第七方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第八方面,提供了一种芯片,该芯片包括处理器,用于实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述处理器与存储器耦合,所述存储器,用于保存必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包括芯片和其他分立器件。
第九方面,提供了一种芯片***,该芯片包括处理器和存储器,处理器用于实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。所述存储器,用于保存必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1示出了预写日志在存储***中的组织结构。
图2示出了本申请实施例的适用的基于键值对的存储***的示意性架构图。
图3示出了本申请实施例中WAL集键值对的状态的示意性框图。
图4是本申请实施例的处理预写日志的方法的示意性流程图。
图5示出了本申请实施例的WAL的组织方式的示意性框图。
图6示出了本申请实施例的WAL与WAL记录的事务的执行结果的示意性框图。
图7示出了本申请实施例中控制节点、并发标识、检查点与WAL集键值对的对应关系的示意性框图。
图8是本申请实施例的一种处理预写日志的装置的示意性结构图。
图9是本申请实施例的另一种处理预写日志的装置的示意性结构图。
图10是本申请另一实施例的控制器的示意性框图。
具体实施方式
基于上文结合图1介绍的WAL组织结构,可以看出,每条存储WAL对应一个执行结果,在对叶子块中的待处理的WAL进行处理时,需要逐条判断待存储的WAL符合回放的条件或者删除的条件,即当待处理的WAL对应的执行结果为未完成时,则说明该待处理的WAL满足回放的条件,需要对待处理的WAL进行回放;当待处理的WAL对应的执行结果为完成时,则说明该待处理的WAL满足删除的条件,可以删除该待处理的WAL。这种“逐条判断,逐条处理”的方式,只能以每条WAL为粒度对WAL进行回放或删除,使得对WAL进行回放或删除的过程比较繁琐。
为了简化对WAL进行回放或删除的过程,本申请实施例基于一种新的WAL的组织结构,提供一种处理WAL的方法和装置,将对条WAL以WAL集键值对的形式进行组织,基于这种新的WAL的组织结构,以WAL集键值对为粒度,对WAL集键值对中存储的WAL进行回放或删除。
下面将结合附图,对本申请中的技术方案进行描述。为了便于理解,先结合图1和图2介绍本申请实施例适用的存储***以及WAL集键值对的状态。
图2示出了本申请实施例的适用的基于键值对的存储***的示意性架构图。应理解,本申请实施例适用的存储***还可以适用其他存储***,本申请实施例对此不做限定。图2所示的存储***包括存储节点210和控制节点220。
存储节点210,又称存储设备用于为存储***中的数据(例如,WAL)提供存储空间。例如,可以是集群***中的多个计算机中每个计算机的存储设备。
具体地,存储节点中的存储的数据可以以键值对的数据结构进行存储。其中,键值对由键(key)和值(value)共同组成,是KV存储技术中的存储单元。键例如可以是键值对的标签,用于检索到键值对或者检索值,值可以是需要被存储的有效数据。键可以由值生成,例如:对值进行哈希运算,把运算结果作为键值对中的值。相较于文件存储或者块存储而言,键值对的存储方式存储和读取的效率更高。
控制节点220,用于接收用户通过客户端发送的数据处理请求,以实现对存储节点中的数据进行数据处理,例如读/写操作等。例如,可以是集群***中的多个计算机中每个计算机中的控制器。
需要说明的是,在包括多个计算机的集群***中,每个计算机的存储设备可以在逻辑层面相互关联,形成一个“共享的存储设备”,使得多个计算机中的每个计算机中的控制节点都可以访问“共享的存储设备”中存储的数据。
图3示出了本申请实施例中WAL集键值对的状态的示意性框图。图3所示的WAL集键值对用于存储多条WAL,WAL集键值对的状态包括工作状态(Work)、密封状态(Sealed)、完成状态(Finish)和删除状态(Delete)。
工作状态:处于工作状态的WAL集键值对中,可以继续存储新的待存储的WAL。通常创建WAL集键值对时,WAL集键值对的状态为工作状态。
密封状态:处于密封状态的WAL集键值对中,不能再添加新的待存储的WAL。
需要说明的是,若满足预设规则一,可以将WAL集键值对从工作状态切换到密封状态。上述预设规则一可以是当WAL集键值对中存储的WAL的数量达到预设的数量,或者WAL集键值对处于工作状态的时间超过预设时长,出于加快回放WAL的目的,将WAL集键值对的状态从工作状态切换到密封状态。
完成状态:处于完成状态的WAL集键值对中的WAL中记录的事务的执行结果都为完成。也就是说,处于完成状态的WAL集键值对中的WAL中记录的事务要么通过回放方式被执行完成,要么WAL中记录的事务原本被执行完成。
删除状态:在状态键值对中,若WAL集键值对的状态为删除状态,说明该WAL集键值对已经被删除。
需要说明的是,在对WAL集键值对清理的过程中,会删除处于完成状态的WAL集键值对,并在状态键值对中将被删除的WAL集键值对标记为删除状态。
下文基于图2所示的存储***架构图,结合图4描述本申请实施例处理预写日志的方法和装置的方法。图4是本申请实施例的处理预写日志的方法的示意性流程图。应理解,图4所示的方法可以由图2所示的控制节点执行。图4所述方法可以应用于存储设备,该存储设备可以是图2所示的存储设备,所述存储设备中存储有至少一个WAL集键值对,所述至少一个WAL集键值对对用于多条存储WAL,图4所示的方法包括步骤410-步骤430。
410,获取待存储至所述存储设备的第一预写日志WAL。
具体地,上述第一WAL可以是以键值对的方式进行存储的,其中WAL的键(Key)用于唯一确定一个WAL,WAL的值(Value)用于记录具体的事务,例如,修改后的数据。
420,根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,所述第一WAL集键值对的状态为工作状态,处于所述工作状态的WAL集键值对中存储的WAL的数量小于所述至少一个WAL集键值对中每个WAL集键值对存储WAL数量的最大值。
需要说明的是,上述WAL集键值对的状态可以存储在每个WAL集键值对的值中,上述WAL集键值对的状态还可以单独存储状态键值对中,其中状态键值对可以用于存储WAL集键值对的状态。
可选地,在用状态键值对存储WAL的状态的情况下,所述存储设备中存储有至少一个状态键值对,所述至少一个状态键值对用于存储所述至少一个WAL集键值对的状态,所述根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,包括:根据所述至少一个状态键值对中存储的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对。
在本申请实施例中,将WAL集键值对的状态存储在状态键值对中,即以WAL集键值对为粒度,将WAL集键值对的状态存储至状态键值对中,以便于可以直接通过查询状态键值对查找处于不同状态的WAL集键值对,以WAL集键值对为粒度,对处于不同状态的WAL集键值对中的WAL进行处理,有利于简化对WAL进行处理的过程。
进一步地,上述状态键值对可以存储多个WAL集键值对的状态,也就是说,状态键值对的数量会小于WAL集键值对的数量,因此,在通过状态键值对对WAL集键值对的状态进行查询时,可以减小查询WAL集键值对的状态的时间。
需要说明的是,上述根据所述至少一个状态键值对中存储的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对,可以指遍历至少一个状态键值对中存储的全部WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对。上述根据所述至少一个状态键值对中存储的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对,还可以是根据第一游标指示的状态键值对存储的WAL集键值对的状态,选择处于工作状态的WAL集键值对作为第一WAL集键值对。具体地,所述存储设备中存储有第一游标键值对,所述第一游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述工作状态,所述根据所述至少一个状态键值对中记录的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对,包括:确定所述第一游标键值对当前指向的所述至少一个状态键值对中的第一状态键值对;从所述第一状态键值对记录的WAL集键值对的状态中,选取处于所述工作状态的WAL集键值对为所述第一WAL集键值对。
在本申请实施例中,通过第一游标键值对指向至少一个状态键值对中处于工作状态的WAL集键值对,有利于提高从至少一个状态键值对中查找处于工作状态的WAL集键值对的效率。
例如,图5示出了本申请实施例的WAL的组织方式的示意性框图。图5所示的组织方式中包括游标键值对510,至少一个状态键值对520,至少一个WAL集键值对530和至少一个WAL头键值对540。
至少一个状态键值对,用于存储WAL集键值对的状态,例如,该WAL集键值对的状态为工作状态、密封状态、完成状态或删除状态中的一个。
需要说明的是,上述至少一个状态键值对中每个状态键值对的最大存储容量可以相同,也就是说,当状态键值对中存储的WAL集键值对的状态的数量达到状态键值对的预设数量,可以创建下一个状态键值对。
还应理解,上述至少一个状态键值对可以根据状态键值对的生成顺序,由序号进行命名,参见图5所示的状态键值对0,......,状态键值对J,其中,J为正整数。例如,状态键值对0中存储的WAL集键值对的状态达到上述状态键值对的预设数量,可以创建下一状态键值对,并且下一个状态键值对的命名为状态键值对1。
游标键值对,用于存储至少一个游标(Cursor)键值对,游标键值对提供了在数据集合中一次一行或者多行前进或向后浏览数据的能力。可以包括下文中的第一游标键值对、第二游标键值对和第三游标键值对。
在本申请实施例中,上述游标键值对文件中存储的游标键值对可以指向上述至少一个状态键值对中的任意一个状态键值对。具体地,上述游标键值对可以将状态键值对的序号(即状态键值对的键)作为游标键值对的值,以实现将游标键值对指向状态键值对的功能。例如,当第一状态键值对的序号作为上述第一游标键值对的值时,第一游标即指向了第一状态文件。
至少一个WAL集键值对,用于存储WAL。
至少一个WAL头键值对,与上述至少一个WAL集键值对一一对应,用于存储与WAL头键值对应的WAL集键值对的中每条WAL对应的执行结果。
需要说明的是,至少一个WAL头键值对与至少一个WAL集键值对一一对应,可以通过将上述至少一个WAL头键值对中的WAL头键值对的键存储在与该WAL头键值对对应的WAL集键值对的值中,或者将上述至少一个WAL集键值对中的WAL集键值对的键存储在与该WAL集键值对对应的WAL头键值对的值中。
还应理解,上述WAL集键值对头中存储的WAL记录的事务的执行结果,与WAL集键值对中存储的WAL之间可以通过执行结果的编号与WAL的编号对应。例如,图6示出了本申请实施例的WAL与WAL记录的事务的执行结果的示意性框图。在图6中,WAL集键值对中存储有N条WAL,WAL头键值对中存储有N条事务的执行结果,其中,编号为N的WAL中记录事务的事务执行结果存储在编号为N的事务的执行结果中,其中N为正整数。
需要说明的是,上述图5仅仅是本申请实施例的WAL的组织方式的一种示例,本申请实施例还可以对图5所示的组织方式进行变形。例如,可以直接将WAL记录的事务的执行结果直接存储在该执行结果对应的WAL之后,也就是说,WAL文件中可以同时存储WAL,以及WAL记录的事务的执行结果。此时,状态键值对的值中可以仅仅存储WAL集键值对的键。
又例如,在图5所示的WAL的组织方式中,WAL与WAL记录的事务的执行结果分别存储在WAL集键值对以及WAL头键值对中,当上述WAL集键值对的值中包含与该WAL集键值对对应的WAL头键值对的键时,上述状态文件可以仅存储WAL集键值的键;当上述WAL头键值对的值中包含与该WAL头键值对对应的WAL集键值对的键时,上述状态文件可以仅存储WAL头键值的键,也就是说,通过WAL头键值对的键间接指向WAL集键值对。
可选地,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
可选地,所述至少一个WAL集键值对中的每个WAL集键值对的值包括多条WAL。
可选地,作为一个实施例,若存储设备中存储有第一游标键值对和至少一个WAL集键值对,而没有将WAL集键值对的状态单独存储在状态键值对中,可以直接将上述第一游标指向至少一个WAL集键值对中的第一WAL集键值对,其中你第一WAL集键值对的状态为工作状态。例如,将第一WAL集键值对的键存储至第一游标键值对的值中。
430,将所述第一WAL存储至所述第一WAL集键值对中。
在本申请实施例中,通过将多个WAL存储在WAL集键值对中,以便于在对WAL进行回放或删除的过程中可以以WAL集键值对对WAL进行回放或删除,避免了现有技术中,只能逐条对WAL进行处理,有利于简化对存储设备中存储的WAL的进行回放或删除的过程。
可选地,作为一个实施例,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录的WAL集键值对的状态包括所述密封状态,所述从所述状态键值对中确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态,还包括:确定所述第二游标键值对当前指向的所述状态键值对中的第二状态键值对,所述第二状态键值对中记录有所述目标WAL集键值对状态;从所述第二状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述密封状态。
也就是说,上述第二游标键值对用于指向至少一个WAL集键值对中处于密封状态的WAL集键值对。在第二游标键值对指向的第二WAL集键值对的状态为完成状态后,可以将第二游标键值对指向至少一个WAL集键值对中其他处于密封状态的WAL集键值对,直到通过第二游标键值对遍历存储设备中全部处于密封状态的WAL集键值对。
需要说明的是,本申请实施例对于第二游标键值对在至少一个状态键值对中的移动方向不做具体限定。例如,第二游标键值对可以在至少一个状态键值对中,按照状态键值对生成的顺序,从最早生成的状态键值对向第一游标键值对指向的状态键值对移动,遍历至少一个状态键值对。第二游标键值对还可以在至少一个状态键值对中,按照状态键值对生成的顺序,从第一游标键值对指向的状态键值对向最早生成的状态键值对移动,遍历至少一个状态键值对,也就是说,所述方法还包括:将所述第二游标键值对指向所述至少一个WAL集键值对中的第四状态键值对,所述第四状态键值对为在所述第二状态键值对之后生成的下一个状态键值对。
在本申请实施例中,通过第二游标键值对指向至少一个状态键值对中处于密封状态的WAL集键值对,有利于提高从至少一个状态键值对中查找处于密封状态的WAL集键值对的效率。
可选地,作为一个实施例,所述存储设备中还存储有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,所述从所述至少一个状态键值对中确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态,还包括:确定所述第三游标键值对当前指向的所述状态键值对中的第三状态键值对,所述第三状态键值对中记录有所述目标WAL集键值对状态;从所述第三状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述完成状态。
具体地,上述第三游标键值对用于指向至少一个WAL集键值对中处于完成状态的WAL集键值对。在第三游标键值对指向的第二WAL集键值对的状态为完成状态后,可以将第三游标键值对指向至少一个WAL集键值对中其他处于完成状态的WAL集键值对,直到通过第三游标键值对遍历存储设备中全部处于完成状态的WAL集键值对。
需要说明的是,本申请实施例对于第三游标键值对在至少一个状态键值对中的移动方向不做具体限定。例如,第三游标键值对可以在至少一个状态键值对中,按照状态键值对生成的顺序,从最早生成的状态键值对向第一游标键值对指向的状态键值对移动,遍历至少一个状态键值对。第三游标键值对还可以在至少一个状态键值对中,按照状态键值对生成的顺序,从第一游标键值对指向的状态键值对向最早生成的状态键值对移动,遍历至少一个状态键值对,也就是说,所述方法包括:将所述第三游标键值对指向所述至少一个WAL集键值对中的第五状态键值对,所述第五状态键值对为在所述第二状态键值对之后生成的下一状态键值对。
在本申请实施例中,通过第三游标键值对指向至少一个状态键值对中处于完成状态的WAL集键值对,有利于提高从至少一个状态键值对中查找处于完成状态的WAL集键值对的效率。
可选地,在所述删除所述处于完成状态的WAL集键值对之后,所述方法还包括:在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。
需要说明的是,在删除处于完成状态的WAL集键值对之后,可以直接在第三状态键值对中,将已经删除的WAL集键值对的状态删除,或者在所述删除所述处于完成状态的WAL集键值对之后,所述方法还包括:在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。以便后期通过查阅状态键值对,可以获取WAL集键值对的状态的更加详尽的信息。
可选地,第一WAL集键值对的键可以与向第一WAL集键值对中写WAL的控制节点的标识、检查点(check point)标识关联,也就是说,根据控制节点的标识和检查点的标识可以唯一确定一个WAL集键值对,即第一WAL集键值对。
具体地,上述检查点可以理解为将上述存储设备中的WAL集键值对复制到磁盘上的一个节点。
需要说明的是,上述WAL集键值对的命名方式可以用于仅仅支持每次写入一个WAL的存储***。
具体地,可以预设多个并发标识,并发标识的数量等于支持同时存储的WAL的数量,例如,预设了5个并发标识,可以理解为每个控制节点可以同时向存储设备存储5条WAL。
图7示出了本申请实施例中控制节点、并发标识、检查点与WAL集键值对的对应关系的示意性框图。其中,N个控制节点中每个控制节点预设的并发标识的数量为M,每个并发标识对应一个处于工作状态的WAL集键值对,且每个处于工作状态的WAL集键值对对应的检查点为当前检查点(参见图7中所示的第一检查点)。如果WAL集键值对的状态从工作状态切换至密封状态,则将当前检查点从该WAL集键值对对应的检查点切换为下一个检查点。例如,当前检查点为第二检查点时,WAL集键值对从工作状态切换至密封状态,则更新当前检查点为第一检查点,该第一检查点为第二检查点的下一个检查点。
可选地,作为一个实施例,所述存储设备预设有第一并发标识和第二并发标识,所述第一WAL与所述第一并发标识对应,所述第一WAL集键值对于所述第一并发标识对应,所述第一状态键值对中存储有多个处于工作状态的WAL集键值对,所述多个处于工作状态的WAL集键值对包括所述第一WAL集键值对和第二WAL集键值对,在从所述第一游标键值对指向的所述第一状态键值对中,选取所述第一WAL集键值对之前,所述方法还包括,获取待存储至存储设备的第二WAL键值对,所述第二WAL键值对与所述第二并发标识对应;从所述第一游标键值对指向的所述第一状态键值对中,选取与所述第二并发标识对应的所述第二WAL集键值对;在所述第一WAL存储至所述第一WAL集键值对中的过程中,将所述第二WAL存储至所述第二WAL集键值对中。
具体地,当有待存储的多个WAL需要向存储设备中存储时,可以为多个WAL配置不同的并发标识,并根据不同并发标识对应的处于工作状态的WAL集键值对,确定多个WAL中每个WAL对应的WAL集键值对。
需要说明的是,上述待存储的WAL可以通过哈希计算得到并发标识,实现将多个待存储的WAL与预设的多个并发标识对应。
在本申请实施例中,基于并发标识可以同时为待存储的多个WAL,选择不同的处于工作状态的WAL集键值对,使得上述对个WAL可以同时存储至存储设备中,有利于提高存储WAL的效率。
上文结合图1至图7详细地说明了本申请实施例的存储预写日志的方法,下文结合图8至图10详细说明本申请实施例的装置,应理解,图8至图10所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。
图8是本申请实施例的一种处理预写日志的装置的示意性结构图。所述装置与存储设备耦合,所述存储设备中记录有多个预写日志WAL集键值对和状态键值对,所述多个WAL集键值对中的每个WAL集键值对用于记录多条WAL,所述状态键值对用于记录所述多个WAL集键值对中至少部分WAL集键值对的状态,所述多个WAL集键值对的状态包括完成状态或密封状态,其中,处于所述密封状态的WAL集键值对禁止记录新的WAL;处于所述完成状态的WAL集键值对中所记录的WAL记录全部执行完成;所述装置800包括:确定模块810和处理模块820。
确定模块,用于从所述状态键值对中,确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态;
处理模块,用于对所述确定模块确定的处于所述密封状态的目标WAL集键值,读取所述目标WAL集键值对并对所述目标WAL集键值对中的所有未完成WAL进行回放,回放完成后,将所述目标WAL集键值的状态修改为完成状态;
所述处理模块,还用于对所述确定模块确定的处于所述完成状态的所述目标WAL集键值对进行删除。
可选地,作为一个实施例,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
可选地,作为一个实施例,所述至少一个WAL集键值对中的每个WAL集键值对的值包括多条WAL。
可选地,作为一个实施例,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录的WAL集键值对的状态包括所述密封状态,所述处理模块,还用于:确定所述第二游标键值对当前指向的所述状态键值对中的第二状态键值对,所述第二状态键值对中记录有所述目标WAL集键值对状态;从所述第二状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述密封状态。
可选地,作为一个实施例,所述存储设备中还存储有第三游标键值对,所述存储设备中还存储有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,所述处理模块,还用于:确定所述第三游标键值对当前指向的所述状态键值对中的第三状态键值对,所述第三状态键值对中记录有所述目标WAL集键值对状态。
可选地,作为一个实施例,在对所述目标WAL集键值对中的WAL进行回放之后,所述处理模块,还用于:在所述第二状态键值对中,将所述目标WAL集键值对的状态从所述密封状态修改为所述完成状态。
可选地,作为一个实施例,在所述删除所述目标WAL集键值对之后,所述处理模块,还用于:在所述第三状态键值对中,将所述目标WAL集键值对的状态从所述完成状态修改为删除状态。
可选地,作为一个实施例,所述处理模块,还用于:将指向所述第二状态键值对的所述第二游标键值对,修改为指向所述至少一个WAL集键值对中的第四状态键值对,所述第四状态键值对为在所述第二状态键值对之后生成的下一个状态键值对。
可选地,作为一个实施例,所述处理模块,还用于:将指向所述第三状态键值对的所述第三游标键值对,修改为指向所述至少一个WAL集键值对中的第五状态键值对,所述第五状态键值对为在所述第二状态键值对之后生成的下一状态键值对。
图9是本申请实施例的另一种处理预写日志的装置的示意性结构图。图9所述的装置900包括获取模块910和处理模块920。图9所述的装置与存储设备耦合,所述存储设备中存储有至少一个预写日志WAL集键值对,所述至少一个WAL集键值对用于多条存储WAL,
获取模块,用于获取待存储至所述存储设备的第一预写日志WAL;
处理模块,用于根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,其中,所述第一WAL集键值对的状态为工作状态,处于所述工作状态的WAL集键值对用于存储新收到的WAL;
所述处理模块,还用于将所述获取模块获取的所述第一WAL存储至所述第一WAL集键值对中。
可选地,所述第一WAL集键值对的状态为工作状态,处于所述工作状态的WAL集键值对中存储的WAL的数量小于所述至少一个WAL集键值对中每个WAL集键值对存储WAL数量的最大值。
可选地,作为一个实施例,所述存储设备中存储有至少一个状态键值对,所述至少一个状态键值对用于存储所述至少一个WAL集键值对的状态,所述处理模块,还用于:根据所述至少一个状态键值对中存储的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对。
可选地,作为一个实施例,所述存储设备中存储有第一游标键值对,所述第一游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述工作状态,所述根据所述至少一个状态键值对中记录的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对,包括:确定所述第一游标键值对当前指向的所述至少一个状态键值对中的第一状态键值对;从所述第一状态键值对记录的WAL集键值对的状态中,选取处于所述工作状态的WAL集键值对为所述第一WAL集键值对。
可选地,作为一个实施例,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
可选地,作为一个实施例,所述至少一个WAL集键值对中的每个WAL集键值对的值包括多条WAL。
可选地,作为一个实施例,所述存储设备中还存储有第二游标键值对,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述密封状态,所述方法还包括:确定所述第二游标键值对当前指向的所述至少一个状态键值对中的第二状态键值对;从所述第二状态键值对记录的WAL集键值对的状态中,确定所述处于密封状态的WAL集键值对,并回放所述处于密封状态的WAL集键值对中的待回放的WAL;若所述处于密封状态的WAL集键值对中的全部WAL处于回放完成或不需要进行回放状态,在所述第二状态键值对中,将所述处于密封状态的WAL集键值对的状态修改为完成状态。
可选地,作为一个实施例,所述存储设备中还存储有第三游标键值对,所述存储设备中还记录有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,所述方法还包括:确定所述第三游标键值对当前指向的所述至少一个状态键值对中的第三状态键值对;从所述第三状态键值对记录的WAL集键值对的状态中,确定所述第三状态键值对中所述处于完成状态的WAL集键值对,并删除所述处于完成状态的WAL集键值对;在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。
可选地,作为一个实施例,在所述删除所述处于完成状态的WAL集键值对之后,所述处理模块,还用于:在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。
可选地,作为一个实施例,所述处理模块,还用于:将所述第二游标键值对指向所述至少一个WAL集键值对中的第四状态键值对,所述第四状态键值对为在所述第二状态键值对之后生成的下一个状态键值对。
可选地,作为一个实施例,所述处理模块,还用于:将所述第三游标键值对指向所述至少一个WAL集键值对中的第五状态键值对,所述第五状态键值对为在所述第二状态键值对之后生成的下一状态键值对。
在可选的实施例中,上述装置800还可以是控制器1000,具体地,所述确定模块810和所述处理模块820可以为处理器1020,所述控制器1000还可以包括存储器1010,存储器可以为装置800中的存储设备,具体如图10所示。
在可选的实施例中,上述装置900还可以是控制器1000,具体地,所述获取模块810可以为输入输出接口1030,所述处理模块可以为处理器1020,所述控制器1000还可以包括存储器1010,存储器可以为装置900中的存储设备,具体如图10所示。
图10是本申请另一实施例的控制器的示意性框图。图10所示的处理节点1000可以包括:存储器1010、处理器1020和输入/输出接口1030。其中,存储器1010、处理器1020和输入/输出接口1030通过内部连接通路相连,该存储器1010用于存储程序指令,该处理器1020用于执行该存储器1020存储的程序指令,以控制输入/输出接口1030接收输入的数据和信息,输出操作结果等数据。
应理解,在本申请实施例中,该处理器1020可以采用通用的中央处理器(CentralProcessing Unit,CPU),微处理器,应用专用集成电路(Application SpecificIntegrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器1010可以包括只读存储器和随机存取存储器,并向处理器1020提供指令和数据。处理器1020的一部分还可以包括非易失性随机存取存储器。例如,处理器1020还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器1020中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1010,处理器1020读取存储器1010中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其它通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可选地,作为一个实施例,图8所示的确定模块和处理模块还可以运行在图10所示的处理器中的程序模块。
可选地,作为一个实施例,图9所示的获取模块和处理模块还可以运行在图10所示的处理器中的程序模块。
应理解,在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(Digital Video Disc,DVD))或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种处理预写日志的方法,其特征在于,所述方法应用于存储设备,所述存储设备中记录有多个预写日志WAL集键值对和状态键值对,所述多个WAL集键值对中的每个WAL集键值对用于记录多条WAL,所述状态键值对用于记录所述多个WAL集键值对中至少部分WAL集键值对的状态,所述多个WAL集键值对的状态包括完成状态或密封状态,其中,处于所述密封状态的WAL集键值对禁止记录新的WAL;处于所述完成状态的WAL集键值对中所记录的WAL记录全部执行完成;
所述方法包括:
从所述状态键值对中,确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态;
对处于所述密封状态的目标WAL集键值对,读取所述目标WAL集键值对并对所述目标WAL集键值对中的所有未完成WAL进行回放,回放完成后,将所述目标WAL集键值的状态修改为完成状态;
对处于所述完成状态的所述目标WAL集键值对进行删除。
2.如权利要求1所述的方法,其特征在于,所述状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
3.如权利要求1或2所述的方法,其特征在于,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录的WAL集键值对的状态包括所述密封状态,
所述从所述状态键值对中确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态,还包括:
确定所述第二游标键值对当前指向的所述状态键值对中的第二状态键值对,所述第二状态键值对中记录有所述目标WAL集键值对状态;
从所述第二状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述密封状态。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述存储设备中还存储有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,
所述从所述至少一个状态键值对中确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态,还包括:
确定所述第三游标键值对当前指向的所述状态键值对中的第三状态键值对,所述第三状态键值对中记录有所述目标WAL集键值对状态;
从所述第三状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述完成状态。
5.一种处理预写日志的方法,其特征在于,所述方法应用于存储设备,所述存储设备中存储有至少一个预写日志WAL集键值对,所述至少一个WAL集键值对用于记录多条WAL,
所述方法包括:
获取待存储至所述存储设备的第一预写日志WAL;
根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,其中,所述第一WAL集键值对的状态为工作状态,处于所述工作状态的WAL集键值对用于存储新收到的WAL;
将所述第一WAL存储至所述第一WAL集键值对中。
6.如权利要求5所述的方法,其特征在于,所述存储设备中存储有至少一个状态键值对,所述至少一个状态键值对用于记录所述至少一个WAL集键值对的状态,
所述根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,包括:
根据所述至少一个状态键值对中记录的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对。
7.如权利要求6所述的方法,其特征在于,所述存储设备中存储有第一游标键值对,所述第一游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述工作状态,
所述根据所述至少一个状态键值对中记录的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对,包括:
确定所述第一游标键值对当前指向的所述至少一个状态键值对中的第一状态键值对;
从所述第一状态键值对记录的WAL集键值对的状态中,选取处于所述工作状态的WAL集键值对为所述第一WAL集键值对。
8.如权利要求6或7所述的方法,其特征在于,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
9.如权利要求6-8中任一项所述的方法,其特征在于,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录WAL集键值对的状态包括密封状态,
所述方法还包括:
确定所述第二游标键值对当前指向的所述至少一个状态键值对中的第二状态键值对;
从所述第二状态键值对记录的WAL集键值对的状态中,确定所述处于密封状态的WAL集键值对,并回放所述处于密封状态的WAL集键值对中的待回放的WAL;
若所述处于密封状态的WAL集键值对中的全部WAL处于回放完成或不需要进行回放状态,在所述第二状态键值对中,将所述处于密封状态的WAL集键值对的状态修改为完成状态。
10.如权利要求6-9中任一项所述的方法,其特征在于,所述存储设备中还记录有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括完成状态,
所述方法还包括:
确定所述第三游标键值对当前指向的所述至少一个状态键值对中的第三状态键值对;
从所述第三状态键值对记录的WAL集键值对的状态中,确定所述第三状态键值对中所述处于完成状态的WAL集键值对,并删除所述处于完成状态的WAL集键值对;
在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。
11.一种处理预写日志的装置,其特征在于,所述装置与存储设备耦合,所述存储设备中记录有多个预写日志WAL集键值对和状态键值对,所述多个WAL集键值对中的每个WAL集键值对用于记录多条WAL,所述状态键值对用于记录所述多个WAL集键值对中至少部分WAL集键值对的状态,所述多个WAL集键值对的状态包括完成状态或密封状态,其中,处于所述密封状态的WAL集键值对禁止记录新的WAL;处于所述完成状态的WAL集键值对中所记录的WAL记录全部执行完成;
所述装置包括:
确定模块,用于从所述状态键值对中,确定所述至少一个WAL集键值对中待处理的目标WAL集键值对的状态;
处理模块,用于对所述确定模块确定的处于所述密封状态的目标WAL集键值,读取所述目标WAL集键值对并对所述目标WAL集键值对中的所有未完成WAL进行回放,回放完成后,将所述目标WAL集键值的状态修改为完成状态;
所述处理模块,还用于对所述确定模块确定的处于所述完成状态的所述目标WAL集键值对进行删除。
12.如权利要求11所述的装置,其特征在于,所述状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
13.如权利要求11或12所述的装置,其特征在于,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录的WAL集键值对的状态包括所述密封状态,
所述处理模块,还用于:
确定所述第二游标键值对当前指向的所述状态键值对中的第二状态键值对,所述第二状态键值对中记录有所述目标WAL集键值对状态;
从所述第二状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述密封状态。
14.如权利要求11-13中任一项所述的装置,其特征在于,所述存储设备中还存储有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,
所述处理模块,还用于:
确定所述第三游标键值对当前指向的所述状态键值对中的第三状态键值对,所述第三状态键值对中记录有所述目标WAL集键值对状态;
从所述第三状态键值对记录的WAL集键值对的状态中,确定所述目标WAL集键值对的状态为所述完成状态。
15.一种处理预写日志的装置,其特征在于,所述装置应用于存储设备,所述存储设备中存储有至少一个预写日志WAL集键值对,所述至少一个WAL集键值对用于记录多条WAL,
所述装置包括:
获取模块,用于获取待存储至所述存储设备的第一预写日志WAL;
处理模块,用于根据所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取第一WAL集键值对,其中,所述第一WAL集键值对的状态为工作状态,处于所述工作状态的WAL集键值对用于存储新收到的WAL;
所述处理模块,还用于将所述第一WAL存储至所述第一WAL集键值对中。
16.如权利要求15所述的装置,其特征在于,所述存储设备中存储有至少一个状态键值对,所述至少一个状态键值对用于记录所述至少一个WAL集键值对的状态,
所述处理模块,还用于:
根据所述至少一个状态键值对中记录的所述至少一个WAL集键值对的状态,从所述至少一个WAL集键值对中选取所述第一WAL集键值对。
17.如权利要求16所述的装置,其特征在于,所述存储设备中存储有第一游标键值对,所述第一游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述工作状态,
所述处理模块,还用于:
确定所述第一游标键值对当前指向的所述至少一个状态键值对中的第一状态键值对;
从所述第一状态键值对记录的WAL集键值对的状态中,选取处于所述工作状态的WAL集键值对为所述第一WAL集键值对。
18.如权利要求16或17所述的装置,其特征在于,所述至少一个状态键值对中的每个状态键值对的值包括所述至少一个WAL集键值对中的至少部分WAL集键值对的键,以及所述至少部分WAL集键值对的键对应的WAL集键值对的状态。
19.如权利要求16-18中任一项所述的装置,其特征在于,所述存储设备中还存储有第二游标键值对,所述第二游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述密封状态,
所述处理模块,还用于:
确定所述第二游标键值对当前指向的所述至少一个状态键值对中的第二状态键值对;
从所述第二状态键值对记录的WAL集键值对的状态中,确定所述处于密封状态的WAL集键值对,并回放所述处于密封状态的WAL集键值对中的待回放的WAL;
若所述处于密封状态的WAL集键值对中的全部WAL处于回放完成或不需要进行回放状态,在所述第二状态键值对中,将所述处于密封状态的WAL集键值对的状态修改为完成状态。
20.如权利要求15-19中任一项所述的装置,其特征在于,所述存储设备中还记录有第三游标键值对,所述第三游标键值对指向的状态键值对中记录WAL集键值对的状态包括所述完成状态,
所述处理模块,还用于:
确定所述第三游标键值对当前指向的所述至少一个状态键值对中的第三状态键值对;
从所述第三状态键值对记录的WAL集键值对的状态中,确定所述第三状态键值对中所述处于完成状态的WAL集键值对,并删除所述处于完成状态的WAL集键值对;
在所述第三状态键值对中,将所述处于完成状态的WAL集键值对的状态修改为删除状态。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/120118 WO2019127456A1 (zh) | 2017-12-29 | 2017-12-29 | 处理预写日志的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110402436A CN110402436A (zh) | 2019-11-01 |
CN110402436B true CN110402436B (zh) | 2021-10-08 |
Family
ID=67064425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002706.3A Active CN110402436B (zh) | 2017-12-29 | 2017-12-29 | 处理预写日志的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11526495B2 (zh) |
EP (1) | EP3712783A4 (zh) |
CN (1) | CN110402436B (zh) |
WO (1) | WO2019127456A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103502970A (zh) * | 2011-12-21 | 2014-01-08 | 华为技术有限公司 | 一种键值对的操作方法及装置 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
CN104809178A (zh) * | 2015-04-15 | 2015-07-29 | 北京科电高技术公司 | 一种键值数据库内存日志的写入方法 |
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8396932B2 (en) * | 2010-04-07 | 2013-03-12 | Apple Inc. | Apparatus and method for efficiently managing data in a social networking service |
US8700670B2 (en) * | 2010-04-12 | 2014-04-15 | Symantec Corporation | Insert optimization for B+ tree data structure scalability |
US8977898B1 (en) * | 2012-09-24 | 2015-03-10 | Emc Corporation | Concurrent access to data during replay of a transaction log |
JP5949937B2 (ja) * | 2012-10-29 | 2016-07-13 | 日本電気株式会社 | トランザクションシステム |
US9037556B2 (en) * | 2012-12-03 | 2015-05-19 | Vmware, Inc. | Distributed, transactional key-value store |
US9613122B2 (en) * | 2014-05-02 | 2017-04-04 | Facebook, Inc. | Providing eventual consistency for multi-shard transactions |
-
2017
- 2017-12-29 WO PCT/CN2017/120118 patent/WO2019127456A1/zh active Application Filing
- 2017-12-29 EP EP17936580.4A patent/EP3712783A4/en active Pending
- 2017-12-29 CN CN201780002706.3A patent/CN110402436B/zh active Active
-
2020
- 2020-06-23 US US16/909,429 patent/US11526495B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103502970A (zh) * | 2011-12-21 | 2014-01-08 | 华为技术有限公司 | 一种键值对的操作方法及装置 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
CN104809178A (zh) * | 2015-04-15 | 2015-07-29 | 北京科电高技术公司 | 一种键值数据库内存日志的写入方法 |
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200320065A1 (en) | 2020-10-08 |
EP3712783A4 (en) | 2020-12-30 |
US11526495B2 (en) | 2022-12-13 |
EP3712783A1 (en) | 2020-09-23 |
WO2019127456A1 (zh) | 2019-07-04 |
CN110402436A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108460045B (zh) | 一种快照的处理方法及分布式块存储*** | |
CN111694770B (zh) | 一种处理io请求的方法及装置 | |
EP3316150B1 (en) | Method and apparatus for file compaction in key-value storage system | |
CN103635887A (zh) | 缓存数据的方法和存储*** | |
US20220164316A1 (en) | Deduplication method and apparatus | |
CN115543871B (zh) | 数据存储方法及相关设备 | |
US10901982B2 (en) | Managing a data set | |
CN111385294B (zh) | 数据处理方法、***、计算机设备和存储介质 | |
CN104572917A (zh) | 数据锁定方法、装置及分布式存储*** | |
CN104035822A (zh) | 一种低开销的高效内存去冗余方法及*** | |
JP2022522790A (ja) | ブロックチェーントランザクションを追跡するための方法およびデバイス | |
CN110402436B (zh) | 处理预写日志的方法和装置 | |
CN109977097B (zh) | 一种基于数据库的网络配置管理方法及*** | |
KR102620584B1 (ko) | 블록체인 기반 시스템에서 상태 db의 무결성을 보장하는 장치 및 그 방법 | |
CN115904211A (zh) | 一种存储***、数据处理方法及相关设备 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
CN117632953B (zh) | 数据循环存储方法、装置、服务器及存储介质 | |
CN113950145B (zh) | 数据处理方法及装置 | |
CN108989245A (zh) | 用户数据存储方法及装置 | |
CN112241393B (zh) | 文件存储方法、终端和计算机可读存储介质 | |
CN114546289B (zh) | 一种读取数据的方法、***、设备以及介质 | |
CN109471917B (zh) | 数据处理方法、装置、设备及介质 | |
CN109992701B (zh) | 一种链表实现方法、装置、设备及可读存储介质 | |
CN107016041B (zh) | 一种控制单条数据出库的方法及装置 | |
CN104808985A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |