一种数据处理方法及系统与流程

文档序号:18703443发布日期:2019-09-17 23:17阅读:118来源:国知局
一种数据处理方法及系统与流程

本发明涉及数据处理技术领域,具体涉及一种数据处理方法及系统。



背景技术:

随着互联网技术的发展,在一些互联网应用场景中,通常会涉及到数据的读取。在进行数据读取时,通常是通过读取磁盘来获取相应的数据。

在互联网应用场景中,每次上传数据时,都需要从磁盘中读取相应的数据。但是,当读取的数据量较大时,会产生较多的磁盘输入/输出(input/output,i/o),并且从磁盘中多次读取数据之间可能存在大量相同的数据,每次都需从磁盘中重新读取数据,磁盘负荷较大,影响磁盘的读取性能。



技术实现要素:

有鉴于此,本发明实施例提供一种数据处理方法及系统,以解决目前每次都需从磁盘中重新读取数据而造成磁盘负荷较大的问题。

为实现上述目的,本发明实施例提供如下技术方案:

本发明实施例第一方面公开一种数据处理方法,所述方法包括:

接收外部网络发送的数据请求指令;

基于所述数据请求指令,构建请求数据对应的第一片索引,其中,所述数据请求指令至少包括所述请求数据对应的哈希标识、块号和块内偏移;

基于所述第一片索引,查找内存缓存中是否存在所述请求数据;

若所述内存缓存中存在所述请求数据,从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存;

若所述内存缓存中未存在所述请求数据,基于所述请求数据请求指令从磁盘中读取所述请求数据,将所述请求数据反馈给所述外部网络;

将所述请求数据添加至所述内存缓存中。

优选的,所述基于所述第一片索引,查找内存缓存中是否存在所述请求数据,包括:

基于所述第一片索引,查找map中是否存在与所述第一片索引一致的第一关键字key,若是,则所述内存缓存中存在所述请求数据,若否,则所述内存缓存中未存在所述请求数据;

其中,所述map在所述内存缓存中预先构建,所述map用于存储key和value的对应关系。

优选的,所述若所述内存缓存中存在所述请求数据,从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存,包括:

若所述map中存在所述第一key,确定所述第一key对应的第一value,将所述第一value对应的数据作为所述请求数据反馈给所述外部网络;

基于所述第一value中的第一节点指针,在所述内存缓存中预先构建的链表中查找对应的第一节点,其中,所述链表中的节点与所述value中的节点指针有对应关系;

将所述第一节点移动至所述链表的第一指定位置,其中,所述第一指定位置为所述链表中的头部位置或尾部位置。

优选的,若所述内存缓存的状态为缓存未满时,所述将所述请求数据添加至所述内存缓存中,包括:

在所述内存缓存中预先构建的链表的第一指定位置新增一个第一位置节点,其中,所述第一指定位置为所述链表中的头部位置或尾部位置;

将所述请求数据对应的所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针;

将所述第一片索引作为map中的第二key,将所述请求数据和第一位置节点指针作为所述map中的第二value,其中,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成;

将所述第二key和第二value存储至所述map中。

优选的,若所述内存缓存的状态为缓存已满时,所述将所述请求数据添加至所述内存缓存中,包括:

获取在所述内存缓存中预先构建的链表的第二位置节点对应的第二片索引,并删除所述链表的第二位置节点,其中,所述第二位置节点为所述链表中的第二指定位置对应的节点;

将所述第二片索引作为map中的第三key,从map中获取所述第三key对应的第三value,并删除所述第三value中的无效数据,其中,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成;

在所述链表的第一指定位置新增一个第一位置节点;

将所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针;

将所述第一片索引作为第四key,将所述请求数据和第一位置节点指针作为第四value;

将所述第四key和第四value存储至所述map中;

其中,当所述第一指定位置为所述链表的头部位置时,所述第二指定位置为所述链表的尾部位置,当所述第一指定位置为所述链表的尾部位置时,所述第二指定位置为所述链表的头部位置。

本发明实施例第二方面公开一种数据处理系统,所述系统包括:

接收单元,用于接收外部网络发送的数据请求指令;

构建单元,用于基于所述数据请求指令,构建请求数据对应的第一片索引,其中,所述数据请求指令至少包括所述请求数据对应的哈希标识、块号和块内偏移;

查找单元,用于基于所述第一片索引,查找内存缓存中是否存在所述请求数据;

第一反馈单元,用于若所述内存缓存中存在所述请求数据,从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存;

第二反馈单元,用于若所述内存缓存中未存在所述请求数据,基于所述请求数据请求指令从磁盘中读取所述请求数据,将所述请求数据反馈给所述外部网络并执行添加单元;

所述添加单元,用于基于所述内存缓存的状态将所述请求数据添加至所述内存缓存中,其中,所述内存缓存的状态包括缓存未满或缓存已满。

优选的,所述查找单元具体用于:基于所述第一片索引,查找map中是否存在与所述第一片索引一致的第一关键字key,若是,则所述内存缓存中存在所述请求数据,若否,则所述内存缓存中未存在所述请求数据,其中,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成。

优选的,所述第一反馈单元包括:

反馈模块,用于若所述map中存在所述第一key,确定所述第一key对应的第一value,将所述第一value对应的数据作为所述请求数据反馈给所述外部网络;

查找模块,用于基于所述第一value中的第一节点指针,在所述内存缓存中预先构建的链表中查找对应的第一节点,其中,所述链表中的节点与所述value中的节点指针有对应关系;

移动模块,用于将所述第一节点移动至所述链表的第一指定位置,其中,所述第一指定位置为所述链表中的头部位置或尾部位置。

优选的,若所述内存缓存的状态为缓存未满时,所述添加单元包括:

处理模块,用于在所述内存缓存中预先构建的链表的第一指定位置新增一个第一位置节点,将所述请求数据对应的所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针,其中,所述第一指定位置为所述链表中的头部位置或尾部位置;

设置模块,用于将所述第一片索引作为map中的第二key,将所述请求数据和第一位置节点指针作为所述map中的第二value,其中,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成;

存储模块,用于将所述第二key和第二value存储至所述map中。

优选的,若所述内存缓存的状态为缓存已满时,所述添加单元包括:

处理模块,用于获取在所述内存缓存中预先构建的链表的第二位置节点对应的第二片索引,删除所述链表的第二位置节点,将所述第二片索引作为map中的第三key,从map中获取所述第三key对应的第三value,并删除所述第三value中的无效数据,以及,在所述链表的第一指定位置新增一个第一位置节点,将所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针,其中,所述第二位置节点为所述链表中的第二指定位置对应的节点,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成;

设置模块,用于将所述第一片索引作为第四key,将所述请求数据和第一位置节点指针作为第四value;

存储模块,用于将所述第四key和第四value存储至所述map中;

其中,当所述第一指定位置为所述链表的头部位置时,所述第二指定位置为所述链表的尾部位置,当所述第一指定位置为所述链表的尾部位置时,所述第二指定位置为所述链表的头部位置。

基于上述本发明实施例提供的一种数据处理方法及系统,该方法为:接收外部网络发送的数据请求指令。基于数据请求指令,构建请求数据对应的第一片索引。基于第一片索引,查找内存缓存中是否存在请求数据。若内存缓存中存在请求数据,从内存缓存中读取请求数据,将请求数据反馈给外部网络并更新内存缓存。若内存缓存中未存在请求数据,基于数据请求指令从磁盘中读取请求数据,将请求数据反馈给外部网络。将请求数据添加至内存缓存中。在本方案中,接收到数据请求指令时,先基于数据请求指令在缓存中查找是否存在请求数据,若存在则从缓存中读取,若不存在则从磁盘中读取请求数据之后将请求数据写入缓存中,不需要每次都从磁盘中读取请求数据,降低磁盘负荷。

附图说明

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

图1为本发明实施例提供的一种数据处理方法的流程图;

图2为本发明实施例提供的更新内存缓存的流程图;

图3为本发明实施例提供的将数据添加至内存缓存中的流程图;

图4为本发明实施例提供的将数据添加至内存缓存中的另一流程图;

图5为本发明实施例提供的一种数据处理系统的结构框图;

图6为本发明实施例提供的一种数据处理系统的结构框图;

图7为本发明实施例提供的一种数据处理系统的结构框图;

图8为本发明实施例提供的一种数据处理系统的架构示意图。

具体实施方式

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

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由背景技术可知,在读取大量的数据时,会产生较多的磁盘i/o,并且从磁盘中多次读取数据之间可能存在大量相同的数据,每次都需从磁盘中重新读取数据,磁盘负荷较大,影响磁盘的读取性能。

因此,本发明实施例提供一种数据处理方法及系统,接收到数据请求指令时,先基于数据请求指令在缓存中查找是否存在请求数据,若存在则从缓存中读取,若不存在则从磁盘中读取请求数据之后将数据写入缓存中,以降低磁盘负荷。

参考图1,示出了本发明实施例提供的一种数据处理方法的流程图,所述数据处理方法包括以下步骤:

步骤s101:接收外部网络发送的数据请求指令。

在具体实现步骤s101的过程,当接收到外部网络发送的数据请求指令时,根据所述数据请求指令,从磁盘中或者缓存中读取所述数据请求指令对应的请求数据,并将所述请求数据反馈给所述外部网络。

步骤s102:基于所述数据请求指令,构建所述请求数据对应的第一片索引。

在具体实现步骤s102的过程中,所述数据请求指令至少包括所述请求数据对应的哈希标识、块号和块内偏移,通过所述请求数据对应的哈希标识、块号和块内偏移构建所述第一片索引。

需要说明的是,片索引指的是由文件的哈希标识、块号和块内偏移构成的数据结构,用于表示文件中的偏移位置。其中,块指的是从该文件头部开始按照预设值进行分割得到的数据块,例如按照2mb大小对该文件进行分割得到的数据块。块号指的是将上述分割得到的多个数据块从0开始编号产生的序号。块内偏移指的是以块头部为0,向后的字节偏移位置。

步骤s103:基于所述第一片索引,查找内存缓存中是否存在所述请求数据。若存在,则执行步骤s104,若不存在,则执行步骤s105。

在具体实现步骤s103的过程中,基于所述第一片索引,查找map中是否存在与所述第一片索引一致的第一关键字(key),若是,则所述内存缓存中存在所述请求数据,若否,则所述内存缓存中未存在所述请求数据。

需要说明的是,所述map在所述内存缓存中预先构建,所述map中预先存储有key和value的对应关系。

需要说明的是,map中的key的也是由文件的哈希标识、块号和块内偏移构成的,即key的结构与片索引的结构是一致的。value中至少包含了缓存数据。因此,可基于所述第一片索引,从所述map中查找是否存在于所述第一片索引一致的所述第一key。若所述map中存在所述第一key,则与所述第一key对应的第一value中至少包含所述请求数据。若所述map中不存在所述第一key,也就不存在与所述第一key对应的第一value,即所述内存缓存中不存在所述请求数据。

需要说明的是,所述map中的key还可进行大小比较,具体比较方式为:首先基于哈希标识的大小进行比较。在进行大小比较的过程中,若哈希标识相同,则基于块号的大小进行比较。进一步的,若块号的大小相同,则基于块内偏移的大小进行比较。

步骤s104:若所述内存缓存中存在所述请求数据,从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存。

在具体实现步骤s104的过程中,若所述map中存在所述第一key,则说明所述内存缓存中存在所述请求数据,从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存。

需要说明的是,所述内存缓存中存在包括所述请求数据在内的多个数据,所述多个数据按照最近调用的时间的远近进行排序。当所述请求数据被读取时,将所述请求数据的排序进行更新,表示所述请求数据最近被调用。

步骤s105:若所述内存缓存中未存在所述请求数据,基于所述数据请求指令从磁盘中读取所述请求数据,将所述请求数据反馈给所述外部网络。

在具体实现步骤s105的过程中,若所述map中没有存在所述第一key,则说明所述内存缓存中不存在所述请求数据,则需要从磁盘中读取所述请求数据,再将所述请求数据反馈给所述外部网络,并且需要将所述请求数据写入所述内存缓存中,以供下次读取。

步骤s106:将所述请求数据添加至所述内存缓存中。

在具体实现步骤s106的过程中,内存缓存的状态包括缓存未满或缓存已满。当所述内存缓存未满时,将所述请求数据写入所述内存缓存中,并将所述请求数据在所述内存缓存中的排序更新至表示最近被调用的位置。当所述内存缓存已满时,删除所述内存缓存中最远时间使用的数据,将所述请求数据写入所述内存缓存中,并将所述请求数据存储在所述内存缓存中表示最近被调用的位置。

需要说明的是,在所述内存缓存中最远时间使用的数据表示该数据使用的频率最低,利用价值最低。因此在所述内存缓存已满并且需要写入新的数据时,将利用价值最低的数据删除,释放所述内存缓存的存储空间,以存储最近使用的数据。

在本发明实施例中,接收到数据请求指令时,先基于数据请求指令在缓存中查找是否存在请求数据,若存在则从缓存中读取,若不存在则从磁盘中读取请求数据之后将请求数据写入缓存中,不需要每次都从磁盘中读取请求数据,降低磁盘负荷。

上述本发明实施例图1公开的步骤s104涉及到的从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存的过程,参考图2,示出了本发明实施例提供的更新内存缓存的流程图,包括以下步骤:

步骤s201:若所述map中存在所述第一key,确定所述第一key对应的第一value,将所述第一value对应的数据作为所述请求数据反馈给所述外部网络。

在具体实现步骤s201的过程,基于所述第一片索引确定所述请求数据的过程,可参见上述本发明实施例图1公开的步骤s103相对应的内容,在此不再进行赘述。

步骤s202:基于所述第一value中的第一节点指针,在所述内存缓存中预先构建的链表中查找对应的第一节点。

需要说明的是,所述链表由多个节点构成,节点中存储的内容至少包括片索引,所述链表中的节点用于指示数据的调用时间的远近。所述链表中的每个节点有对应的节点指针。

需要说明的是,所述map中的value还存储了指示所述链表中节点位置的节点指针,即所述链表中的节点与所述value中的节点指针有一一对应关系。因此,可根据所述第一value中存储的第一节点指针,从所述链表中查找对应的所述第一节点。

步骤s203:将所述第一节点移动至所述链表的第一指定位置。

在具体实现步骤s203的过程中,所述第一指定位置用于指示与所述第一指定位置对应的数据最近被使用。

需要说明的是,由上述图1示出的步骤s103可知,所述map中的key的结构与片索引的结构一致,以及由上述步骤s202可知,所述链表中的节点存储的为片索引。因此,将所述第一节点中的第一片索引作为所述map的第一key,可与所述第一value中存储的所述请求数据建立对应关系,将所述第一节点移动至所述第一指定位置表明所述请求数据最近被使用。

需要说明的是,所述第一指定位置为所述链表中的头部位置或尾部位置,具体可由技术人员根据实际需求进行设置。

进一步的,所述第一节点在调整位置之前,就已位于所述第一指定位置,则不需要对所述第一节点的位置进行调整。

在本发明实施例中,在接收数据请求指令时,若内存缓存中存在请求数据,则直接从内存缓存中读取请求数据,并将该请求数据在内存缓存的存储顺序更新至指示最近被使用的位置,方便后续读取,能有效降低磁盘压力。

上述本发明实施例图1公开的步骤s106涉及到的将所述请求数据添加至所述内存缓存中的过程,当所述内存缓存未满时,参考图3,示出了本发明实施例提供的将数据添加至内存缓存中的流程图,包括以下步骤:

步骤s301:在所述内存缓存中预先构建的链表的第一指定位置新增一个第一位置节点。

需要说明的是,所述第一指定位置用于指示与所述第一指定位置对应的数据最近被使用,因此,在所述第一指定位置新增所述第一位置节点,用于指示所述请求数据最近被使用。所述第一指定位置为所述链表中的头部位置或尾部位置,具体可由技术人员根据实际需求进行设置。

步骤s302:将所述请求数据对应的所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针。

在具体实现步骤s302的过程中,由上述图2中示出的步骤s202的内容可知,所述链表中的节点存储的内容至少包括片索引,以及每个节点有对应的节点指针。因此,新增了所述第一位置节点之后,需将所述请求数据对应的所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针。

步骤s303:将所述第一片索引作为map中的第二key,将所述请求数据和第一位置节点指针作为所述map中的第二value。

在具体实现步骤s303的过程中,由上述图1和图2中示出的内容可知,所述map中的key的结构与片索引的结构一致,value存储了数据对应的片索引和节点指针。因此,将所述第一片索引作为map中的第二key,将所述请求数据和第一位置节点指针作为所述map中的第二value。

步骤s304:将所述第二key和第二value存储至所述map中。

需要说明的是,经由上述步骤s301至步骤s304,存储在所述map中的所述请求数据与所述链表中的第一位置节点存在对应关系,而所述第一位置节点位于所述链表的第一指定位置,因此通过所述第一位置节点在所述链表的位置可指示所述请求数据最近被使用。

在本发明实施例中,当从磁盘读取请求数据后,并且内存缓存未满,在链表中的第一指定位置新增包含第一片索引的第一位置节点。将第一片索引、数据和第一位置节点指针存储至内存缓存中,以供下次读取使用,降低磁盘读取负荷。

上述本发明实施例图1公开的步骤s106涉及到的将所述请求数据添加至所述内存缓存中的过程,当所述内存缓存已满时,参考图4,示出了本发明实施例提供的将数据添加至内存缓存中的另一流程图,包括以下步骤:

步骤s401:获取在所述内存缓存中预先构建的链表的第二位置节点对应的第二片索引,并删除所述链表的第二位置节点。

在具体实现步骤s401的过程中,由上述图2中示出的步骤s202的内容可知,链表中的节点用于指示数据的调用时间的远近。预先设置所述链表中的第二指定位置用于指示所述第二指定位置对应的数据的调用时间最远,即利用价值最低。因此,先从所述第二指定位置对于的第二位置节点中获取所述第二片索引,再将所述第二位置节点从所述链表删除,释放所述链表的节点空间。

需要说明的是,所述第一指定位置用于指示数据的使用时间最近,所述第二指定位置用于指示数据的使用时间最远。当所述第一指定位置为所述链表的头部位置时,所述第二指定位置为所述链表的尾部位置,当所述第一指定位置为所述链表的尾部位置时,所述第二指定位置为所述链表的头部位置。所述第一指定位置和第二指定位置的具体设置可以技术人员根据实际情况进行设置。

步骤s402:将所述第二片索引作为map中的第三key,从map中获取所述第三key对应的第三value,并删除所述第三value中的无效数据。

在具体实现步骤s402的过程中,由上述图1示出的步骤s103的内容可知,value中至少存储了缓存数据。将经由从所述第二位置节点中获取的第二片索引作为所述map中的第三key,从map中获取所述第三key对应的第三value,并删除所述第三value中的无效数据。

需要说明的是,所述第二位置节点对应的数据为所述第三value中存储的数据,而所述第二位置节点对应的数据的利用价值最低,因此需要将所述第三value中的数据删除,释放内存缓存的空间。

步骤s403:在所述链表的第一指定位置新增一个第一位置节点。

在具体实现步骤s403的过程中,所述第一位置节点的相关内容可参见上述本发明实施例图3示出的步骤s301相对应的内容,在此不再进行赘述。

步骤s404:将所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针。

在具体实现步骤s404的过程中,将所述第一片索引添加至所述第一位置节点以及获取所述第一位置节点指针的内容参见上述本发明实施例图3公开的步骤s302相对应的内容,在此不再进行赘述。

步骤s405:将所述第一片索引作为第四key,将所述请求数据和第一位置节点指针作为第四value。

在具体实现步骤s405的过程中,由上述图1和图2中示出的内容可知,所述map中的key的结构与片索引的结构一致,value存储了数据对应的片索引和节点指针。因此,将所述第一片索引作为map中的第四key,将所述请求数据和第一位置节点指针作为所述map中的第四value。

步骤s406:将所述第四key和第四value存储至所述map中。

需要说明的是,经由上述步骤s401至步骤s406,将所述内存缓存中利用价值最低的数据删除,并基于所述第一位置节点与所述第一片索引的对应关系,将所述请求数据存储至所述内存缓存中,通过所述第一位置节点在所述链表的位置指示所述请求数据最近被使用。

在本发明实施例中,当从磁盘读取请求数据并且内存缓存已满时,先将内存缓存中利用价值最低的数据删除,释放内存缓存的存储空间。在链表中的第一指定位置新增包含第一片索引的第一位置节点。将第一片索引、请求数据和第一位置节点指针存储至内存缓存中,以供下次读取使用,降低磁盘读取负荷。

与上述本发明实施例示出的一种数据处理方法相对应,参考图5,本发明实施例还提供了一种数据处理系统的结构框图,所述数据处理系统包括:接收单元501、构建单元502、查找单元503、第一反馈单元504、第二反馈单元505和添加单元506。

接收单元501,用于接收外部网络发送的数据请求指令,具体内容参见上述本发明实施例图1公开的步骤s101相对应的内容。

构建单元502,用于基于所述数据请求指令,构建请求数据对应的第一片索引,具体内容参见上述本发明实施例图1公开的步骤s102相对应的内容。其中,所述数据请求指令至少包括所述请求数据对应的哈希标识、块号和块内偏移。

查找单元503,用于基于所述第一片索引,查找内存缓存中是否存在所述请求数据。若所述内存缓存中存在所述请求数据,则执行第一反馈单元504,若所述内存缓存中未存在所述请求数据,则执行第二反馈单元505。

在具体实现中,述查找单元503具体用于:基于所述第一片索引,查找map中是否存在与所述第一片索引一致的第一关键字key,若是,则所述内存缓存中存在所述请求数据,若否,则所述内存缓存中未存在所述请求数据,具体内容参见上述本发明实施例图1公开的步骤s103相对应的内容。其中,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成。

所述第一反馈单元504,用于若所述内存缓存中存在所述请求数据,从所述内存缓存中读取所述请求数据,将所述请求数据反馈给所述外部网络并更新所述内存缓存,具体内容参见上述本发明实施例图1公开的步骤s104相对应的内容。

所述第二反馈单元505,用于若所述内存缓存中未存在所述请求数据,基于所述数据请求指令从磁盘中读取所述请求数据,将所述请求数据反馈给所述外部网络并执行添加单元506,具体内容参见上述本发明实施例图1公开的步骤s105相对应的内容。

所述添加单元506,用于将所述请求数据添加至所述内存缓存中,具体内容参见上述本发明实施例图1公开的步骤s106相对应的内容。其中,所述内存缓存的状态包括缓存未满或缓存已满。

在本发明实施例中,接收到数据请求指令时,先基于数据请求指令在缓存中查找是否存在请求数据,若存在则从缓存中读取,若不存在则从磁盘中读取请求数据之后将请求数据写入缓存中,不需要每次都从磁盘中读取请求数据,降低磁盘负荷。

参考图6,示出了本发明实施例提供的一种数据处理系统的结构框图,所述第一反馈单元504包括:反馈模块5041、查找模块5042和移动模块5043。

反馈模块5041,用于若所述map中存在所述第一key,确定所述第一key对应的第一value,将所述第一value对应的数据作为所述请求数据反馈给所述外部网络。

查找模块5042,用于基于所述第一value中的第一节点指针,在所述内存缓存中预先构建的链表中查找对应的第一节点,其中,所述链表中的节点与所述value中的节点指针有对应关系。所述链表与map的对应关系可参见上述本发明实施例图2公开的步骤s202相对应的内容。

移动模块5043,用于将所述第一节点移动至所述链表的第一指定位置,具体内容可参见上述本发明实施例图2公开的步骤s203相对应的内容。其中,所述第一指定位置为所述链表中的头部位置或尾部位置。

在本发明实施例中,在接收数据请求指令时,若内存缓存中存在请求数据,则直接从内存缓存中读取请求数据,并将该请求数据在内存缓存的存储顺序更新至指示最近被使用的位置,方便后续读取,能有效降低磁盘压力。

参考图7,示出了本发明实施例提供的一种数据处理系统的结构框图,所述添加单元506包括:处理模块5061、设置模块5062和存储模块5063。若所述内存缓存的状态为缓存未满时,所述处理模块5061、设置模块5062和存储模块5063的具体功能如下:

处理模块5061,用于在所述内存缓存中预先构建的链表的第一指定位置新增一个第一位置节点,将所述请求数据对应的所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针,其中,所述第一指定位置为所述链表中的头部位置或尾部位置。新增所述第一位置节点的内容可参见上述本发明实施例图3公开的步骤s301相对应的内容。

设置模块5062,用于将所述第一片索引作为map中的第二key,将所述请求数据和第一位置节点指针作为所述map中的第二value,其中,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成。

存储模块5063,用于将所述第二key和第二value存储至所述map中。

在本发明实施例中,当从磁盘读取数据后,并且内存缓存未满,在链表中的第一指定位置新增包含第一片索引的第一位置节点。将第一片索引、请求数据和第一位置节点指针存储至内存缓存中,以供下次读取使用,降低磁盘读取负荷。

结合图7示出的一种数据处理系统的结构框图,若所述内存缓存的状态为缓存已满时,所述处理模块5061、设置模块5062和存储模块5063的具体功能如下:

处理模块5061,用于获取在所述内存缓存中预先构建的链表的第二位置节点对应的第二片索引,删除所述链表的第二位置节点,将所述第二片索引作为map中的第三key,从map中获取所述第三key对应的第三value,并删除所述第三value中的无效数据,以及,在所述链表的第一指定位置新增一个第一位置节点,将所述第一片索引添加至所述第一位置节点,并获取所述第一位置节点对应的第一位置节点指针,其中,所述第二位置节点为所述链表中的第二指定位置对应的节点,所述map在所述内存缓存中预先构建,所述map由key和value的对应关系构成。

在具体实现中,关于所述第二位置节点的内容参见上述本发明实施例图4公开的步骤s401相对应的内容。删除所述第三value中的无效数据的内容参见上述本发明实施例图4公开的步骤s402相对应的内容。

设置模块5062,用于将所述第一片索引作为第四key,将所述请求数据和第一位置节点指针作为第四value。

存储模块5063,用于将所述第四key和第四value存储至所述map中。

其中,当所述第一指定位置为所述链表的头部位置时,所述第二指定位置为所述链表的尾部位置,当所述第一指定位置为所述链表的尾部位置时,所述第二指定位置为所述链表的头部位置。

在本发明实施例中,当从磁盘读取请求数据并且内存缓存已满时,先将内存缓存中利用价值最低的数据删除,释放内存缓存的存储空间。在链表中的第一指定位置新增包含第一片索引的第一位置节点。将第一片索引、请求数据和第一位置节点指针存储至内存缓存中,以供下次读取使用,降低磁盘读取负荷。

为更好解释说明上述本发明实施例提供的图5至图7中的内容,参考图8,示出了本发明实施例提供的一种数据处理系统的架构示意图。

在所述图8中,pi表示存储在链表和key中的片索引,pd表示存储在value中的数据,所述map由key和value的对应关系构成。

当所述图8中的p2p网络模块801接收到外部网络的数据请求指令时,所述p2p网络模块801先从所述内存缓存结构802中确定所述数据请求指令对应的请求数据是否存在。若存在,p2p网络模块801直接从所述内存缓存结构802中读取所述请求数据并反馈给所述外部网络。若不存在,p2p网络模块801从磁盘缓存803中读取所述请求数据,将所述请求数据反馈给所述外部网络,并将所述请求数据添加至所述内存缓存结构802中。所述请求数据的具体处理过程可参见上述本发明实施例图1至图4示出的内容,在此不再进行赘述。

需要说明的是,上述图8中涉及到的内容仅适用于举例说明。

综上所述,本发明实施例提供一种数据处理方法及系统,该方法为:接收外部网络发送的数据请求指令。基于数据请求指令,构建请求数据对应的第一片索引。基于第一片索引,查找内存缓存中是否存在请求数据。若内存缓存中存在请求数据,从内存缓存中读取请求数据,将请求数据反馈给外部网络并更新内存缓存。若内存缓存中未存在请求数据,基于数据请求指令从磁盘中读取请求数据,将请求数据反馈给外部网络。将请求数据添加至内存缓存中。在本方案中,接收到数据请求指令时,先基于数据请求指令在缓存中查找是否存在请求数据,若存在则从缓存中读取,若不存在则从磁盘中读取请求数据之后将请求数据写入缓存中,不需要每次都从磁盘中读取请求数据,降低磁盘负荷。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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