CN111399759B - 读数据、写数据的方法、以及对象文件*** - Google Patents
读数据、写数据的方法、以及对象文件*** Download PDFInfo
- Publication number
- CN111399759B CN111399759B CN201911083274.0A CN201911083274A CN111399759B CN 111399759 B CN111399759 B CN 111399759B CN 201911083274 A CN201911083274 A CN 201911083274A CN 111399759 B CN111399759 B CN 111399759B
- Authority
- CN
- China
- Prior art keywords
- object block
- block
- data
- logical address
- file system
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种读数据、写数据的方法、以及对象文件***,属于计算机存储技术领域。本申请构建了一种包含多个对象块的对象文件***,基于该对象文件***,当接收到携带有第一关键字的读数据请求时,通过解析第一关键字得到第一对象块的标识,再根据第一对象块标识获取第一对象块中存储的数据。读取数据的过程无需根据关键字和关键字‑逻辑地址区间之间的映射关系确定数据的逻辑地址区间,进而在该逻辑地址区间内获取数据,因而也无需在存储设备中集中存储上述映射关系,相应地也不存在集中存储映射关系所带来的安全隐患。此外,获取数据无需使用上述映射关系,因此对象文件***的容量也不受存储映射关系的存储设备的容量的限制。
Description
技术领域
本申请涉及计算机存储技术领域,特别涉及一种读数据、写数据的方法、以及对象文件***。
背景技术
随着计算机存储技术的发展,为了提高访问数据的效率,目前数据主要是以关键字-值(key-value)的格式存储在对象文件***中。对于任一条数据,该数据的关键字是将该数据按照一定的算法生成的,该数据的值即为该数据本身,因此,可以通过数据的关键字从对象文件***中读取该数据。
相关技术中,对于对象文件***中存储的各条数据,预先根据每条数据的关键字和存储每条数据的逻辑地址区间,生成关键字-逻辑地址区间之间的映射关系,并将该映射关系存储在一个独立的存储设备中。后续对象文件***在执行数据读取操作时,从该存储设备中获取该映射关系,根据待读取的数据的关键字和该映射关系,确定一个逻辑地址区间,然后读取该逻辑地址区间上存储的数据即可。
由于关键字-逻辑地址区间之间的映射关***一存储在一个存储设备中,如果该存储设备发生损坏,将导致对象文件***无法完成任何数据读取操作,因此将映射关系存储在存储设备中存在一定的安全隐患。另外,存储映射关系的存储设备的容量还限制了整个对象文件***的容量的增长。
发明内容
本申请实施例提供了一种读数据、写数据的方法、以及对象文件***,可以提高读取数据的效率。所述技术方案如下:
第一方面,提供了一种读数据的方法,应用于对象文件***,所述对象文件***包括多个对象块,每个对象块用于存储一条数据,所述方法包括:
接收携带第一关键字的读数据请求,所述第一关键字为第一数据的关键字,且所述第一关键字包括存储所述第一数据的第一对象块的标识;
从所述第一关键字中解析所述第一对象块的标识;
根据所述第一对象块的标识,从所述多个对象块中确定所述第一对象块;
从所述第一对象块中获取所述第一数据。
可选地,所述对象文件***还包括与每个对象块对应的备索引块,每个对象块对应的备索引块用于存储相应对象块的配置信息,所述配置信息包括数据校验信息;
所述根据所述第一对象块中获取所述第一数据之后,还包括:
获取所述第一对象块对应的备索引块,将所述第一对象块对应的备索引块作为第一备索引块;
从所述第一备索引块中读取数据校验信息;
如果根据读取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送所述读数据请求的用户端。
可选地,所述从所述第一备索引块中读取数据校验信息之后,还包括:
如果根据所述读取的数据校验信息确定获取的第一数据无效,则向所述用户端返回数据读取失败消息。
可选地,每个对象块指示一段逻辑地址区间,每个对象块对应的备索引块指示一段逻辑地址区间,每个对象块指示的逻辑地址区间和对应的备索引块指示的逻辑地址区间相邻;
所述根据所述第一对象块的标识,从所述多个对象块中确定所述第一对象块,包括:
根据所述第一对象块的标识,从标识和逻辑地址区间之间的对应关系中,确定与所述第一对象块的标识对应的逻辑地址区间,根据确定的逻辑地址区间确定所述第一对象块;
所述获取所述第一对象块对应的备索引块,包括:
根据所述第一对象块所指示的逻辑地址区间确定所述第一对象块对应的备索引块。
可选地,所述方法还包括:
接收携带第三关键字的数据删除请求;
从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
删除所述第三对象块中存储的数据。
可选地,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
所述方法还包括:
接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
对于所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
删除确定的对象块中存储的数据。
可选地,所述对象文件***还包括备启动块,所述备启动块也用于存储启动所述对象文件***时所需的配置信息。
可选地,所述方法还包括:
确定用于构建所述对象文件***的全部逻辑地址区间;
根据所述全部逻辑地址区间,确定所述多个对象块中每个对象块指示的逻辑地址区间;
根据所述多个对象块中每个对象块指示的逻辑地址区间,构建所述对象文件***。
第二方面,提供了一种写数据的方法,应用于对象文件***,所述对象文件***包括多个对象块,每个对象块用于存储一条数据,所述方法包括:
接收携带第二关键字和第二数据的写数据请求,所述第二关键字为所述第二数据的关键字;
如果从所述第二关键字中解析出对象块的标识,则将解析出的对象块的标识作为第二对象块的标识;
根据所述第二对象块的标识,从所述多个对象块中确定所述第二对象块;
将所述第二对象块中存储的数据更新为所述第二数据。
可选地,所述接收携带第二关键字和第二数据的写数据请求之后,还包括:
如果没有从所述第二关键字中解析出对象块的标识,则从所述对象文件***中确定一个对象块作为第二对象块;
将所述第二数据写入所述第二对象块;
根据所述第二对象块的标识更新所述第二关键字,更新后的所述第二关键字包括所述第二对象块的标识。
可选地,所述方法还包括:
接收携带第三关键字的数据删除请求;
从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
删除所述第三对象块中存储的数据。
可选地,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;所述方法还包括:
接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
对于所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
删除确定的对象块中存储的数据。
可选地,所述对象文件***还包括主启动块,所述主启动块用于存储启动所述对象文件***时所需的配置信息。
可选地,所述对象文件***还包括备启动块,所述备启动块也用于存储启动所述对象文件***时所需的配置信息。
可选地,所述方法还包括:
确定用于构建所述对象文件***的全部逻辑地址区间;
根据所述全部逻辑地址区间,确定所述多个对象块中每个对象块指示的逻辑地址区间;
根据所述多个对象块中每个对象块指示的逻辑地址区间,构建所述对象文件***。
第三方面,提供了一种对象文件***,所述对象文件***包括多个对象块,每个对象块指示一段逻辑地址区间,每个对象块用于存储一条数据,所述***包括:
接收模块,用于接收携带第一关键字的读数据请求,所述第一关键字为第一数据的关键字,且所述第一关键字包括存储所述第一数据的第一对象块的标识;
解析模块,用于从所述第一关键字中解析所述第一对象块的标识;
确定模块,用于根据所述第一对象块的标识,从所述多个对象块中确定所述第一对象块;
获取模块,用于从所述第一对象块中获取所述第一数据。
可选地,对象文件***还包括与每个对象块对应的备索引块,每个对象块对应的备索引块用于存储相应对象块的配置信息,所述配置信息包括数据校验信息;
所述***包括:
所述获取模块,还用于获取所述第一对象块对应的备索引块,将所述第一对象块对应的备索引块作为第一备索引块;
读取模块,用于从所述第一备索引块中读取数据校验信息;
返回模块,用于如果根据读取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送所述读数据请求的用户端。
可选地,所述返回模块还用于:
如果根据所述读取的数据校验信息确定获取的第一数据无效,则向所述用户端返回数据读取失败消息。
可选地,每个对象块指示一段逻辑地址区间,每个对象块对应的备索引块指示一段逻辑地址区间,每个对象块指示的逻辑地址区间和对应的备索引块指示的逻辑地址区间相邻。
可选地,所述确定模块,用于:根据所述第一对象块的标识,从标识和逻辑地址区间之间的对应关系中,确定与所述第一对象块的标识对应的逻辑地址区间,根据确定的逻辑地址区间确定所述第一对象块;
所述获取模块,用于:根据所述第一对象块所指示的逻辑地址区间确定所述第一对象块对应的备索引块。
可选地,所述接收模块,还用于接收携带第三关键字的数据删除请求;
所述解析模块,还用于从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
所述确定模块,还用于根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
所述***包括删除模块,用于删除所述第三对象块中存储的数据。
可选地,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
所述接收模块,还用于接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
所述确定模块,还用于对于所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
所述***还包括删除模块,用于删除确定的对象块中存储的数据。
可选地,对象文件***还包括主启动块,主启动块用于存储启动对象文件***时所需的配置信息。
可选地,对象文件***还包括备启动块,备启动块也用于存储启动对象文件***时所需的配置信息。
可选地,对象文件***还包括:
确定模块,用于确定用于构建对象文件***的全部逻辑地址区间:
确定模块,用于根据全部逻辑地址区间,确定多个对象块中每个对象块指示的逻辑地址区间;
构建模块,用于根据多个对象块中每个对象块指示的逻辑地址区间,构建对象文件***。
第四方面,提供了一种对象文件***的***,所述对象文件***包括多个对象块,每个对象块用于存储一条数据,所述***还包括:
接收模块,用于接收携带第二关键字和第二数据的写数据请求,所述第二关键字为所述第二数据的关键字;
解析模块,用于如果从所述第二关键字中解析出对象块的标识,则将解析出的对象块的标识作为第二对象块的标识;
确定模块,用于根据所述第二对象块的标识,从所述多个对象块中确定所述第二对象块;
更新模块,用于将所述第二对象块中存储的数据更新为所述第二数据。
可选地,所述确定模块,还用于如果没有从所述第二关键字中解析出对象块的标识,则从所述对象文件***中确定一个对象块作为第二对象块;
所述***还包括写入模块,用于将所述第二数据写入所述第二对象块;
所述更新模块,还用于根据所述第二对象块的标识更新所述第二关键字,更新后的所述第二关键字包括所述第二对象块的标识。
可选地,所述接收模块,还用于接收携带第三关键字的数据删除请求;
所述解析模块,还用于从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
所述确定模块,还用于根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
所述***还包括删除模块,用于删除所述第三对象块中存储的数据。
可选地,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
所述***还包括:
所述接收模块,还用于接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
所述确定模块,还用于对所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
所述***还包括删除模块,用于删除确定的对象块中存储的数据。
可选地,对象文件***还包括主启动块,主启动块用于存储启动对象文件***时所需的配置信息。
可选地,对象文件***还包括备启动块,备启动块也用于存储启动对象文件***时所需的配置信息。
可选地,对象文件***还包括:
确定模块,用于确定用于构建对象文件***的全部逻辑地址区间:
确定模块,用于根据全部逻辑地址区间,确定多个对象块中每个对象块指示的逻辑地址区间;
构建模块,用于根据多个对象块中每个对象块指示的逻辑地址区间,构建对象文件***。
第五方面,提供了一种对象文件***,所述***包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述第一方面所述任一方法的步骤。
第六方面,提供了一种对象文件***,所述***包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述第二方面所述任一方法的步骤。
第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面所述任一方法的步骤。
第八方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第二方面所述任一方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供了一种包含多个对象块的对象文件***。当接收到携带有第一关键字的读数据请求时,通过该第一关键字解析出第一对象块的标识,再根据第一对象块标识获取第一对象块中存储的数据。也即是,在本申请实施例提供的读取数据的过程中,根据关键字即可直接确定出存储数据的对象块,进而从确定的对象块中获取数据,无需根据关键字,以及关键字-逻辑地址区间之间的映射关系确定数据的逻辑地址区间,进而在该逻辑地址区间内获取数据,因而也不需要在一个存储设备中集中存储上述映射关系,相应地也就不存在集中存储映射关系所带来的安全隐患。此外,根据关键字即可直接获取数据,无需使用上述映射关系,因此对象文件***的容量也不受存储映射关系的存储设备的容量的限制。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理******示意图;
图2是本申请实施例提供的一种对象文件***的布局示意图;
图3是本申请实施例提供的一种构建对象文件***的方法流程图;
图4是本申请实施例提供的一种写数据的方法流程图;
图5是本申请实施例提供的一种读数据的方法流程图;
图6是本申请实施例提供的一种删除数据的方法流程图;
图7是本申请实施例提供的另一种删除数据的方法流程图;
图8是本申请实施例提供的一种对象文件***的结构示意图;
图9是本申请实施例提供的另一种对象文件***的结构示意图;
图10是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的一种读数据以及写数据的方法进行解释说明之前,先对本申请实施例的应用场景进行解释说明。
在数据存储技术中,存储应用服务器为了统一有效的管理存储的数据,对于接入存储应用服务器的多个存储设备,存储应用服务器根据这多个存储设备的全部逻辑地址区间构建一个对象文件***。也即是,该对象文件***部署在这多个存储设备上。对存储应用服务器而言,对象文件***相当于一个具有连续存储空间的通用块设备,该通用块设备中存储了这多个存储设备上的所有数据。因此在构建对象文件***后,存储应用服务器无需关心接入的存储设备的个数,可以直接通过对象文件***按照统一的方式管理存储的所有数据。在对象文件***中,数据主要是以关键字-值的格式存储,关键字是对象文件***所存储数据的关键字,值对应于存储的数据本身。因此,对于任一条数据,存储应用服务器可以在对象文件***中通过关键字进行写入、读取或删除数据的操作。本申请实施例提供的读取数据的方法就应用于上述对象文件***。
图1是本申请实施例提供的一种数据处理***示意图,如图1所示,该数据处理***100包括多个用户端101、存储应用服务器102和对象文件***103,每个用户端101和存储应用服务器102之间通过无线方式连接以进行通信,存储应用服务器102与对象文件***103之间通过有线或无线方式连接以进行通信。
其中,对象文件***103是基于多个存储设备构建的,上述多个存储设备包括SSD(solid state drive,固态硬盘)设备、本地RAID(redundant arrays of independentdrives,磁盘阵列)和磁盘(disk)设备。在本申请实施例中,预先将多个存储设备的逻辑地址区间划分为多个对象块,以得到本申请实施例提供的对象文件***包括的多个对象块。图2是本申请实施例提供的一种对象文件***的示意图。如图2所示,该对象文件***包括包括多个对象块,每个对象块指示一段逻辑地址区间,且每个对象块用于存储一条数据。
为了便于管理对象文件***包括的各个对象块,如图2所示,还可以将上述对象文件***包括的对象块划分为多个对象块组,每个对象块组包括多个对象块。此时,如图2所示,对象文件***还可以包括与每个对象块组对应的索引集中块。每个对象块组对应的索引集中块是用来集中存储相应对象块组包括的多个对象块中每个对象块的索引信息,该索引信息包括相应对象块在多个属性中每个属性对应的属性值。
上述多个属性可以包括时间属性、数据有效长度属性、数据类型属性、数据校验信息和关键字。其中,时间属性用于指示对象块中的数据的写入或更新时间。
另外,如图2所示,对象文件***还可以包括每个对象块对应的备索引块。备索引块用于存储相应对象块的配置信息,该配置信息包括数据校验信息,该数据校验信息用于读取数据时对获取的数据进行校验。
另外,如图2所示,对象文件***还可以包括主启动块和备启动块。主启动块和备启动块均用于存储启动对象文件***时所需的配置信息。
基于上述对象文件***,为了提高读取数据的效率,在本申请实施例中,对数据的关键字包括的比特位进行修改,以使数据的关键字中的某几个比特位用于指示存储该数据的对象块的标识。后续当存储应用服务器102接收到用户端101发送的读数据请求时,对读数据请求中携带的关键字进行解析,得到对象块的标识。存储应用服务器便可直接在该对象块的标识指示的对象块中读取数据,并将读取到的数据返回至发送该读数据请求的用户端101。也即是,存储应用服务器102无需使用关键字-逻辑地址区间之间的映射关系即可读取数据。
需要说明的是,当存储应用服务器102接收到来自用户端101发送的携带有关键字的其他请求时,比如,携带有关键字的写数据请求或数据删除请求,也可按照上述方式实现相应的处理操作。在此不再一一详细说明。
下面对构建上述对象文件***的过程进行解释说明。
图3是本申请实施例提供的一种构建对象文件***的方法流程图,该方法应用于图1所示的数据处理***。该方法包括如下步骤:
步骤301:存储应用服务器确定用于构建对象文件***的全部逻辑地址区间。
在一种可能的实现方式中,存储应用服务器确定接入存储应用服务器的多个存储设备中每个存储设备的容量大小,根据每个存储设备的容量大小确定接入存储应用服务器的所有存储设备对应的全部逻辑地址区间。确定的全部逻辑逻辑地址区间可以采用段首地址和段尾地址来指示。段首地址为构建对象文件***时全部逻辑地址区间的起始地址,段首地址也称为段地址,且段首地址在该对象文件***中是唯一确定的一个值。
比如,存储应用服务器上接入10个存储设备,每个存储设备的的容量大小为10GB,则接入存储应用服务器的所有存储设备的总容量为100GB,该100GB总容量对应的全部逻辑地址区间为00000H-FFFFFH,其中00000H为构建的对象文件***中全部逻辑地址区间的段首地址。
步骤302:存储应用服务器根据全部逻辑地址区间,确定多个对象块中每个对象块指示的逻辑地址区间。
每个对象块指示的逻辑地址区间的容量可以预先配置,因此,在一种可能的实现方式中,存储应用服务器可以根据全部逻辑地址区间对应的容量和每个对象块指示的逻辑地址区间的容量,确定对象文件***包括的对象块的个数,然后按照确定的个数将该全部逻辑地址区间划分为多个逻辑地址区间,多个逻辑地址区间中的每个逻辑地址区间对应一个对象块。
在另一种可能的实现方式中,当对象文件***还包括除了对象块之外的其他块时,对于确定的全部逻辑地址区间,先确定其他块指示的逻辑地址区间的容量,将该全部逻辑地址区间的容量与其他块指示的逻辑地址区间的容量相减,得到对象文件***中的所有对象块指示的逻辑地址区间的容量。基于所有对象块指示的逻辑地址区间的容量和每个对象块指示的逻辑地址区间的容量,确定对象文件***中包括的对象块的个数。根据其他块指示的逻辑地址区间的容量、对象块的个数对全部逻辑地址区间进行划分,得到对象文件***包括的各个块指示的逻辑地址区间。
上述其他块可以包括主启动块、备启动块以及每个对象块对应的备索引块中的一个或多个。
在另一种可能的实现方式中,当对象文件***包括的对象块被划分为多个对象块组时,上述其他块还可以包括每个对象块组对应的索引集中块。此时,在通过上述实现方式将该全部逻辑地址区间的容量与其他块指示的逻辑地址区间的容量相减之后,根据相减之后的容量、每个索引集中块指示的逻辑地址区间的容量、每个对象块指示的逻辑地址区间的容量确定划分出的对象块组的个数和每个对象块组包括的对象块的个数,对象块组的个数也即是确定出对象文件***包括的索引集中块的个数。根据划分出的对象块组的个数和每个对象块组包括的对象块的个数、其他块指示的逻辑地址区间的容量对全部逻辑地址区间进行划分,得到对象文件***包括的各个块指示的逻辑地址区间。
上述对象块组的个数可以根据不同的业务模型来进行选择。针对不同的业务模型,所划分的对象块组的个数是需要进行权衡的。比如,在需要批量处理数据的业务模型中,划分的对象块组数目应该少一些,相应的每个对象块组中的对象块会多一些,这样便于通过对象块组中的索引集中块中的索引信息中的属性信息对数据进行批量操作。又比如,在需要快速处理数据的业务模型中,划分对象块组数目应该多一些,相应的每个对象块组中的对象块会少一些,存储应用服务器定位到存储相应数据的对象块所需要的时间较短,从而便于快速处理数据。
通过上述实现方式确定的对象文件***包括的对象块的个数可以表示如下:假设将全部逻辑地址区间指示的容量标记为T,主启动块和备启动块指示的逻辑地址区间的容量总和标记为S,每个对象块指示的逻辑地址区间的容量标记为D,索引集中块指示的逻辑地址区间的容量和备索引指示的逻辑地址区间的容量分别标记为M、B,对象文件***包括的对象块组的个数标记为N,则该对象文件***拥有的对象块总数为:(T-S-N*M)/(D+B)。
步骤303:存储应用服务器根据多个对象块中每个对象块指示的逻辑地址区间,构建对象文件***。
在一种可能的实现方式中,存储应用服务器创建各个对象块的标识,根据各个对象块的标识依次格式化各个对象块所指示的逻辑地址区间中信息,直至将所有对象块所指示的逻辑地址区间格式化完毕,之后初始化对象文件***中除对象块之外的其他块中的信息,即可得到本申请实施例提供的对象文件***。
对于任一对象块,创建的对象块的标识能够指示该对象块所指示的逻辑地址区间在步骤301中的全部逻辑地址区间中的位置,以便于后续存储应用服务器直接根据对象块的标识定位到对象块所指示的逻辑地址区间。
比如,对象文件***对应的全部逻辑地址区间为00000H-FFFFFH,对于第五对象块,存储应用服务器在划分逻辑地址区间时确定该第五对象块相对于段首地址的偏移量为20H,则与此同时在对象文件***中建立该偏移量和第五对象块的标识之间的对应关系。也即是,根据第五对象块的标识可以唯一确定该第五对象块的偏移量为20H。
另外,初始化对象文件***中除对象块之外的其他块中的信息的实现方式可以为:存储应用服务器创建主启动块和备启动块的标识,根据该主启动块和备启动块的标识依次初始化主启动块和备启动块所指示的逻辑地址区间中信息,在主启动块和备启动块所指示的逻辑地址区间初始化完毕后,在主启动块和备启动块指示的逻辑地址区间内写入启动对象文件***时所需的配置信息。
通过上述实施例存储应用服务器可以构建一个对象文件***,该对象文件***包括多个对象块,以便于存储应用服务器后续直接从对象块的标识指示的对象块中读取数据。也即是,存储应用服务器无需使用关键字-逻辑地址区间之间的映射关系即可读取数据。因而也不需要在一个存储设备中集中存储上述映射关系,相应地也就不存在集中存储映射关系所带来的的安全隐患。此外,根据关键字即可直接获取数据,无需使用上述映射关系,因此对象文件***的容量也不受存储映射关系的存储设备的容量的限制。
基于构建的对象文件***,存储应用服务器可以在构建的对象文件***中执行用户端发送的写数据请求,下面对该过程进行解释说明。
图4是本申请实施例提供的一种写数据的方法流程图,该方法应用于图1所示的数据处理***。该方法包括如下步骤:
步骤401:存储应用服务器接收携带第二关键字和第二数据的写数据请求,第二关键字为第二数据的关键字。
在一种可能的实现方式中,步骤401的实现过程可以为:当用户端需要在存储设备中写入数据时,用户端向存储应用服务器发送写数据请求,该写数据请求中携带有第二关键字和第二数据。当存储应用服务器接收到用户端发送的该写数据请求时,执行步骤402的操作。
在本申请实施例中,用户端可以在两种场景下发起写数据请求,一种场景为对某个对象块中存储的数据进行重写,一种是将某条数据首次写入对象文件***。对于前一种场景,第二关键字中包括一个对象块的标识,在后一种场景中,第二关键字中不包括对象块的标识。因此,当存储应用服务器接收到写数据请求时,可以先解析写数据请求中携带的关键字,然后根据关键字中是否包括对象块的标识分别执行下述步骤402和步骤403。
步骤402:如果存储应用服务器从第二关键字中解析出对象块的标识,则将解析出的对象块的标识作为第二对象块的标识,并根据第二对象块的标识,从多个对象块中确定第二对象块,将第二对象块中存储的数据更新为第二数据。
上述根据第二对象块的标识,从多个对象块中确定第二对象块的实现方式可以为:根据第二对象块的标识,从标识和逻辑地址区间之间的对应关系中,确定与第二对象块的标识对应的逻辑地址区间,根据确定的逻辑地址区间确定第二对象块。
示例地,根据上述第二对象块的标识,可以确定第二对象块相对于对象文件***的全部逻辑地址区间中段首地址的偏移量,该偏移量用于指示第二对象块所指示的逻辑地址区间,存储应用服务器根据该偏移量和段首地址,便可直接从多个对象块中定位出第二对象块。
比如,第二对象块标识对应的第二偏移量为:22H,对象文件***的段首地址为:00880H,段首地址加第二偏移量为第二对象块所处逻辑地址区间的起始地址,因此存储应用服务器通过008A2H的地址在对象文件***中进行寻址。该008A2H指示的地址为第二对象块所处逻辑地址区间的起始地址,也即是该起始地址对应的对象块为确定的第二对象块。
基于图3所示的实施例中的步骤303可知,存储应用服务器在确定每个对象块指示的逻辑地址区间时,根据该对象块指示的逻辑地址区间的位置相对于段首地址确定一个偏移量。存储应用服务器该偏移量和该对象块的标识之间建立一种对应关系。因此,上述根据第二对象块的标识,确定第二对象块相对于对象文件***的全部逻辑地址区间中段首地址的偏移量的实现方式可以为:根据确定的第二对象块标识和上述对应关系,可以得到第二对象块标识唯一对应的一个偏移量。
步骤403:如果存储应用服务器没有从第二关键字中解析出对象块的标识,则从对象文件***中确定一个对象块作为第二对象块,将第二数据写入第二对象块。
在本申请实施中,还可以为每个对象块配置状态信息,该状态信息包括空闲状态和占用状态,空闲状态用于指示对象块中没有存储有数据,占用状态用于指示对象块中存储有数据。因此,在一种可能的实现方式中,上述从对象文件***中确定一个对象块作为第二对象块的实现过程可以为:如果存储应用服务器没有从第二关键字中解析出对象块的标识,从对象文件***中选择状态信息为空闲状态的一个对象块,将选择的对象块确定为第二对象块。
存储应用服务器可以直接从对象文件***中选择状态信息为空闲状态的一个对象块,将选择的对象块确定为第二对象块。另外,存储应用服务器还可以根据第二数据的属性信息,先从对象文件***中获取存储的数据的属性信息和第二数据的属性信息之间差值在差值阈值内的对象块,然后从对象文件***中查找所指示的逻辑地址区间与获取的对象块所指示的逻辑地址区间之间的偏移量在偏移量阈值内的对象块,也即是,在获取到的对象块的附近查找对象块。从查找到的对象块中确定一个状态信息为空闲状态的对象块,将选择的对象块确定为第二对象块。
上述第二数据的属性信息可以为第二数据的时间属性信息,该时间数据信息可以用于指示接收到该写数据请求的时间。比如,对于接收到的第二数据,该数据的时间属性是4:40,存储应用服务器先从对象文件***中获取存储的数据的时间属性和第二数据的时间属性之间差值在差值阈值内的多个对象块,上述差值阈值可以为30分钟。根据上述差值阈值,存储应用服务器从对象文件***中获取索引信息中时间属性在4:10-5:10的多个对象块,此时确定的多个对象块为:第五对象块、第六对象块、第七对象块、第十对象块和第十五对象块。然后存储应用服务器在对象文件***中查找与上述确定的多个对象块所指示的逻辑地址区间之间的偏移量在偏移量阈值内的对象块,上述偏移量阈值可以为30H。假设查找到一个满足偏移量阈值的第八对象块,且该第八对象块的状态信息为空闲状态时,存储应用服务器便可将第二数据写入上述确定的第八对象块中。
在步骤403中,当存储应用服务器将数据写入第二对象块之后,还可以根据第二对象块的标识更新第二关键字,更新后的第二关键字包括第二对象块的标识。此时,存储应用服务器可以将更新后的关键字返回至用户端,便于用户端根据更新后的关键字读取存储的第二数据。
当存储应用服务器通过上述步骤402或步骤403将数据写入第二对象块之后,如果各个对象块被划分为多个对象块组,也即对象文件***还包括每个对象块组对应的索引集中块,此时,存储应用服务器需要更新第二对象块所在的对象块组对应的索引集中块中的索引信息,在此不再详细阐述。
在本申请实施例中,存储应用服务器对于收到的写数据请求,解析该请求中携带的关键字,且关键字中携带有相应的对象块标识。当存储应用服务器从该关键字中解析出相应的对象块标识后,将用户端发送的第二数据写入该对象块标识对应的对象块中。在此过程中,对对象块的寻址通过解析的对象块的标识即可完成,无需根据关键字以及关键字-逻辑地址区间之间的映射关系来确定对象块位置。寻址效率高,进而可以实现数据的快速写入操作。
图5是本申请实施例提供的一种读数据的方法流程图,该方法应用于图1所示的数据处理***。该方法包括如下步骤:
步骤501:存储应用服务器接收携带第一关键字的读数据请求,第一关键字为第一数据的关键字,且第一关键字包括存储第一数据的第一对象块的标识。
在一种可能的实现方式中,步骤501的实现过程为:当用户端需要从存储设备中获取数据时,用户端向存储应用服务器发送读数据请求,该读数据请求中携带有第一关键字。
步骤502:存储应用服务器从第一关键字中解析第一对象块的标识。
基于图1所示的数据处理***可知,本申请实施例对数据的关键字包括的比特位进行了修改,以使数据的关键字中的某几个比特位用于指示存储该数据的对象块的标识。因此,在步骤502中,存储应用服务器可以直接对这几个比特位进行解析,即可获取第一对象块的标识。
步骤503:存储应用服务器根据第一对象块的标识,从多个对象块中确定第一对象块。
步骤503的实现方式和图4实施例中的步骤402中的“根据第二对象块的标识,从多个对象块中确定第二对象块”的实现方式基本相同,在此不赘述。
步骤504:存储应用服务器从第一对象块中获取第一数据。
基于图4实施例中的步骤402可知,存储应用服务器从多个对象块中确定第一对象块,即时定位到第一对象块所指示的逻辑地址区间的起始地址,因此,存储应用服务器可以直接从定位的起始地址开始读取数据,直至读取到该第一对象块所指示的逻辑地址区间的结束地址,该过程中读取的数据即为第一数据。
此外,在对象文件***中,针对每个对象块还配置有一个备索引块,且备索引块中用于存储数据校验信息。因此,存储应用服务器在获取到第一数据后,还可以获取第一对象块对应的备索引块,将第一对象块对应的备索引块作为第一备索引块;从第一备索引块中读取数据校验信息;根据读取的数据校验信息确定获取的第一数据是否有效。如果根据读取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送读数据请求的用户端。相应地,如果根据读取的数据校验信息确定获取的第一数据无效,则向用户端返回数据读取失败消息。
也即是,在本申请实施例中,在验证读取的数据有效之后才会将读取的数据返回至用户端,从而提高读取的数据的可靠性。
另外,在本申请实施例中,当对象文件***中的对象块被划分为多个对象块组时,每个对象块组对应的索引集中块中各个对象块的索引信息还可以包括数据校验信息。因此,如果存储应用服务器根据第一备索引块中读取的数据校验信息确定获取的第一数据无效时,存储应用服务器还可以从第一对象块所在的对象块组对应的索引集中块中读取第一对象块的索引信息,获取第一对象块的索引信息中的数据校验信息,根据此时获取的数据校验信息重新确定获取的第一数据是否有效。如果根据此时获取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送读数据请求的用户端,同时将此时获取的第一对象块的索引信息中的数据校验信息写入第一备索引块中,更新第一备索引块中的数据校验信息。如果根据第一对象块的索引信息中的数据校验信息确定获取的第一数据也无效,则向用户端返回数据读取失败消息。
上述根据读取的数据校验信息确定获取的第一数据是否有效的实现方式可以为:存储应用服务器对于从第一对象块中读取的数据用一种指定的算法计算一个待校验值。如果获取的第一备索引块中的数据校验信息中的校验值和存储应用服务器计算的待校验值相同,则确定获取的第一数据有效。如果获取的第一备索引块中的数据校验信息中的校验值和存储应用服务器计算的待校验值不相同,则确定获取的第一数据无效。
另外,为了便于快速读取每个对象块对应的备索引块中的数据校验信息,每个对象块指示的逻辑地址区间和对应的备索引块指示的逻辑地址区间相邻,如此,存储应用服务器只需要一次读取操作就可以同时获取对象块中的信息和对象块对应的备索引块中的信息。也即是,在根据某个对象块的逻辑地址区间定位到该对象块时,同时还可以定位到该对象块对应的备索引块,相当于根据一个对象块所指示的逻辑地址区间同时确定出该对象块和该对象块对应的备索引块,从而提高了读取备索引块中的数据的效率。
在本申请实施例中,存储应用服务器对于接收到的读数据请求,解析该读数据请求中携带的关键字,且关键字中携带有对象块标识。当存储应用服务器从该关键字中解析出相应的对象块标识后,从该对象块的标识对应的对象块中获取数据。在此过程中,对对象块的寻址通过解析的对象块的标识即可完成,无需根据关键字以及关键字-逻辑地址区间之间的映射关系来确定对象块位置,寻址效率高。此外,在获取数据的过程中通过对比待校验值和备索引块中的数据校验信息来验证数据是否有效,验证读取的数据有效之后才会将读取的数据返回至用户端,提高了读数据的可靠性。
对于对象文件***上上存储的数据,用户端也可以通过存储应用服务器对数据进行删除操作,下面分别通过图6和图7对该删除操作进行解释说明。
图6是本申请实施例提供的一种数据删除的方法流程图,该方法应用于图1所示的数据处理***。该方法包括如下步骤:
步骤601:存储应用服务器接收携带第三关键字的数据删除请求。
在一种可能的实现方式中,步骤601的实现过程为:当用户端需要在存储设备中删除数据时,用户端向存储应用服务器发送数据删除请求,该删除数据请求中携带有第三关键字。
步骤602:存储应用服务器从第三关键字中解析用于存储待删除的数据的第三对象块的标识。
基于图1所示的数据处理***可知,本申请实施例对数据的关键字包括的比特位进行了修改,以使数据的关键字中的某几个比特位用于指示存储该数据的对象块的标识。因此,在步骤602中,存储应用服务器可以直接对这几个比特位进行解析,即可获取第三对象块的标识。
步骤603:存储应用服务器根据第三对象块的标识,从多个对象块中确定第三对象块。
骤603的实现方式和图4实施例中的步骤402中的“根据第二对象块的标识,从多个对象块中确定第二对象块”的实现方式基本相同,在此不赘述。
步骤604:存储应用服务器删除第三对象块中存储的数据。
基于图4实施例中的步骤402可知,存储应用服务器从多个对象块中确定第三对象块,即时定位到第三对象块所指示的逻辑地址区间的起始地址,因此,存储应用服务器可以直接从定位的起始地址开始删除数据,直至删除到该第三对象块所指示的逻辑地址区间的结束地址。
此外,对于删除数据的第三对象块,存储应用服务器在对象文件***中第三对象块配置的状态信息更新为空闲状态。
此外,在对象文件***中,每个对象块组对应的索引集中块中的每个对象块的索引信息还可以包括该对象块上存储数据的关键字,该关键字在数据删除中可以用于判断删除的数据是否正确,防止存储应用服务器在执行删除操作时误删数据。
因此存储应用服务器在确定出第三对象块之后,还可以获取第三对象块所在的对象块组对应的索引集中块中第三对象块的索引信息,从该索引信息中获取一个关键字。如果获取的第三对象块的索引信息中的关键字和存储应用服务器接收的删除数据请求中携带的第三关键字相同,则确定第三对象块中的数据是用户端请求删除的数据。存储应用服务器删除第三对象块中的数据,并将删除成功的消息返回至发数据删除请求的用户端,该消息用于提示用户端本次删除数据操作有效,数据已成功删除。
如果获取第三对象块的索引信息中的关键字和存储应用服务器接收的删除数据请求中携带的第三关键字不相同,则确定第三对象块中的数据不是用户端请求删除的数据。存储应用服务器对第三对象块中的数据不执行删除操作,且发送删除失败的消息至发送数据删除请求的用户端,该消息用于提示用户端本次删除数据操作无效,数据未成功删除。
在本申请实施例中,存储应用服务器对于收到的数据删除请求,解析该数据删除请求中携带的关键字,且关键字中携带有相应的对象块标识。当存储应用服务器从该关键字中解析出相应的对象块标识后,删除该对象块的标识对应的对象块中的数据。在此过程中,对对象块的寻址通过解析的对象块的标识即可完成,无需根据关键字以及关键字-逻辑地址区间之间的映射关系来确定对象块位置,寻址效率高。此外,在删除数据的过程中对比删除数据请求中携带的关键字和删除数据的对象块的索引信息中的关键字,防止误删数据。
在对象文件***中,索引集中块中存储有该对象块组包括的多个对象块的索引信息,该索引信息包括相应对象块在多个属性中每个属性上的属性值。上述多个属性可以包括时间属性、数据有效长度属性和数据类型属性。因此在对数据进行删除时,可以根据上述属性中的任一属性去删除多个对象块中的数据,从而实现数据的批量删除。
图7是本申请实施例提供的另一种数据删除的方法流程图,该方法应用于图1所示的数据处理***。该方法包括如下步骤:
步骤701:存储应用服务器接收携带特征值区间的数据删除请求,特征值区间用于指示参考属性上的属性值的范围。
在一种可能的实现方式中,步骤701的实现过程为:当用户端需要从存储设备中删除多个数据时,用户端向存储应用服务器发送数据删除请求,该数据删除请求携带有一个特征值区间。
上述特征值区间是参考属性的一个属性值的范围。参考属性可以为时间属性、数据有效长度属性,以及数据类型属性中的任一个属性。比如,当参考属性为时间属性时,且在时间属性上的属性值的范围为2019年8月15日0时至2019年8月31日24时,则存储应用服务器接收的数据删除请求用于指示需要删除的数据为2019年8月15日0时至2019年8月31日24时存入对象文件***的数据。
步骤702:存储应用服务器对于多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在参考属性上的属性值满足特征值区间的对象块。
在一种可能的实现方式中,步骤702的实现过程为:存储应用服务器根据特征值区间指示的参考属性上的属性值的范围遍历所有索引集中块中各个对象块的索引信息中该参考属性对应的属性的属性值,如果某个对象块的索引信息在该参考属性上的属性值满足上述特征值区间,则将该对象块作为步骤702确定的模块。
比如,特征值区间为2019年8月15日0时至2019年8月31日24时,在索引集中块中遍历所有对象块对应的索引信息中时间属性的属性值,确定出时间属性的属性值满足上述特征值区间2019年8月15日0时至2019年8月31日24时的多个对象块为第一对象块至第五对象块,则确定需要删除数据的对象块为第一对象块至第五对象块。
步骤703:存储应用服务器删除确定的对象块中存储的数据。
基于图4实施例中的步骤402可知,存储应用服务器从多个对象块中确定需要删除数据的多个对象块,即可定位到该多个对象块中每一个对象块所指示的逻辑地址区间的起始地址,因此,对于多个对象块中任一个对象块,存储应用服务器可以直接从定位的起始地址开始删除数据,直至删除到该对象块所指示的逻辑地址区间的结束地址。
对于删除数据后的多个对象块,存储应用服务器将上述多个对象块所配置的状态信息更新为空闲状态。当需要写入新数据时,存储应用服务器在对象文件***中检索对象块配置的状态信息为空闲状态的对象块,在该对象块中写入新数据。
在本申请实施例中,存储应用服务器可以根据一个参考属性的某一特征区间进行批量删除数据的操作,删除数据更高效便捷。
图8是本申请实施例提供的一种对象文件***的结构示意图,对象文件***包括多个对象块,每个对象块用于存储一条数据。该对象文件***可以部署前述实施例中的存储应用服务器中,以实现本申请实施例通的读数据方法。如图8所示,该对象文件***800包括:
接收模块801,用于接收携带第一关键字的读数据请求,第一关键字为第一数据的关键字,且第一关键字包括存储第一数据的第一对象块的标识;
解析模块802,用于从第一关键字中解析第一对象块的标识;
确定模块803,用于根据第一对象块的标识,从多个对象块中确定第一对象块;
获取模块804,用于从第一对象块中获取第一数据。
可选地,对象文件***还包括与每个对象块对应的备索引块,每个对象块对应的备索引块用于存储相应对象块的配置信息,配置信息包括数据校验信息;
对象文件***还包括:
获取模块,用于获取第一对象块对应的备索引块,将第一对象块对应的备索引块作为第一备索引块;
读取模块,用于从第一备索引块中读取数据校验信息;
返回模块,用于如果根据读取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送读数据请求的用户端。
可选地,返回模块还用于:
如果根据读取的数据校验信息确定获取的第一数据无效,则向用户端返回数据读取失败消息。
可选地,每个对象块指示一段逻辑地址区间,每个对象块对应的备索引块指示一段逻辑地址区间,每个对象块指示的逻辑地址区间和对应的备索引块指示的逻辑地址区间相邻。
确定模块,还用于:
根据第一对象块的标识,从标识和逻辑地址区间之间的对应关系中,确定与第一对象块的标识对应的逻辑地址区间,根据确定的逻辑地址区间确定第一对象块;
获取模块,还用于:
根据第一对象块所指示的逻辑地址区间确定第一对象块对应的备索引块。
可选地,对象文件***包括:
接收模块,还用于接收携带第三关键字的数据删除请求;
解析模块,还用于从第三关键字中解析用于存储待删除的数据的第三对象块的标识;
确定模块,还用于根据第三对象块的标识,从多个对象块中确定第三对象块;
删除模块,用于删除第三对象块中存储的数据。
可选地,多个对象块被划分为多个对象块组,对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
对象文件***还包括:
接收模块,还用于接收携带特征值区间的数据删除请求,特征值区间用于指示参考属性上的属性值的范围;
确定模块,还用于对于多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在参考属性上的属性值满足特征值区间的对象块;
删除模块,用于删除确定的对象块中存储的数据。
可选地,对象文件***还包括主启动块,主启动块用于存储启动对象文件***时所需的配置信息。
可选地,对象文件***还包括备启动块,备启动块也用于存储启动对象文件***时所需的配置信息。
可选地,
确定模块,还用于确定用于构建对象文件***的全部逻辑地址区间:
确定模块,还用于根据全部逻辑地址区间,确定多个对象块中每个对象块指示的逻辑地址区间;
对象文件***还包括构建模块,用于根据多个对象块中每个对象块指示的逻辑地址区间,构建对象文件***。
本申请实施例提供了一种包含多个对象块的对象文件***,每个对象块指示一段逻辑地址区间。当接收到携带有第一关键字的读数据请求时,通过该第一关键字解析出第一对象块的标识,再根据第一对象块标识获取第一对象块中存储的数据。也即是,在本申请实施例提供的读取数据的过程中,根据关键字即可直接确定出存储数据的对象块,进而从确定的对象块中获取数据,无需根据关键字,以及关键字-逻辑地址区间之间的映射关系确定数据的逻辑地址区间,进而在该逻辑地址区间内获取数据,因而也不需要在一个存储设备中集中存储上述映射关系,相应地也就不存在集中存储映射关系所带来的安全隐患。此外,根据关键字即可直接获取数据,无需使用上述映射关系,因此对象文件***的容量也不受存储映射关系的存储设备的容量的限制。
需要说明的是:上述实施例提供的对象文件***在读数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将对象文件***的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的对象文件***的功能模块在执行读数据操作时与读数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是本申请实施例提供的一种对象文件***的结构示意图,对象文件***包括多个对象块,每个对象块用于存储一条数据。该对象文件***可以部署前述实施例中的存储应用服务器中,以实现本申请实施例通的写数据方法。如图9所示,该对象文件***900还包括:
接收模块901,用于接收携带第二关键字和第二数据的写数据请求,第二关键字为第二数据的关键字;
解析模块902,用于如果从第二关键字中解析出对象块的标识,则将解析出的对象块的标识作为第二对象块的标识;
确定模块903,用于根据第二对象块的标识,从多个对象块中确定第二对象块;
更新模块904,用于将第二对象块中存储的数据更新为第二数据。
可选地,确定模块,用于如果没有从第二关键字中解析出对象块的标识,则从对象文件***中确定一个对象块作为第二对象块;
该***还包括写入模块,用于将第二数据写入第二对象块;
更新模块,还用于根据第二对象块的标识更新第二关键字,更新后的第二关键字包括第二对象块的标识。
可选地,接收模块,还用于接收携带第三关键字的数据删除请求;
解析模块,还用于从第三关键字中解析用于存储待删除的数据的第三对象块的标识;
确定模块,还用于根据第三对象块的标识,从多个对象块中确定第三对象块;
该***900还包括:删除模块,用于删除第三对象块中存储的数据。
可选地,多个对象块被划分为多个对象块组,该对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
接收模块,还用于接收携带特征值区间的数据删除请求,该特征值区间用于指示参考属性上的属性值的范围;
确定模块,还用于对多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在参考属性上的属性值满足特征值区间的对象块;
该***900还包括删除模块,用于删除确定的对象块中存储的数据。
可选地,对象文件***还包括主启动块,主启动块用于存储启动对象文件***时所需的配置信息。
可选地,对象文件***还包括备启动块,备启动块也用于存储启动对象文件***时所需的配置信息。
可选地,确定模块,还用于确定用于构建对象文件***的全部逻辑地址区间:
确定模块,还用于根据全部逻辑地址区间,确定多个对象块中每个对象块指示的逻辑地址区间;
该***还包括构建模块,用于根据多个对象块中每个对象块指示的逻辑地址区间,构建对象文件***。
本申请实施例提供了一种包含多个对象块的对象文件***,每个对象块指示一段逻辑地址区间。当接收到携带有第一关键字的读数据请求时,通过该第一关键字解析出第一对象块的标识,再根据第一对象块标识获取第一对象块中存储的数据。也即是,在本申请实施例提供的读取数据的过程中,根据关键字即可直接确定出存储数据的对象块,进而从确定的对象块中获取数据,无需根据关键字,以及关键字-逻辑地址区间之间的映射关系确定数据的逻辑地址区间,进而在该逻辑地址区间内获取数据,因而也不需要在一个存储设备中集中存储上述映射关系,相应地也就不存在集中存储映射关系所带来的安全隐患。此外,根据关键字即可直接获取数据,无需使用上述映射关系,因此对象文件***的容量也不受存储映射关系的存储设备的容量的限制。
需要说明的是:上述实施例提供的对象文件***在写数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将对象文件***的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的对象文件***的功能模块在执行写数据操作时与写数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10是本申请实施例提供的一种服务器的结构示意图。图1所示的数据处理***中的存储应用服务器可以通过图10所示的服务器来实现。具体来讲:
服务器1000包括中央处理单元(CPU)1001、包括随机存取存储器(RAM)1002和只读存储器(ROM)1003的***存储器1004,以及连接***存储器1004和中央处理单元1001的***总线1005。服务器1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出***(I/O***)1006,和用于存储操作***1013、应用程序1014和其他程序模块1015的大容量存储设备1007。
基本输入/输出***1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中显示器1008和输入设备1009都通过连接到***总线1005的输入输出控制器1010连接到中央处理单元1001。基本输入/输出***1006还可以包括输入输出控制器1010以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1010还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备1007通过连接到***总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。大容量存储设备1007及其相关联的计算机可读介质为服务器1000提供非易失性存储。也就是说,大容量存储设备1007可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的***存储器1004和大容量存储设备1007可以统称为存储器。
根据本申请的各种实施例,服务器1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1000可以通过连接在***总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机***(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的读数据和写数据的方法的指令。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述实施例提供的读数据和写数据的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述实施例提供的读数据和写入数据的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (18)
1.一种读数据的方法,其特征在于,应用于对象文件***,所述对象文件***是基于多个存储设备的全部逻辑地址区间构建的,所述对象文件***是一个具有连续存储空间的通用块设备,所述通用块设备中存储有所述多个存储设备上的所有数据,所述对象文件***包括多个对象块,所述多个对象块是将所述多个存储设备的全部逻辑地址区间划分得到的,每个对象块指示一段逻辑地址区间,每个对象块用于存储一条数据,所述方法包括:
接收携带第一关键字的读数据请求,所述第一关键字为第一数据的关键字,且所述第一关键字包括存储所述第一数据的第一对象块的标识,所述第一对象块的标识用于指示所述第一对象块所指示的逻辑地址区间在所述全部逻辑地址区间中的位置;
从所述第一关键字中解析所述第一对象块的标识;
根据所述第一对象块的标识,从所述多个对象块中确定所述第一对象块;
从所述第一对象块中获取所述第一数据。
2.如权利要求1所述的方法,其特征在于,所述对象文件***还包括与每个对象块对应的备索引块,每个对象块对应的备索引块用于存储相应对象块的配置信息,所述配置信息包括数据校验信息;
所述根据所述第一对象块中获取所述第一数据之后,还包括:
获取所述第一对象块对应的备索引块,将所述第一对象块对应的备索引块作为第一备索引块;
从所述第一备索引块中读取数据校验信息;
如果根据读取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送所述读数据请求的用户端。
3.如权利要求2所述的方法,其特征在于,所述从所述第一备索引块中读取数据校验信息之后,还包括:
如果根据所述读取的数据校验信息确定获取的第一数据无效,则向所述用户端返回数据读取失败消息。
4.如权利要求2或3所述的方法,其特征在于,每个对象块指示一段逻辑地址区间,每个对象块对应的备索引块指示一段逻辑地址区间,每个对象块指示的逻辑地址区间和对应的备索引块指示的逻辑地址区间相邻;
所述根据所述第一对象块的标识,从所述多个对象块中确定所述第一对象块,包括:
根据所述第一对象块的标识,从标识和逻辑地址区间之间的对应关系中,确定与所述第一对象块的标识对应的逻辑地址区间,根据确定的逻辑地址区间确定所述第一对象块;
所述获取所述第一对象块对应的备索引块,包括:
根据所述第一对象块所指示的逻辑地址区间确定所述第一对象块对应的备索引块。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收携带第三关键字的数据删除请求;
从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
删除所述第三对象块中存储的数据。
6.如权利要求1所述的方法,其特征在于,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
所述方法还包括:
接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
对于所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
删除确定的对象块中存储的数据。
7.一种写数据的方法,其特征在于,应用于对象文件***,所述对象文件***是基于多个存储设备的全部逻辑地址区间构建的,所述对象文件***是一个具有连续存储空间的通用块设备,所述通用块设备中存储有所述多个存储设备上的所有数据,所述对象文件***包括多个对象块,所述多个对象块是将所述多个存储设备的全部逻辑地址区间划分得到的,每个对象块指示一段逻辑地址区间,每个对象块用于存储一条数据,所述方法包括:
接收携带第二关键字和第二数据的写数据请求,所述第二关键字为所述第二数据的关键字;
如果从所述第二关键字中解析出对象块的标识,则将解析出的对象块的标识作为第二对象块的标识,所述第二对象块的标识用于指示所述第二对象块所指示的逻辑地址区间在所述全部逻辑地址区间中的位置;
根据所述第二对象块的标识,从所述多个对象块中确定所述第二对象块;
将所述第二对象块中存储的数据更新为所述第二数据。
8.如权利要求7所述的方法,其特征在于,所述接收携带第二关键字和第二数据的写数据请求之后,还包括:
如果没有从所述第二关键字中解析出对象块的标识,则从所述对象文件***中确定一个对象块作为第二对象块;
将所述第二数据写入所述第二对象块;
根据所述第二对象块的标识更新所述第二关键字,更新后的所述第二关键字包括所述第二对象块的标识。
9.如权利要求7或8所述的方法,其特征在于,所述方法还包括:
接收携带第三关键字的数据删除请求;
从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
删除所述第三对象块中存储的数据。
10.如权利要求7或8所述的方法,其特征在于,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
所述方法还包括:
接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
对于所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
删除确定的对象块中存储的数据。
11.一种对象文件***,其特征在于,所述对象文件***是基于多个存储设备的全部逻辑地址区间构建的,所述对象文件***是一个具有连续存储空间的通用块设备,所述通用块设备中存储有所述多个存储设备上的所有数据,所述对象文件***包括多个对象块,所述多个对象块是将所述多个存储设备的全部逻辑地址区间划分得到的,每个对象块指示一段逻辑地址区间,每个对象块用于存储一条数据,所述***包括:
接收模块,用于接收携带第一关键字的读数据请求,所述第一关键字为第一数据的关键字,且所述第一关键字包括存储所述第一数据的第一对象块的标识,所述第一对象块的标识用于指示所述第一对象块所指示的逻辑地址区间在所述全部逻辑地址区间中的位置;
解析模块,用于从所述第一关键字中解析所述第一对象块的标识;
确定模块,用于根据所述第一对象块的标识,从所述多个对象块中确定所述第一对象块;
获取模块,用于从所述第一对象块中获取所述第一数据。
12.如权利要求11所述的***,其特征在于,所述对象文件***还包括与每个对象块对应的备索引块,每个对象块对应的备索引块用于存储相应对象块的配置信息,所述配置信息包括数据校验信息;
所述获取模块,还用于获取所述第一对象块对应的备索引块,将所述第一对象块对应的备索引块作为第一备索引块;
所述***还包括:
读取模块,用于从所述第一备索引块中读取数据校验信息;
返回模块,用于如果根据读取的数据校验信息确定获取的第一数据有效,则将获取的第一数据返回至发送所述读数据请求的用户端。
13.如权利要求12所述的***,其特征在于,所述返回模块,还用于:
如果根据所述读取的数据校验信息确定获取的第一数据无效,则向所述用户端返回数据读取失败消息。
14.如权利要求12或13所述的***,其特征在于,每个对象块指示一段逻辑地址区间,每个对象块对应的备索引块指示一段逻辑地址区间,每个对象块指示的逻辑地址区间和对应的备索引块指示的逻辑地址区间相邻;
所述确定模块,用于:
根据所述第一对象块的标识,从标识和逻辑地址区间之间的对应关系中,确定与所述第一对象块的标识对应的逻辑地址区间,根据确定的逻辑地址区间确定所述第一对象块;
所述获取模块,用于根据所述第一对象块所指示的逻辑地址区间确定所述第一对象块对应的备索引块。
15.如权利要求11所述的***,其特征在于,
所述接收模块,还用于接收携带第三关键字的数据删除请求;
所述解析模块,还用于从所述第三关键字中解析用于存储待删除的数据的第三对象块的标识;
所述确定模块,还用于根据所述第三对象块的标识,从所述多个对象块中确定所述第三对象块;
所述***还包括删除模块,用于删除所述第三对象块中存储的数据。
16.如权利要求11所述的***,其特征在于,所述多个对象块被划分为多个对象块组,所述对象文件***还包括与每个对象块组对应的索引集中块,每个对象块组对应的索引集中块用于存储相应对象块组包括的各个对象块的索引信息,每个对象块的索引信息包括相应对象块在多个属性中每个属性上属性值;
所述接收模块,还用于接收携带特征值区间的数据删除请求,所述特征值区间用于指示参考属性上的属性值的范围;
所述确定模块,还用于对于所述多个对象块组中每个对象块组,根据每个对象块组对应的索引集中块中包括的各个对象块的索引信息,确定在所述参考属性上的属性值满足所述特征值区间的对象块;
所述***还包括删除模块,用于删除确定的对象块中存储的数据。
17.一种对象文件***的***,其特征在于,所述对象文件***是基于多个存储设备的全部逻辑地址区间构建的,所述对象文件***是一个具有连续存储空间的通用块设备,所述通用块设备中存储有所述多个存储设备上的所有数据,所述对象文件***包括多个对象块,所述多个对象块是将所述多个存储设备的全部逻辑地址区间划分得到的,每个对象块指示一段逻辑地址区间,每个对象块用于存储一条数据,所述***包括:
接收模块,用于接收携带第二关键字和第二数据的写数据请求,所述第二关键字为所述第二数据的关键字;
解析模块,用于如果从所述第二关键字中解析出对象块的标识,则将解析出的对象块的标识作为第二对象块的标识,所述第二对象块的标识用于指示所述第二对象块所指示的逻辑地址区间在所述全部逻辑地址区间中的位置;
确定模块,用于根据所述第二对象块的标识,从所述多个对象块中确定所述第二对象块;
更新模块,用于将所述第二对象块中存储的数据更新为所述第二数据。
18.如权利要求17所述的***,其特征在于,
所述确定模块,还用于如果没有从所述第二关键字中解析出对象块的标识,则从所述对象文件***中确定一个对象块作为第二对象块;
所述***还包括写入模块,用于将所述第二数据写入所述第二对象块;
所述更新模块,还用于根据所述第二对象块的标识更新所述第二关键字,更新后的所述第二关键字包括所述第二对象块的标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911083274.0A CN111399759B (zh) | 2019-11-07 | 2019-11-07 | 读数据、写数据的方法、以及对象文件*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911083274.0A CN111399759B (zh) | 2019-11-07 | 2019-11-07 | 读数据、写数据的方法、以及对象文件*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111399759A CN111399759A (zh) | 2020-07-10 |
CN111399759B true CN111399759B (zh) | 2023-02-10 |
Family
ID=71430253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911083274.0A Active CN111399759B (zh) | 2019-11-07 | 2019-11-07 | 读数据、写数据的方法、以及对象文件*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111399759B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433674B (zh) * | 2020-11-16 | 2021-07-06 | 连邦网络科技服务南通有限公司 | 一种计算机用数据迁移***及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8219562B1 (en) * | 2009-06-29 | 2012-07-10 | Facebook, Inc. | Efficient storage and retrieval for large number of data objects |
WO2017161540A1 (zh) * | 2016-03-24 | 2017-09-28 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据*** |
CN107451070A (zh) * | 2016-06-01 | 2017-12-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN109656886A (zh) * | 2018-12-26 | 2019-04-19 | 百度在线网络技术(北京)有限公司 | 基于键值对的文件***实现方法、装置、设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094855A1 (en) * | 2008-10-14 | 2010-04-15 | Omid Rouhani-Kalleh | System for transforming queries using object identification |
US8375227B2 (en) * | 2009-02-02 | 2013-02-12 | Microsoft Corporation | Abstracting programmatic representation of data storage systems |
-
2019
- 2019-11-07 CN CN201911083274.0A patent/CN111399759B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8219562B1 (en) * | 2009-06-29 | 2012-07-10 | Facebook, Inc. | Efficient storage and retrieval for large number of data objects |
WO2017161540A1 (zh) * | 2016-03-24 | 2017-09-28 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据*** |
CN107451070A (zh) * | 2016-06-01 | 2017-12-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN109656886A (zh) * | 2018-12-26 | 2019-04-19 | 百度在线网络技术(北京)有限公司 | 基于键值对的文件***实现方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111399759A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108519862B (zh) | 区块链***的存储方法、装置、***和存储介质 | |
US10649838B2 (en) | Automatic correlation of dynamic system events within computing devices | |
US7730071B2 (en) | Data management system and data management method | |
US11687488B2 (en) | Directory deletion method and apparatus, and storage server | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
CN108415986B (zh) | 一种数据处理方法、装置、***、介质和计算设备 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN108304142B (zh) | 一种数据管理方法和装置 | |
CN110147296B (zh) | 数据处理方法、装置、设备及可读存储介质 | |
US9213759B2 (en) | System, apparatus, and method for executing a query including boolean and conditional expressions | |
CN113961510A (zh) | 一种文件处理方法、装置、设备及存储介质 | |
CN106970937B (zh) | 一种基于本地缓存快速建立索引的方法及*** | |
CN116257460B (zh) | 基于固态硬盘的Trim命令处理方法及固态硬盘 | |
US9588884B2 (en) | Systems and methods for in-place reorganization of device storage | |
CN111399759B (zh) | 读数据、写数据的方法、以及对象文件*** | |
CN115562588A (zh) | 虚拟磁盘阵列配置方法、装置、计算机设备及存储介质 | |
CN115640280A (zh) | 数据迁移方法及装置 | |
CN112765170B (zh) | 一种嵌入式时间序列数据管理方法及设备 | |
CN111966845B (zh) | 图片管理方法、装置、存储节点及存储介质 | |
CN114217741A (zh) | 存储装置的存储方法及存储装置 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN112559457A (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 |