CN111444114B - 一种非易失性内存中数据的处理方法、装置及系统 - Google Patents

一种非易失性内存中数据的处理方法、装置及系统 Download PDF

Info

Publication number
CN111444114B
CN111444114B CN201910042346.0A CN201910042346A CN111444114B CN 111444114 B CN111444114 B CN 111444114B CN 201910042346 A CN201910042346 A CN 201910042346A CN 111444114 B CN111444114 B CN 111444114B
Authority
CN
China
Prior art keywords
data
original data
log
original
memory space
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
Application number
CN201910042346.0A
Other languages
English (en)
Other versions
CN111444114A (zh
Inventor
王正恒
付秋雷
朱国云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910042346.0A priority Critical patent/CN111444114B/zh
Publication of CN111444114A publication Critical patent/CN111444114A/zh
Application granted granted Critical
Publication of CN111444114B publication Critical patent/CN111444114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种非易失性内存中数据的处理方法、装置及系统。其中,所述方法包括:获得待写入所述非易失性内存中的原始数据;在所述非易失性内存中为所述原始数据分配内存空间;将所述原始数据写入所述内存空间中;获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。采用本申请提供的方法,解决了现有技术中由于数据存储过程中针对同样的数据需要写多次和存储多份而导致的数据处理效率低的问题。

Description

一种非易失性内存中数据的处理方法、装置及系统
技术领域
本申请涉及数据存储领域,具体涉及一种非易失性内存中数据的处理方法、装置及系统。
背景技术
随着大数据时代的到来,用于管理海量数据的存储系统的使用日益广泛。
现有的存储系统是基于外部存储设备实现的。常用的外部存储设备包括HDD和SSD。为了较好的访问效果,在存储系统中通常保存了日志数据和存储数据两份数据。例如,常用的数据库mysql就使用日志数据binlog来记录日志。
在这种存储系统中,由于针对同样的数据,日志和存储数据存多份,数据存储过程中针对同样的数据需要写多次和存储多份,从而导致数据处理效率低的问题。
发明内容
本申请提供一种非易失性内存中数据的处理方法、装置及系统,以解决现有技术中,现有技术中由于数据存储过程中针对同样的数据需要写多次和存储多份而导致的数据处理效率低的问题。
本申请提供一种非易失性内存中数据的处理方法,包括:
获得待写入所述非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
可选的,所述获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录,包括:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息。
可选的,所述建立所述日志记录与所述内存空间的信息之间的对应关系,包括:
在所述日志记录中记录所述内存空间的地址信息;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系。
可选的,所述处理方法,还包括:
采用链表结构建立日志记录之间的关联关系。
可选的,所述处理方法还包括:
根据所述原始数据,建立所述原始数据对应的索引信息。
可选的,所述处理方法还包括:
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
可选的,所述处理方法还包括:在所述索引信息不可用时,获取恢复所述索引信息的恢复指令;
根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;
根据所述根记录访问以链表结构存储的所述日志记录的子记录;
根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
可选的,所述处理方法还包括:获取删除所述原始数据的删除指令;
根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
可选的,所述处理方法还包括:
获取更新所述原始数据的更新指令;
根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;
在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
可选的,所述处理方法还包括:
获取复制所述日志记录的复制指令;
根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
可选的,所述处理方法还包括:
判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用和/或被所述数据位图标志设置为已使用;
若否,则将所述内存空间释放给所述非易失性内存。
本申请提供一种非易失性内存中数据的处理装置,包括:
写入信息获得单元,用于获得待写入所述非易失性内存中的原始数据;
分配单元,用于在所述非易失性内存中为所述原始数据分配内存空间;
写入单元,用于将所述原始数据写入所述内存空间中;
日志记录获得单元,用于获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
对应关系建立单元,用于建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
可选的,所述日志记录获得单元,具体用于:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息。
可选的,所述对应关系建立单元,具体用于:
在所述日志记录中记录所述内存空间的地址信息;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系。
可选的,所述处理装置还包括关联单元,所述关联单元具体用于:
采用链表结构建立日志记录之间的关联关系。可选的,所述处理装置还包括索引信息建立单元,所述索引信息建立单元用于:
根据所述原始数据,建立所述原始数据对应的索引信息。
可选的,所述处理装置还包括标志设置单元,所述标志设置单元用于:
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
可选的,所述处理装置还包括恢复单元,所述恢复单元用于:
在所述索引信息不完整时,获取恢复所述索引信息的恢复指令;
根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;
根据所述根记录访问以链表结构存储的所述日志记录的子记录;
根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
可选的,所述处理装置还包括删除单元,所述删除单元用于:
获取删除所述原始数据的删除指令;
根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
可选的,所述处理装置还包括更新单元,所述更新单元用于:
获取更新所述原始数据的更新指令;
根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;
在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
可选的,所述处理装置还包括复制单元,所述复制单元用于:
获取复制所述日志记录的复制指令;
根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
可选的,所述处理装置还包括释放单元,所述释放单元用于:
判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用和/或被所述数据位图标志设置为已使用;
若否,则将所述内存空间释放给所述非易失性内存。
本申请提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
获得待写入所述非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本申请提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
获得待写入所述非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本申请提供一种非易失性内存中数据的处理系统,包括:客户端和数据处理服务器;
所述客户端,用于获得待写入所述非易失性内存中的原始数据;
所述数据处理服务器,用于在所述非易失性内存中为所述原始数据分配内存空间;将所述原始数据写入所述内存空间中;获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
可选的,所述获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录,包括:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息。
可选的,所述建立所述日志记录与所述内存空间的信息之间的对应关系,包括:
在所述日志记录中记录所述内存空间的地址信息;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系。
可选的,所述建立所述日志记录与所述内存空间的信息之间的对应关系,包括:
建立第一日志记录与第一数据内存空间的信息之间的对应关系;
建立第二日志记录与第二数据内存空间的信息之间的对应关系;
所述第一日志记录和所述第二日志记录之间采用链表结构相互关联。
可选的,所述数据处理服务器,还用于:
根据所述原始数据,建立所述原始数据对应的索引信息。
可选的,所述数据处理服务器,还用于:在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
可选的,所述客户端还用于,获取恢复所述索引信息的恢复指令;
所述数据处理服务器,还用于根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;根据所述根记录访问以链表结构存储的所述日志记录的子记录;根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
可选的,所述客户端还用于,获取删除所述原始数据的删除指令;
所述数据处理服务器还用于,根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
可选的,所述客户端还用于,获取更新所述原始数据的更新指令;
所述数据处理服务器还用于,根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
可选的,所述客户端还用于,获取复制所述日志记录的复制指令;
所述数据处理服务器还用于,根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
可选的,所述数据处理服务器还用于,判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用和/或被所述数据位图标志设置为已使用;若否,则将所述内存空间释放给所述非易失性内存。
本申请提供一种基于非易失性内存的分布式键值系统的数据存储方法,包括:
获得待写入所述分布式键值系统的原始键值数据;
确定可存储所述原始键值数据的所述分布式键值系统中的节点;
在所述节点的非易失性内存中为所述原始键值数据分配内存空间;
将所述原始键值数据写入所述内存空间中;
获得未保存有所述原始键值数据的日志文件中针对所述原始键值数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始键值数据。与现有技术相比,本申请具有如下优点:
采用本申请提供的方法,首先获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录,然后建立所述日志记录与所述内存空间的信息之间的对应关系,实现了真正意义上的日志即数据,整个存储过程中数据只需要写一次和存储一份,从而解决了现有技术中由于数据存储过程中针对同样的数据需要写多次和存储多份而导致的数据处理效率低的问题。
附图说明
图1是本申请第一实施例的流程图;
图2是本申请第一实施例涉及的一个应用实例的示意图;
图3是本申请第二实施例的流程图。
图4是本申请第五实施例的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种非易失性内存的处理方法。请参看图1,该图为本申请第一实施例的流程图。以下结合图1对本申请第一实施例提供一种非易失性内存的处理方法进行详细说明。所述方法包括如下步骤:
步骤S101:获得待写入所述非易失性内存中的原始数据。
本步骤用于获得待写入所述非易失性内存中的原始数据。
非易失性内存(NVM,Non-volatile memory),具有非易失、按字节存取、存储密度高、低能耗等特点,非易失性内存的读性能接近DRAM,写性能会稍弱于DRAM。分布式系统中常用日志来执行多个副本之间数据复制。
所述原始数据是指待存入存储系统的数据。
步骤S102:在所述非易失性内存中为所述原始数据分配内存空间。
本步骤用于在所述非易失性内存中为所述原始数据分配内存空间。
本实施例中,可以采用类似于slab的内存分配方式为所述原始数据分配内存空间。请参看图2,其为采用本申请提供的方法的一个存储系统的示意图。其中,DRAM中保存了数据位图(data bitmap),日志位图(log bitmap)和混合索引B树。NVM中用于保存数据。图2中最下方的allocator即非易失性内存的内存分配器,其采用slab的分配方法。
步骤S103:将所述原始数据写入所述内存空间中。
本步骤用于将所述原始数据写入所述内存空间中。
在步骤S102分配对应的内存空间之后,需要将所述原始数据写入所述内存空间中。
步骤S104:获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录。
本步骤用于获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录。
现有技术中,日志文件中保存了存储数据的副本。本申请提供的方法,在日志文件中并不保存存储数据的副本。
所述获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录,包括:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录,在本实施例中,可以用内存分配器在所述非易失性内存中开辟一段内存,作为日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息,日志记录中一方面记录了需要操作的存储系统中的数据,另一方面记录了操作的类型,例如可以是向存储系统写入数据。
步骤S105:建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本步骤用于建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
所述建立所述日志记录与所述内存空间的信息之间的对应关系,包括:
在所述日志记录中记录所述内存空间的地址信息,例如可以直接将所述内存空间的地址记录到所述日志记录中;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系,在日志记录中记录原始数据的地址后,可以利用该地址访问原始数据。
所述处理方法,还包括:
采用链表结构建立日志记录之间的关联关系。
传统基于磁盘的日志在存储上更加倾向于物理介质上数据的连续,而NVM随机访问性能接近内存的特性,本实施例中可以选择使用类似内存LinkedList的数据结构,日志文件中的每个log entry(日志记录)先通过nvm allocator来申请占用的nvm空间和地址,前一条log entry中会包含下一条log entry的地址。普通基于磁盘的Log往往采用groupcommit批量提交的形式来提高性能,在这个模式下数据存在丢失的风险,而NVM的log(日志)则会确保每一条log entry都持久化。
所述非易失性内存中数据的处理方法,还包括:
根据所述原始数据,建立所述原始数据对应的索引信息。
本实施例中,所述索引信息可以保存在DRAM中。
请参考图2,Hybrid Index KV存储引擎,索引和数据采用hybrid的架构,索引部分存储在DRAM中,数据部分存在NVM上,采用这种方式之后,从Log的数据Apply到KV引擎里面只需要更新相关的索引信息。同时KV引擎确保了恢复时候自动恢复和加载索引确保数据不丢
所述非易失性内存中数据的处理方法,还包括:
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
请参考图2,所述日志位图即图2中的log bitmap。所述数据位图即图2中的databitmap。
Bitmap算法又名位图算法,其原理是,使用下标代替数值或特定的意义,使用这个位为0或者1代表特性是否存在。Bitmap算法具有效率高,节省空间的特点,适用于对大量数据进行去重,查询等。
利用存储系统存储的原始数据的日志位图和数据位图可以实现原始数据的回收。例如,log在复制完成,以及数据在更新之后,会产生无用的NVM数据,这部分数据需要实时的被Allocator回收,这里面用两个bitmap来做为实用的标识,当数据既没有被作为log也没有被作为kv(键值)数据使用时立即被回收。
所述非易失性内存中数据的处理方法,还包括:
在所述索引信息不完整时,获取恢复所述索引信息的恢复指令;
根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;
根据所述根记录访问以链表结构存储的所述日志记录的子记录;
根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
所述索引信息不完整,包括索引信息受到破坏,例如断电等情况,还可以包括没有索引信息的情况。
利用NVM内存的非易失性,可以恢复保存于DRAM的索引信息。所述日志文件由若干个日志记录构成。请参考图2,Data1为日志记录的根记录,Data2-Data4是日志记录的子记录。图2中可以看出,Data1具有指向Data2的指针,Data2具有指向Data3的指针,Data3具有指向Data4的指针,通过访问这个Data1-Data4构成的链表,就可以获得所述日志文件中的所有数据,根据这些数据,可以重新构建保存于DRAM的索引信息。
所述非易失性内存中数据的处理方法,还包括:
获取删除所述原始数据的删除指令;
根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
首先,获取删除所述原始数据的删除指令;然后根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项,所述索引信息可以B树;最后,在所述数据位图中,将所述原始数据对应的数据标志设置为未使用,这样,回收线程就可能在合适的时机回收所述原始数据对应的内存空间。
所述非易失性内存中数据的处理方法,还包括:
获取更新所述原始数据的更新指令;
根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;
在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
写入存储系统的原始数据还可以被更新。首先,获取更新所述原始数据的更新指令;然后根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;原始数据被更新后,原始数据就被再被数据索引使用了,因此在所述数据位图中,将所述原始数据对应的数据标志设置为未使用;在所述数据位图中,将所述更新数据对应的数据标志设置为已使用。
所述非易失性内存中数据的处理方法,还包括:
获取复制所述日志记录的复制指令;
根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
分布式存储系统中常常使用日志来执行多个副本之间的数据复制。首先,获取复制所述日志记录的复制指令;然后根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
所述非易失性内存中数据的处理方法,还包括:
判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用和/或被所述数据位图标志设置为已使用;
若否,则将所述内存空间释放给所述非易失性内存。
本实施例中,该步骤可以使用一个监控线程来实现,监控线程定期判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用,或者被所述数据位图标志设置为已使用,或者被所述日志位图标志设置为已使用和被所述数据位图标志设置为已使用,如果上述三种情况均为否,那么就将所述内存空间释放给所述非易失性内存。
在上述的实施例中,提供了一种非易失性内存中数据的处理方法,与之相对应的,本申请还提供一种非易失性内存中数据的处理装置。请参看图3,其为本申请的一种非易失性内存中数据的处理装置实施例的流程图。由于本实施例,即第二实施例,基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例的一种非易失性内存中数据的处理装置,包括:
写入信息获得单元301,用于获得待写入所述非易失性内存中的原始数据;
分配单元302,用于在所述非易失性内存中为所述原始数据分配内存空间;
写入单元303,用于将所述原始数据写入所述内存空间中;
日志记录获得单元304,用于获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
对应关系建立单元305,用于建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本实施例中,所述日志记录获得单元,具体用于:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息。
本实施例中,所述对应关系建立单元,具体用于:
在所述日志记录中记录所述内存空间的地址信息;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系。
本实施例中,
所述处理装置还包括关联单元,所述关联单元具体用于:
采用链表结构建立日志记录之间的关联关系。
本实施例中,所述处理装置还包括索引信息建立单元,所述索引信息建立单元用于:
根据所述原始数据,建立所述原始数据对应的索引信息。
本实施例中,所述处理装置还包括标志设置单元,所述标志设置单元用于:
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
本实施例中,所述处理装置还包括恢复单元,所述恢复单元用于:
在所述索引信息不完整时,获取恢复所述索引信息的恢复指令;
根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;
根据所述根记录访问以链表结构存储的所述日志记录的子记录;
根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
本实施例中,所述处理装置还包括删除单元,所述删除单元用于:
获取删除所述原始数据的删除指令;
根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
本实施例中,所述处理装置还包括更新单元,所述更新单元用于:
获取更新所述原始数据的更新指令;
根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;
在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
本实施例中,所述处理装置还包括复制单元,所述复制单元用于:
获取复制所述日志记录的复制指令;
根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
本实施例中,所述处理装置还包括释放单元,所述释放单元用于:
判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用和/或被所述数据位图标志设置为已使用;
若否,则将所述内存空间释放给所述非易失性内存。
本申请第三实施例提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
获得待写入所述非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本申请第四实施例提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
获得待写入所述非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本申请第五实施例提供一种非易失性内存中数据的处理系统,包括:客户端401和数据处理服务器402,请参考图4,其为所述处理系统的示意图;
所述客户端,用于获得待写入所述非易失性内存中的原始数据;
所述数据处理服务器,用于在所述非易失性内存中为所述原始数据分配内存空间;将所述原始数据写入所述内存空间中;获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据。
本实施例中,所述获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录,包括:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息。
本实施例中,所述建立所述日志记录与所述内存空间的信息之间的对应关系,包括:
在所述日志记录中记录所述内存空间的地址信息;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系。
本实施例中,所述数据处理服务器,还用于:采用链表结构建立日志记录之间的关联关系。
本实施例中,所述数据处理服务器,还用于:
根据所述原始数据,建立所述原始数据对应的索引信息。
本实施例中,所述数据处理服务器,还用于:在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
本实施例中,所述客户端还用于,获取恢复所述索引信息的恢复指令;
所述数据处理服务器,还用于在所述索引信息不可用时,根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;根据所述根记录访问以链表结构存储的所述日志记录的子记录;根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
本实施例中,所述客户端还用于,获取删除所述原始数据的删除指令;
所述数据处理服务器还用于,根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
本实施例中,所述客户端还用于,获取更新所述原始数据的更新指令;
所述数据处理服务器还用于,根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
本实施例中,所述客户端还用于,获取复制所述日志记录的复制指令;
所述数据处理服务器还用于,根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
本实施例中,所述数据处理服务器还用于,判断所述原始数据分配的内存空间是否被所述日志位图标志设置为已使用和/或被所述数据位图标志设置为已使用;若否,则将所述内存空间释放给所述非易失性内存。
本申请第六实施例提供一种基于非易失性内存的分布式键值系统的数据存储方法。由于本实施例,即第六实施例,基本相似于第一实施例,所以描述得比较简单,相关之处参见第一实施例的部分说明即可。所述数据存储方法包括:
获得待写入所述分布式键值系统的原始键值数据;
确定可存储所述原始键值数据的所述分布式键值系统中的节点;
在所述节点的非易失性内存中为所述原始键值数据分配内存空间;
将所述原始键值数据写入所述内存空间中;
获得未保存有所述原始键值数据的日志文件中针对所述原始键值数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始键值数据。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个操作器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (14)

1.一种非易失性内存中数据的处理方法,其特征在于,包括:
获得待写入所述非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据;
所述方法还包括:根据所述原始数据,建立所述原始数据对应的索引信息;
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
2.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,所述获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录,包括:
在所述非易失性内存中创建日志文件中针对所述原始数据进行操作的日志记录;
在所述日志记录中记录所述将所述原始数据写入所述内存空间中的数据操作信息。
3.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,所述建立所述日志记录与所述内存空间的信息之间的对应关系,包括:
在所述日志记录中记录所述内存空间的地址信息;
利用所述日志记录中记录的所述地址信息,建立所述日志记录与所述数据内存空间的信息之间的对应关系。
4.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,还包括:
采用链表结构建立日志记录之间的关联关系。
5.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,还包括:
在所述索引信息不可用时,获取恢复所述索引信息的恢复指令;
根据所述恢复指令,在所述日志文件中查找所述日志记录的根记录;
根据所述根记录访问以链表结构存储的所述日志记录的子记录;
根据所述子记录与所述内存空间的信息之间的对应关系,恢复所述索引信息。
6.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,还包括:
获取删除所述原始数据的删除指令;
根据所述删除指令,在所述索引信息中删除所述原始数据对应的索引项;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
7.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,还包括:
获取更新所述原始数据的更新指令;
根据所述更新指令中的更新数据,在所述非易失性内存中为所述更新数据分配内存空间;
在所述数据位图中,将所述更新数据对应的数据标志设置为已使用;
在所述数据位图中,将所述原始数据对应的数据标志设置为未使用。
8.根据权利要求1所述的非易失性内存中数据的处理方法,其特征在于,还包括:
获取复制所述日志记录的复制指令;
根据所述复制指令,在所述日志位图中,将所述原始数据对应的日志标志设置为未使用。
9.根据权利要求5-8中任意一项所述的非易失性内存中数据的处理方法,其特征在于,还包括:
判断所述原始数据分配的内存空间是否被所述日志位图中的日志标志设置为已使用和/或被所述数据位图中的数据标志设置为已使用;
若否,则将所述内存空间释放给所述非易失性内存。
10.一种非易失性内存中数据的处理装置,其特征在于,包括:
写入信息获得单元,用于获得待写入所述非易失性内存中的原始数据;
分配单元,用于在所述非易失性内存中为所述原始数据分配内存空间;
写入单元,用于将所述原始数据写入所述内存空间中;
日志记录获得单元,用于获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
对应关系建立单元,用于建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据;
所述装置还包括:建立单元,用于根据所述原始数据,建立所述原始数据对应的索引信息;
第一设置单元,用于在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
第二设置单元,用于在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
11.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,用于存储程序,所述程序在被所述处理器读取执行时,执行如下操作:
获得待写入非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据;
所述操作还包括:根据所述原始数据,建立所述原始数据对应的索引信息;
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
12.一种计算机可读取存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现以下步骤:
获得待写入非易失性内存中的原始数据;
在所述非易失性内存中为所述原始数据分配内存空间;
将所述原始数据写入所述内存空间中;
获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据;
所述步骤还包括:根据所述原始数据,建立所述原始数据对应的索引信息;
在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;
在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
13.一种非易失性内存中数据的处理系统,其特征在于,包括:客户端和数据处理服务器;
所述客户端,用于获得待写入所述非易失性内存中的原始数据;
所述数据处理服务器,用于在所述非易失性内存中为所述原始数据分配内存空间;将所述原始数据写入所述内存空间中;获得未保存有所述原始数据的日志文件中针对所述原始数据的日志记录;建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始数据;
所述数据处理服务器,还用于根据所述原始数据,建立所述原始数据对应的索引信息;在用于判断所述原始数据是否被所述日志文件使用的日志位图中,将所述原始数据对应的日志标志设置为已使用;在用于判断所述原始数据是否被所述索引信息使用的数据位图中,将所述原始数据对应的数据标志设置为已使用。
14.一种基于非易失性内存的分布式键值系统的数据存储方法,其特征在于,包括:
获得待写入所述分布式键值系统的原始键值数据;
确定可存储所述原始键值数据的所述分布式键值系统中的节点;
在所述节点的非易失性内存中为所述原始键值数据分配内存空间;
将所述原始键值数据写入所述内存空间中;
获得未保存有所述原始键值数据的日志文件中针对所述原始键值数据的日志记录;
建立所述日志记录与所述内存空间的信息之间的对应关系,其中,所述对应关系用于根据所述日志记录查找到所述内存空间中的所述原始键值数据;
所述方法还包括:根据所述原始键值数据,建立所述原始键值数据对应的索引信息;
在用于判断所述原始键值数据是否被所述日志文件使用的日志位图中,将所述原始键值数据对应的日志标志设置为已使用;
在用于判断所述原始键值数据是否被所述索引信息使用的数据位图中,将所述原始键值数据对应的数据标志设置为已使用。
CN201910042346.0A 2019-01-16 2019-01-16 一种非易失性内存中数据的处理方法、装置及系统 Active CN111444114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910042346.0A CN111444114B (zh) 2019-01-16 2019-01-16 一种非易失性内存中数据的处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910042346.0A CN111444114B (zh) 2019-01-16 2019-01-16 一种非易失性内存中数据的处理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN111444114A CN111444114A (zh) 2020-07-24
CN111444114B true CN111444114B (zh) 2023-06-13

Family

ID=71626840

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910042346.0A Active CN111444114B (zh) 2019-01-16 2019-01-16 一种非易失性内存中数据的处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN111444114B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114301769A (zh) * 2021-12-29 2022-04-08 杭州迪普信息技术有限公司 原始流量数据的处理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282207A (zh) * 2008-06-05 2008-10-08 华为技术有限公司 数据更新的记录方法、装置和数据备份方法、系统
CN106886375A (zh) * 2017-03-27 2017-06-23 百度在线网络技术(北京)有限公司 存储数据的方法和装置
CN107862064A (zh) * 2017-11-16 2018-03-30 北京航空航天大学 一个基于nvm的高性能、可扩展的轻量级文件系统
CN108664353A (zh) * 2017-03-29 2018-10-16 中国移动通信集团四川有限公司 数据恢复的方法、装置及副本管理服务器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016095151A1 (en) * 2014-12-18 2016-06-23 Hua Zhong University Of Science Technology Storing log records in a non-volatile memory
US10552403B2 (en) * 2015-05-21 2020-02-04 Vmware, Inc. Using checksums to reduce the write latency of logging

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282207A (zh) * 2008-06-05 2008-10-08 华为技术有限公司 数据更新的记录方法、装置和数据备份方法、系统
CN106886375A (zh) * 2017-03-27 2017-06-23 百度在线网络技术(北京)有限公司 存储数据的方法和装置
CN108664353A (zh) * 2017-03-29 2018-10-16 中国移动通信集团四川有限公司 数据恢复的方法、装置及副本管理服务器
CN107862064A (zh) * 2017-11-16 2018-03-30 北京航空航天大学 一个基于nvm的高性能、可扩展的轻量级文件系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
游理通;王振杰;黄林鹏.一个基于日志结构的非易失性内存键值存储系统.计算机研究与发展.2018,(09),全文. *

Also Published As

Publication number Publication date
CN111444114A (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
US11301379B2 (en) Access request processing method and apparatus, and computer device
CN108319602B (zh) 数据库管理方法及数据库系统
US9600555B1 (en) Object-based commands and functions
US8239648B2 (en) Reclamation of thin provisioned disk storage
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
US8326897B2 (en) Apparatus and method for managing data storage
US10565125B2 (en) Virtual block addresses
CN106951375B (zh) 在存储系统中删除快照卷的方法及装置
CN111177143B (zh) 键值数据存储方法、装置、存储介质与电子设备
EP2590078A2 (en) Shadow paging based log segment directory
CN113568582B (zh) 数据管理方法、装置和存储设备
CN113377292B (zh) 一种单机存储引擎
CN110597663A (zh) 一种事务处理方法及装置
CN112631950A (zh) 一种l2p表的保存方法、系统、设备以及介质
KR20110046118A (ko) 적응적 로깅 장치 및 방법
CN117075821A (zh) 一种分布式存储方法、装置、电子设备及存储介质
CN109407985B (zh) 一种数据管理的方法以及相关装置
US10452496B2 (en) System and method for managing storage transaction requests
CN111444114B (zh) 一种非易失性内存中数据的处理方法、装置及系统
CN109508140B (zh) 存储资源管理方法、装置、电子设备及电子设备、系统
US10877881B2 (en) In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
US11055184B2 (en) In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations
CN116226232A (zh) 面向分布式数据库的持久内存数据存储方法及系统
US11163446B1 (en) Systems and methods of amortizing deletion processing of a log structured storage based volume virtualization

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