键值数据存储方法、装置、设备以及存储介质与流程

文档序号:17442203发布日期:2019-04-17 04:54阅读:312来源:国知局
键值数据存储方法、装置、设备以及存储介质与流程

本发明涉及数据存储技术领域,尤其涉及一种键值数据存储方法、装置、设备以及存储介质。



背景技术:

键值存储数据库中的数据按照键值对的形式进行组织、索引和存储。以键值数据进行存储非常适合不涉及过多数据关系业务关系的业务数据,同时能有效减少读写磁盘的次数,比其他数据库存储拥有更好的读写性能。

在现有的键值数据存储中,采用平面结构的芯片存储,并将键和值分开存储。对于需要频繁写入和更新的数据,在每次值的日志文件进行垃圾回收时,需要去存放键的数据结构中判断当前存储的数据是否有效。如果有效,立马改写对应的地址。

现有的键值数据存储方法由于对同一区域物理块频繁的读取和写入操作,导致该物理块附近的温度急剧上升,数据出错率升高。



技术实现要素:

本发明提供一种键值数据存储方法、装置、设备以及存储介质,旨在解决现有的键值数据存储方法由于对同一区域物理块频繁的读取和写入操作,导致该物理块附近的温度急剧上升,数据出错率升高的技术问题。

第一方面,本发明提供一种键值数据存储方法,包括:获取三维闪存中第一物理块集合中第一物理块的数量;其中,第一物理块为已写入键值数据的物理块;判断第一物理块的数量是否达到第一预设数量;若判断结果为否,则获取前一次写入的第一物理块的位置信息;其中,位置信息包括:区域信息和坐标信息;根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息;其中,当前写入的第一物理块的区域信息和前一次写入的第一物理块的区域信息不同;根据当前写入第一物理块的位置信息将键值数据存储至当前写入的第一物理块,以使当前写入的第一物理块远离前一次写入的第一物理块。

在本发明提供的一种键值数据存储方法中,判断已写入键值数据的物理块是否达到第一预设数量,当未到达第一预设数量时,根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息,并将键值数据存储至当前写入的第一物理块,以使当前写入的第一物理块远离前一次写入的第一物理块,避免对同一区域物理块频繁的读取和写入操作,导致该区域物理块的温度急剧上升,进而提高了数据存储的正确率。

可选地,判断第一物理块的数量是否达到预设数量之后,还包括:若判断结果为是,则将键值数据存储至第一待选物理块集合中温度最低的第一待选物理块,其中,第一待选物理块为第二物理块或者写入键值数据的数量未达到第二预设数量的第一物理块;第二物理块为未写入键值数据的物理块;或者,若判断结果为是,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块,其中,第二待选物理块为写入键值数据的数量未达到第二预设数量的第一物理块;或者,若判断结果为是,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块,其中,第三待选物理块为第二待选物理块集合中写入数据数量最小的第二待选物理块。

在本发明提供的一种键值数据存储方法中,当到达第一预设数量时,根据物理块的温度和物理块中存储数据的数量确定键值数据所存储的物理块,既考虑了温度对三维闪存的数据存储影响,又考虑了对物理块存储空间的充分利用。

可选地,若判断结果为是,则将键值数据存储至第一待选物理块集合中温度最低的第一待选物理块,具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断第一物理块中数据是否均有效;当第一物理块中数据的数量均已达到第二预设数量且第一物理块中数据均有效时,则随机选择第一物理块进行擦除键值数据处理后增加至第二物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块;其中,第二物理块集合包括第二物理块;当第一物理块中数据的数量均已达到第二预设数量且第一物理块中数据存在无效数据时,则从第一物理块集合中选择无效数据最多的第一物理块进行清除键值数据处理后增加至第二物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块。

在本发明提供的一种键值数据存储方法中,当物理块中存储数据已经达到第二预设值且所存储数据均有效时,擦除任意一个物理块中数据,并选择温度最低的未写入数据的物理块进行存储键值数据操作,或者当物理块中存储数据已经达到第二预设值且所存储数据存在无效数据时,选择无效数据最多的物理块进行数据擦除,并选择温度最低的未写入数据的物理块进行存储键值数据操作,提高物理块的利用率和数据存储正确率。

可选地,若判断结果为是,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块,具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断写入数据数量最小的第二待选物理块的数量是否为多个;当第一物理块中数据的数量未达到第二预设数量时且写入数据数量最小的第二待选物理块的数量仅为一个时,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块。

在本发明提供的一种键值数据存储方法中,当物理块中存储数据未达到第二预设值并且数据数量最小的第二待选物理块的为多个时,从存储数据量最小的物理块中选择温度最小进行键值数据存储。

可选地,若判断结果为是,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块,具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断写入数据数量最小的第二待选物理块的数量是否为多个;当第一物理块中数据的数量未达到第二预设数量时且写入数据数量最小的第二待选物理块的数量为多个时,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块。

在本发明提供的一种键值数据存储方法中,当物理块中存储数据未达到第二预设值并且数据数量最小的第二待选物理块的为一个时,从存储数据量最小的物理块中选择温度最小进行键值数据存储。

可选地,在获取前一次写入的第一物理块的位置信息之前,还包括:在三维闪存的最外层物理块和最内层物理块之间设定中性层,以根据中性层确定内部物理块集合和外部物理块集合,其中,内部物理块集合包括第三物理块,外部物理块集合包括第四物理块,第三物理块的区域信息设定为三维闪存的外部,第四物理块的区域信息设定为三维闪存的内部。

在本发明提供的一种键值数据存储方法中,将中性层外部的物理块的区域信息设定为三维闪存的外部,中性层内部的物理块的区域信息设定为三维闪存的内部,根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息,并将键值数据存储至当前写入的第一物理块,以使当前写入的第一物理块远离前一次写入的第一物理块,避免对同一区域物理块频繁的读取和写入操作,导致该区域物理块的温度急剧上升,进而提高了数据存储的正确率。

可选地,根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息,具体包括:当前一次写入的第一物理块的区域信息为三维闪存的内部时,从外部物理块集合中选择未写入键值数据的第四物理块,将未写入键值数据的第四物理块的位置信息作为当前写入的第一物理块的位置信息;当前一次写入的第一物理块的区域信息为三维闪存的外部时,从内部物理块集合中选择未写入键值数据的第三物理块,将未写入键值数据的第三物理块的位置信息作为当前写入的第一物理块的位置信息。

在本发明提供的一种键值数据存储方法中,当前一次写入的第一物理块的区域信息为三维闪存的内部时,从中性层外部选择物理块进行键值数据存储,当前一次写入的第一物理块的区域信息为三维闪存的外部时,从中性层内部选择物理块进行键值数据存储,避免对同一区域物理块频繁的读取和写入操作,导致该区域物理块的温度急剧上升,进而提高了数据存储的正确率。

第二方面,本发明提供一种键值数据存储装置,包括:获取模块,用于获取三维闪存中第一物理块集合中第一物理块的数量;其中,第一物理块为已写入键值数据的物理块;判断模块,用于判断第一物理块的数量是否达到第一预设数量;获取模块,还用于若判断结果为否,则获取前一次写入的第一物理块的位置信息;其中,位置信息包括:区域信息和坐标信息;获得模块,用于根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息;其中,当前写入的第一物理块的区域信息和前一次写入的第一物理块的区域信息不同;存储模块,用于根据当前写入第一物理块的位置信息将键值数据存储至当前写入的第一物理块,以使当前写入的第一物理块远离前一次写入的第一物理块。

可选地,存储模块还用于:若判断结果为是,则将键值数据存储至第一待选物理块集合中温度最低的第一待选物理块,其中,第一待选物理块为第二物理块或者写入键值数据的数量未达到第二预设数量的第一物理块;第二物理块为未写入键值数据的物理块;或者,若判断结果为是,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块,其中,第二待选物理块为写入键值数据的数量未达到第二预设数量的第一物理块;或者,若判断结果为是,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块,其中,第三待选物理块为第二待选物理块集合中写入数据数量最小的第二待选物理块。

可选地,存储模块具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断第一物理块中数据是否均有效;当第一物理块中数据的数量均已达到第二预设数量且第一物理块中数据均有效时,则随机选择第一物理块进行擦除键值数据处理后增加至第二物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块;其中,第二物理块集合包括第二物理块;当第一物理块中数据的数量均已达到第二预设数量且第一物理块中数据存在无效数据时,则从第一物理块集合中选择无效数据最多的第一物理块进行清除键值数据处理后增加至未写入物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块。

可选地,存储模块具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断写入数据数量最小的第二待选物理块的数量是否为多个;当第一物理块中数据的数量未达到第二预设数量时且写入数据数量最小的第二待选物理块的数量仅为一个时,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块。

可选地,存储模块具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断写入数据数量最小的第二待选物理块的数量是否为多个;当第一物理块中数据的数量未达到第二预设数量时且写入数据数量最小的第二待选物理块的数量为多个时,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块。

可选地,装置还包括:设定模块,用于在三维闪存中设定中性层;确定模块,用于根据中性层确定内部物理块集合和外部物理块集合,其中,内部物理块集合包括第三物理块,外部物理块集合包括第四物理块,第三物理块的区域信息设定为三维闪存的外部,第四物理块的区域信息设定为三维闪存的内部。

可选地,获得模块具体包括:当前一次写入的第一物理块的区域信息为三维闪存的内部时,从外部物理块集合中选择未写入键值数据的第四物理块,将未写入键值数据的第四物理块的位置信息作为当前写入的第一物理块的位置信息;当前一次写入的第一物理块的区域信息为三维闪存的外部时,从内部物理块集合中选择未写入键值数据的第三物理块,将未写入键值数据的第三物理块的位置信息作为当前写入的第一物理块的位置信息。

第三方面,本发明提供一种电子设备,其特征在于,包括:至少一个处理器和存储器;其中,存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行第一方面以及可选地方案涉及的键值数据存储方法。

第四方面,本发明提供一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现第一方面以及可选地方案涉及的键值数据存储方法。

本发明提供一种键值数据存储方法、装置、设备以及存储介质,在键值数据存储方法中,判断已写入键值数据的物理块是否达到第一预设数量,当未到达第一预设数量时,根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息,并将键值数据存储至当前写入的第一物理块,以使当前写入的第一物理块远离前一次写入的第一物理块,避免对同一区域物理块频繁的读取和写入操作,导致该区域物理块的温度急剧上升,进而提高了数据存储的正确率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要写入的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明根据一示例性实施例示出的键值数据存储方法的流程图;

图2为图1所示实施例示出的键值数据存储方法所基于三维闪存的结构示意图;

图3为图1所示实施例示出的键值数据存储方法所基于三维闪存的坐标示意图;

图4为图1所示实施例示出的键值数据存储方法所基于三维闪存的数组示意图;

图5为本发明根据另一示例性实施例示出的键值数据存储方法的流程图;

图6为本发明根据另一示例性实施例示出的键值数据存储方法的流程图;

图7为本发明根据一示例性实施例示出的键值数据存储装置的结构示意图;

图8为本发明根据另一示例性实施例示出的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种键值数据存储方法、装置、设备以及存储介质,旨在解决现有的键值数据存储方法由于对同一区域物理块频繁的读取和写入操作,导致该物理块附近的温度急剧上升,数据出错率升高的技术问题。

本发明提供一种键值数据存储方法,可以用于hbase、rocksdb、pebblesdb等新型键值对数据库在底层芯片上的应用,也可用于云计算、大数据存储等需要大量数据写入、查找的场景下。

图1为本发明根据一示例性实施例示出的键值数据存储方法的流程图。如图1所示,本实施例提供的键值数据存储方法,包括:

s101、获取三维闪存中第一物理块集合中第一物理块的数量。

更具体地,第一物理块为已写入键值数据的物理块,第一物理块集合表示已写入键值数据的物理块的集合。

图2为图1所示实施例示出的键值数据存储方法所基于三维闪存的结构示意图。如图2所示,三维闪存为三维立体结构,三维闪存中物理块101呈三维矩阵分布,为了更好的描述的三维闪存中物理块的位置关系,以三维闪存的最中心点为原点,设定一个坐标轴。

图3为图1所示实施例示出的键值数据存储方法所基于三维闪存的坐标示意图,如图3所示,三维闪存的每个物理块对应三维坐标系下唯一的物理位置,表示为(x,y,z)。x最大值为x_max,y最大值为y_max,z最大值为z_max。那么最外层的物理块的坐标满足以下三个条件中的一个:(1)x的绝对值为x_max;(2)y的绝对值为y_max;(3)z的绝对值为z_max。

三维坐标系的6个方向,用数字1到6来标识。假定用向量μ表示,μ=(1,2,3,4,5,6)分别表示距离这个中心物理块上下左右前后6个物理块的方向,对应上面建立的三维坐标系,1,2,3,4,5,6分别表示即沿着x轴的正方向、x轴的负方向、y轴的正方向、y轴的负方向、z轴的正方向以及z轴的负方向。

设定一个随机函数,产生数值为1到6的整数,连续生成的6个整数构成的序列记为第一序列,且第一序列中数值不重复,例如,生成的第一序列为1,3,4,6,2,5。表示选择6个方向的顺序是1代表的方向→3代表的方向…→5代表的方向。

每一层物理块将最外层标记为0,即表示第0层;最里层标记为n,即表示第n层。其中,每一层由6个面构成,按照由0到n的顺序,同一层中按照生成的第一序列的方法制定6个面的顺序。

其中,同一个面上物理块的坐标值x,y,z中有一个值相同,另外两个值循环遍历,即可实现循环遍历一个面上的所有物理块。例如,同一个面上的坐标值x相同,让外层循环为坐标值y从最小值递增至最大值,内层循环为坐标值z从最小值递增至最大值。通过上述方式,可以将三维闪存中的所有物理块添加到一个数组中。

图4为图1所示实施例示出的键值数据存储方法所基于三维闪存的数组示意图。如图4所示,从左边第一个数字至第六个数字所构成的第二序列{1,3,4,6,2,5}表示最外层0的6个面,依次表示最外层的第1个面、第3个面、第4个面、第6个面、第2个面以及第5面。表示最里层n的6个面的第二序列为{1,3,4,6,2,5},依次表示最里层的第1个面、第3个面、第4个面、第6个面、第2个面以及第5个面。

另外,如果某个物理块同时属于两个面时,将其设定为属于其中任何一个面,不属于剩余的另一个面。继续参考图3,例如,最外层的第1个面和第2个面构成的直线l上的物理块102,如果物理块102属于第一个面1,那么就设定物理块102不属于第二个面2。

s102、判断第一物理块的数量是否达到第一预设数量。若判断结果为否,则进入s103。否则,进入s106。

更具体地,三维闪存中一般预设有空白物理块,剩余物理块用于存储键值数据。第一预设数量为三维闪存中所有物理块的数量减去预留空白物理块的数量。

s103、获取前一次写入的第一物理块的位置信息。

更具体地,位置信息包括:区域信息和坐标信息。其中,区域信息包括三维闪存的内部或者三维闪存的外部。区域信息表示第一物理块所处区域,坐标信息表示第一物理块的三维坐标(x,y,z)信息。

s104、根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息。

更具体地,当三维闪存的内部和外部同时存在未写入键值数据的数据块时,当前写入的第一物理块的区域信息和前一次写入的第一物理块的区域信息不同。即若前一次写入的第一物理块的区域信息为三维闪存的内部,则当前写入的第一物理块的区域信息为三维闪存的外部。若前一次写入的第一物理块的区域信息为三维闪存的外部,则当前写入的第一物理块的区域信息为三维闪存的内部。

s105、根据当前写入第一物理块的位置信息将键值数据存储至当前写入的第一物理块。

更具体地,在获取到当前写入第一物理块的位置信息后,将待写入的键值数据写入至当前写入的第一物理块。由于当前写入的第一物理块的区域信息和前一次写入的第一物理块的区域信息不同,使当前写入的第一物理块远离前一次写入的第一物理块。

s106、根据三维闪存中物理块的温度、写入键值数据的数量或者同时根据三维闪存中物理块的温度和写入键值数据的数量确定当前写入第一物理块的位置信息,以将待写入键值信息写至当前写入第一物理块。

在本实施例提供的键值数据存储方法中,当判断出三维闪存中存在可写入键值的物理块时,根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息,并将键值数据存储至当前写入的第一物理块,由于当前写入的第一物理块的区域信息和前一次写入的第一物理块的区域信息不同,使当前写入的第一物理块远离前一次写入的第一物理块,避免对同一区域物理块频繁的读取和写入操作,导致该区域物理块的温度急剧上升,进而提高了数据存储的正确率。

图5为本发明根据另一示例性实施例示出的键值数据存储方法的流程图。如图5所示,包括:

s201、获取三维闪存中第一物理块集合中第一物理块的数量。

s202、判断第一物理块的数量是否达到第一预设数量。若判断结果为否,则进入s204。否则,进入s207。

s203、在三维闪存的最外层物理块和最内层物理块之间设定中性层,以根据中性层确定内部物理块集合和外部物理块集合。

更具体地,中性层由6个面构成,中性层位于三维闪存的最外层0和最里层n之间。将中性层内部的物理块设为第三物理块,内部物理块集合包括第三物理块,将中性层外部的物理块设为第四物理块,外部物理块集合包括第四物理块。其中,第三物理块的区域信息设定为三维闪存的外部,第四物理块的区域信息设定为三维闪存的内部。

s204、获取前一次写入的第一物理块的位置信息。

更具体地,第一物理块的位置信息包括区域信息和位置信息。

在本实施例中,用变量flag表示区域信息,flag取值为1时,表示第一物理块位于三维闪存的内部,flag取值为0时,表示第一物理块位于三维闪存的外部。位置信息用层信息、面信息和一维坐标(a)表示,其中,层信息取值范围为0至n,面信息的取值范围为1至6,(a)表示位于面上第a个物理块。例如,层信息为1,面信息为1,(a)为(1)。则表示位于第1层上第1个面的第一个物理块。

s205、根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息。

s206、根据键值数据文件序号获得逻辑块序号。

更具体地,根据当前物理块的总数pbnumber的值,乘一个比例系数α,获得中间系数,获取键值数据文件序号,将键值数据文件序号截取后四位后对中间系数取余,计算出键值数据逻辑块序号。

例如,文件序号为243523,总块数pbnumber为200,比例α=1.5,那么pbnumber×α=200*1.5=300,即逻辑块号的范围设定为1-300(最大值为0.3×10的3次方)。选择截取文件序号的后4位(如果最大值是一个0-1的小数。乘以10的4次方,则选取后5位,以此类推),对300取余数,即2523对300取余。余数为123,那么计算出来的逻辑块号为123。

s207、根据当前写入第一物理块的位置信息将键值数据存储至当前写入的第一物理块,并建立键值数据的逻辑块序号与第一物理块位置的映射关系表。

更具体地,记录物理块号和文件存放的第一个物理页偏移量,以文件大小为粒度,修改地址映射表,根据键值数据的逻辑块序号与第一物理块位置的映射关系表,可以快速获得键值数据的存储位置信息。

s208、根据三维闪存中物理块的温度、写入键值数据的数量或者同时根据三维闪存中物理块的温度和写入键值数据的数量确定当前写入第一物理块的位置信息,以将待写入键值信息写至当前写入第一物理块。

针对s205,更具体地,当前一次写入的第一物理块的区域信息为三维闪存的内部时,从外部物理块集合中选择未写入键值数据的第四物理块,将未写入键值数据的第四物理块的位置信息作为当前写入的第一物理块的位置信息;

当前一次写入的第一物理块的区域信息为三维闪存的外部时,从内部物理块集合中选择未写入键值数据的第三物理块,将未写入键值数据的第三物理块的位置信息作为当前写入的第一物理块的位置信息。

例如,设定一个数组pos[n][6],数组中存放n个层对应的6个面中物理块集合中物理块的起始位置。设定头部指针h和尾部指针t,初始时h=0,t=n。两个指针记录当前外部和里部正在使用的层号。

设定一个队列数组q[2],q[0]=head,q[1]=tail。数组元素的取值是两个队列:head{h1,h2,h3,h4,h5,h6}和tail{t1,t2,t3,t4,t5,t6},分别表示在头部指针h所指向层中可写入数据的物理块和在尾部指针t所指向层中可写入数据的物理块。h1表示头部指针h所指向层中1号面可以取的物理块下标位置,当1号面中所有物理块均可以写入键值数据,h1的取值范围为1号面中所有物理块的集合。h2对应头部指针h所指向层中2号面可以取的物理块下标位置,h2的取值范围确定方式与h1的取值范围确定方式相同,h3至h6的定义同h1相同。

t1表示尾部指针t所指向层中1号面可以取的物理块下标位置,当1号面中所有物理块均可以写入键值数据,t1的取值范围为1号面中所有物理块的集合。t2对应尾部指针t所指向层中2号面可以取的物理块下标位置,t2的取值范围确定方式与t1的取值范围确定方式相同,t3至t6的定义同t1相同。

作为根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息一种具体实施方式。

s301、判断q[flag]中元素取值集合是否为空,若判断结果为是,则进入s302,否则,进入s303。

更具体地,首先q[flag]第一个取值集合是否为空集,例如flag=0,则判断h1的取值集合是否为空集,即头部指针h所指向物理层上第1个面中是否有可以使用的物理块。若q[flag]第一个取值集合为空集,则继续判断q[flag]第二个取值集合为空集,直至在头部指针h所指向物理层的某个面上找到可以使用物理块。

s302、将键值数据存储至可使用的物理块。

s303、判断flag的数值是否为1。若判断结果为是,则进入s304。否则,进入s309;

s304、让头部指针增加1。

s305、判断头部指针h数值是否大于尾部指针t的数值。若判断结果为是,则进入s306。若判断结果为否,则进入s308。

s306、让判断flag的数值取值变成1。

s307、将键值数据存储至尾部指针t指向物理层列队数组q[1]中第一个使用的物理块。

更具体地,令q[flag]=pos[t][6],并令block_pos=q[flag].front,其中,block_pos为待存储的键值数据存储物理块的位置,例如:尾部指针t指向物理层为第n-1层,列队数组q[1]中t1至t3的取值集合均为空集,列队数组q[1]中t4的第一个取值为3,则列队数组q[1]中第一个使用的物理块属于第4个面中第3个位置的物理块,键值数据存储至第n-1层中第4个面中第3个位置的物理块。其中,t1至t6中取值顺序可以随机打乱,h1至h6中取值顺序可以随机打乱。

s308、将键值数据存储至头部指针h指向物理层列队数组q[0]中第一个使用的物理块。

s309、让尾部指针减少1。

s310、判断头部指针h数值是否大于尾部指针t的数值。若判断结果为是,则进入s311。若判断结果为否,则进入s313。

s311、让判断flag的数值取值变成0。

s312、将键值数据存储至头部指针h指向物理层列队数组q[0]中第一个使用的物理块。

s313、将键值数据存储至尾部指针t指向物理层列队数组q[1]中第一个使用的物理块。

在本实施例提供的键值数据存储方法中,采用三维闪存内部和外部交替存储,避免在同一个区域多次存储带来的温度升高,提高了键值数据存储的准确度。

图6为本发明根据一示例性实施例示出的键值数据存储方法的流程图。如图6所示,本实施例与图1所示实施例之间的区别在于:

根据三维闪存中物理块的温度、写入键值数据的数量或者同时根据三维闪存中物理块的温度和写入键值数据的数量确定当前写入第一物理块的位置信息,具体包括:

s406判断第一物理块中数据的数量是否均已达到第二预设数量,若判断结果为是,则进入s407,否则,进入s410。

s407、判断第一物理块中数据是否均有效。若判断结果为是,则进入s408,否则,进入s409。

s408、随机选择第一物理块进行擦除键值数据处理后增加至第二物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块。

更具体地,第二物理块集合包括第二物理块,第二物理块为为写入键值数据的物理块。

s409、则从第一物理块集合中选择无效数据最多的第一物理块进行清除键值数据处理后增加至第二物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块。

s410、判断写入数据数量最小的第二待选物理块的数量是否为多个。若判断结果为是,则进入s411,否则,进入s412。

s411、将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块。

s412、将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块。

在本实施例中,利用用于测试新式数据库性能的框架ycsb和6个默认的测试数据和一个自设定比例的测试数据进行测试。6个默认的测试数据和一个自设定比例的测试数据具体包括:1、测试数据a,侧重更新,50%读操作和50%写操作;2、测试数据b,读多写少,95%读操作和5%写操作;3、测试数据c,只存在读操作,即100%读操作;4、测试数据d,读最近更新,通过插入新纪录,越新的纪录读取概率越大;5、测试数据e,小范围查询;6、测试数据f,读取-修改-写入。7、测试数据g是自己设置的比例,用来表示频繁更新的情况。

通过上述测试发现,在所有测试数据下,使用存储方法的三维闪存,在过程中的最高温度、温度的分布情况、总体擦除次数、物理块的最高擦除次数等参数明显优于未使用此存储方法前。

在本实施例中,通过判断所有写入数据的物理块是否均已写满,若已写满,则将存在无效数据物理块或者随机选择物理块进行数据擦除,并将数据存储至温度最低的空白物理块中,若物理块为写满,则将数据写入至存在空白页最多的物理块上或者从空白页相同的物理块中选择温度最低的物理块进行存储,既考虑了温度对三维闪存的数据存储影响,又考虑了对物理块存储空间的充分利用。

图7为本发明根据一示例性实施例示出的键值数据存储装置的结构示意图。如图7所示,本实施例提供的键值数据存储装置,包括:获取模块101,用于获取三维闪存中第一物理块集合中第一物理块的数量;其中,第一物理块为已写入键值数据的物理块;判断模块102,用于判断第一物理块的数量是否达到第一预设数量;获取模块101,还用于若判断结果为否,则获取前一次写入的第一物理块的位置信息;其中,位置信息包括:区域信息和坐标信息;获得模块103,用于根据前一次写入的第一物理块的位置信息获得当前写入的第一物理块的位置信息;其中,当前写入的第一物理块的区域信息和前一次写入的第一物理块的区域信息不同;存储模块104,用于根据当前写入第一物理块的位置信息将键值数据存储至当前写入的第一物理块,以使当前写入的第一物理块远离前一次写入的第一物理块。

可选地,存储模块104还用于:若判断结果为是,则将键值数据存储至第一待选物理块集合中温度最低的第一待选物理块,其中,第一待选物理块为第二物理块或者写入键值数据的数量未达到第二预设数量的第一物理块;第二物理块为未写入键值数据的物理块;或者,若判断结果为是,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块,其中,第二待选物理块为写入键值数据的数量未达到第二预设数量的第一物理块;或者,若判断结果为是,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块,其中,第三待选物理块为第二待选物理块集合中写入数据数量最小的第二待选物理块。

可选地,存储模块104具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断第一物理块中数据是否均有效;当第一物理块中数据的数量均已达到第二预设数量且第一物理块中数据均有效时,则随机选择第一物理块进行擦除键值数据处理后增加至第二物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块;其中,第二物理块集合包括第二物理块;当第一物理块中数据的数量均已达到第二预设数量且第一物理块中数据存在无效数据时,则从第一物理块集合中选择无效数据最多的第一物理块进行清除键值数据处理后增加至未写入物理块集合中,将键值数据存储至第二物理块集合中温度最低的第二物理块。

可选地,存储模块104具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断写入数据数量最小的第二待选物理块的数量是否为多个;当第一物理块中数据的数量未达到第二预设数量时且写入数据数量最小的第二待选物理块的数量仅为一个时,则将键值数据存储至第二待选物理块集合中写入数据数量最小的第二待选物理块。

可选地,存储模块104具体包括:若第一物理块的数量达到第一预设数量,判断第一物理块中数据的数量是否均已达到第二预设数量,并判断写入数据数量最小的第二待选物理块的数量是否为多个;当第一物理块中数据的数量未达到第二预设数量时且写入数据数量最小的第二待选物理块的数量为多个时,则将键值数据存储至第三待选物理块集合中温度最小的第三待选物理块。

可选地,装置还包括:设定模块105,用于在三维闪存中设定中性层;确定模块,用于根据中性层确定内部物理块集合和外部物理块集合,其中,内部物理块集合包括第三物理块,外部物理块集合包括第四物理块,第三物理块的区域信息设定为三维闪存的外部,第四物理块的区域信息设定为三维闪存的内部。

可选地,获得模块103具体包括:当前一次写入的第一物理块的区域信息为三维闪存的内部时,从外部物理块集合中选择未写入键值数据的第四物理块,将未写入键值数据的第四物理块的位置信息作为当前写入的第一物理块的位置信息;当前一次写入的第一物理块的区域信息为三维闪存的外部时,从内部物理块集合中选择未写入键值数据的第三物理块,将未写入键值数据的第三物理块的位置信息作为当前写入的第一物理块的位置信息。

图8为本发明根据另一示例性实施例示出的电子设备的结构示意图。如图6所示,本实施例提供的电子设备包括:一个或多个处理器201,存储器202。其中,存储器202,用于存储一个或多个程序。当一个或多个程序被一个或多个处理器201执行,使得一个或多个处理器201实现如本申请图1、图5和图6实施例提供的键值数据存储方法。相关说明可以对应参见图1、图5和图6的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。

本申请实施例六提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现本申请图1、图5和图6实施例提供的键值数据存储方法。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1