掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法、数据读取方法、装置和电子设备

文献发布时间:2023-06-19 12:18:04


数据存储方法、数据读取方法、装置和电子设备

技术领域

本申请涉及数据处理技术领域,尤其涉及一种数据存储方法、数据读取方法、装置、电子设备和存储介质。

背景技术

目前,随着数据处理技术的发展,人们对数据存储和数据读取过程中存储空间的负载均衡要求越来越高。存储空间负载不均可能会导致某个存储空间负载过大,影响存储空间的正常存储和正常读取,还可能导致某个存储空间负载过小,存储空间的使用率较低,因此需要研究一种负载较为均衡的数据存储以及数据读取方法。

发明内容

本申请旨在至少在一定程度上解决相关技术中数据存储过程中存储空间的负载不均的技术问题之一。

为此,本申请第一方面实施例提出一种数据存储方法,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

本申请第二方面实施例提出一种数据读取方法。

本申请第三方面实施例提出一种数据存储装置。

本申请第四方面实施例提出一种数据读取装置。

本申请第五方面实施例提出一种电子设备。

本申请第六方面实施例提出一种计算机可读存储介质。

本申请第一方面实施例提出了一种数据存储方法,包括:获取数据集和所述数据集的初始位图,其中,所述数据集中包括多个待存储数据;根据所述初始位图的数据量对所述初始位图进行划分,得到多个初始子位图;获取任一待存储数据的哈希值,并根据所述哈希值确定所述任一待存储数据对应的目标初始子位图上的目标位置,并使用目标数值对所述目标位置进行标记,以生成目标子位图;将每个所述目标子位图存储至各自对应的存储空间内。

本申请实施例的数据存储方法,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

另外,根据本申请上述实施例的数据存储方法还可以具有如下附加的技术特征:

在本申请的一个实施例中,所述根据所述初始位图的数据量对所述初始位图进行划分,得到多个初始子位图,包括:根据所述初始位图的数据量获取所述初始位图的划分数量;根据所述划分数量对所述初始位图进行划分,得到多个所述初始子位图。

在本申请的一个实施例中,所述根据所述初始位图的数据量获取所述初始位图的划分数量,包括:获取所述初始位图对应的存储空间的存储容量;根据所述初始位图的数据量和所述存储空间的存储容量,获取所述划分数量。

在本申请的一个实施例中,还包括:根据所述划分数量对所述存储空间进行划分,得到多个子存储空间,所述子存储空间与所述子位图一一对应。

在本申请的一个实施例中,所述根据所述哈希值确定所述任一待存储数据对应的目标初始子位图上的目标位置,包括:根据所述哈希值确定所述任一待存储数据在所述初始位图上的初始位置;获取所述初始位图上的位置与所述初始子位图上的位置之间的映射关系,基于所述映射关系获取所述初始位置映射的所述目标初始子位图上的所述目标位置。

在本申请的一个实施例中,所述根据所述哈希值确定所述任一待存储数据对应的目标初始子位图上的目标位置,包括:根据所述哈希值确定所述任一待存储数据在所述初始位图上的初始位置;获取所述初始子位图的编号,所述编号为按照所述初始子位图的位置顺序进行编码得到的;根据所述初始位置和所述编号,从多个所述初始子位图中确定所述目标初始子位图,以及确定所述目标位置。

在本申请的一个实施例中,所述根据所述初始位置和所述编号,从多个所述初始子位图中确定所述目标初始子位图,以及确定所述目标位置,包括:获取所述初始位置和所述初始子位图的数据量的比值,根据所述比值的整数部分获取目标编号;根据所述目标编号,从多个所述初始子位图中确定所述目标初始子位图;根据所述比值的余数部分确定所述目标位置。

在本申请的一个实施例中,所述使用目标数值对所述目标位置进行标记,包括:识别所述目标位置的数量大于预设阈值,使用所述目标数值对每个所述目标位置进行标记。

本申请第二方面实施例提出了一种数据读取方法,包括:获取待读取数据;获取所述待读取数据的哈希值,并根据所述哈希值确定所述待读取数据对应的读取子位图上的读取位置;从所述读取子位图对应的存储空间内读取所述读取位置上的标记数值;根据所述标记数值生成所述待读取数据的读取结果。

本申请实施例的数据读取方法,能够根据哈希值确定待读取数据对应的读取子位图上的读取位置,并从读取子位图对应的存储空间内读取读取位置上的标记数值,根据标记数值生成待读取数据的读取结果,能够实现位图划分场景的数据读取,有利于实现存储空间的负载均衡。

另外,根据本申请上述实施例的数据读取方法还可以具有如下附加的技术特征:

在本申请的一个实施例中,所述待读取数据对应的哈希值的数量为至少一个;所述根据所述标记数值生成所述待读取数据的读取结果,包括:识别所述待读取数据的每个哈希值对应的读取位置上的标记数值为1,生成所述待读取数据的读取结果为存储有所述待读取数据;或者,识别所述待读取数据的任一哈希值对应的读取位置上的标记数值为0,生成所述待读取数据的读取结果为未存储所述待读取数据。

本申请第三方面实施例提出了一种数据存储装置,包括:获取模块,用于获取数据集和所述数据集的初始位图,其中,所述数据集中包括多个待存储数据;划分模块,用于根据所述初始位图的数据量对所述初始位图进行划分,得到多个初始子位图;标记模块,用于获取任一待存储数据的哈希值,并根据所述哈希值确定所述任一待存储数据对应的目标初始子位图上的目标位置,并使用目标数值对所述目标位置进行标记,以生成目标子位图;存储模块,用于将每个所述目标子位图存储至各自对应的存储空间内。

本申请实施例的数据存储装置,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

另外,根据本申请上述实施例的数据存储装置还可以具有如下附加的技术特征:

在本申请的一个实施例中,所述划分模块,包括:第一获取单元,用于根据所述初始位图的数据量获取所述初始位图的划分数量;划分单元,用于根据所述划分数量对所述初始位图进行划分,得到多个所述初始子位图。

在本申请的一个实施例中,所述第一获取单元,具体用于:获取所述初始位图对应的存储空间的存储容量;根据所述初始位图的数据量和所述存储空间的存储容量,获取所述划分数量。

在本申请的一个实施例中,所述划分模块,还用于:根据所述划分数量对所述存储空间进行划分,得到多个子存储空间,所述子存储空间与所述子位图一一对应。

在本申请的一个实施例中,所述标记模块,具体用于:根据所述哈希值确定所述任一待存储数据在所述初始位图上的初始位置;获取所述初始位图上的位置与所述初始子位图上的位置之间的映射关系,基于所述映射关系获取所述初始位置映射的所述目标初始子位图上的所述目标位置。

在本申请的一个实施例中,所述标记模块,包括:确定单元,用于根据所述哈希值确定所述任一待存储数据在所述初始位图上的初始位置;第二获取单元,用于获取所述初始子位图的编号,所述编号为按照所述初始子位图的位置顺序进行编码得到的;所述确定单元,还用于根据所述初始位置和所述编号,从多个所述初始子位图中确定所述目标初始子位图,以及确定所述目标位置。

在本申请的一个实施例中,所述确定单元,具体用于:获取所述初始位置和所述初始子位图的数据量的比值,根据所述比值的整数部分获取目标编号;根据所述目标编号,从多个所述初始子位图中确定所述目标初始子位图;根据所述比值的余数部分确定所述目标位置。

在本申请的一个实施例中,所述标记模块,具体用于:识别所述目标位置的数量大于预设阈值,使用所述目标数值对每个所述目标位置进行标记。

本申请第四方面实施例提出了一种数据读取装置,包括:获取模块,用于获取待读取数据;确定模块,用于获取所述待读取数据的哈希值,并根据所述哈希值确定所述待读取数据对应的读取子位图上的读取位置;读取模块,用于从所述读取子位图对应的存储空间内读取所述读取位置上的标记数值;生成模块,用于根据所述标记数值生成所述待读取数据的读取结果。

本申请实施例的数据读取装置,能够根据哈希值确定待读取数据对应的读取子位图上的读取位置,并从读取子位图对应的存储空间内读取读取位置上的标记数值,根据标记数值生成待读取数据的读取结果,能够实现位图划分场景的数据读取,有利于实现存储空间的负载均衡。

另外,根据本申请上述实施例的数据读取装置还可以具有如下附加的技术特征:

在本申请的一个实施例中,所述待读取数据对应的哈希值的数量为至少一个;所述生成模块,具体用于:识别所述待读取数据的每个哈希值对应的读取位置上的标记数值为1,生成所述待读取数据的读取结果为存储有所述待读取数据;或者,识别所述待读取数据的任一哈希值对应的读取位置上的标记数值为0,生成所述待读取数据的读取结果为未存储所述待读取数据。

本申请第五方面实施例提出了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如前述第一方面实施例所述的数据存储方法,或者实现如前述第二方面实施例所述的数据读取方法。

本申请实施例的电子设备,通过处理器执行存储在存储器上的计算机程序,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

本申请第六方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现如前述第一方面实施例所述的数据存储方法,或者实现如前述第二方面实施例所述的数据读取方法。

本申请实施例的计算机可读存储介质,通过存储计算机程序并被处理器执行,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本申请一个实施例的数据存储方法的流程示意图;

图2为根据本申请一个实施例的数据存储方法中对初始位图进行划分,得到多个初始子位图的流程示意图;

图3为根据本申请一个实施例的数据存储方法中根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置的流程示意图;

图4为根据本申请另一个实施例的数据存储方法中根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置的流程示意图;

图5为根据本申请一个实施例的数据存储方法中初始位图划分得到的多个初始子位图的示意图;

图6为根据本申请一个实施例的数据读取方法的流程示意图;

图7为根据本申请一个实施例的数据存储装置的结构示意图;

图8为根据本申请一个实施例的数据读取装置的结构示意图;以及

图9为根据本申请一个实施例的电子设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参照附图描述本申请实施例的数据存储方法、装置、电子设备和存储介质。

图1为根据本申请一个实施例的数据存储方法的流程示意图。

如图1所示,本申请实施例的数据存储方法,包括:

S101获取数据集和数据集的初始位图,其中,数据集中包括多个待存储数据。

需要说明的是,本申请实施例的数据存储方法的执行主体可为数据存储装置,本申请实施例的数据存储装置可以配置在任意电子设备中,以使该电子设备可以执行本申请实施例的数据存储方法。其中,电子设备可以为个人电脑(Personal Computer,简称PC)、云端设备、移动设备等,移动设备例如可以为手机、平板电脑、个人数字助理、穿戴式设备、车载设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。

本申请的实施例中,可获取数据集和数据集的初始位图(bit map),其中,数据集包括多个待存储数据。应说明的是,对待存储数据的类型不做过多限定,例如,待存储数据可为key-value类型的数据,value的可能取值为0或1。

可以理解的是,初始位图由多个比特位组成,每个比特位的初始值为0。

在一种实施方式中,可根据数据集中待存储数据的数据量确定初始位图的数据量。例如,可根据数据集中待存储数据的数据量和期望准确性确定初始位图的数据量,可通过下述公式实现:

S102,根据初始位图的数据量对初始位图进行划分,得到多个初始子位图。

本申请的实施例中,可根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,从而可考虑到初始位图的数据量对初始位图划分的影响,使得划分更加符合初始位图的数据量,可实现初始位图的自动划分。

在一种实施方式中,多个初始子位图的数据量相同。例如,初始位图的数据量为100比特(bit),初始子位图的数据量为20bit,初始子位图的数量为5个。

S103获取任一待存储数据的哈希值,并根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置,并使用目标数值对目标位置进行标记,以生成目标子位图。

本申请的实施例中,可获取任一待存储数据的哈希(hash)值。可以理解的是,任一待存储数据的哈希值的数量为至少一个。

在一种实施方式中,可获取至少一个哈希函数,根据任一哈希函数获取任一待存储数据的任一哈希值,则可获取任一待存储数据的至少一个哈希值。

在一种实施方式中,可根据数据集中待存储数据的数据量和初始位图的数据量确定哈希函数的数量。例如,可通过下述公式实现:

可以理解的是,哈希值与待存储数据在位图上的位置相关,则可根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置,也就是说,本申请中可通过哈希值将待存储数据映射到目标初始子位图上的目标位置。

可以理解的是,不同的哈希值可对应不同的目标初始子位图和不同的目标位置。

进一步地,可使用目标数值对目标位置进行标记,以生成目标子位图。应说明的是,对目标数值不做过多限定,例如可为1。

在一种实施方式中,使用目标数值对目标位置进行标记,可包括识别目标位置的数量大于预设阈值,表明此时目标位置的数量较多,则使用目标数值对每个目标位置进行标记。由此,可在目标位置的数量较多时,使用目标数值对每个目标位置进行标记,即可减少对子位图的操作次数。

其中,预设阈值可根据实际情况进行设置,这里不做过多限定,例如可设置为100。

S104,将每个目标子位图存储至各自对应的存储空间内。

本申请的实施例中,生成目标子位图之后,可将每个目标子位图存储至各自对应的存储空间内。应说明的是,每个目标子位图具有独立的存储空间。

需要说明的是,对存储空间的类型不做过多限定。

在一种实施方式中,存储空间可为远程字典服务(REmote DIctionary Server,Redis)数据库中的存储空间,例如可为集群。

比如,Redis数据库可采用两个集群来存储位图,两个集群存储的内容相同,每个集群由多个子集群构成,每个目标子位图可对应一个子集群,可将每个目标子位图分别存储至两个集群中对应的子集群中。应说明的是,两个集群的子集群的划分方式一致,有利于保证集群的负载均衡。

综上,根据本申请实施例的数据存储方法,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

在上述任一实施例的基础上,如图2所示,步骤S102中根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,包括:

S201,根据初始位图的数据量获取初始位图的划分数量。

在一种实施方式中,初始位图的划分数量与初始位图的数据量正相关。

在一种实施方式中,根据初始位图的数据量获取初始位图的划分数量,包括获取初始位图对应的存储空间的存储容量,根据初始位图的数据量和存储空间的存储容量,获取划分数量。由此,该方法可综合考虑到初始位图的数据量和存储空间的存储容量对划分数量的影响,得到的划分数量更加准确。

其中,存储空间的存储容量指的是存储空间可存储位图的最大数据量。

S202,根据划分数量对初始位图进行划分,得到多个初始子位图。

本申请的实施例中,可根据划分数量对初始位图进行划分,得到多个初始子位图。

在一种实施方式中,根据划分数量对初始位图进行划分,得到多个初始子位图,包括根据划分数量对初始位图进行均分,得到多个初始子位图,此时得到的多个初始子位图的数据量相等。例如,初始位图的数据量为100bit,划分数量为5,则可得到5个初始子位图,每个初始子位图的数据量为20bit。

由此,该方法可根据初始位图的数据量获取初始位图的划分数量,根据划分数量对初始位图进行划分得到多个初始子位图。

在上述任一实施例的基础上,还可根据划分数量对初始位图对应的存储空间进行划分,得到多个子存储空间,子存储空间与子位图一一对应。

在一种实施方式中,根据划分数量对初始位图对应的存储空间进行划分,得到多个子存储空间,包括根据划分数量对初始位图对应的存储空间进行均分,得到多个子存储空间,此时得到的多个子存储空间的存储容量相等。

由此,该方法可根据划分数量对初始位图对应的存储空间进行划分,得到多个子存储空间,用于存储对应的子位图。

在上述任一实施例的基础上,步骤S103中根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置,可包括两种可能的实施方式。

其中,第一种可能的实施方式如图3所示,步骤S103中根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置,包括:

S301,根据哈希值确定任一待存储数据在初始位图上的初始位置。

在一种实施方式中,根据哈希值确定任一待存储数据在初始位图上的初始位置,可通过下述公式实现:c=mod(hash,a),其中,c为初始位置,a为初始位图的数据量,hash为哈希值。

S302,获取初始位图上的位置与初始子位图上的位置之间的映射关系,基于映射关系获取初始位置映射的目标初始子位图上的目标位置。

本申请的实施例中,可预先建立初始位图上的位置和初始子位图上的位置之间的映射关系,则在获取初始位置之后,能够查询映射关系或者映射表,获取初始位置映射的目标初始子位图上的目标位置。应说明的是,上述映射关系或者映射表均可根据实际情况进行设置,这里不做过多限定。

例如,如图5所示,初始位图包括100个比特位,序号从左至右依次为1、2至100,初始位图上序号1至20的比特位分别映射初始子位图1上序号1至20的比特位,初始位图上序号21至40的比特位分别映射初始子位图2上序号1至20的比特位,初始位图上序号41至60的比特位分别映射初始子位图3上序号1至20的比特位,初始位图上序号61至80的比特位分别映射初始子位图4上序号1至20的比特位,初始位图上序号81至100的比特位分别映射初始子位图5上序号1至20的比特位。

若初始位置为序号为75的比特位,基于上述映射关系可知,初始位图上序号为75的比特位映射初始子位图4上序号为15的比特位,则初始位置映射的目标初始子位图上的目标位置为初始子位图4上序号为15的比特位。

由此,该方法可根据哈希值确定任一待存储数据在初始位图上的初始位置,并基于映射关系获取初始位置映射的目标初始子位图上的目标位置。

其中,第二种可能的实施方式如图4所示,步骤S103中根据哈希值确定任一待存储数据对应的目标初始子位图上的目标位置,包括:

S401,根据哈希值确定任一待存储数据在初始位图上的初始位置。

步骤S401的相关内容可参见上述实施例,这里不再赘述。

S402,获取初始子位图的编号,编号为按照初始子位图的位置顺序进行编码得到的。

本申请的实施例中,可预先按照初始子位图的位置顺序进行编码得到初始子位图的编号。例如,可按照位置从左至右顺序进行编码得到初始子位图的编号,如图5所示,初始位图可划分为5个初始子位图,从左至右初始子位图的编号依次为1至5。

可以理解的是,初始子位图的编号可表征初始子位图在初始位图上的位置信息。继续以图5为例,编号为1的初始子位图在初始位图上的位置为左端,编号为5的初始子位图在初始位图上的位置为右端。

S403,根据初始位置和编号,从多个初始子位图中确定目标初始子位图,以及确定目标位置。

可以理解的是,编号可表征初始子位图在初始位图上的位置信息,则可根据初始位置和编号,确定初始位置在初始子位图上的位置,进而从多个初始子位图中确定目标初始子位图,以及确定目标位置。

在一种实施方式中,根据初始位置和编号,从多个初始子位图中确定目标初始子位图,以及确定目标位置,可包括获取初始位置和初始子位图的数据量的比值,根据比值的整数部分获取目标编号,根据目标编号,从多个初始子位图中确定目标初始子位图,根据比值的余数部分确定目标位置。

在一种实施方式中,根据比值的整数部分获取目标编号,可包括将比值的整数部分加一作为目标编号。

继续以图5为例,初始位图包括100个比特位,序号从左至右依次为1、2至100,每个初始子位图包括20个比特位,即每个初始子位图的数据量为20bit。

若初始位置为序号为75的比特位,则初始位置和初始子位图的数据量的比值的整数部分为3,余数部分为15,则目标编号为整数部分加一,即目标编号为4,确定的目标初始子位图为编号为4的初始子位图,目标位置为序号为15的比特位,也就是说,确定待存储数据对应的编号为4的初始子位图上的序号为15的比特位。

由此,该方法可根据哈希值确定任一待存储数据在初始位图上的初始位置,根据初始位置和初始子位图的编号,确定目标初始子位图和目标位置。

图6为根据本申请一个实施例的数据读取方法的流程示意图。

如图6所示,本申请实施例的数据读取方法,包括:

S601,获取待读取数据。

需要说明的是,本申请实施例的数据读取方法的执行主体可为数据读取装置,本申请实施例的数据读取装置可以配置在任意电子设备中,以使该电子设备可以执行本申请实施例的数据读取方法。其中,电子设备可以为个人电脑(Personal Computer,简称PC)、云端设备、移动设备等,移动设备例如可以为手机、平板电脑、个人数字助理、穿戴式设备、车载设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。

本申请的实施例中,对待读取数据的类型不做过多限定,例如,待读取数据可为key-value类型的数据,value的可能取值为0或1。

S602,获取待读取数据的哈希值,并根据哈希值确定待读取数据对应的读取子位图上的读取位置。

本申请的实施例中,可获取待读取数据的哈希值。可以理解的是,待读取数据对应的哈希值的数量为至少一个。

在一种实施方式中,可获取至少一个哈希函数,根据任一哈希函数获取待读取数据的任一哈希值,则可获取待读取数据的至少一个哈希值。

可以理解的是,哈希值与待读取数据在位图上的位置相关,则可根据哈希值确定待读取数据对应的读取子位图上的读取位置。

可以理解的是,不同的哈希值可对应不同的读取子位图和不同的读取位置。

需要说明的是,根据哈希值确定待读取数据对应的读取子位图上的读取位置的相关内容可参见上述实施例,这里不再赘述。

S603,从读取子位图对应的存储空间内读取读取位置上的标记数值。

需要说明的是,每个子位图具有独立的存储空间。

在一种实施方式中,可预先建立子位图的标识与存储空间的标识之间的映射关系或者映射表,在确定读取子位图之后,可根据读取子位图的标识查询映射关系或者映射表,从而获取到读取子位图的标识映射的存储空间的标识,用于确定读取子位图对应的存储空间。应说明的是,上述映射关系或者映射表均可根据实际情况进行设置,这里不做过多限定。

应说明的是,对标记数值不做过多限定,例如可为1或0。

S604,根据标记数值生成待读取数据的读取结果。

在一种实施方式中,待读取数据对应的哈希值的数量为至少一个,根据标记数值生成待读取数据的读取结果,可包括识别待读取数据的每个哈希值对应的读取位置上的标记数值为1,生成待读取数据的读取结果为存储有待读取数据。或者,识别待读取数据的任一哈希值对应的读取位置上的标记数值为0,生成待读取数据的读取结果为未存储待读取数据。

例如,待读取数据对应的哈希值的数量为10个,如果识别待读取数据的每个哈希值对应的读取位置上的标记数值为1,则生成待读取数据的读取结果为存储有待读取数据,如果识别待读取数据至少一个哈希值对应的读取位置上的标记数值为0,则生成待读取数据的读取结果为未存储待读取数据。

综上,根据本申请实施例的数据读取方法,能够根据哈希值确定待读取数据对应的读取子位图上的读取位置,并从读取子位图对应的存储空间内读取读取位置上的标记数值,根据标记数值生成待读取数据的读取结果,能够实现位图划分场景的数据读取,有利于实现存储空间的负载均衡。

在一种实施方式中,待存储数据为key-value类型的数据,value的可能取值为0或1,此时可从待存储数据中筛选出value值为1的key(以下简称key1),根据key1的哈希值确定key1对应的目标初始子位图上的目标位置,并使用1对目标位置进行标记,以生成目标子位图。由此,该方法中可实现key-value数据的存储,且仅需根据value值为1的key对子位图进行标记,标记次数较少。

在一种实施方式中,待读取数据为key-value类型的数据,value的可能取值为0或1,此时根据待读取数据的key的哈希值确定key对应的读取子位图上的读取位置,如果识别待读取数据的每个哈希值对应的读取位置上的标记数值为1,生成待读取数据的读取结果为存储有待存储数据,且待存储数据的value值为1。或者,如果识别待读取数据的任一哈希值对应的读取位置上的标记数值为0,生成待读取数据的读取结果为未存储待存储数据,且待存储数据的value值为0。

与上述图1至图5实施例提供的数据存储方法相对应,本公开还提供一种数据存储装置,由于本公开实施例提供的数据存储装置与上述图1至图5实施例提供的数据存储方法相对应,因此数据存储方法的实施方式也适用于本公开实施例提供的数据存储装置,在本公开实施例中不再详细描述。

图7为根据本申请一个实施例的数据存储装置的结构示意图。

如图7所示,本申请实施例的数据存储装置100可以包括:获取模块110、划分模块120、标记模块130和存储模块140。

获取模块110,用于获取数据集和所述数据集的初始位图,其中,所述数据集中包括多个待存储数据;

划分模块120,用于根据所述初始位图的数据量对所述初始位图进行划分,得到多个初始子位图;

标记模块130,用于获取任一待存储数据的哈希值,并根据所述哈希值确定所述任一待存储数据对应的目标初始子位图上的目标位置,并使用目标数值对所述目标位置进行标记,以生成目标子位图;

存储模块140,用于将每个所述目标子位图存储至各自对应的存储空间内。

在本申请的一个实施例中,所述划分模块120,包括:第一获取单元,用于根据所述初始位图的数据量获取所述初始位图的划分数量;划分单元,用于根据所述划分数量对所述初始位图进行划分,得到多个所述初始子位图。

在本申请的一个实施例中,所述第一获取单元,具体用于:获取所述初始位图对应的存储空间的存储容量;根据所述初始位图的数据量和所述存储空间的存储容量,获取所述划分数量。

在本申请的一个实施例中,所述划分模块120,还用于:根据所述划分数量对所述存储空间进行划分,得到多个子存储空间,所述子存储空间与所述子位图一一对应。

在本申请的一个实施例中,所述标记模块130,具体用于:根据所述哈希值确定所述任一待存储数据在所述初始位图上的初始位置;获取所述初始位图上的位置与所述初始子位图上的位置之间的映射关系,基于所述映射关系获取所述初始位置映射的所述目标初始子位图上的所述目标位置。

在本申请的一个实施例中,所述标记模块130,包括:确定单元,用于根据所述哈希值确定所述任一待存储数据在所述初始位图上的初始位置;第二获取单元,用于获取所述初始子位图的编号,所述编号为按照所述初始子位图的位置顺序进行编码得到的;所述确定单元,还用于根据所述初始位置和所述编号,从多个所述初始子位图中确定所述目标初始子位图,以及确定所述目标位置。

在本申请的一个实施例中,所述确定单元,具体用于:获取所述初始位置和所述初始子位图的数据量的比值,根据所述比值的整数部分获取目标编号;根据所述目标编号,从多个所述初始子位图中确定所述目标初始子位图;根据所述比值的余数部分确定所述目标位置。

在本申请的一个实施例中,所述标记模块130,具体用于:识别所述目标位置的数量大于预设阈值,使用所述目标数值对每个所述目标位置进行标记。

本申请实施例的数据存储装置,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

与上述图6实施例提供的数据读取方法相对应,本公开还提供一种数据读取装置,由于本公开实施例提供的数据读取装置与上述图6实施例提供的数据读取方法相对应,因此数据读取方法的实施方式也适用于本公开实施例提供的数据读取装置,在本公开实施例中不再详细描述。

图8为根据本申请一个实施例的数据读取装置的结构示意图。

如图8所示,本申请实施例的数据读取装置200可以包括:获取模块210、确定模块220、读取模块230和生成模块240。

获取模块210,用于获取待读取数据;

确定模块220,用于获取所述待读取数据的哈希值,并根据所述哈希值确定所述待读取数据对应的读取子位图上的读取位置;

读取模块230,用于从所述读取子位图对应的存储空间内读取所述读取位置上的标记数值;

生成模块240,用于根据所述标记数值生成所述待读取数据的读取结果。

在本申请的一个实施例中,所述待读取数据对应的哈希值的数量为至少一个;所述生成模块240,具体用于:识别所述待读取数据的每个哈希值对应的读取位置上的标记数值为1,生成所述待读取数据的读取结果为存储有所述待读取数据;或者,识别所述待读取数据的任一哈希值对应的读取位置上的标记数值为0,生成所述待读取数据的读取结果为未存储所述待读取数据。

本申请实施例的数据读取装置,能够根据哈希值确定待读取数据对应的读取子位图上的读取位置,并从读取子位图对应的存储空间内读取读取位置上的标记数值,根据标记数值生成待读取数据的读取结果,能够实现位图划分场景的数据读取,有利于实现存储空间的负载均衡。

为了实现上述实施例,如图9所示,本申请还提出一种电子设备300,包括:存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序,处理器320执行程序时,实现如本申请前述实施例提出的数据存储方法,或者实现如本申请前述实施例提出的数据读取方法。

本申请实施例的电子设备,通过处理器执行存储在存储器上的计算机程序,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

为了实现上述实施例,本申请还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现如本申请前述实施例提出的数据存储方法,或者实现如本申请前述实施例提出的数据读取方法。

本申请实施例的计算机可读存储介质,通过存储计算机程序并被处理器执行,能够根据初始位图的数据量对初始位图进行划分,得到多个初始子位图,可实现初始位图的自动划分,进而利用目标数值对目标初始子位图上的目标位置进行标记,生成目标子位图并存储到对应的存储空间内,有利于实现存储空间的负载均衡。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

相关技术
  • 数据存储方法、数据读取方法、装置及电子设备
  • 数据存储方法、数据读取方法、装置、电子设备及介质
技术分类

06120113241034