一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据处理方法、装置、存储介质及设备与流程

2022-10-13 03:04:39 来源:中国专利 TAG:


1.本说明书涉及数据库技术领域,尤其涉及一种数据处理方法、装置、存储介质及设备。


背景技术:

2.目前用户对自己的隐私数据越来越关注。在结构化查询语句(structured query language,sql)执行过程中,通常会产生临时数据,并需要对临时数据进行存储。
3.目前,在基于块存储的存储方式下,常将外存储器的存储空间划分为若干存储块,并将临时数据分成多个子文件后,写入存储块中。
4.本说明书提供一种解决如何基于存储块进行数据存储的数据处理方法。


技术实现要素:

5.本说明书提供一种数据处理方法及装置,可将不同临时文件的子文件存在相同存储块中,提高存储块利用率,减少存储空间的浪费。
6.本说明书采用下述技术方案:本说明书提供了一种数据处理方法,外存储器的存储空间被划分为若干存储块,所述方法包括:接收待存储子文件的写入请求,所述写入请求至少携带有所述待存储子文件所属的临时文件的标识以及所述待存储子文件;当根据所述标识确定未对所述临时文件分配目标存储块时,根据存有已存储临时文件的各存储块的空闲存储空间的大小,以及所述待存储子文件的大小,从存有已存储临时文件的各存储块中,确定第一待选存储块;根据所述第一待选存储块,确定用于存储所述待存储子文件的目标存储块,确定所述待存储子文件在所述目标存储块的存储地址,并将所述待存储子文件存储在缓存中。
7.可选地,将所述待存储子文件存储在缓存中之前,所述方法还包括:当确定所述缓存不足以存储所述待存储子文件时,确定为所述缓存中各已存储子文件分别分配的存储块,作为已分配存储块;针对每个已分配存储块,根据该已分配存储块中已存储子文件的总大小与该已分配存储块的总存储空间大小的比值,确定该已分配存储块的利用率;根据确定出的各利用率,从各已分配存储块中确定待处理存储块;将所述缓存中所述待处理存储块对应的子文件作为待落盘的子文件,将确定出的待落盘的子文件写入所述待落盘的子文件对应的存储地址中,并将所述待落盘的子文件从所述缓存中删除。
8.可选地,针对所述外存储器的每个存储块,该存储块被划分为若干存储页;根据存有已存储临时文件的各存储块的空闲存储空间的大小,以及所述待存储子文件的大小,从存有已存储临时文件的各存储块中,确定第一待选存储块,具体包括:
获取动态链表,所述动态链表用于记录空闲的存储页构成的存储页组,针对每个存储页组,该存储页组中的各存储页连续,且属于同一存储块;从所述动态链表中确定存有已存储临时文件的各存储块包含的存储页组,作为各待定存储页组;将大小不小于所述待存储子文件的大小的待定存储页组所属的存储块,作为第一待选存储块。
9.可选地,根据所述第一待选存储块,确定用于存储所述待存储子文件的目标存储块之前,所述方法还包括:从各存储块中,确定存储的已存储临时文件与所述待存储子文件所属的临时文件的生命周期的差值在预设范围内的存储块,作为第二待选存储块;根据所述第一待选存储块,确定用于存储所述待存储子文件的目标存储块,具体包括:根据所述第一待选存储块以及所述第二待选存储块,确定用于存储所述待存储子文件的目标存储块。
10.可选地,针对所述外存储器的每个存储块,该存储块被划分为若干存储页;从各存储块中,确定存储的已存储临时文件与所述待存储子文件所属的临时文件的生命周期的差值在预设范围内的存储块,作为第二待选存储块,具体包括:获取动态链表,所述动态链表用于记录空闲的存储页构成的存储页组,针对每个存储页组,该存储页组中的各存储页连续,且属于同一存储块;从所述动态链表中确定存有已存储临时文件的各存储块的存储页组,作为各待定存储页组,并将各待定存储页组所属的存储块作为各待定存储块;将存储的已存储临时文件与所述待存储子文件所属的临时文件的生命周期的差值在预设范围内的待定存储块,作为第二待选存储块。
11.可选地,根据所述第一待选存储块以及所述第二待选存储块,确定用于存储所述待存储子文件的目标存储块,具体包括:确定所述第一待选存储块以及所述第二待选存储块的交集,得到命中存储块;从所述命中存储块中,确定空闲存储空间最小的存储块,作为用于存储所述待存储子文件的目标存储块;或,从所述命中存储块中,确定存储的已存储临时文件的生命周期与所述待存储子文件所属的临时文件的生命周期差值最小的存储块,作为用于存储所述待存储子文件的目标存储块。
12.可选地,各存储块大小相同,同一存储块中各存储页大小相同;所述动态链表包含若干层,处于同一层的各存储页组大小相同;针对所述动态链表的每一层,该层的下一层中各存储页组的大小为该层中各存储页组的二倍;所述方法还包括:确定释放数据后空闲的存储页组,作为待入链存储页组;当所述动态链表中存在与所述待入链存储页组存在伙伴关系的其他存储页组时,将所述待入链存储页组与所述其他存储页组合并,得到新的存储页组,并根据所述新的存储页组的大小以及所述动态链表各层中存储页组的大小,确定所述动态链表中的目标层,将所述新的存储页组加入所述目标层;
当所述动态链表中不存在与所述待入链存储页组存在伙伴关系的其他存储页组时,根据所述待入链存储页组的大小以及所述动态链表各层中存储页组的大小,确定所述动态链表中的目标层,并将所述待入链存储页组加入所述目标层。
13.可选地,所述缓存包括可写可读缓存以及只读缓存;将所述待存储子文件存储在缓存中,具体包括:根据确定出的所述目标存储块的至少部分空闲存储空间,从所述可写可读缓存的存储空间中划分缓存块;当成功划分缓存块时,将所述待存储子文件存储在所述缓存块中;当确定所述可写可读缓存不足以存储所述待存储子文件时,确定为所述可写可读缓存中各已存储子文件分别分配的存储块的利用率,根据确定出的各利用率,从所述可写可读缓存中确定待落盘的子文件,将所述待落盘的子文件写入所述只读缓存中,并将所述可写可读缓存中的所述待落盘的子文件删除,重新从所述可写可读缓存的存储空间中划分缓存块,并将所述待存储子文件存储在划分的缓存块中。
14.可选地,所述方法还包括:接收对已存储子文件的读取请求,所述读取请求至少携带有所述已存储子文件所属的已存储临时文件的标识,以及所述读取请求所请求的所述已存储子文件在所述已存储临时文件中的位置;当根据所述读取请求,未从所述可写可读缓存中读取到所述读取请求所请求的已存储子文件时,从所述只读缓存中读取所述读取请求所请求的已存储子文件;当成功从所述只读缓存中读取所述读取请求所请求的已存储子文件时,向所述读取请求的发送方返回读取结果;当未成功从所述只读缓存中读取所述读取请求所请求的已存储子文件时,将所述读取请求所请求的已存储子文件从所述外存储器中加载到所述只读缓存中,并向所述读取请求的发送方返回读取结果。
15.本说明书提供了一种数据处理装置,外存储器的存储空间被划分为若干存储块,所述装置包括:第一接收模块,用于接收待存储子文件的写入请求,所述写入请求至少携带有所述待存储子文件所属的临时文件的标识以及所述待存储子文件;第一确定模块,用于当根据所述标识确定未对所述临时文件分配目标存储块时,根据存有已存储临时文件的各存储块的空闲存储空间的大小,以及所述待存储子文件的大小,从存有已存储临时文件的各存储块中,确定第一待选存储块;第一写入模块,用于根据所述第一待选存储块,确定用于存储所述待存储子文件的目标存储块,确定所述待存储子文件在所述目标存储块的存储地址,并将所述待存储子文件存储在缓存中。
16.本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法。
17.本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据处理方法。
18.本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在上述数据处理方法中,通过接收待存储子文件的写入请求,当确定未对待存储子文件所属的临时文件分配目标存储块时,根据存有已存储临时文件的各存储块的空闲存储空间的大小,及该待存储子文件大小,从存有已存储临时文件的子文件的各存储块中确定第一待选存储块。根据第一待选存储块,确定用于存储该待存储子文件的目标存储块,确定外存储器中,目标存储块对应的用于存储待存储子文件的存储地址,并将该待存储子文件存储在缓存中。
19.从上述内容中可以看出,本说明书可提供一种基于存储块进行数据存储的数据处理方法,该数据处理方法能够将不同临时文件的子文件存在相同存储块中,可提高存储块利用率,减少存储空间的浪费。
附图说明
20.此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:图1为本说明书中提供的一种数据处理方法的流程示意图;图2为本说明书中提供的一种伙伴关系的示意图;图3为本说明书中提供的一种动态链表的示意图;图4为本说明书中提供的一种动态链表的示意图;图5为本说明书中一种数据读取方法的流程示意图;图6为本说明书提供的一种数据处理装置的示意图;图7为本说明书提供的一种电子设备的示意图。
具体实施方式
21.为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
22.在本说明书中,可将一个临时文件拆为多个子文件,并分别对各子文件进行存储。当一个临时文件不足够拆分为若干子文件时,可直接对临时文件进行存储,或,可视为该临时文件为自身的一个子文件。
23.并且,将未存储其任何子文件的临时文件,作为待存储临时文件,将未存储的子文件作为待存储子文件。将存储了至少部分子文件的临时文件,作为已存储临时文件,已存储临时文件的各子文件中,已经存储的子文件,作为已存储子文件。
24.未存储,即,未存储到任何存储介质(缓存、外存储器)中。已经存储、已存储,即已存储到至少一种存储介质中。
25.以下结合附图,详细说明本说明书各实施例提供的技术方案。
26.图1为本说明书中提供的一种数据处理方法的流程示意图,具体包括以下步骤:s100:接收待存储子文件的写入请求,所述写入请求至少携带有所述待存储子文件所属的临时文件的标识以及所述待存储子文件。
27.在本说明书中,该数据处理方法可由服务器执行,该服务器可以是一台服务器也可以是多台服务器,如分布式的服务器集群。
28.在本说明书中,外存储器的存储空间被划分为若干存储块,针对外存储器的每个存储块,该存储块被划分为若干存储页。该外存储器即外存,如磁盘。
29.首先,该服务器可接收待存储子文件的写入请求。
30.其中,该写入请求至少携带有待存储子文件所属的临时文件的标识以及该待存储子文件。其中,临时文件的标识至少包括临时文件的描述符(file descriptor,fd)。
31.s102:当根据所述标识确定未对所述临时文件分配目标存储块时,根据存有已存储临时文件的各存储块的空闲存储空间的大小,以及所述待存储子文件的大小,从存有已存储临时文件的各存储块中,确定第一待选存储块。
32.在本说明书中,对于临时文件,可在外存中为其分配存储块,以对该临时文件的各子文件进行存储。
33.由于一个临时文件被拆分为若干子文件进行存储,因此,当接收到一个待存储子文件对应的写入请求时,当前可能已存在存有该待存储子文件所属的临时文件的其他子文件的存储块。即,存在已为该待存储子文件所属的临时文件分配的存储块,可将已分配的该存储块作为当前待存储子文件的目标存储块。因此,可直接将该待存储子文件存储至该目标存储块中。即,将待存储子文件存储在外存储器中,为该待存储子文件分配的该目标存储块的空闲存储地址中。
34.则,当根据写入请求携带的标识,确定存在为该待存储子文件所属的临时文件分配的目标存储块时,该服务器可在该目标存储块的空闲存储空间大于该待存储子文件的大小时,将该待存储子文件存储至该目标存储块中。或者,也可先根据该目标存储块的空闲存储空间,确定外存储器中,用于存储该待存储子文件的存储地址,并将该待存储子文件存储在缓存中。待到刷盘时,再将该待存储子文件存储至自身对应的外存储器的存储地址中。即,当该待存储子文件被确定为待落盘的子文件时,再将该待存储子文件存储至自身对应的目标存储块的存储地址中。
35.在该目标存储块的空闲存储空间不大于该待存储子文件的大小时,该服务器可重新为该待存储子文件确定目标存储块,即,重新为该待存储子文件分配存储块。
36.当根据写入请求携带的该待存储子文件所属的临时文件的标识,确定未对该待存储子文件所属的临时文件分配目标存储块时,为了避免造成对新的存储块的占用,使空闲的存储空间更规整,避免存储空间被碎片化,提升存储块的利用率,该服务器可根据存有已存储临时文件的各存储块的空闲存储空间的大小,以及该待存储子文件的大小,从存有已存储临时文件的各存储块中,确定第一待选存储块。以便于在后续步骤中,从第一待选存储块中,确定出用于存储待存储子文件的存储块。
37.具体的,由于第一待选存储块要足以存储该待存储子文件,因此该服务器可将存有已存储临时文件的各存储块的空闲存储空间大于该待存储子文件的大小的存储块,作为第一待选存储块。
38.所谓避免造成对新的存储块的占用,使空闲的存储空间更规整,避免存储空间被碎片化,即,避免将空闲存储空间分割到不同的存储块中,导致一个存储块剩余存储空间能存储的子文件大小受到限制。例如,假设一个存储块大小为2兆字节(mbyte,mb),即总的存
储空间为2mb,假设当前存在存储块1,其中已存储1mb的子文件,剩余空闲存储空间为1mb,且存在存储块2,存储块2未存储任何子文件,空闲存储空间为2mb。此时存在待存储子文件,大小为1mb,虽然无论将该待存储子文件存储至存储块1还是存储块2,将该待存储子文件存储后,存储块1与存储块2累计剩余的存储空间为2mb,但若将待存储子文件存储至存储块2,则,存储块1、2皆存有1mb子文件,各剩余1mb空闲存储空间,此时,各存储块无法再存储大小大于1mb的其他子文件。但将待存储子文件存储至存储块1,则,存储块1未剩余空闲存储空间,存储块2剩余存储空间为2mb,可存储的其他子文件的大小为2mb以内。
39.s104:根据所述第一待选存储块,确定用于存储所述待存储子文件的目标存储块,确定所述待存储子文件在所述目标存储块的存储地址,并将所述待存储子文件存储在缓存中。
40.在本说明书一个或多个实施例中,在确定出第一待选存储块后,该服务器则可根据第一待选存储块,确定用于存储待存储子文件的目标存储块,确定外存储器中,目标存储块对应的用于存储待存储子文件的存储地址,并待存储子文件存储在缓存中。
41.具体的,该服务器可从第一待选存储块中,确定空闲存储空间最小的第一待选存储块,作为目标存储块。
42.基于图1所示的数据处理方法,通过接收待存储子文件的写入请求,当确定未对待存储子文件所属的临时文件分配目标存储块时,根据存有已存储临时文件的各存储块的空闲存储空间的大小,及该待存储子文件大小,从存有已存储临时文件的子文件的各存储块中确定第一待选存储块。根据第一待选存储块,确定用于存储该待存储子文件的目标存储块,确定外存储器中,目标存储块对应的用于存储待存储子文件的存储地址,并将该待存储子文件存储在缓存中。
43.从上述方法中可以看出,本方法能够将不同临时文件的子文件存在相同存储块中,提高存储块利用率,避免存储空间被碎片化,减少存储空间的浪费。
44.在本说明书中,为了合理维护空闲的存储空间,合理进行存储块的分配,该服务器可维护动态链表,基于动态链表记录存储块的空闲存储空间,以为待存储子文件合理分配存储空间。动态链表也可视为是一种元数据。
45.则,在步骤s102中,在确定第一待选存储块时,具体的,该服务器首先可获取动态链表。动态链表用于记录空闲的存储页构成的存储页组,针对每个存储页组,该存储页组中的各存储页连续,且属于同一存储块。
46.之后,该服务器可从动态链表中确定存有已存储临时文件的各存储块包含的存储页组,作为各待定存储页组。存有已存储临时文件的各存储块,即存有已存储临时文件的至少部分子文件的存储块。然后,该服务器可将大小不小于待存储子文件的大小的待定存储页组所属的存储块,作为第一待选存储块。
47.进一步地,为了使得存储在同一存储块中的子文件能够尽可能同时被释放,避免存储空间碎片化,使得该存储块能够提供更完整的更大的空闲存储空间,供其他待存储子文件使用,该服务器还可根据临时文件的生命周期,确定待存储子文件的目标存储块。因此,在步骤s104根据第一待选存储块,确定用于存储待存储子文件的目标存储块之前,该服务器还可从各存储块中,确定存储的已存储临时文件与待存储子文件所属的临时文件的生命周期的差值在预设范围内的存储块,作为第二待选存储块。
48.具体的,该服务器可获取动态链表。如上所述,动态链表用于记录空闲的存储页构成的存储页组,针对每个存储页组,该存储页组中的各存储页连续,且属于同一存储块。
49.获取动态链表之后,该服务器可从动态链表中确定存有已存储临时文件的各存储块的存储页组,作为各待定存储页组,并将各待定存储页组所属的存储块作为各待定存储块。
50.然后,该服务器可将存储的已存储临时文件与待存储子文件所属的临时文件的生命周期的差值在预设范围内的待定存储块,作为第二待选存储块。
51.则,在根据第一待选存储块,确定用于存储待存储子文件的目标存储块时,该服务器具体可根据第一待选存储块以及第二待选存储块,确定用于存储待存储子文件的目标存储块。
52.在本说明书一个或多个实施例中,该服务器可确定第一待选存储块以及第二待选存储块的交集,得到命中存储块。其中,第一待选存储块与第二代选存储块皆可为多个存储块。确定第一待选存储块与第二代选存储块的交集,并非为了确定第一待选存储块与第二代选存储块是否相似或相同,而是通过确定第一待选存储块与第二代选存储块的交集,确定出:空闲存储空间的大小足以存储待存储子文件,且存储的已存储临时文件的生命周期与待存储子文件所属临时文件的生命周期差值在预设范围内的存储块。即,确定出作为第一待选存储块且同样作为第二代选存储块的存储块,作为命中存储块。
53.得到命中存储块之后,该服务器可从命中存储块中,确定空闲存储空间最小的存储块,作为用于存储待存储子文件的目标存储块。具体的,该服务器可针对每个命中存储块,根据该命中存储块对应的动态链表,确定该命中存储块的,大小不小于该待存储子文件的各存储页组中,最小的存储页组,作为命中存储页组。然后,可将对应的命中存储页最小的命中存储块,作为待存储子文件的目标存储块。或,该服务器还可根据对应的动态链表,确定各命中存储块的总空闲存储空间,确定总存储空间最小的存储块,作为用于存储待存储子文件的目标存储块。
54.其中,一个存储块可对应一个动态链表,或者,也可各存储块对应一个动态链表。
55.或者,该服务器可从命中存储块中,确定存储的已存储临时文件的生命周期与待存储子文件所属的临时文件的生命周期差值最小的存储块,作为用于存储待存储子文件的目标存储块。
56.在本说明书一个或多个实施例中,该服务器可根据该待存储子文件的大小,以及对应的动态链表中该目标存储块的各存储页组的大小,从对应的动态链表记录的该目标存储块的各存储页组中,确定大于该待存储子文件的各存储页组,并从中确定最小的存储页组,作为用于存储该待存储子文件的存储页组。并且,该服务器可根据用于存储该待存储子文件的存储页组,确定待存储子文件在目标存储块的存储地址。
57.需要说明的是,由于可能存在不存在存有已存储临时文件的存储块的情况,当不存在存有已存储临时文件的存储块时,存储页组皆为存储块大小的存储页组,该服务器可随机确定一个存储块作为该待存储子文件的目标存储块,并根据该待存储子文件的大小,对该目标存储块对应的存储页组进行拆分得到新的各存储页组,并从中确定大小不小于该待存储子文件,且在大小不小于该待存储子文件的各存储页组中最小的一个存储页组,作为用于存储该待存储子文件的目标存储页组,分配给该待存储子文件。
58.例如,假设存储块大小为2mb,待存储子文件大小为0.4mb,则可将2mb的存储块拆分为两个大小为1mb的存储页组,之后,进一步将其中一个存储页组拆分可得到两个大小为0.5mb的存储页组。该服务器可将其中一个0.5mb的存储页组分配给待存储子文件。
59.当该待存储子文件被淘汰到外存储器中时,即,该待存储子文件待作为待落盘的子文件进行落盘时,则可将该待存储子文件存储至为该待存储子文件分配的目标存储页组中。
60.其中,拆分得到的各存储页组包含的存储页数量可皆为2的n次方。
61.在本说明书一个或多个实施例中,该服务器还可在得到命中存储块后,从命中存储块中,确定空闲存储空间最小且存储的已存储临时文件的生命周期与待存储子文件所属的临时文件的生命周期差值最小的存储块,作为用于存储待存储子文件的目标存储块。
62.当不存在闲存储空间最小,且存储的已存储临时文件的生命周期与待存储子文件所属的临时文件的生命周期差值最小的命中储块时,该服务器可确定各命中存储块分别与该待存储子文件的大小的差值,作为第一差值。并将命中存储块中已存储临时文件与待存储子文件所属的临时文件的生命周期的差值,作为第二差值。该第一差值为命中存储块减去该待存储子文件的大小的值,为正值。
63.之后,该服务器可针对每个命中存储块,根据预设的大小对应的第一权重对该命中存储块的第一差值进行加权,得到第一分值,并根据生命周期对应的第二权重,对该命中存储块对应的第二差值进行加权,得到第二分值。并根据该命中存储块的第一分值以及第二分值,确定该命中存储块的总分值。然后,该服务器可根据各命中存储块的总分值对各命中存储块进行排序,以确定总分值最高的命中存储块,作为用于存储待存储子文件的目标存储块。
64.需要说明的是,本说明书中,临时文件的生命周期可基于生成临时文件的算子确定。由于一个sql执行过程中,通常需要应用若干算子,其中一些算子生成的临时文件用于作为其他算子的输入,以使其他算子得到sql的执行结果,或生成其他的临时文件供其下游的算子进一步进行计算。即,一个sql执行过程中应用到的各算子按照执行顺序可呈链状或树状连接结构。
65.在本说明书中,同一算子生成的临时文件,生命周期相同。因此,基于不同算子的执行时间,可确定不同算子生成的临时文件的生命周期,以及不同算子(包括相同sql对应的算子以及不同sql对应的算子)生成的临时文件的生命周期的差值。基于预设值作为的预设范围,以及临时文件的生命周期的差值,则可确定与待存储子文件所属的临时文件的生命周期相近或相同的已存储临时文件。
66.或者,由于算子以链状或树状结构连接,可将相邻的两个算子生成的临时文件作为生命周期在预设范围内的临时文件。在该实施例下,并不需要确切的预设值作为预设范围,只要相邻的两个算子生成的临时文件,即可作为生命周期在预设范围内的临时文件,而同一算子生成的临时文件,由于生命周期相同,则也作为生命周期在预设范围内的临时文件。同一算子生成的临时文件为生命周期相同的临时文件。相邻的两个算子生成的临时文件为生命周期相近的临时文件。
67.具有相同生命周期的临时文件可具有相同的生命周期标识。每个算子对应的生命周期标识唯一,不同算子的生命周期标识不重复。
68.该写入请求携带的标识还可包括生命周期标识,该服务器可根据生命周期标识确定待存储子文件所属的临时文件对应的生命周期。
69.在本说明书中,由于具有相同或相近生命周期(即,生命周期差异在预设范围内)的临时文件的子文件可以存储在相同的存储块中。如此,可使得存储块可被最大程度利用,减少存储块中空间的浪费。例如,当一个存储块仅存储一个临时文件的子文件时,假设一个存储块大小为4mb时,临时文件1包含的子文件的总大小为3mb时,则会有1mb的空间被浪费。但如果将剩余的1mb空间分配给其他临时文件,则会提升该存储块的利用率。为了在一个存储块存储多个临时文件的数据时,避免一个存储块被长期占用,可将具有相同或相近生命周期的临时文件的子文件存储在同一存储块中。例如当上述大小为3mb的临时文件1生命周期与大小为1mb的临时文件2生命周期不同且差值较大时,当3mb的临时文件被释放,存储块中还有1mb的空间被占用,导致该存储块不能作为4mb的存储空间被分配给其他临时文件。若将该存储块剩余的3mb分配给大小为3mb的其他临时文件3时,待大小为1mb的临时文件2生命周期结束后,存储块则仍然存在3mb存储空间被占用
……
如此,可能导致该存储块长期被分散使用。
70.生命周期差异在预设范围内的临时文件被释放的时间相同或相近,可使得存储具有相同或相近生命周期的临时文件的存储块的各存储空间能够尽可能同时释放,不会存在存储块中部分临时文件对应的子文件被释放删除,其他临时文件对应的子文件继续占用存储块,导致存储块的存储空间碎片化。因此,本说明书中具有相同或相近生命周期的临时文件的子文件可存储在相同的存储块中。可使得存储块可被最大程度利用,减少存储块中空间的浪费,并避免一个存储块的存储空间被长期分散占用。当然,一个存储块中也可仅存储一个临时文件包含的子文件。
71.在本说明书中,该服务器可基于伙伴关系更新动态链表。伙伴关系的定义如下:由一个母实体分成的两个各方面属性一致的两个子实体,这两个子实体处于伙伴关系。
72.因此,对于从一个存储块中拆分出的两个大小相等的存储页组具有伙伴关系。例如,假设一个存储块大小为4mb,且该存储块中未存储任何子文件。假设当前待存储子文件的大小为1mb,则该服务器可将该存储块拆分为两个2mb大小的具有伙伴关系的存储页组,之后,再将其中一个存储页组进一步拆分后,可得到2个1mb大小的具有伙伴关系的存储页组。该服务器可将其中一个大小为1mb的存储页组分配给大小为1mb的待存储子文件。
73.为了便于理解伙伴关系,本说明书提供了图2所示的示意图。
74.图2为本说明书提供的一种伙伴关系的示意图。如图,假设一个存储块大小为4mb,被均等划分为32个存储页,图2上方左侧“32”表示该存储块划分为32个存储页,右侧的“1-32”表示各存储页的标识分别为1-32。为了在外存储器中为大小为1mb的待存储子文件分配足够的存储空间,且尽量减小对存储空间的浪费,可通过将存储块的存储空间进行拆分的方法,得到用于存储待存储子文件的存储页组。
75.因此,可将一个包含32个空闲存储页的存储块拆分为两个各包含16个存储页的存储页组,两个存储页组大小皆为2mb,图2中间左侧的“16”表示将存储块拆分为2个存储页组后,每个存储页组包含16个存储页。其中,一个存储页组包含的存储页为标识1-16的存储页(为了方便描述,后续称之为第一存储页组),另一个存储页组包含的存储页为标识17-32的存储页(后续称之为第二存储页组)。
76.为了使得为待存储子文件分配的存储页组的大小尽可能大于且贴近待存储子文件的大小,可进一步将其中一个包含16个存储页的存储页组,拆分为两个各包含8个存储页的存储页组,且两个存储页组大小皆为1mb,之后,可将其中一个大小为1mb的存储页组分配给待存储子文件。
77.如图2,可将第一存储页组拆分为包含标识为1-8的存储页的存储页组(后续称之为第三存储页组)以及包含标识为9-16的存储页的存储页组(后续称之为第四存储页组)。假设对第二存储页组也进行拆分,也可得到两个各包含8个存储页的存储页组,如图中虚线部分所示,分别为包含的存储页为标识17-24的存储页的存储页组(后续称之为第五存储页组),以及包含的存储页组为标识25-32的存储页的存储页组(后续称之为第六存储页组)。图2下方左侧的“8”表示将第一存储页组继续拆分为2个存储页组后,每个存储页组包含8个存储页。
78.其中,大小相等的第一存储页组与第二存储页组具有伙伴关系。大小相等的第三存储页组与第四存储页组具有伙伴关系。大小相等的第五存储页组与第六存储页组也具有伙伴关系。虽然第四存储页组与第五存储页组也大小相等,但由于二者并非由相同的存储页组拆分而来(即,并非来自于同一个母实体),因此不具有伙伴关系。
79.当分配给大小为1mb的待存储子文件的1mb大小的存储页组被释放后,若与释放的该存储页组具有伙伴关系的另一个存储页组也空闲时,该服务器则可将两个1mb的存储页组合并得到2mb的存储页组。
80.在本说明书中,将外存储器划分为的各存储块大小可相同,同一存储块中各存储页大小也可相同。
81.一个动态链表可包含若干层,处于同一层的各存储页组大小相同,即包含的存储页数量相同。针对该动态链表的每一层,该层的下一层中各存储页组的大小为该层中各存储页组的二倍。
82.例如,假设一个存储块的大小为2mb,一个存储块被划分为256个存储页,每个存储页的存储空间大小为8千字节(kilobyte,kb)。则动态链表中,最大的存储页组为由256(2的8次方)个存储页构成的存储页组,即一个存储块,最小则为一个存储页。
83.该服务器还可在非空闲的存储页组原本存储的子文件被释放后,确定释放数据后空闲的存储页组,作为待入链存储页组。需要说明的是,上述“释放”,指的是对外存储器中的存储空间的释放。
84.当待入链存储页组对应的动态链表中存在与该待入链存储页组存在伙伴关系的其他存储页组时,该服务器可将该待入链存储页组与其他存储页组合并,得到新的存储页组,并根据该新的存储页组的大小以及对应的动态链表各层中存储页组的大小,确定该述动态链表中的目标层,以将该新的存储页组加入目标层。
85.当对应的动态链表中不存在与该待入链存储页组存在伙伴关系的其他存储页组时,该服务器可根据该待入链存储页组的大小以及动态链表各层中存储页组的大小,确定动态链表中的目标层,并将该待入链存储页组加入该目标层。
86.为了方便理解,本说明书还该提供了一种动态链表的示意图,如图3。
87.图3为本说明书提供的一种动态链表的示意图。一个动态链表可对应一个存储块的空闲存储空间的状态。如图3中所示,最左侧一列长方形中,不同长方形对应动态链表的
不同层,长方形中数字表示对应的层中一个存储页组中包含的存储页的数量。以一个存储块被划分为256个存储页为例,自上而下(自第一层到最后一层),每层中一个存储页组包含的存储页数量分别为2 0
、2 1
、2 2
……
2 8
,即,1、2、4
……
256。一个存储页组中包含的存储页的数量为2的n次方。
88.则最后一层,一个存储页组中最多包含256个存储页。也就是说,一个存储块中包含的存储页的数量是不变的,而链表中不同层仅表示采用不同的划分方式,对该存储块中各存储页划分,得到的各存储页组。当然,链表中仅记录空闲的存储页组。
89.图3中,一个虚线框对应一个存储页组。可见,在图3所示的动态链表中,自上而下第一层中,存在两个存储页组。也就是说,在该存储块中有两个大小为一个存储页的空闲存储页组,第一层中的这两个存储页组分别为标识10的存储页构成的存储页组、标识1的存储页构成的存储页组,由于这两个存储页组间不具有伙伴关系,因此没有被合并作为包含两个存储页的存储页组加入第二层。
90.同样的,在该链表的第二层中,也展示了两个存储页组。自左到右的第一个存储页组由标识3的存储页以及标识4的存储页组成,第二个存储页组由标识7的存储页以及标识8的存储页组成。其中,与第二个存储页组具有伙伴关系的存储页组,为由标识5的存储页以及标识6的存储页组成的存储页组。若该具有伙伴关系的存储页组被释放,则由标识5、标识6的存储页构成的存储页组为待入链存储页组。根据伙伴关系,可将该待入链存储页组与第二层中第二个存储页组合并后,得到由标识5~8的四个存储页的存储页组,并加入到目标层——第三层中,加入后的示意图如图4所示。
91.在图3所示的第三层中,一个存储页组中存储页的数量为4,可见,当前展示了一个存储页组包含的存储页为标识13、14、15、16的存储页的存储页组。
92.当前并不存在包含256个存储页的存储页组。
93.图4为本说明书提供的一种动态链表的示意图。如图4,由于图3第二层中,包含标识7、标识8的存储页的第二个存储页组,与新释放的标识5、标识6的存储页构成的待入链存储页组在合并后被加入第三层,因此,第二层中仅剩包含标识3、标识4的存储页的存储页组。
94.可见,通过该动态链表可以快速的确定存储块中不同大小的空闲存储空间(即,不同层的存储页组)的情况,并根据需要存储的数据的大小,确定将数据存储在该存储块的哪个存储页组中。而当该存储块的存储页组中存储的数据被释放时,又可根据存储页组之间的伙伴关系,将标识相邻的存储页进行合并,在链表中更新空闲存储页组的状态,通过链表记录存储块中各连续空闲存储页的状态。
95.或者,如上所述,在本说明书中,各存储块的空闲存储空间的状态可记录在同一个动态链表中。当然,由于动态链表可记录多个存储块的存储页组,因此,动态链表中可记录有各存储页组所属的存储块的标识。
96.于是,在步骤s104确定待存储子文件在目标存储块的存储地址时,可先从动态链表中,确定目标存储块对应的各存储页组,作为候选存储页组。之后,可确定大小大于待存储子文件的候选存储页组,并从大小不小于待存储子文件的候选存储页组中,确定大小最小的存储页组,作为用于存储待存储子文件的存储页组。并将用于存储待存储子文件的存储页组的存储地址,即待存储子文件在目标存储块的存储地址。
97.当一个存储块分别对应一个动态链表时,在步骤s104确定待存储子文件在目标存储块的存储地址时,则可先确定目标存储块对应的动态链表,并从中确定大小不小于待存储子文件的存储页组,以从中确定大小最小的存储页组,作为用于存储待存储子文件的存储页组。并将用于存储待存储子文件的存储页组的存储地址,即待存储子文件在目标存储块的存储地址。
98.需要说明的是,在本说明书中,当一个待存储子文件的大小需要的存储页的数量并非2的n次方时,可确定大于待存储子文件的大小且最接近该待存储子文件大小的存储页组,分配给该待存储子文件。例如,待存储子文件需要3个存储页,则为该待存储子文件分配4个存储页构成的存储页组,若待存储子文件需要5个存储页,则为待存储子文件分配8个存储页构成的存储页组。
99.如此,便于维护存储页组间的伙伴关系,以基于伙伴关系维护空闲的存储页,避免对存储页的分配导致存储空间碎片化,且能够使得一个存储页组中各存储页存储的数据尽可能同时被释放,以合并得到更大的存储页组。
100.另外,在步骤s104中,在将待存储子文件存储在缓存中之前,该服务器还可当确定缓存不足以存储待存储子文件时,确定为缓存中各已存储子文件分别分配的存储块,作为已分配存储块。
101.针对每个已分配存储块,该服务器可根据该已分配存储块中已存储子文件的总大小与该已分配存储块的总存储空间大小的比值,确定该已分配存储块的利用率。之后,根据确定出的各利用率,从各已分配存储块中确定待处理存储块。
102.然后,该服务器可将缓存中待处理存储块对应的子文件作为待落盘的子文件,并将确定出的待落盘的子文件写入待落盘的子文件对应的目标存储块的存储地址中。即,将确定出的待落盘的子文件写入待落盘的子文件对应的待处理存储块内,为待落盘的子文件分配的空闲存储地址中。
103.并且,该服务器可将待落盘的子文件从缓存中删除。以通过将缓存中的子文件写入外存储器中,实现对缓存的存储空间的释放,为当前待存储子文件腾出足够的空间。
104.具体的,该服务器可确定利用率大于预设的利用率阈值的存储块,并在确定出的存储块在缓存中对应的子文件总大小大于待存储子文件时,将确定出的各存储块作为待处理存储块。当确定出的存储块在缓存中对应的子文件总大小不大于待存储子文件大小时,该服务器可确定利用率大于预设的利用率阈值的存储块,在缓存中对应的子文件总大小与待存储子文件大小的差值,作为第三差值。并根据利用率对各存储块进行排序,根据排序结果、该第三差值,以及利用率未大于该利用率阈值的各存储块在缓存中子文件的大小,从利用率未大于该利用率阈值的各存储块中确定待处理存储块,同时将利用率大于预设的利用率阈值的存储块作为待处理存储块。
105.或者,该服务器还可先根据利用率对缓存中各已分配存储块进行排序,根据各已分配存储块在缓存中对应的子文件的大小,以及待存储子文件的大小,以利用率从大到小的顺序,确定各待处理存储块。确定出的待处理存储块在缓存中子文件的总大小不小于待存储子文件的大小。
106.再或者,该服务器还可当确定缓存不足以存储所述待存储子文件时,根据缓存中各子文件所属的存储块,对各子文件进行分组,将属于同一个存储块的子文件分组到一个
文件组中。并确定各文件组的大小,以从各文件组中确定至少一个大小不小于待存储子文件的文件组,作为待落盘文件组,待落盘文件组中的子文件即待落盘的子文件。之后,该服务器可将待落盘文件组中的子文件写入对应的外存储器的存储地址中。
107.在本说明书一个或多个实施例中,将待落盘的子文件从缓存中删除后,该服务器则可将待存储子文件存储在缓存中。
108.具体的,该服务器可根据待存储子文件的目标存储块中为该待存储子文件分配的存储空间,在缓存中为待存储子文件划分缓存块,并将该待存储子文件写入该缓存块中。
109.如上所述,在本说明书中,并非直接将临时文件存储于外存储器,而是将外存储器的存储空间划分为若干存储块,并在接收到写入请求时,将临时文件的待存储子文件存储在缓存中。
110.在本说明书中,缓存的存储空间被划分为可写可读与只读两部分,缓存包括可写可读缓存以及只读缓存。对于写入请求携带的待存储子文件,首先被存储在可写可读缓存中,当可写可读缓存的存储空间不足时,可写可读缓存中部分数据会作为待落盘的子文件,被淘汰到只读缓存中和/或外存储器中。当只读缓存的存储空间不足时,只读缓存块中的数据也可被淘汰到外存储器中,或被删除。
111.在本说明书中,各临时文件的元数据可存储在缓存中,当临时文件的生命周期结束时,该服务器可将生命周期结束的临时文件的元数据删除。当元数据被删除后,该元数据对应的外存储器中的临时文件无法被在外外存储器中索引到,且其原本占用的存储块可作为空闲的存储块被分配给其他的临时文件,用于存储其他的临时文件的子文件,此时,被删除元数据的临时文件的数据则会由于被其他临时文件的数据覆盖而删除,不会导致外存储器存储空间的浪费。
112.该服务器可在接收到写入请求后,获取缓存中存储的元数据。元数据中可记录有临时文件的标识与存储位置的对应关系。该服务器可根据获取到的元数据以及该文件的标识,判断是否存在为该写入请求对应的临时文件分配的目标存储块。
113.在本说明书一个或多个实施例中,预设数量的存储页可构成一个范围(extent),在元数据中,一个extent对应一条记录,而非一个存储页对应一条记录,如此,可压缩元数据的数据量。
114.另外,本说明书通过将缓存划分为可写可读缓存以及只读缓存两部分,能够实现对子文件的读写的隔离,更便于进行写入请求与读取请求的流量控制,合理分配资源,使得数据库系统处于更佳的运行状态。
115.在本说明书一个或多个实施例中,在步骤s104中将待存储子文件存储在缓存中时,该服务器可先为待存储子文件在可写可读缓存中划分存储空间,将待存储子文件存储至可写可读缓存中。当可写可读缓存中不足以存储该待存储子文件,导致划分存储空间失败时,该服务器可将可写可读缓存中子文件所属的存储块的利用率,从可写可读缓存中确定待落盘的子文件,并在只读缓存中为待落盘的子文件划分存储空间,将待落盘的子文件存储在只读缓存中,以及将可写可读缓存中的待落盘的子文件删除,以释放可写可读缓存的至少部分存储空间,实现将待落盘的子文件从可写可读缓存中淘汰至只读缓存中。
116.当可写可读缓存中不足以存储新的待落盘的子文件时,该服务器可根据可写可读缓存中各子文件的读取次数,以及预设的次数上限,将可写可读缓存中至少部分子文件写
入外存储器中,该至少部分子文件对应的存储地址中。
117.或者,该服务器还可从可写可读缓存中确定待落盘的子文件后,将待落盘的子文件写入外存储器待落盘的子文件对应的存储地址中,并将可写可读缓存中的待落盘的子文件删除。
118.再或者,该服务器还可从可写可读缓存中确定待落盘的子文件后,同时将待落盘的子文件写入外存储器待落盘的子文件对应的存储地址,以及只读缓存中,并将可写可读缓存中的待落盘的子文件删除。
119.具体的,该服务器可根据确定出的目标存储块的至少部分空闲存储空间,从可写可读缓存的存储空间中划分缓存块。
120.在本说明书一个或多个实施例中,该服务器可根据确定出的目标存储块中待存储子文件对应的目标存储页组的大小,从可写可读缓存的存储空间中划分缓存块。或者,也可仅根据待存储子文件的大小,从可写可读缓存的存储空间中划分用于存储该待存储子文件的缓存块。
121.由于与外存相比,缓存的存储空间有限,并且,在本说明书中,缓存被分为只读缓存以及可写可读缓存,因此,在划分缓存块时,当可写可读缓存剩余的存储空间足以存储待存储子文件时,则会划分成功,当可写可读缓存剩余的存储空间不足以存储待存储子文件时,则会划分失败。
122.当成功划分缓存块时,该服务器可将待存储子文件存储在缓存块中。
123.当确定该可写可读缓存不足以存储待存储子文件时,该服务器可确定为该可写可读缓存中各已存储子文件分别分配的存储块的利用率。以根据确定出的各利用率,从可写可读缓存中确定待落盘的子文件。为该可写可读缓存中各已存储子文件分别分配的存储块,即已分配存储块。
124.之后,该服务器可将待落盘的子文件写入只读缓存中,并将可写可读缓存中的待落盘的子文件删除,重新从可写可读缓存的存储空间中划分缓存块,并将待存储子文件存储在划分的缓存块中。
125.即,该服务器可将待落盘的子文件写入只读缓存中,通过将可写可读缓存块中的子文件转移到只读缓存块中,释放可写可读缓存的部分存储空间。如此,便可在可写可读缓存中得到足以存储该写入请求对应的待存储子文件的空闲存储空间。并且,由于缓存的读取速度比外存储器更快,待落盘的子文件被写入只读缓存,能够使得在接收到待落盘的子文件对应的读取请求时,可快速从缓存中读取。
126.在本说明书一个或多个实施例中,该服务器具体可根据可写可读缓存中,存储待落盘的子文件的存储块的大小,在只读缓存中为待落盘的子文件划分缓存块,并将待落盘的子文件存储至在只读缓存块中为待落盘的子文件划分的缓存块中,将可写可读缓存中的待落盘的子文件删除。
127.在本说明书中,为了方便区分,可将可写可读缓存中的缓存块作为可写缓存块,将只读缓存中的缓存块作为只读缓存块。
128.由于可写可读缓存中存在若干缓存块,因此,在本说明书一个或多个实施例中,该服务器还可以缓存块为单位对可写可读缓存中的子文件进行淘汰。于是,在确定待落盘的子文件时,该服务器还可针对每个可写缓存块,确定该可写缓存块对应的外存储器中的存
储块的利用率,并根据确定出的利用率,从各可写缓存块中确定待落盘的缓存块,并将待落盘的缓存块中的子文件作为待落盘的子文件。
129.具体确定利用率并根据利用率确定待落盘的子文件的方式可参考上述实施例中基于利用率确定待落盘的子文件的方式,例如,根据利用率对可写缓存块对应的存储块进行排序,根据排序结果以及待存储子文件大小确定待落盘的缓存块等,本说明书在此不做赘述。
130.如上所述,该服务器还可从可写可读缓存中确定待落盘的子文件后,将待落盘的子文件写入外存储器待落盘的子文件对应的外存储器的存储地址中,并将可写可读缓存中的待落盘的子文件删除。具体的,该服务器可从可写可读缓存中确定待落盘的缓存块,并将待落盘的缓存块中子文件写入对应的外存储器的存储地址中,并将可写可读缓存中待落盘的缓存块删除。
131.另外,如上所述,该服务器还可将待落盘的子文件写入只读缓存以及待落盘的子文件对应的外存储器的存储地址中。当确定只读缓存中不足以写入新的可写可读缓存中待落盘的子文件时,该服务器可根据只读缓存中子文件的读取次数,对只读缓存中子文件进行删除。
132.并且,具体也可以只读缓存块为单位,对缓存中子文件进行删除,当确定只读缓存中不足以写入新的待落盘的子文件时,该服务器可针对只读缓存中每个只读缓存块,确定该只读缓存块中各子文件的读取次数之和,作为该只读缓存块的读取次数。之后,该服务器可根据各只读缓存块的读取次数以及预设的次数阈值,确定待落盘的只读缓存块,并将待落盘的只读缓存块中的子文件作为只读缓存中待落盘的子文件,以将只读缓存中待落盘的子文件删除。
133.或者,该服务器还可根据可写可读缓存中待落盘的子文件的大小,以及各只读缓存块的读取次数,确定待落盘的只读缓存块。
134.在本说明书一个或多个实施例中,该服务器还可当确定可写可读缓存不足以存储待存储子文件时,该服务器还可确定可写可读缓存中各存储块的大小,以及待存储子文件的大小,从可写可读缓存中各存储块中,确定至少一个大小不小于待存储子文件的缓存块,并将缓存块中的子文件作为待落盘的子文件。
135.在可写可读缓存不足以存储待存储子文件时,将待落盘的子文件写入只读缓存并同时写入外存储器,而非可写可读缓存的空闲存储空间不足时,将可写可读缓存中大量子文件写入外存储器,能够避免集中爆发大量的刷盘操作,使得缓存中数据到外存储器的写入不具有突发性。
136.在本说明书中,只读缓存中的存储空间可被只读的缓存块与缓存页相互挤占,也可以被可读可写中的缓存块挤占,读取频率高的缓存块或者页才能常驻只读缓存中,否则会被写入外存储器或删除。
137.本说明书还提供了图5所示的一种数据读取方法,包括以下步骤:s300:接收对已存储子文件的读取请求,所述读取请求至少携带有所述已存储子文件所属的已存储临时文件的标识,以及所述读取请求所请求的所述已存储子文件在所述已存储临时文件中的位置。
138.该数据读取方法可由服务器执行。
139.其中,读取请求所请求的已存储子文件在已存储临时文件中的位置,具体可以是所请求的已存储子文件在已存储临时文件中的字节位置,即第几字节。
140.s302:当根据所述读取请求,未从所述可写可读缓存中读取到所述读取请求所请求的已存储子文件时,从所述只读缓存中读取所述读取请求所请求的已存储子文件。
141.在本说明书一个或多个实施例中,由于在写入数据时,先写入缓存,并且先写入可写可读缓存中,因此,数据最先可能出现的位置为可写可读缓存,并且缓存的读取速度快于外存,因此该服务器可先根据读取请求,从可写可读缓存读取该读取请求所请求的已存储子文件。当根据读取请求,未从可写可读缓存块读取到读取请求所请求的数据时,可从只读缓存块中读取该读取请求所请求的已存储子文件。
142.具体的,该服务器可确定缓存中存储的元数据,并根据读取请求以及元数据,判断可写可读缓存是否存在存储读取请求所请求的已存储子文件的缓存块。
143.若是,则从确定出的缓存块中读取该读取请求所请求的已存储子文件,并返回读取请求的发送方。
144.若否,则在从只读缓存中读取该读取请求所请求的已存储子文件。
145.s304:当成功从所述只读缓存中读取所述读取请求所请求的已存储子文件时,向所述读取请求的发送方返回读取结果。
146.当成功从只读缓存的缓存块中读取该读取请求所请求的已存储子文件时,该服务器可向读取请求的发送方返回读取结果。
147.s306:当未成功从所述只读缓存中读取所述读取请求所请求的已存储子文件时,将所述读取请求所请求的已存储子文件从所述外存储器中加载到所述只读缓存中,并向所述读取请求的发送方返回读取结果。
148.在本说明书一个或多个实施例中,当未成功从只读缓存中读取该读取请求所请求的已存储子文件时,该服务器可根据该读取请求以及元数据,从外存储器中确定存储该读取请求所请求的已存储子文件的存储页,作为命中存储页,并将命中存储页中的子文件加载到只读缓存中,以及向读取请求的发送方返回读取结果。
149.在将命中存储页中的子文件加载到只读缓存中时,可在只读缓存中生成命中存储页的副本,作为缓存页,并将命中存储页中的子文件加载到缓存页中。
150.在本说明书中,只读缓存中的子文件可包括从可写可读缓存中写入的子文件,以及从外存储器中读取的子文件。并且,如上所述,该服务器在将可写可读缓存中的待落盘的子文件写入只读缓存中时,也可在只读缓存中生成只读的缓存块。因此,只读缓存中可包括若干缓存块以及若干缓存页。
151.在只读缓存中读取该读取请求所请求的已存储子文件时,可先从缓存块中读取,当读取失败时,再从缓存页中读取。当从缓存页中读取失败时,可再从外存储器中确定存储该读取请求所请求的已存储子文件的存储页,作为命中存储页,并将命中存储页中的数据加载到只读缓存的命中存储页中,以及向读取请求的发送方返回读取结果。
152.图6为本说明书提供的一种数据处理装置的示意图,装置包括:第一接收模块200,用于接收待存储子文件的写入请求,所述写入请求至少携带有所述待存储子文件所属的临时文件的标识以及所述待存储子文件;第一确定模块201,用于当根据所述标识确定未对所述临时文件分配目标存储块
时,根据存有已存储临时文件的各存储块的空闲存储空间的大小,以及所述待存储子文件的大小,从存有已存储临时文件的各存储块中,确定第一待选存储块;第一写入模块202,用于根据所述第一待选存储块,确定用于存储所述待存储子文件的目标存储块,确定所述待存储子文件在所述目标存储块的存储地址,并将所述待存储子文件存储在缓存中。
153.可选地,所属装置还包括:第二写入模块203,用于当确定所述缓存不足以存储所述待存储子文件时,确定为所述缓存中各已存储子文件分别分配的存储块,作为已分配存储块,针对每个已分配存储块,根据该已分配存储块中已存储子文件的总大小与该已分配存储块的总存储空间大小的比值,确定该已分配存储块的利用率,根据确定出的各利用率,从各已分配存储块中确定待处理存储块,将所述缓存中所述待处理存储块对应的子文件作为待落盘的子文件,将确定出的待落盘的子文件写入所述待落盘的子文件对应的存储地址中,并将所述待落盘的子文件从所述缓存中删除。
154.可选地,针对所述外存储器的每个存储块,该存储块被划分为若干存储页,所述第一确定模块201,还用于获取动态链表,所述动态链表用于记录空闲的存储页构成的存储页组,针对每个存储页组,该存储页组中的各存储页连续,且属于同一存储块,从所述动态链表中确定存有已存储临时文件的各存储块包含的存储页组,作为各待定存储页组,将大小不小于所述待存储子文件的大小的待定存储页组所属的存储块,作为第一待选存储块。
155.可选地,所属装置还包括:第二确定模块204,用于从各存储块中,确定存储的已存储临时文件与所述待存储子文件所属的临时文件的生命周期的差值在预设范围内的存储块,作为第二待选存储块。
156.所述第一写入模块202,还用于根据所述第一待选存储块以及所述第二待选存储块,确定用于存储所述待存储子文件的目标存储块。
157.可选地,针对所述外存储器的每个存储块,该存储块被划分为若干存储页,所述第二确定模块204,还用于获取动态链表,所述动态链表用于记录空闲的存储页构成的存储页组,针对每个存储页组,该存储页组中的各存储页连续,且属于同一存储块,从所述动态链表中确定存有已存储临时文件的各存储块的存储页组,作为各待定存储页组,并将各待定存储页组所属的存储块作为各待定存储块,将存储的已存储临时文件与所述待存储子文件所属的临时文件的生命周期的差值在预设范围内的待定存储块,作为第二待选存储块。
158.可选地,所述第二确定模块204,还用于确定所述第一待选存储块以及所述第二待选存储块的交集,得到命中存储块,从所述命中存储块中,确定空闲存储空间最小的存储块,作为用于存储所述待存储子文件的目标存储块;或,从所述命中存储块中,确定存储的已存储临时文件的生命周期与所述待存储子文件所属的临时文件的生命周期差值最小的存储块,作为用于存储所述待存储子文件的目标存储块。
159.可选地,各存储块大小相同,同一存储块中各存储页大小相同;所述动态链表包含若干层,处于同一层的各存储页组大小相同;针对所述动态链表的每一层,该层的下一层中各存储页组的大小为该层中各存储页组的二倍,所述装置还包括:存储页管理模块205,用于确定释放数据后空闲的存储页组,作为待入链存储页组,当所述动态链表中存在与所述待入链存储页组存在伙伴关系的其他存储页组时,将所
述待入链存储页组与所述其他存储页组合并,得到新的存储页组,并根据所述新的存储页组的大小以及所述动态链表各层中存储页组的大小,确定所述动态链表中的目标层,将所述新的存储页组加入所述目标层,当所述动态链表中不存在与所述待入链存储页组存在伙伴关系的其他存储页组时,根据所述待入链存储页组的大小以及所述动态链表各层中存储页组的大小,确定所述动态链表中的目标层,并将所述待入链存储页组加入所述目标层。
160.可选地,所述缓存包括可写可读缓存以及只读缓存,所述第一写入模块202,还用于根据确定出的所述目标存储块的至少部分空闲存储空间,从所述可写可读缓存的存储空间中划分缓存块,当成功划分缓存块时,将所述待存储子文件存储在所述缓存块中,当确定所述可写可读缓存不足以存储所述待存储子文件时,确定为所述可写可读缓存中各已存储子文件分别分配的存储块的利用率,根据确定出的各利用率,从所述可写可读缓存中确定待落盘的子文件,将所述待落盘的子文件写入所述只读缓存中,并将所述可写可读缓存中的所述待落盘的子文件删除,重新从所述可写可读缓存的存储空间中划分缓存块,并将所述待存储子文件存储在划分的缓存块中。
161.可选地,所述装置还包括:读取模块206,用于接收对已存储子文件的读取请求,所述读取请求至少携带有所述已存储子文件所属的已存储临时文件的标识,以及所述读取请求所请求的所述已存储子文件在所述已存储临时文件中的位置,当根据所述读取请求,未从所述可写可读缓存中读取到所述读取请求所请求的已存储子文件时,从所述只读缓存中读取所述读取请求所请求的已存储子文件,当成功从所述只读缓存中读取所述读取请求所请求的已存储子文件时,向所述读取请求的发送方返回读取结果,当未成功从所述只读缓存中读取所述读取请求所请求的已存储子文件时,将所述读取请求所请求的已存储子文件从所述外存储器中加载到所述只读缓存中,并向所述读取请求的发送方返回读取结果。
162.本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述数据处理方法。
163.本说明书还提供了图7所示的电子设备的示意结构图。如图7所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述数据处理方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
164.在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device, pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻
辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
165.控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20 以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
166.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
167.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
168.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
169.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
170.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
171.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
172.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
173.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
174.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
175.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
176.本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
177.本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
178.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例
的部分说明即可。
179.以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献