CN112559574B - 数据处理方法、装置、电子设备及可读存储介质 - Google Patents

数据处理方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN112559574B
CN112559574B CN202011560871.0A CN202011560871A CN112559574B CN 112559574 B CN112559574 B CN 112559574B CN 202011560871 A CN202011560871 A CN 202011560871A CN 112559574 B CN112559574 B CN 112559574B
Authority
CN
China
Prior art keywords
data
cache
reading
terminal
data set
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
Application number
CN202011560871.0A
Other languages
English (en)
Other versions
CN112559574A (zh
Inventor
刘朋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202011560871.0A priority Critical patent/CN112559574B/zh
Publication of CN112559574A publication Critical patent/CN112559574A/zh
Application granted granted Critical
Publication of CN112559574B publication Critical patent/CN112559574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning

Abstract

本申请公开了一种数据处理方法、装置、电子设备及可读存储介质,涉及云计算技术领域和云存储技术领域。其中,所述数据处理方法包括:服务器响应于终端发送的对第一数据集的缓存预读请求,在所述第一数据集未被缓存的情况下,将所述第一数据集中的部分数据组的数据预读至服务器的缓存中。通过将数据集的不同数据组交给不同的服务器执行缓存和管理,可以保证不同服务器上执行不同数据的缓存,从而避免了多个服务器上缓存有相同数据的情况,能够提高缓存资源的利用率。

Description

数据处理方法、装置、电子设备及可读存储介质
技术领域
本申请涉及云计算技术领域,尤其涉及云存储技术领域,具体涉及一种数据处理方法、装置、电子设备及可读存储介质。
背景技术
深度学习训练过程中,为了能够以随机的方式访问训练数据,深度学习训练框架会使用索引序列来反复遍历读取数据集。因而,通常通过高速缓存Cache来加快训练过程中的数据读取速度。
现有技术中,后端服务端通常部署有分布式缓存系统,分布式缓存系统的多台缓存服务器上可能缓存有大量相同的数据,使得缓存资源没有得到充分有效的利用,利用效率不高。
发明内容
本申请提供了一种数据处理方法、装置、电子设备及可读存储介质。
根据本申请的一方面,提供了一种数据处理方法,由服务器执行,所述方法包括:
接收终端发送的针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,M为正整数;
确定所述M个数据组中的N个数据组,N为小于M的正整数;
将所述N个数据组的数据预读至缓存中。
根据本申请的另一方面,提供了一种数据处理方法,由终端执行,包括:
向Q个服务器发送针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,Q和M为正整数;
从所述Q个服务器获取所述M个数据组的数据,每个服务器的缓存中存储有所述M个数据组中的至少一个数据组的数据;
将所述M个数据组的数据预读至缓存中。
根据本申请的另一方面,提供了一种数据处理装置,所述装置包括:
接收模块,用于接收终端发送的对第一数据集的缓存预读请求;
第一预读模块,用于响应于所述缓存预读请求,在所述第一数据集未被缓存的情况下,将所述第一数据集中N个数据组的数据预读至服务器的缓存中,所述第一数据集包括M个数据组,N和M均为正整数且M大于N。
根据本申请的另一方面,提供了一种数据处理装置,所述装置包括:
接收模块,用于接收终端发送的针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,M为正整数;
第一确定模块,用于确定所述M个数据组中的N个数据组,N为小于M的正整数;
第一预读模块,用于将所述N个数据组的数据预读至缓存中。
根据本申请的另一方面,提供了一种数据处理装置,所述装置包括:
发送模块,用于向Q个服务器发送针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,Q和M为正整数;
获取模块,用于从所述Q个服务器获取所述M个数据组的数据,每个服务器的缓存中存储有所述M个数据组中的至少一个数据组的数据;
第三预读模块,用于将所述M个数据组的数据预读至缓存中。
根据本申请的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请提供的数据处理方法。
根据本申请的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本申请提供的数据处理方法。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本申请提供的数据处理方法根据本申请的技术提高了缓存资源的利用率。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请第一实施例的数据处理方法的流程示意图;
图2是根据本申请第二实施例的数据处理方法的流程示意图;
图3是根据本申请第三实施例的数据处理装置的结构框图;
图4是根据本申请第四实施例的数据处理装置的结构框图;
图5是用来实现本申请实施例的数据处理方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为方便理解,以下对本申请涉及的一些内容进行说明:
高速缓存(Cache):缓存是指可以进行高速数据交换的存储器,它先于内存与中央处理器(Central Processing Unit,CPU)交换数据,因此速率很快。当应用程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,当CPU要读取一个数据时,可以先从CPU的缓存中查找;若没有找到,就从速率相对较慢的内存中读取,并同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,这样来提高数据读取的效率。
终端(Client):本申请所述的终端是指在深度学习训练中的缓存终端,通过干预深度学习训练框架来访问训练数据。
服务器(Server):本申请所述的服务器是指缓存服务器,其可以是在深度学习训练中的缓存服务器,其通常设置于分布式架构的缓存系统中。
训练周期(Epoch):在深度学习训练中,为了能够以随机方式访问训练数据,深度学习训练框架会使用索引序列来遍历数据集中的数据。假设训练数据有100万个文件,那么会维护一个包含每一个文件索引的列表,并对它进行随机的排列。当全部的数据都完整遍历训练一次,一个Epoch完成。对于下一个Epoch,再次对文件索引进行随机排列,重复对全部的数据完整遍历训练一次。对一个数据集的一次训练通常需要进行多个Epoch。
数据的可替换性:在深度学习训练中,数据具有可替换性,既使用同一类别的数据替换当前将要读取的数据,不会影响训练结果的精度,所以当训练框架需要读取的数据没有被缓存时,可以返回同一类别的其他已经缓存的文件。这里的同一类别的数据是指具有同一特征的数据。
缓存命中率:终端或者服务端在读取数据时,会先在本地缓存中查找数据,若在本地缓存中查找到数据时,可以认为缓存住了要被读取的数据,这种情况可以称之为缓存命中;若在本地缓存中没有查找到数据时,则需要到后端查找,这种情况可以称之为缓存没有命中。缓存命中率可以理解为一个数据读取周期中,缓存命中的概率。
为了解决上述缓存资源的利用效率不高的问题,根据本申请的实施例,本申请提供了一种数据处理方法。
请参见图1,图1是本申请的实施例提供的一种数据处理方法,所述方法可以由服务器执行,所述方法包括:
S101、接收终端发送的针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,M为正整数终端。
本申请实施例中,可以通过缓存预读将所述第一数据集先存入缓存中。需要说明的是,终端和服务器均需要进行缓存预读操作,本申请实施例主要从服务器的执行角度对所述缓存预读操作进行说明。
本申请实施例中,服务器为分布式缓存系统中的任一服务器,所述分布式缓存系统中包括Q个服务器,Q为正整数。服务器可以通过接收终端发送的对第一数据集的缓存预读请求,对所述第一数据集执行缓存预读。
具体实现时,所述缓存预读请求中可以携带有所述第一数据集的标识,所述第一数据集的标识可以用于指示所述第一数据集的名称,也可以用于指示所述第一数据集的访问途径信息。服务器可以通过所述第一数据集的标识确定并获取所述第一数据集。
S102、确定所述M个数据组中的N个数据组,N为小于M的正整数。
本申请实施例中,在对所述第一数据集进行缓存预读之前,可以对所述第一数据集的数据进行预分组,将所述第一数据集划分为M个数据组。这样,可以将所述M个数据组中的不同数据组交给不同的服务器执行缓存和管理,以保证不同服务器上可以执行不同数据的缓存,而不会出现多个服务器上缓存相同数据的情况,使得缓存系统能够有效缓存更多的数据,提高缓存资源的利用效率的同时,也能够提高数据读取时的缓存命中率。
具体实现时,可以根据所述第一数据集中数据的特征标签确定所述第一数据集中包括的数据类别的数量,并将属于同一类别的数据划分至同一数据组中。示例性的,在所述第一数据集的采集过程中,可以根据每一数据的特征为其确定特征标签,假设所述第一数据集为图片数据的数据集,则所述第一数据集中的特征标签可以根据图片内容确定,例如猫、狗、树等,进而可以将图片内容为猫的图片数据划分至一个数据组,将图片内容为狗的图片数据划分至另一个数据组。
在按照所述第一数据集中的数据类别的数量确定所述第一数据集的数据组的数量时,可以同时确定当前缓存系统中的服务器的数量。若数据集的数量小于服务器的数量,可以对按照当前划分的数据组做进一步细分,以使一个服务器可以对应映射所述M个数据组中的至少一个数据组。
这样通过数据类别划分的数据组,每个数据组中的数据具有可替换性,在缓存中仅缓存某一数据组中的部分数据的情况下,若接收到针对该数据组中某一未缓存数据的读取请求,可以返回该数据组中已经缓存的其他数据,而不会影响数据读取的精度,进而可以提高数据读取的缓存命中率。
本申请实施例中,缓存系统可以针对所述第一数据集,确定每一服务器对应缓存的数据组,并建立数据组与服务器之间的映射关系。
在一种实施方式中,可选的,所述确定所述M个数据组中的N个数据组,包括:
根据预设映射表,确定所述M个数据组中与服务器对应的N个数据组,所述预设映射表中存储有数据组与服务器之间的对应关系。
本可选的实施方式中,数据组与服务器之间的映射关系可以表现为映射表的形式,缓存系统可以为每一数据集建立其对应的映射表,并将所述映射表与数据集的标识对应存储于后端存储系统中。
所述映射表中存储的数据组与服务器之间的映射关系可以表现为,数据组的名称与服务器的互联网协议(Internet Protocol,IP)地址之间的映射关系。示例性的,如表1所示,表1为第一数据集的映射表,其中存储了数据组的名称与服务器的互联网协议(Internet Protocol,IP)地址之间的映射关系。具体的,表1中指定了数据组1由IP地址为192.168.0.1的服务器缓存,数据组2由IP地址为192.168.0.2的服务器缓存,数据组m由IP地址为192.168.0.m的服务器缓存。
表1第一数据集的映射表
分组名称 服务器IP地址
数据组1 192.168.0.1
数据组2 192.168.0.2
数据组m 192.168.0.m
需要说明的是,在其他可选的实施方式中,缓存系统也可以以其他形式表现数据组与服务器之间的映射关系。示例性的,缓存系统可以部署有缓存管理器,缓存管理器可以告知每一服务器其对应缓存的数据组的数据组标识,所述标识可以是数据组的名称或者数据组的访问途径信息。
本申请实施例中,当服务器接收到针对第一数据集的缓存预读请求,可以先确定所述第一数据集的M个数据组中分配给自己缓存的N个数据组。
具体实现时,服务器可以先确定所述第一数据集是否已经存入缓存系统中。若所述第一数据集已经存入所述缓存系统中,服务器可以不再执行针对所述第一数据集的预读;若所述第一数据集未存入缓存系统中,服务器可以根据所述缓存预读请求中携带的数据集标识,在后端存储系统中获取所述数据集标识对应的映射表,即所述第一数据集对应的映射表,进而确定所述M个数据组中分配给自己缓存的N个数据组,N为正整数。之后,服务器可以从后端存储系统中获取所述N个数据组的数据,并将其预读至本地缓存中。
步骤103、将所述N个数据组的数据预读至缓存中。
下面从终端的角度对所述缓存预读操作进行说明。
在终端想要将所述第一数据集的数据预读至本地缓存的情况下,终端需要从缓存系统的缓存中获取所述第一数据集。基于此,终端需要向缓存系统中的Q个服务器发送缓存预读请求中,以请求所述Q个服务器先将所述第一数据集的数据预读至服务器的缓存中。这样,终端才可以从所述Q个服务器的缓存中获取所述第一数据集,进而将所述第一数据集预读至自己的本地缓存中。
具体实现时,由于缓存系统中的服务器分别缓存所述第一数据集的M个数据组中的部分数据组,终端可以向所述Q个服务器中的每个服务器均发送对所述第一数据集的缓存预读请求,以从每个服务器分别获取该服务器对应缓存的数据组的数据。
为方便理解,下面举例说明:
假设所述第一数据集包括3个数据组,缓存系统中部署有3台服务器,数据组与服务器之间的映射关系为服务器A缓存数据组1、服务器B缓存数据组2、服务器C缓存数据组3。那么,终端可以向服务器A、服务器B和服务器C均发送缓存预读请求,以请求它们分别对数据组1、数据组2和数据组3执行预读。之后,终端可以从服务器A获取数据组1,并将数据组1预读至本地缓存中,以及从服务器B获取数据组2,并将数据组2预读至本地缓存中,以及从服务器C获取数据组3,并将数据组3预读至本地缓存中。可以这样理解,终端需要对所述第一数据集的每个数据组的数据均执行预读缓存。
本申请的上述实施例具有如下优点或有益效果:缓存系统中的每个服务器仅对应缓存第一数据集中的部分数据组,每一服务器响应于终端发送的对第一数据集的缓存预读请求,将所述第一数据集中分配给自己缓存的N个数据组的数据预读至本地缓存中。通过将所述第一数据集的不同数据组交给不同的服务器执行缓存和管理,可以保证不同服务器上执行不同数据的缓存,而不会缓存相同的数据,使得缓存系统能够有效缓存更多的数据,提高缓存资源的利用效率的同时,也能够提高数据读取时的缓存命中率。
下面对本申请实施例中缓存预读操作的具体实施方式进行说明,本申请实施例中的缓存预读操作包括但不限于两种策略:预读每个数据组中的部分数据;分批次预读每个数据组中的数据。在此以服务器的执行角度对上述两种策略进行说明:
第一种缓存预读策略,预读每个数据组中的部分数据。
本申请实施例中,可选的,所述将所述N个数据组的数据预读至缓存中,包括:
根据服务器的缓存上限,确定所述N个数据组中每个数据组的可缓存数据量;
根据所述N个数据组中每个数据组的可缓存数据量,将所述N个数据组的数据预读至所述缓存中。
本可选的实施方式中,在服务器可用的缓存空间不足以缓存所述N个数据组中的所有数据的情况下,可以根据服务器的缓存上限,确定所述N个数据组中每个数据组的可缓存数据量。基于数据的可替换性,同一数据组中的数据属于同一数据类别,相互替换并不会影响数据读取的精度,因而当要读取的数据没有在本地缓存时,可以获取同一数据组中的其他已经缓存的数据。
具体实现时,可以根据所述N个数据组中每个数据组的数据量,确定每个数据组的权重。服务器可以根据服务器的缓存上限和所述每个数据组的权重,确定每个数据的可缓存数据量。
示例性的,所述N个数据组的数据以文件形式存在。假设服务器的缓存上限为100个文件,其对应映射有3个数据组,分别为数据组1、数据组2和数据组3,其中,数据组1包括60个文件,数据组2包括80个文件,数据组3包括60个文件。因此,三个数据组的权重分别为0.3、0.4和0.3,进而确定三个数据组的可缓存数据量为30个文件、40个文件和30个文件。
需要说明的是,在服务器的缓存空间能够缓存所述N个数据组中的全部数据的情况下,每个数据组的可缓存数据量为数据组中的全部数据量。具体可根据实际情况决定,本申请实施例在此不作限定。
本可选的实施方式具有如下优点或有益效果:基于数据组是按照数据类别划分的,在服务器可用的缓存空间不足以缓存所述N个数据组中的所有数据的情况下,可以根据服务器的缓存上限,仅缓存所述N个数据组中每个数据组中的部分数据。基于数据的可替换性,当要读取的数据没有在本地缓存时,可以获取同一数据组中的其他已经缓存的数据,在缓存空间有限的情况下,提高了数据读取的缓存命中率,进而提高了数据读取的速度。
第二种缓存预读策略,分批次预读每个数据组中的数据。
本申请实施例中,可选的,所述将所述N个数据组的数据预读至缓存中,包括:
通过L批次缓存预读操作,将所述N个数据组的数据预读至所述缓存中,其中,在每批次缓存预读操作中,对所述N个数据组逐组执行数据的缓存预读。
本可选的实施方式中,服务器可以分批次预读每个数据组中的数据,以使在缓存预读的过程中,每个数据组均始终缓存有部分数据,从而避免先缓存预读完成一个数据组,在缓存预读下一个数据组时缓存空间不足的情况。
具体实现时,服务器可以将对所述N个数据组的缓存预读分为L个批次的缓存预读操作。在每一批次的缓存预读操作中,对所述N个数据组逐组执行数据的缓存预读,即在每个数据组中均缓存预读部分数据。
示例性的,所述N个数据组的数据以文件形式存在。假设服务器对应映射有3个数据组,分别为数据组1、数据组2和数据组3,其中,数据组1包括60个文件,数据组2包括80个文件,数据组3包括60个文件;服务器将对上述3个数据组的缓存预读操作可以分为60个批次或者大于60个批次进行。在每一批次的缓存预读操作中,分别读取数据组1、数据组2和数据组3中的1个文件;在60个批次的缓存预读操作完成时,数据组1和数据组3中的文件已经全部预读至缓存中,之后的缓存预读操作可以仅预读数据组2中的文件。
本可选的实施方式具有如下优点或有益效果:基于数据组是按照数据类别划分的,分批次预读每个数据组中的数据,一方面,可以在缓存预读的过程中,每个数据组始终均缓存有部分数据,这样基于数据的可替换性,可以提高数据读取的缓存命中率;另一方面,可以避免先缓存预读完成一个数据组,在缓存预读下一个数据组时缓存空间不足的情况,进而避免在数据读取过程中,未预读至缓存的数据组缓存命中率为0的情况。
可以理解的是,上述两种缓存预读策略可以单独执行,也可以同时执行。在一种可选的实施方式中,在通过L批次缓存预读操作,将所述N个数据组的数据预读至本地缓存的过程中,若某一数据组已经预读至本地缓存的数据量达到了该数据的可缓存数据量,在之后的批次中,则不再执行对该数据组中数据的缓存预读。具体缓存预读策略的选择可以根据实际情况决定,本申请实施例对此不作限定。
需要说明的是,终端和所述服务端执行的缓存预读操作的策略可以相同,区别在于服务器的缓存预读操作是针对所述M个数据组中的N个数据组进行的,而终端的缓存预读操作是针对所述M个数据组的每个数据组进行的。因而,终端的缓存预读操作的策略可以参照上述服务器的缓存预读操作的策略做适应性调整,为避免重复,在此不再赘述。
本申请实施例中,在数据读取的过程中,终端和服务器可以组成一个聚合缓存系统。具体的,在上述聚合缓存系统中,终端的本地缓存可以视为一个缓存模块,缓存系统中的每一个服务器的本地缓存可分别视为一个缓存模块。在数据读取的过程中,上述聚合缓存系统中的每个缓存模块内部,或者多个缓存模块之间均可以动态调整缓存模块中的数据,以使上述聚合缓存系统能够尽可能多的缓存数据,提高后续数据读取的缓存命中率。
具体实现时,上述数据读取的过程中可以按照数据读取周期进行,在每一数据读取周期中,终端可以遍历读取所述第一数据集中的每一个数据,且不重复读取数据。在一种实施方式中,所述数据处理方法可以应用于深度学习训练的场景中,上述数据读取周期可以表现为一次训练Epoch,本申请后文所述的数据读取周期均可以按照一次训练Epoch进行理解。可以理解的是,所述数据处理方法也可以应用于其他数据读取的场景中,具体可根据实际情况决定,本申请实施例在此不作具体限定。
下面对数据读取过程中涉及的缓存调整策略进行说明,上述缓存调整策略包括但不限于以下三种:动态缓存淘汰策略;静态缓存淘汰策略;多个数据集之间的缓存调整策略。在此以服务器的执行角度对上述缓存调整策略进行说明:
第一种缓存调整策略,动态缓存淘汰策略。
本申请实施例中,可选的,所述将所述N个数据组的数据预读至缓存中之后,所述方法还包括:
在当前数据读取周期中,若服务器的剩余缓存空间小于未读数据总量,删除所述缓存中的已读数据。
本可选的实施方式中,若服务器的缓存空间能够缓存所述N个数据组的全部数据,在当前数据读取周期中,可以不做缓存淘汰,即无需删除已读数据;若服务器的缓存空间不能缓存所述N个数据组的全部数据,服务器在数据读取的过程中,可以适应性地对缓存中的已读数据进行删除。
具体实现时,在当前数据读取周期中,通常情况下,若某一部分数据之前未被预读至缓存中时,服务器在读取这一部分数据时可以将其存入缓存中,以提高后续数据读取周期的缓存命中率。在服务器当前剩余的缓存空间不足以缓存剩余的所有未读数据的情况下,可能存在一部分之前未被预读至缓存中的未读数据仍然无法存入缓存,进而可能造成后续数据读取周期的缓存命中率降低。基于此,服务器在数据读取过程中,可以动态调整缓存中的数据,将缓存中的部分已读数据删除,以释放缓存空间提供给未读数据,提高后续数据读取周期的缓存命中率。基于在每一数据读取周期中不会重复读取数据的前提,将部分已读数据删除并不会影响当前数据读取周期的缓存命中率。
需要说明的是,在缓存中如何确定被删除的已读数据和如何删除已读数据的具体实现形式可根据实际情况决定。示例性的,若当前数据读取周期中,某部分已读数据在每一个数据读取周期均会被预读至缓存中,那么当前数据读取周期中将其删除,也不会影响后续数据读取周期中这部分已读数据的缓存命中率,因此可以优先删除这部分已读数据。本申请实施例对此不作具体限定。
本可选的实施方式具有如下优点或有益效果:在服务器的剩余缓存空间小于未读数据总量的情况下,删除服务器的缓存中的已读数据,以释放缓存空间提供给还未被读取的数据,提高后续数据读取的缓存命中率。
进一步的,可选的,删除的所述已读数据的总量小于或者等于所述未读数据总量。
本可选的实施方式中,服务器在删除已读数据时,若删除的已读数据的数据总量大于当前数据读取周期中未读数据的数据总量,即使当前数据读取周期中的所有未读数据均需要存入缓存中,仍然存在部分冗余的缓存空间,这样将会造成服务器的缓存中缓存的数据量不足,进而降低了后续数据读取的缓存命中率。
因而,在当前数据读取周期中,服务器可以基于删除的所述已读数据的总量小于或者等于所述未读数据总量的原则,执行对已读数据的删除。这样,随着当前数据读取周期中未读数据的数据量的减少,服务器需要删除的数据也会减少,进而可以保证服务器的缓存中缓存了足够的数据,提高后续数据读取的缓存命中率。
需要说明的是,终端在当前数据读取周期中,同样可以执行上述动态缓存淘汰策略,区别在于,服务器的动态缓存淘汰是针对所述第一数据集中与其存在映射关系N个数据组进行的,而终端的动态缓存淘汰是针对所述第一数据集中的每个数据组进行的。因而,终端的动态缓存淘汰策略可以参照上述服务器的动态缓存淘汰策略做适应性调整,为避免重复,在此不再赘述。
第二种缓存调整策略,静态缓存淘汰策略。
本申请实施例中,可选的,所述将所述N个数据组的数据预读至缓存中之后,所述方法还包括:
若接收到终端发送的第一目标数据集合,则删除所述缓存中属于所述第一目标数据集合的数据,所述第一目标数据集合为终端当前已经缓存的数据集合;
将第二目标数据集合预读至服务器的缓存中,所述第二目标数据集合为所述N个数据组中未被终端和服务器缓存的数据。
本可选的实施方式中,服务器可以结合终端缓存的数据,对本地缓存中的数据进行删除,以实现所述聚合缓存系统中的缓存平衡。终端和服务器不会缓存相同的数据,使得缓存系统能够有效缓存更多的数据,提高缓存资源的利用效率的同时,也能够提高数据读取时的缓存命中率。
具体实现时,终端可以将第一目标数据集合,即终端当前已经缓存的数据集合发送至缓存系统。示例性的,所述第一数据集的数据以文件形式存在,终端可以将其当前已经缓存的文件名称发送至缓存系统。数据缓存系统的缓存管理器可以将上述文件名称转发至各个服务器,服务器分别确定与其存在映射关系的文件名称,并将其删除。
需要说明的是,终端发送所述第一目标数据集合的时机可以是在一个数据读取周期结束之后,也可以在一个数据读取周期开始时,还可以是一个数据读取周期进行中,具体可根据实际情况决定,本申请实施例在此不作具体限定。
本可选的实施方式中,所述服务端在删除终端已经缓存的数据之后,可以重新预读当前其本地缓存和终端的缓存均未缓存的数据,具体的缓存预读策略可以参照上述实施例中对缓存预读策略的说明,为避免重复,在此不再赘述。
本可选的实施方式具有如下优点或有益效果:服务器可以结合终端缓存的数据,对本地缓存中的数据进行删除,使得终端和服务器不会缓存相同的数据,终端和服务器组成的聚合缓存系统能够有效缓存更多的数据,提高缓存资源的利用效率的同时,也能够提高数据读取时的缓存命中率。
第三种缓存调整策略,多个数据集之间的缓存调整策略
本申请实施例中,可选的,在所述将所述N个数据组的数据预读至缓存中之后,所述方法还包括:
每间隔预设时间周期,根据缓存系统当前可缓存的所述第一数据集的最小数据量,确定服务器当前可缓存的所述N个数据组的最小数据量;
其中,所述缓存系统当前可缓存的所述第一数据集的最小数据量,根据所述第一数据集的数据总量、终端在上一时间周期的数据读取速度和服务器在上一时间周期的数据读取速度确定。
本可选的实施方式中,若缓存系统存在多个数据集同时读取的情况下,可以通过动态调整每一数据集可缓存的最小数据量,在缓存系统不能缓存多个数据集的全部数据的情况下,使每一数据集的数据读取的缓存命中率尽量提高。
可以这样理解,以所述第一数据集为例,在进行数据读取的过程中,从终端的本地缓存读取数据的速度是最快的,若终端的本地缓存中没有缓存被读取的数据,终端将会通过网络到缓存系统中读取数据。在缓存系统缓存空间有限的情况下,由于缓存系统的数据读取速度慢于终端的数据读取速度,缓存系统需要为将所述第一数据集预留一部分缓存空间,以使在数据读取的过程中,能够通过动态调整缓存中的数据来最大可能的满足终端对所述第一数据集的数据读取请求。上述缓存系统当前可缓存的所述第一数据集的最小数据量,即为缓存系统需要提供给所述第一数据集缓存的最小缓存空间。
进一步的,可选的,确定缓存系统当前可缓存的所述第一数据集的最小数据量,包括:
按照以下计算式缓存系统当前可缓存的所述第一数据集的最小数据量:
其中,R为缓存系统当前可缓存的所述第一数据集的数据量,S为所述第一数据集的数据总量,C为终端在上一个时间周期的数据读取速度,Q为所述缓存系统在上一个时间周期的数据读取速度。
具体实现时,缓存系统可以获取一个预设时间周期内终端的数据读取速度C(即缓存命中率),以及获取一个预设时间周期内缓存系统的数据读取速度Q,即最大每秒查询率(Queries-per-second,QPS)。那么,若要保证所述第一数据集的数据读取请求的缓存命中率最大,需要满足:
那么缓存系统需要提供给所述第一数据集使用的缓存空间R可以表示为:
本可选的实施方式中,服务器可以根据与其存在映射关系的N个数据组在所述第一数据集中的权重,确定其当前可缓存的所述N个数据组的最小数据量。具体的,服务器还可以根据所述N个数据组中每个数据组的权重,确定每个数据组可缓存的最小数据量。
本可选的实施方式具有如下优点或有益效果:当缓存系统存在多个数据集同时缓存的情况下,可以通过终端和缓存系统的数据读取速度,在数据读取过程中,动态调整每一个数据集可使用的缓存空间,进而提高整个缓存系统的缓存命中率。
可以理解的是,上述三种缓存调整策略可以单独执行,也可以同时执行。具体可以根据实际情况决定,本申请实施例对此不作限定。
下面对基于上述数据缓存策略的数据读取策略进行说明。
从终端的执行角度:
第一种情况,在接收到对第一数据集的第一数据的数据读取请求,且终端的本地缓存中缓存有所述第一数据的情况下,可以直接在本地缓存中读取所述第一数据。
第二种情况,在接收到对第一数据集的第一数据的数据读取请求,且终端的本地缓存中未缓存有所述第一数据但缓存有第二数据的情况下,在所述第二数据与所述第一数据属于同一类别,或者说所述第一数据和所述第二数据属于同一数据组时,可以在本地缓存中读取所述第二数据。
第三种情况,在接收到对所述第一数据集的第一数据的数据读取请求,且终端的本地缓存中未缓存有所述第一数据所属的数据组的情况下,可以通过网络向服务器发送对所述第一数据集的第一数据的数据读取请求,在服务器的缓存中查找是否缓存有所述第一数据或者所述第一数据同类别的其他数据。
从服务器的执行角度:
第一种情况,在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中缓存有所述第一数据的情况下,可以直接在本地缓存中读取所述第一数据。
第二种情况,在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,在所述第二数据与所述第一数据属于同一类别,或者说所述第一数据和所述第二数据属于同一数据组时,可以在本地缓存中读取所述第二数据。
第三种情况,在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据所属的数据组的情况下,可以向后端存储系统发送对所述第一数据集的第一数据的数据读取请求,在后端存储系统中查找所述第一数据或者所述第一数据同类别的其他数据。
请参见图2,图2是本申请的实施例提供的一种数据处理方法,所述方法可以由终端执行,所述方法包括:
S201、向Q个服务器发送针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,Q和M为正整数;
S202、从所述Q个服务器获取所述M个数据组的数据,每个服务器的缓存中存储有所述M个数据组中的至少一个数据组的数据;
S203、将所述M个数据组的数据预读至缓存中。
可选的,所述将所述M个数据组的数据预读至缓存中,包括:
根据终端的缓存上限,确定所述每个所述数据组的可缓存数据量;
根据每个所述数据组的可缓存数据量,将所述M个数据组的数据预读至终端缓存中。
可选的,所述将所述M个数据组的数据预读至缓存中,包括:
通过T批次缓存预读操作,将所述M个数据组预读至终端缓存中,其中,在每批次缓存预读操作中,对每个所述数据组逐组执行数据的缓存预读。
可选的,所述将所述M个数据组的数据预读至缓存中之后,所述方法还包括:
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中缓存有所述第一数据的情况下,获取所述第一数据;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取所述第二数据,所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器发送对所述第一数据集的第一数据的数据读取请求。
需要说明的是,本申请实施例作为与上述方法实施例对应的终端的实施方式,因此,可以参见上述方法实施例中的相关说明,且可以达到相同的有益效果。为了避免重复说明,在此不再赘述。
为方便理解,下面对本申请实施例的一种具体的实施方式进行说明:
一、数据集预处理
1)对第一数据集分组:
计算第一数据集中数据类别的数量,将属于同一数据类别的文件划分至同一数据组。这里所述的同一数据类别的文件是指文件对应的特征标签相同,示例性的,图片内容是猫的可以划分为一个数据组,图片内容是狗的可以划分为一个数据组。
如果第一数据集的数据组的数量少于缓存系统中服务器的数量,可以将每个数据组再按照更细的划分标准划分为更小的数据组,以保证每个服务器至少能够对应缓存一个数据组的文件。
2)生成第一数据集的映射表
为了避免不同的服务器缓存了第一数据集中相同的文件,可以将第一数据集的不同数据组交给不同的服务器执行缓存和管理。具体的,可以随机为每个数据组确定其对应的服务器,并建立第一数据集的映射表。
二、聚合缓存
聚合缓存系统可以包括终端的缓存模块和服务器的缓存模块两个部分。
1)缓存预读
用户在终端进行第一数据集的训练时,可以触发对第一数据集数据的缓存预读:终端可以将要第一数据集的名称告诉终端的缓存模块,以使服务其开始对第一数据集的缓存预读,同时终端也可以开始对第一数据集的缓存预读,终端与服务器的缓存预读方式相同,区别在于,终端需要预读第一数据集中每个数据组的文件,而服务器需要预读第一数据集中与其存在映射关系的N个数据组的文件。下面从服务器的角度进行说明:
终端将通知缓存系统中所有服务器的缓存模块第一数据集的名称,服务器的缓存模块收到消息后,可以从后端存储系统中读取第一数据集的映射表,确定第一数据集中分配给自己的N个数据组信息,并开始将N个数据组中的文件预读至本地缓存中。具体的缓存预读策略如下:
a.在缓存预读过程中,每个数据组执行缓存预读的文件数不同。服务器可以根据各个数据组中文件总大小,按照比例来控制各个数据组中需要执行缓存预读的文件数量上限。
b.服务器按照批次对每个数据组驻组执行缓存预读,每一批次的缓存预读操作中,可以读取每个数据组中的0个或1个文件,当某一数据组中缓存的数据量达到可缓存数据量的上限时,服务器将不再对该数据组中的文件执行缓存预读。
c.如果第一数据集之前已经被缓存,服务器不需要执行缓存预读。
2)缓存淘汰
终端的缓存模块和每个服务器的缓存模块在启动时均分配有可使用的缓存空间上限。若单个缓存模块能缓存第一数据集中其对应缓存的所有文件,则在数据读取过程中,可以不执行缓存淘汰;若单个缓存模块不能缓存第一数据集中其对应缓存的所有文件时,服务器可以在数据读取过程中,动态淘汰缓存模块中已经读取过的数据,具体策略如下:
a.在存在多个数据集同时训练的情况下,数据集间可以通过缓存透明性动态地调整各个数据集可以使用的缓存空间。
b.在第一数据集内,动态淘汰的已读文件总量小于或者等于未读文件数的总量。这样,随着未读文件数的减少,服务器淘汰的已读文件数也会减少,最终保证服务器的缓存模块中缓存了足够的数据,提高后续数据读取时的缓存命中率。
3)数据替换
在对第一数据集进行训练时,数据具有可替换性,即使用同一类别(属于同一数据组)的文件替换当前将要读取的文件,不会影响训练结果的精度。基于此,当需要读取的文件没有存入服务器的缓存模块时,可以获取同一数据组内的其他已经缓存的文件。
4)新的Epoch
当开始新的Epoch时,终端可以向服务器发送当前自己已缓存的文件名。服务器可以淘汰终端已经缓存的文件,并预读本地缓存模块和终端的缓存模块均未缓存的文件到缓存中。
三、缓存透明性
如果一个缓存系统能在小于第一数据集的数据总量的缓存空间内使针对所述第一数据集的所有读取请求都能命中,可以称该缓存系统具有缓存透明性。缓存系统可以利用缓存透明性在存在多个数据集同时缓存的情况下,动态调整每一个数据集可占用的缓存空间,使缓存系统的缓存命中率尽可能的提高。
具体的,假设训练过程中,终端的数据读取速度为C,服务器的数据读取速度为Q,即最大QPS,第一数据集的数据总量为S,第一数据集可占用的缓存空间为R,那么要实现缓存透明性需要满足:
即:
本申请的上述实施例具有如下优点或有益效果:服务器响应于终端发送的对第一数据集的缓存预读请求,在所述第一数据集未被缓存的情况下,将所述第一数据集中的部分数据组的数据预读至服务器的缓存中。这样,通过将所述第一数据集的不同数据组交给不同的服务器执行缓存和管理,可以保证不同服务器上执行不同数据的缓存,从而避免了多个服务器上缓存有相同数据的情况,提高缓存资源的利用率。
本申请还提供了一种数据处理装置。
如图3所示,数据处理装置300包括:
接收模块301,用于接收终端发送的针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,M为正整数;
第一确定模块302,用于确定所述M个数据组中的N个数据组,N为小于M的正整数;
第一预读模块303,用于将所述N个数据组的数据预读至缓存中。
可选的,第一确定模块302具体用于:
根据预设映射表,确定所述M个数据组中与服务器对应的N个数据组,所述预设映射表中存储有数据组与服务器之间的对应关系。
可选的,第一预读模块303包括:
第一确定单元,用于根据服务器的缓存上限,确定所述N个数据组中每个数据组的可缓存数据量;
第一预读单元,用于根据所述N个数据组中每个数据组的可缓存数据量,将所述N个数据组的数据预读至所述缓存中。
可选的,第一预读模块303包括:
第二预读单元,用于通过L批次缓存预读操作,将所述N个数据组的数据预读至所述缓存中,其中,在每批次缓存预读操作中,对所述N个数据组逐组执行数据的缓存预读。
可选的,数据处理装置300还包括:
删除模块,用于若接收到终端发送的第一目标数据集合,则删除所述缓存中属于所述第一目标数据集合的数据,所述第一目标数据集合为终端当前已经缓存的数据集合;
第二预读模块,用于将第二目标数据集合预读至服务器的缓存中,所述第二目标数据集合为所述N个数据组中未被终端和服务器缓存的数据。
可选的,数据处理装置300还包括:
第二确定模块,用于每间隔预设时间周期,根据缓存系统当前可缓存的所述第一数据集的最小数据量,确定服务器当前可缓存的所述N个数据组的最小数据量;
其中,所述缓存系统当前可缓存的所述第一数据集的最小数据量,根据所述第一数据集的数据总量、终端在上一时间周期的数据读取速度和所述缓存系统在上一时间周期的数据读取速度确定。
可选的,所述第二确定模块具体用于:
按照以下计算式缓存系统当前可缓存的所述第一数据集的最小数据量:
其中,R为缓存系统当前可缓存的所述第一数据集的数据量,S为所述第一数据集的数据总量,C为终端在上一个时间周期的数据读取速度,Q为所述缓存系统在上一个时间周期的数据读取速度。
可选的,数据处理装置300还包括第一读取模块,所述第一读取模块具体用于:
在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中缓存有所述第一数据的情况下,获取并向终端发送所述第一数据;
在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取并向终端发送所述第二数据;所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器的后端存储系统发送对所述第一数据集的第一数据的数据读取请求。
本申请的上述实施例中,数据处理装置300可实现图1所示的方法实施例中实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
本申请还提供了一种数据处理装置。
如图4所示,数据处理装置400包括:
发送模块401,用于向Q个服务器发送针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,Q和M为正整数;
获取模块402,用于从所述Q个服务器获取所述M个数据组的数据,每个服务器的缓存中存储有所述M个数据组中的至少一个数据组的数据;
第三预读模块403,用于将所述M个数据组的数据预读至缓存中。
可选的,第三预读模块403包括:
第二确定单元,用于根据终端的缓存上限,确定所述每个所述数据组的可缓存数据量;
第三预读单元,用于根据每个所述数据组的可缓存数据量,将所述M个数据组的数据预读至终端缓存中。
可选的,第三预读模块403包括:
第四预读单元,用于通过T批次缓存预读操作,将所述M个数据组预读至终端缓存中,其中,在每批次缓存预读操作中,对每个所述数据组逐组执行数据的缓存预读。
可选的,数据处理装置400还包括第二读取模块,所述第二读取模块具体用于:
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中缓存有所述第一数据的情况下,获取所述第一数据;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取所述第二数据,所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器发送对所述第一数据集的第一数据的数据读取请求。
本申请的上述实施例中,数据处理装置400可实现图2所示的方法实施例中实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本申请的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如所述数据处理方法。例如,在一些实施例中,所述数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的所述数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行所述数据处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括终端和服务器。终端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有终端-服务器关系的计算机程序来产生终端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (22)

1.一种数据处理方法,由服务器执行,所述方法包括:
接收终端发送的针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,M为正整数;
确定所述M个数据组中的N个数据组,N为小于M的正整数;
将所述N个数据组的数据预读至缓存中;
在所述将所述N个数据组的数据预读至缓存中之后,所述方法还包括:
每间隔预设时间周期,根据缓存系统当前可缓存的所述第一数据集的最小数据量,确定服务器当前可缓存的所述N个数据组的最小数据量;
其中,所述缓存系统当前可缓存的所述第一数据集的最小数据量,根据所述第一数据集的数据总量、终端在上一时间周期的数据读取速度和所述缓存系统在上一时间周期的数据读取速度确定。
2.根据权利要求1所述的方法,其中,所述确定所述M个数据组中的N个数据组,包括:
根据预设映射表,确定所述M个数据组中与服务器对应的N个数据组,所述预设映射表中存储有数据组与服务器之间的对应关系。
3.根据权利要求1所述的方法,其中,所述将所述N个数据组的数据预读至缓存中,包括:
根据服务器的缓存上限,确定所述N个数据组中每个数据组的可缓存数据量;
根据所述N个数据组中每个数据组的可缓存数据量,将所述N个数据组的数据预读至所述缓存中。
4.根据权利要求1至3任一项所述的方法,其中,所述将所述N个数据组的数据预读至缓存中,包括:
通过L批次缓存预读操作,将所述N个数据组的数据预读至所述缓存中,其中,在每批次缓存预读操作中,对所述N个数据组逐组执行数据的缓存预读。
5.根据权利要求1所述的方法,其中,所述将所述N个数据组的数据预读至缓存中之后,所述方法还包括:
若接收到终端发送的第一目标数据集合,则删除所述缓存中属于所述第一目标数据集合的数据,所述第一目标数据集合为终端当前已经缓存的数据集合;
将第二目标数据集合预读至服务器的缓存中,所述第二目标数据集合为所述N个数据组中未被终端和服务器缓存的数据。
6.根据权利要求1所述的方法,其中,确定缓存系统当前可缓存的所述第一数据集的最小数据量,包括:
按照以下计算式计算缓存系统当前可缓存的所述第一数据集的最小数据量:
其中,R为缓存系统当前可缓存的所述第一数据集的数据量,S为所述第一数据集的数据总量,C为终端在上一个时间周期的数据读取速度,Q为所述缓存系统在上一个时间周期的数据读取速度。
7.根据权利要求1所述的方法,其中,所述将所述N个数据组的数据预读至缓存中之后,所述方法还包括:
在接收到终端发送的针对第一数据集的第一数据的数据读取请求,且服务器的缓存中缓存有所述第一数据的情况下,获取并向终端发送所述第一数据;
在接收到终端发送的针对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取并向终端发送所述第二数据;所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到终端发送的针对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器的后端存储系统发送对所述第一数据集的第一数据的数据读取请求。
8.一种数据处理方法,由终端执行,包括:
向Q个服务器发送针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,Q和M为正整数;
从所述Q个服务器获取所述M个数据组的数据,每个服务器的缓存中存储有所述M个数据组中的至少一个数据组的数据;
将所述M个数据组的数据预读至缓存中;
所述将所述M个数据组的部分或者全部数据预读至缓存中之后,所述方法还包括:在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中缓存有所述第一数据的情况下,获取所述第一数据;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取所述第二数据,所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器发送对所述第一数据集的第一数据的数据读取请求。
9.根据权利要求8所述的方法,其中,所述将所述M个数据组的部分或者全部数据预读至缓存中,包括:
根据终端的缓存上限,确定所述每个所述数据组的可缓存数据量;
根据每个所述数据组的可缓存数据量,将所述M个数据组的数据预读至终端缓存中。
10.根据权利要求8或9所述的方法,其中,所述将所述M个数据组的部分或者全部数据预读至缓存中,包括:
通过T批次缓存预读操作,将所述M个数据组预读至终端缓存中,其中,在每批次缓存预读操作中,对每个所述数据组逐组执行数据的缓存预读。
11.一种数据处理装置,所述装置包括:
接收模块,用于接收终端发送的针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,M为正整数;
第一确定模块,用于确定所述M个数据组中的N个数据组,N为小于M的正整数;
第一预读模块,用于将所述N个数据组的数据预读至缓存中;
所述装置还包括:
第二确定模块,用于每间隔预设时间周期,根据缓存系统当前可缓存的所述第一数据集的最小数据量,确定服务器当前可缓存的所述N个数据组的最小数据量;
其中,所述缓存系统当前可缓存的所述第一数据集的最小数据量,根据所述第一数据集的数据总量、终端在上一时间周期的数据读取速度和所述缓存系统在上一时间周期的数据读取速度确定。
12.根据权利要求11所述的装置,其中,所述第一确定模块具体用于:
根据预设映射表,确定所述M个数据组中与服务器对应的N个数据组,所述预设映射表中存储有数据组与服务器之间的对应关系。
13.根据权利要求11所述的装置,其中,所述第一预读模块包括:
第一确定单元,用于根据服务器的缓存上限,确定所述N个数据组中每个数据组的可缓存数据量;
第一预读单元,用于根据所述N个数据组中每个数据组的可缓存数据量,将所述N个数据组的数据预读至所述缓存中。
14.根据权利要求11至13任一项所述的装置,其中,所述第一预读模块包括:
第二预读单元,用于通过L批次缓存预读操作,将所述N个数据组的数据预读至所述缓存中,其中,在每批次缓存预读操作中,对所述N个数据组逐组执行数据的缓存预读。
15.根据权利要求11所述的装置,其中,所述装置还包括:
删除模块,用于若接收到终端发送的第一目标数据集合,则删除所述缓存中属于所述第一目标数据集合的数据,所述第一目标数据集合为终端当前已经缓存的数据集合;
第二预读模块,用于将第二目标数据集合预读至服务器的缓存中,所述第二目标数据集合为所述N个数据组中未被终端和服务器缓存的数据。
16.根据权利要求11所述的装置,其中,所述第二确定模块具体用于:
按照以下计算式计算缓存系统当前可缓存的所述第一数据集的最小数据量:
其中,R为缓存系统当前可缓存的所述第一数据集的数据量,S为所述第一数据集的数据总量,C为终端在上一个时间周期的数据读取速度,Q为所述缓存系统在上一个时间周期的数据读取速度。
17.根据权利要求11所述的装置,其中,所述装置还包括第一读取模块,所述第一读取模块具体用于:
在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中缓存有所述第一数据的情况下,获取并向终端发送所述第一数据;
在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取并向终端发送所述第二数据;所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到终端发送的对第一数据集的第一数据的数据读取请求,且服务器的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器的后端存储系统发送对所述第一数据集的第一数据的数据读取请求。
18.一种数据处理装置,所述装置包括:
发送模块,用于向Q个服务器发送针对第一数据集的缓存预读请求,所述第一数据集包括M个数据组,Q和M为正整数;
获取模块,用于从所述Q个服务器获取所述M个数据组的数据,每个服务器的缓存中存储有所述M个数据组中的至少一个数据组的数据;
第三预读模块,用于将所述M个数据组的数据预读至缓存中;
所述装置还包括第二读取模块,所述第二读取模块具体用于:
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中缓存有所述第一数据的情况下,获取所述第一数据;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据但缓存有第二数据的情况下,获取所述第二数据,所述第一数据和所述第二数据属于所述第一数据集中的同一数据组;
在接收到对第一数据集的第一数据的数据读取请求,且终端的缓存中未缓存有所述第一数据所属的数据组的情况下,向服务器发送对所述第一数据集的第一数据的数据读取请求。
19.根据权利要求18所述的装置,其中,所述第三预读模块包括:
第二确定单元,用于根据终端的缓存上限,确定所述每个所述数据组的可缓存数据量;
第三预读单元,用于根据每个所述数据组的可缓存数据量,将所述M个数据组的数据预读至终端缓存中。
20.根据权利要求18或19所述的装置,其中,所述第三预读模块包括:
第四预读单元,用于通过T批次缓存预读操作,将所述M个数据组预读至终端缓存中,其中,在每批次缓存预读操作中,对每个所述数据组逐组执行数据的缓存预读。
21. 一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10中任一项所述的方法。
22.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-10中任一项所述的方法。
CN202011560871.0A 2020-12-25 2020-12-25 数据处理方法、装置、电子设备及可读存储介质 Active CN112559574B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011560871.0A CN112559574B (zh) 2020-12-25 2020-12-25 数据处理方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011560871.0A CN112559574B (zh) 2020-12-25 2020-12-25 数据处理方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN112559574A CN112559574A (zh) 2021-03-26
CN112559574B true CN112559574B (zh) 2023-10-13

Family

ID=75032613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011560871.0A Active CN112559574B (zh) 2020-12-25 2020-12-25 数据处理方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN112559574B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541985A (zh) * 2011-10-25 2012-07-04 曙光信息产业(北京)有限公司 一种分布式文件系统中客户端目录缓存的组织方法
CN103916465A (zh) * 2014-03-21 2014-07-09 中国科学院计算技术研究所 一种基于分布式文件系统的数据预读装置及其方法
CN109739570A (zh) * 2018-12-24 2019-05-10 新华三技术有限公司 一种数据读取方法、服务器控制设备、服务器及计算机可读存储介质
CN110471894A (zh) * 2019-07-22 2019-11-19 腾讯科技(深圳)有限公司 一种数据预取方法、装置、终端及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005010970A (ja) * 2003-06-18 2005-01-13 Hitachi Ltd 分散キャッシュ制御方法、ネットワークシステムおよび当該ネットワークに用いられる制御サーバないしルータ
US7831772B2 (en) * 2006-12-12 2010-11-09 Sybase, Inc. System and methodology providing multiple heterogeneous buffer caches
CN106657182B (zh) * 2015-10-30 2020-10-27 阿里巴巴集团控股有限公司 云端文件处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541985A (zh) * 2011-10-25 2012-07-04 曙光信息产业(北京)有限公司 一种分布式文件系统中客户端目录缓存的组织方法
CN103916465A (zh) * 2014-03-21 2014-07-09 中国科学院计算技术研究所 一种基于分布式文件系统的数据预读装置及其方法
CN109739570A (zh) * 2018-12-24 2019-05-10 新华三技术有限公司 一种数据读取方法、服务器控制设备、服务器及计算机可读存储介质
CN110471894A (zh) * 2019-07-22 2019-11-19 腾讯科技(深圳)有限公司 一种数据预取方法、装置、终端及存储介质

Also Published As

Publication number Publication date
CN112559574A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
US10198363B2 (en) Reducing data I/O using in-memory data structures
CN107066397B (zh) 用于管理数据迁移的方法、系统和存储介质
WO2015078219A1 (zh) 一种信息缓存方法、装置和通信设备
CN105589664A (zh) 虚拟存储高速传输方法
CN103607312A (zh) 用于服务器系统的数据请求处理方法及系统
US11593268B2 (en) Method, electronic device and computer program product for managing cache
EP3115904B1 (en) Method for managing a distributed cache
CN110399096A (zh) 分布式文件系统元数据缓存重删的方法、装置以及设备
WO2022178869A1 (zh) 一种缓存替换方法和装置
CN113127382A (zh) 用于追加写的数据读取方法、装置、设备和介质
US10747773B2 (en) Database management system, computer, and database management method
CN113094392A (zh) 数据缓存的方法和装置
CN112631504A (zh) 利用堆外内存实现本地缓存的方法和装置
CN107748649B (zh) 一种缓存数据的方法和装置
WO2023165543A1 (zh) 共享缓存的管理方法、装置及存储介质
CN112559574B (zh) 数据处理方法、装置、电子设备及可读存储介质
CN115665159B (zh) 一种大数据环境下的元数据管理方法及系统
CN113010535A (zh) 缓存数据的更新方法、装置、设备和存储介质
US8566521B2 (en) Implementing cache offloading
CN115712388A (zh) 固态盘的数据存储方法、装置、设备及存储介质
CN111427920B (zh) 数据采集方法、装置、系统、计算机设备及存储介质
US20130179533A1 (en) Data storage control system, data storage control method, and data storage control program
CN113051244A (zh) 数据访问方法和装置、数据获取方法和装置
CN112989250B (zh) 一种Web服务响应方法、装置及电子设备
CN116107926B (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