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

一种索引信息存储方法、装置及存储设备

文献发布时间:2023-06-19 11:11:32


一种索引信息存储方法、装置及存储设备

技术领域

本发明涉及数据存储技术领域,特别是涉及一种索引信息存储方法、装置及存储设备。

背景技术

当前,随着存储技术的不断发展,磁盘、SSD(Solid State Disk,固态硬盘)、ISCSI(Internet Small Computer System Interface,小型计算机系统接口)设备等各类存储设备在数据存储技术领域得到了广泛的应用。

通常,各类存储设备可以将自身的存储空间划分为主启动块、对象块区和备启动块,并且,对象块区内包括多个数据块,每个数据块由主信息区、备信息区和数据区构成。

其中,主启动块用于存储设备中用来存储设备关键信息,备启动块用于备份主启动块中的信息,可以在主启动块异常时,恢复设备关键信息,并且,备启动块的大小和主启动块的大小相同。数据块中的数据区用于存储数据,主信息区用于存储数据区中所存储数据的索引信息,备信息区用于备份主信息区中的索引信息。

相关技术中,当在存储设备中存储数据时,为了便于后续对所存储的数据进行读取、修改、删除等操作,可以在主信息区和备信息区写入所存储的数据的索引信息,并且,在读取数据时,可以从主信息区或备信息区读取所要读取的数据的索引信息,从而,根据该索引信息读取该数据。

然而,在上述相关技术中,主信息区和备信息区的读写频率明显高于数据区的读写频率,从而,主信息区和备信息区存在访问热点的问题,导致存储设备出现故障的概率较高。

例如,存储设备为磁盘时,由于主信息区和备信息区存在磁盘访问热点问题,容易导致磁盘出现磁盘坏道故障。

发明内容

本发明实施例的目的在于提供一种索引信息存储方法、装置及存储设备,以实现避免出现访问热点的问题,降低存储设备出现故障的概率。具体技术方案如下:

第一方面,本发明实施例提供了一种索引信息存储方法,所述方法包括:

获取待存储的目标数据的目标索引信息;

根据所记录的第一偏移位置,确定用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置;其中,所述第一偏移位置为:目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在所述目标对象块中的偏移位置,所述第一偏移位置与所述第二偏移位置不同,所述目标对象块为用于存储所述目标数据的目标数据区所在的对象块;

记录所述第二偏移位置,并根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

可选的,一种具体实现方式中,所述记录所述第二偏移位置的步骤,包括:

在所述目标对象块的起始位置前的指定区域中,记录所述第二偏移位置;

其中,所述指定区域中记录有所述目标数据区所存储的各个数据的索引信息所在的主数据区和备数据区的第三偏移位置。

可选的,一种具体实现方式中,所述目标数据块中所存储的每个数据的索引信息所在的主信息区和备信息区相邻。

可选的,一种具体实现方式中,所述根据所记录的第一偏移位置,确定用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置的步骤,包括:

根据所记录的第一偏移位置,确定所述上一数据的索引信息所在的主信息区和备信息区的结束位置的第四偏移位置;

将所述第四偏移位置,确定为用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的开始位置的偏移位置;

根据所述第四偏移位置,以及所述目标主信息区和所述目标备信息区的区域大小,确定所述目标主信息区和所述目标备信息区在所述目标对象块中的第二偏移位置。

可选的,一种具体实现方式中,在所述根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息的步骤之前,所述方法还包括:

将所述目标数据和所述目标索引信息连续存储至所述目标数据区;

所述根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息的步骤,包括:

在所述目标数据区被写满后,根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

可选的,一种具体实现方式中,所述指定区域中还记录有:用于表征所述目标对象块是否正常关闭的状态信息;所述方法还包括:

接收预设的数据库发送的针对所述目标对象块的索引信息恢复指令;

若所述状态信息表征所述目标对象块正常关闭,则根据所述指定区域中记录的各个第三偏移位置,从所述目标对象块中读取所述目标数据区所存储的各个数据的索引信息,并将所读取到的各个索引信息发送给所述数据库;

若所述状态信息表征所述目标对象块非正常关闭,则扫描所述目标对象块,将扫描到的各个索引信息发送给所述数据库。

可选的,一种具体实现方式中,所述方法还包括:

在所述状态信息表征所述目标对象块非正常关闭的情况下,若在所述目标数据区中扫描得到索引信息,则根据所记录的所扫描到的索引信息的偏移位置,将所扫描到的索引信息存储到所述目标对象块中。

第二方面,本发明实施例提供了一种索引信息存储装置,所述装置包括:

信息获取模块,用于获取待存储的目标数据的目标索引信息;

位置确定模块,用于根据所记录的第一偏移位置,确定用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置;其中,所述第一偏移位置为:目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在所述目标对象块中的偏移位置,所述第一偏移位置与所述第二偏移位置不同,所述目标对象块为用于存储所述目标数据的目标数据区所在的对象块;

信息存储模块,用于记录所述第二偏移位置,并根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

可选的,一种具体实现方式中,所述信息存储模块具体用于:

在所述目标对象块的起始位置前的指定区域中,记录所述第二偏移位置;

其中,所述指定区域中记录有所述目标数据区所存储的各个数据的索引信息所在的主数据区和备数据区的第三偏移位置。

可选的,一种具体实现方式中,所述目标数据块中所存储的每个数据的索引信息所在的主信息区和备信息区相邻。

可选的,一种具体实现方式中,所述位置确定模块具体用于:

根据所记录的第一偏移位置,确定所述上一数据的索引信息所在的主信息区和备信息区的结束位置的第四偏移位置;

将所述第四偏移位置,确定为用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的开始位置的偏移位置;

根据所述第四偏移位置,以及所述目标主信息区和所述目标备信息区的区域大小,确定所述目标主信息区和所述目标备信息区在所述目标对象块中的第二偏移位置。

可选的,一种具体实现方式中,所述装置还包括:

数据存储模块,用于在所述根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息之前,将所述目标数据和所述目标索引信息连续存储至所述目标数据区;

所述信息存储模块具体用于:在所述目标数据区被写满后,根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

可选的,一种具体实现方式中,所述指定区域中还记录有:用于表征所述目标对象块是否正常关闭的状态信息;所述装置还包括:

指定获取模块,用于接收预设的数据库发送的针对所述目标对象块的索引信息恢复指令;

信息读取模块,用于若所述状态信息表征所述目标对象块正常关闭,则根据所述指定区域中记录的各个第三偏移位置,从所述目标对象块中读取所述目标数据区所存储的各个数据的索引信息,并将所读取到的各个索引信息发送给所述数据库;

信息扫描模块,用于若所述状态信息表征所述目标对象块非正常关闭,则扫描所述目标对象块,将扫描到的各个索引信息发送给所述数据库。

可选的,一种具体实现方式中,所述装置还包括:

信息发送模块,用于在所述状态信息表征所述目标对象块非正常关闭的情况下,若在所述目标数据区中扫描得到索引信息,则根据所记录的所扫描到的索引信息的偏移位置,将所扫描到的索引信息存储到所述目标对象块中。

第三方面,本发明实施例提供了一种存储设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述第一方面提供的任一索引信息存储方法的方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的任一索引信息存储方法的方法步骤。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的任一索引信息存储方法的方法步骤。

本发明实施例有益效果:

以上可见,应用本发明实施例提供的方案,在获取到待存储的目标数据后,可以将该目标数据存储至存储设备中的目标数据区,从而,在目标数据存储完成后,可以获取到该目标数据的目标索引信息。进而,便可以根据所记录的第一偏移位置,确定用于存储所获取到的目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置。这样,便可以记录该第二偏移位置,并根据该第二偏移位置,在目标对象块中存储目标数据的目标索引信息。

基于此,由于目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在目标对象块中的第一偏移位置,与用于存储目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置不同,因此,上述上一数据的索引信息与目标数据的索引信息在目标数据块中的存储区域不同。

也就是说,应用本发明实施例提供的方案,在存储数据的索引信息时,可以动态地为不同数据的索引信息分配不同的存储区域,从而,避免了由于不同数据的索引信息存储到相同的存储区域,而造成的该相同的存储区域的读写频率较高的情况,进而,便可以避免出现访问热点的问题,并降低存储设备出现故障的概率。

附图说明

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

图1为相关技术中存储设备的存储空间的一种结构示意图;

图2为本发明实施例提供的一种索引信息存储方法的流程示意图;

图3为本发明实施例提供的一种存储设备的存储空间的结构示意图;

图4为图2中S202的一种具体实现方式的流程示意图;

图5为本发明实施例提供的另一种索引信息存储方法的流程示意图;

图6为本发明实施例提供的另一种存储设备的存储空间的结构示意图;

图7为本发明实施例提供的一种索引信息存储装置的结构示意图;

图8为本发明实施例提供的一种存储设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

在对本发明实施例提供的一种索引信息存储方法进行说明之前,首先对相关技术中,存储设备的存储空间的结构进行说明。

图1为相关技术中存储设备的存储空间的一种结构示意图,如图1所示,快设备即为存储设备的存储空间,并且,由主启动区、对象块区和备份启动区三部分构成。

其中,主启动区位于块设备首部,包括主启动块,该主启动块用于存储设备关键信息;备份启动区位于块设备尾部,包括备启动块,该备启动块用于备份主启动块中的信息,可以在主启动块异常时,恢复设备关键信息。主启动区与备份启动区之间的位置为对象块区,包括多个对象块,其中,每个对象块包括数据区,主信息区和备信息区。如图1所示,每个对象块中,标注有“Data”字样的区域为数据区,标注有“Inf”字样的区域为主信息区,标注有“Binf”字样的区域为备信息区,并且,数据区用于存储数据,主信息区用于存储数据区中所存储数据的索引信息,备信息区用于备份主信息区中的索引信息,因此,主信息区中的索引信息与数据区中的数据相关联,主信息区和备信息区中的索引信息一致。

此外,主启动块、备启动块和各个对象块的大小相同。例如,以64M为例,则主启动块占据块设备中,从块设备的起始位置开始的64M的区域,备启动块占据块设备中,从块设备的结束位置向前的64M的区域,而对象块区中,按照64M划分为多个对象块,其中,若剩余不足64M的区域时,该区域可以保留不被使用。

相关技术中,主信息区和备信息区的读写频率明显高于数据区的读写频率,从而,主信息区和备信息区存在访问热点的问题,导致存储设备出现故障的概率较高。

为了解决上述技术问题,本发明实施例提供了一种索引信息存储方法。

该方法可以适用于图片存储、视频存储、文件存储等各类需要存储数据的索引信息的应用场景,并且,该方法可以应用于各类存储设备,该存储设备可以为:磁盘、SSD(Solid State Disk,固态硬盘)、ISCSI(Internet Small Computer System Interface,小型计算机系统接口)等各类存储设备,对此,本发明实施例不对该方法的应用场景和执行主体进行具体限定。

其中,本发明实施例提供的一种索引信息存储方法,可以包括如下步骤:

在将目标数据存储至目标数据区后,获取所述目标数据的目标索引信息;

根据所记录的第一偏移位置,确定用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置;其中,所述第一偏移位置为:目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在所述目标对象块中的偏移位置,所述第一偏移位置与所述第二偏移位置不同,所述目标对象块为所述目标数据区所在的对象块;

记录所述第二偏移位置,并根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

以上可见,应用本发明实施例提供的方案,在获取到待存储的目标数据后,可以将该目标数据存储至存储设备中的目标数据区,从而,在目标数据存储完成后,可以获取到该目标数据的目标索引信息。进而,便可以根据所记录的第一偏移位置,确定用于存储所获取到的目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置。这样,便可以记录该第二偏移位置,并根据该第二偏移位置,在目标对象块中存储目标数据的目标索引信息。

基于此,由于目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在目标对象块中的第一偏移位置,与用于存储目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置不同,因此,上述上一数据的索引信息与目标数据的索引信息在目标数据块中的存储区域不同。

也就是说,应用本发明实施例提供的方案,在存储数据的索引信息时,可以动态地为不同数据的索引信息分配不同的存储区域,从而,避免了由于不同数据的索引信息存储到相同的存储区域,而造成的该相同的存储区域的读写频率较高的情况,进而,便可以避免出现访问热点的问题,并降低存储设备出现故障的概率。

下面,结合附图,对本发明实施例提供的一种索引信息存储方法进行具体说明。

图2为本发明实施例提供的一种索引信息存储方法的流程示意图,如图2所示,该方法可以包括如下步骤:

S201:获取待存储的目标数据的目标索引信息;

存储设备在得到待存储的目标数据后,可以首先在对象块区所包括的各个对象块中,确定用于存储该目标数据的目标对象块,并且,确定目标对象块中的目标数据区中用于存储该待存储的目标数据的存储区域,进而,将该目标数据存储至该存储区域中。

这样,在确定出目标对象块中的目标数据区中用于存储该待存储的目标数据的存储区域后,存储设备便可以获取该目标数据的目标索引信息。

其中,目标数据的目标索引信息中至少包括:目标数据的数据标识和目标数据在目标数据区中的存储位置,即目标数据在目标数据区中的偏移位置。

当然,目标数据的索引信息中还可以包括其他与目标数据相关的信息,例如,目标数据的存储时间、目标数据的大小、目标数据的来源、目标数据的描述信息等。这都是合理的。

此外,上述目标数据可以为图像数据、文件数据、视频数据等各类数据,并且,存储设备可以通过多种方式得到上述目标数据,例如,存储设备接收其他设备发送的目标数据,存储设备直接获取所在的电子设备采集的目标数据等。这都是合理的。

S202:根据所记录的第一偏移位置,确定用于存储目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置;

其中,第一偏移位置为:目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在目标对象块中的偏移位置,第一偏移位置与第二偏移位置不同,目标对象块为用于存储目标数据的目标数据区所在的对象块;

对于目标数据区中所存储的各个数据而言,存储设备需要在目标数据区所在的目标对象块中确定用于存储各个数据的索引信息的主信息区和备信息区,从而,得到各个主信息区和备信息区在目标对象块中的偏移位置。进而,存储设备中可以记录有上述各个主信息区和备信息区在目标对象块中的偏移位置。

其中,可选的,一种具体实现方式中,上述各个主信息区和备信息区在目标对象块中的偏移位置可以被记录到目标对象块的起始位置前的指定区域中。

例如,如图3所示,每个对象块之前的,标注有块关闭状态与偏移的区域,即为上述指定区域。

这样,在将目标数据存储至目标数据后,存储介质便可以从所记录的各个主信息区和备信息区在目标对象块中的偏移位置中,确定所存储的目标数据的上一数据的索引信息所在的主信息区和备信息区在目标对象块中的偏移位置,即确定第一偏移位置。

进而,根据所确定的第一偏移位置,存储设备便可以在目标对象块中,确定用于存储目标索引信息的目标主信息区和目标备信息区的第二偏移位置。并且,所确定的第一偏移位置和第二偏移位置不同,也就是说,目标数据的目标索引信息,与目标数据区中目标数据的上一数据的索引信息,被存储在目标数据块中的不同存储区域中。

其中,可选的,一种具体实现方式中,目标数据块中所存储的每个数据的索引信息所在的主信息区和备信息区可以是相邻的区域。

例如,如图3所示,每个对象块中,标注有“Inf”的主信息区域标注有“Binf”的备信息区相邻。

这样,当在目标对象块中存储每个数据的索引信息时,可以同时在用于存储该索引信息的主信息区和备信息区中,存在该索引信息。也就是说,在本具体实现方式中,每个数据的索引信息的存储和备份是同时完成的,从而,可以减少索引信息的写入次数,减少由于IO(Input/Output,输入输出)操作带来的资源消耗和时间延误。

进而,可选的,一种具体实现方式中,在目标数据块中所存储的每个数据的索引信息所在的主信息区和备信息区相邻的情况下,如图4所示,上述步骤S202,可以包括如下步骤S2021-S2023。

S2021:根据所记录的第一偏移位置,确定上一数据的索引信息所在的主信息区和备信息区的结束位置的第四偏移位置;

S2022:将第四偏移位置,确定为用于存储目标索引信息的目标主信息区和目标备信息区在目标对象块中的开始位置的偏移位置;

S2023:根据第四偏移位置,以及目标主信息区和目标备信息区的区域大小,确定目标主信息区和目标备信息区在目标对象块中的第二偏移位置。

在本具体实现方式中,在确定出第一偏移位置后,由于目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区相邻,从而,便可以得到该第一偏移位置在目标数据块中所指示的存储区域,从而,可以确定该存储区域的结束位置,得到上一数据的索引信息所在的主信息区和备信息区的结束位置的第四偏移位置。

进而,由于目标主信息区和目标备信息区相邻,从而,可以将上述第四偏移位置,确定为目标主信息区和目标备信息区在目标对象块中的第二偏移位置所指示的存储区域的地址位置的偏移位置,进而,便可以根据该第四偏移位置,以及目标主信息区和目标备信息区的区域大小,确定目标主信息区和目标备信息区在目标对象块中所占据的存储区域,从而,该存储区域的偏移位置,即为第二偏移位置。

例如,目标对象块的大小为64M,主信息区的区域大小和备信息区的区域大小均为64K,则主信息区和备信息区的区域大小的和值为128K。进而,针对目标对象块,在第一次确定用于存储数据的索引信息的主信息区和备信息区时,可以将目标对象块中,从起始位置开始的128K的存储区域确定为主信息区和备信息区,从而,得到该主信息区和备信息区的偏移位置;进而,在第二次确定用于存储数据的索引信息的主信息区和备信息区时,可以将目标对象块中,第128K至第256K的存储区域确定为主信息区和备信息区,从而,得到该主信息区和备信息区的偏移位置;依次类推,在第512次确定用于存储数据的索引信息的主信息区和备信息区时,可以将目标对象块中,第65408K至第65536K的存储区域确定为主信息区和备信息区,从而,得到该主信息区和备信息区的偏移位置。进而,在第513次确定用于存储数据的索引信息的主信息区和备信息区时,可以再次返回目标对象块的起始位置,将目标对象块中,从起始位置开始的128K的存储区域再次确定为主信息区和备信息区,从而,得到该主信息区和备信息区的偏移位置。

S203:记录第二偏移位置,并根据第二偏移位置,在目标对象块中存储目标索引信息。

这样,在确定出用于存储目标索引信息的目标主信息区和目标备信息区的第二偏移位置后,存储设备便可以记录该第二偏移位置,并根据该第二偏移位置,确定目标对象块中用于存储目标数据的目标索引信息的存储区域。从而,在确定出存储区域后,便可以将目标数据的目标索引信息存储至该存储区域。

其中,该存储区域为上述第二偏移位置在目标对象块中所指示的区域。

进而,当存储设备再次获取到新的待存储的目标数据,且该新的待存储的目标数据也被存储到上述目标数据区中时,上述所确定的第二偏移位置即为:该新的待存储的目标数据的上一数据的索引信息所在的主信息区和备信息区,在目标对象块中的偏移位置。也就是说,相对于新的待存储的目标数据,上述所确定的第二偏移位置,即为第一偏移位置。

其中,目标数据和目标索引信息可以同时存储,也可以在存储目标数据后,再存储目标索引信息,这都是合理的,本发明实施例不对目标数据和目标索引信息的存储顺序进行限定。

可选的,一种具体实现方式中,上述步骤S203中,记录第二偏移位置,可以包括如下步骤A:

步骤A:在目标对象块的起始位置前的指定区域中,记录第二偏移位置;

其中,指定区域中记录有目标数据区所存储的各个数据的索引信息所在的主数据区和备数据区的第三偏移位置。

在本具体实现方式中,可以在目标对象块的起始位置前,确定用于存储各个主信息区和备信息区的第三偏移位置的指定区域,从而,在确定出上述目标主信息区和目标备信息区在目标对象块中的第二偏移位置后,便可以将该第二偏移位置,记录到该目标对象块的起始位置前的指定区域中。

进而,在将该第二偏移位置记录到上述指定区域中后,该第二偏移位置即为该指定区域中记录的,目标数据区所存储的各个数据的索引信息所在的主数据区和备数据区的第三偏移位置。

以上可见,应用本发明实施例提供的方案,在获取到待存储的目标数据后,可以将该目标数据存储至存储设备中的目标数据区,从而,在目标数据存储完成后,可以获取到该目标数据的目标索引信息。进而,便可以根据所记录的第一偏移位置,确定用于存储所获取到的目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置。这样,便可以记录该第二偏移位置,并根据该第二偏移位置,在目标对象块中存储目标数据的目标索引信息。

基于此,由于目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在目标对象块中的第一偏移位置,与用于存储目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置不同,因此,上述上一数据的索引信息与目标数据的索引信息在目标数据块中的存储区域不同。

也就是说,应用本发明实施例提供的方案,在存储数据的索引信息时,可以动态地为不同数据的索引信息分配不同的存储区域,从而,避免了由于不同数据的索引信息存储到相同的存储区域,而造成的该相同的存储区域的读写频率较高的情况,进而,便可以避免出现访问热点的问题,并降低存储设备出现故障的概率。

在很多情况下,所存储的数据的索引信息的数量可以大于所存储的数据的数据量,例如,所存储的数据为图片数据,该图片数据的数据量为50K,而该图像数据的索引信息的数据量为128K。在这种情况下,在同时向数据区写入数据,以及向主信息区和备信息区写入数据的索引信息时,可以带来写入放大的问题,从而,增大数据存储时的资源消耗,并影响存储设备的性能,甚至导致存储设备出现故障,降低存储设备的寿命。

基于此,为了避免出现由于数据的索引信息的数据量大于数据的数据量而导致的写入放大问题,降低数据存储时的资源消耗,减少对存储设备的性能的影响。可选的,一种具体实现方式中,如图5所示,本发明实施例提供的一种索引信息存储方法,还可以包括如下步骤:

S204:将目标数据和目标索引信息连续存储至目标数据区;

相应的,在本具体实现方式中,上述步骤S203中,可以包括如下步骤S2031:

S2031:在目标数据区被写满后,根据第二偏移位置,在目标对象块中存储目标索引信息。

在本具体实现方式中,在获取到该目标数据的目标索引信息后,存储设备便可以顺序将目标数据和目标索引信息连续存储至目标数据区。

例如,如图6所示,以图片数据为例,标注有图片数据和图片索引的区域即为在目标数据区中连续存储的图片数据和该图片数据的索引信息。

进而,在目标数据区被写满后,便可以根据上述所确定的第二偏移位置,在目标对象块中存储目标数据的目标索引信息。

也就是说,在本具体实现方式中,当在目标数据区中,存储各个数据时,可以首先获取各个数据的索引信息,以及用于存储各个索引信息的主信息区和备信息区的偏移位置,并记录所确定的各个偏移位置。进而,在各个数据的存储过程中,可以首先在目标数据区中连续存储每个数据和该数据的索引信息,而并未将各个数据的索引信息存储至所确定的各个主信息区和备信息区中。之后,在目标数据区被写满后,即目标数据区中的全部存储区域均被占用后,便可以从目标数据区中获取各个数据的索引信息,并根据所记录的用于存储各个索引信息的主信息区和备信息区的偏移位置,将各个索引信息写入到用于存储该索引信息的主信息区和备信息区中。

这样,在目标数据区中连续存储每个数据和该数据的索引信息,可以避免出现由于数据的索引信息的数据量大于数据的数据量而导致的写入放大问题,降低数据存储时的资源消耗,减少对存储设备的性能的影响。

为了进一步避免主信息区和备信息区所存在的访问热点问题,在很多情况下,可以在预设的数据库中存储各个数据区中所存储数据的索引信息,从而,在读取数据时,可以从该数据库中读取所要读取的数据的索引信息,进而,在数据区中读取该数据。

基于此,当上述预设的数据库发生故障,导致所存储的索引信息丢失时,可以利用存储设备的各个对象块中所存储的索引信息,对该数据库中所丢失的索引信息进行恢复。

可选的,一种具体实现方式中,上述用于记录目标数据区所存储的各个数据的索引信息所在的主数据区和备数据区的第三偏移位置的指定区域中,还可以记录有用于表征目标对象块是否正常关闭的状态信息。

其中,所谓正常关闭是指:目标对象块在写满后,正常地将该目标对象块关闭;而所谓非正常关闭是指:由于机器异常断电、程序异常崩溃等原因,导致的目标对象块被非正常关闭。

相应的,在本具体实现方式中,本发明实施例提供的一种索引信息存储方法,还可以包括如下步骤B1-B3:

步骤B1:接收预设的数据库发送的针对目标对象块的索引信息恢复指令;

步骤B2:若状态信息表征目标对象块正常关闭,则根据指定区域中记录的各个第三偏移位置,从目标对象块中读取目标数据区所存储的各个数据的索引信息,并将所读取到的各个索引信息发送给数据库;

步骤B3:若状态信息表征目标对象块非正常关闭,则扫描目标对象块,将扫描到的各个索引信息发送给数据库。

在本具体实现方式中,当预设的数据库出现故障,导致所存储的索引信息丢失时,该数据库可以确定所丢失的索引信息所在的对象块,从而,数据库便可以向存储设备发送针对该对象块的索引信息恢复指令。

其中,当数据库确定所丢失的索引信息所在的对象块为目标对象块时,数据库便可以向存储设备发送针对目标对象块的索引信息恢复指令。

在接收到上述针对目标对象块的索引信息恢复指令后,存储设备便可以根据指定区域所记录的状态信息,确定目标对象块是否正常关闭。

其中,若指定区域所记录的状态信息表征目标对象块正常关闭,则存储介质便可以读取该指定区域中所记录的各个第三偏移位置,从而,根据读取到的各个第三偏移位置,从目标对象块中读取目标数据区所存储的各个数据的索引信息,并将所读取到的各个索引信息发送给数据库;

相应的,若指定区域所记录的状态信息表征目标对象库非正常关闭,则存储介质可以扫描目标对象块,并将所扫描到的各个索引信息发送给数据库。

在目标对象库非正常关闭时,与所存储的数据一同存储到目标数据区中的该数据的索引信息可能并未为记录到目标对象库中,用于存储该数据的索引信息的主信息区和备信息区的偏移位置所指定的存储区域中。

基于此,可选的,一种具体实现方式中,本发明实施例提供的一种索引信息存储方法,还可以包括如下步骤B4:

步骤B4:在状态信息表征目标对象块非正常关闭的情况下,若在目标数据区中扫描得到索引信息,则根据所记录的所扫描到的索引信息的偏移位置,将所扫描到的索引信息存储到目标对象块中。

在本具体实现方式中,在指定区域中所记录的状态信息表征目标对象块非正常关闭的情况下,存储设备在扫描目标对象块时,可以对目标对象块中的目标数据区进行扫描。这样,当在目标数据区中扫描得到索引信息时,存储设备便可以从指定区域所记录的各个第三偏移位置中,读取用于存储所扫描到的索引信息的主信息区和备信息区的偏移位置,从而,存储设备可以根据所读取到的偏移位置,将所扫描到的索引信息存储到目标对象块,即将所扫描到的索引信息,存储到目标对象块中,所读取到的偏移位置所指示的存储区域中。

相应于上述本发明实施例提供的一种索引信息存储方法,本发明实施例还提供了一种索引信息存储装置。

图7为本发明实施例提供的一种索引信息存储装置的结构示意图。如图7所示,该装置可以包括如下模块:

信息获取模块710,用于获取待存储的目标数据的目标索引信息;

位置确定模块720,用于根据所记录的第一偏移位置,确定用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置;其中,所述第一偏移位置为:目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在所述目标对象块中的偏移位置,所述第一偏移位置与所述第二偏移位置不同,所述目标对象块为用于存储所述目标数据的目标数据区所在的对象块;

信息存储模块730,用于记录所述第二偏移位置,并根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

以上可见,应用本发明实施例提供的方案,在获取到待存储的目标数据后,可以将该目标数据存储至存储设备中的目标数据区,从而,在目标数据存储完成后,可以获取到该目标数据的目标索引信息。进而,便可以根据所记录的第一偏移位置,确定用于存储所获取到的目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置。这样,便可以记录该第二偏移位置,并根据该第二偏移位置,在目标对象块中存储目标数据的目标索引信息。

基于此,由于目标数据区中所存储的上一数据的索引信息所在的主信息区和备信息区,在目标对象块中的第一偏移位置,与用于存储目标索引信息的目标主信息区和目标备信息区在目标对象块中的第二偏移位置不同,因此,上述上一数据的索引信息与目标数据的索引信息在目标数据块中的存储区域不同。

也就是说,应用本发明实施例提供的方案,在存储数据的索引信息时,可以动态地为不同数据的索引信息分配不同的存储区域,从而,避免了由于不同数据的索引信息存储到相同的存储区域,而造成的该相同的存储区域的读写频率较高的情况,进而,便可以避免出现访问热点的问题,并降低存储设备出现故障的概率。

可选的,一种具体实现方式中,所述信息存储模块730具体用于:

在所述目标对象块的起始位置前的指定区域中,记录所述第二偏移位置;

其中,所述指定区域中记录有所述目标数据区所存储的各个数据的索引信息所在的主数据区和备数据区的第三偏移位置。

可选的,一种具体实现方式中,所述目标数据块中所存储的每个数据的索引信息所在的主信息区和备信息区相邻。

可选的,一种具体实现方式中,所述位置确定模块720具体用于:

根据所记录的第一偏移位置,确定所述上一数据的索引信息所在的主信息区和备信息区的结束位置的第四偏移位置;

将所述第四偏移位置,确定为用于存储所述目标索引信息的目标主信息区和目标备信息区在目标对象块中的开始位置的偏移位置;

根据所述第四偏移位置,以及所述目标主信息区和所述目标备信息区的区域大小,确定所述目标主信息区和所述目标备信息区在所述目标对象块中的第二偏移位置。

可选的,一种具体实现方式中,所述装置还包括:

数据存储模块,用于在所述根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息之前,将所述目标数据和所述目标索引信息连续存储至所述目标数据区;

所述信息存储模块730具体用于:在所述目标数据区被写满后,根据所述第二偏移位置,在所述目标对象块中存储所述目标索引信息。

可选的,一种具体实现方式中,所述指定区域中还记录有:用于表征所述目标对象块是否正常关闭的状态信息;所述装置还包括:

指定获取模块,用于接收预设的数据库发送的针对所述目标对象块的索引信息恢复指令;

信息读取模块,用于若所述状态信息表征所述目标对象块正常关闭,则根据所述指定区域中记录的各个第三偏移位置,从所述目标对象块中读取所述目标数据区所存储的各个数据的索引信息,并将所读取到的各个索引信息发送给所述数据库;

信息扫描模块,用于若所述状态信息表征所述目标对象块非正常关闭,则扫描所述目标对象块,将扫描到的各个索引信息发送给所述数据库。

可选的,一种具体实现方式中,所述装置还包括:

信息发送模块,用于在所述状态信息表征所述目标对象块非正常关闭的情况下,若在所述目标数据区中扫描得到索引信息,则根据所记录的所扫描到的索引信息的偏移位置,将所扫描到的索引信息存储到所述目标对象块中。

相应于上述本发明实施例提供的一种索引信息存储方法,本发明实施例还提供了一种存储设备设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,

存储器803,用于存放计算机程序;

处理器801,用于执行存储器803上所存放的程序时,实现上述本发明实施例提供的任一索引信息存储方法的步骤。

上述存储设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述存储设备与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例提供的任一索引信息存储方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例提供的任一索引信息存储方法的步骤。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、存储设备实施例、计算机可读存储介质实施例以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

相关技术
  • 一种索引信息存储方法、装置及存储设备
  • 索引数据的存储方法、装置及存储设备
技术分类

06120112837376