1.本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法。
背景技术:2.随着计算机技术的不断发展,不同的企业在进行数据存储时,对于存储介质也有不同的要求,一些企业为了节省存储成本,会选择成本较低、同时使用寿命也相对较短的存储介质。而使用寿命较短的存储介质一般具有相对较少的读写次数,随着读写次数的增加该存储介质的使用寿命也会随之衰减,因此,如何提供的一种能够保证存储介质正常工作,且降低存储介质的使用寿命衰减速度的方法,成为亟需解决的问题。
技术实现要素:3.有鉴于此,本说明书实施例提供了数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,一种计算机可读存储介质,一种计算机程序,以解决现有技术中存在的技术缺陷。
4.根据本说明书实施例的第一方面,提供了一种数据处理方法,包括:
5.接收数据存储请求,所述数据存储请求中携带有初始待存储数据;
6.确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;
7.在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据。
8.根据本说明书实施例的第二方面,提供了一种数据处理装置,包括:
9.接收模块,被配置为接收数据存储请求,所述数据存储请求中携带有初始待存储数据;
10.缓存模块,被配置为确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;
11.存储模块,被配置为在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据。
12.根据本说明书实施例的第三方面,提供了一种数据处理方法,应用于第一类型数据存储模块,包括:
13.接收所述目标待存储数据,其中,所述目标待存储数据为上述数据处理方法中的目标待存储数据,所述第一类型数据存储模块为上述数据处理方法中的第一类型数据存储模块;
14.为所述目标待存储数据确定对应的初始元数据,并基于所述目标待存储数据的数据格式,为所述目标待存储数据以及对应的元数据确定数据存储单元;
15.基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据;
16.将所述目标待存储数据以及对应的目标元数据,存储至所述数据存储单元。
17.根据本说明书实施例的第四方面,提供了一种数据处理装置,应用于第一类型数据存储模块,包括:
18.接收模块,被配置为接收所述目标待存储数据,其中,所述目标待存储数据为上述数据处理方法中的目标待存储数据,所述第一类型数据存储模块为上述数据处理方法中的第一类型数据存储模块;
19.确定模块,被配置为为所述目标待存储数据确定对应的初始元数据,并基于所述目标待存储数据的数据格式,为所述目标待存储数据以及对应的元数据确定数据存储单元;
20.转换模块,被配置为基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据;
21.存储模块,被配置为将所述目标待存储数据以及对应的目标元数据,存储至所述数据存储单元。
22.根据本说明书实施例的第五方面,提供了一种数据处理系统,数据处理模块,第一类型数据存储模块,其中,
23.所述数据处理模块,被配置为接收数据存储请求,所述数据存储请求中携带有初始待存储数据;确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据发送至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据;
24.所述第一类型数据存储模块,被配置为接收所述数据处理模块发送的所述目标待存储数据,并对所述目标待存储数据进行存储。
25.根据本说明书实施例的第六方面,提供了一种计算设备,包括:
26.存储器和处理器;
27.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
28.根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
29.根据本说明书实施例的第八方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。
30.本说明书提供的数据处理方法,包括:接收数据存储请求,所述数据存储请求中携带有初始待存储数据;确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据。
31.具体地,该方法在接收到初始待存储数据时,会在该初始待存储数据的数据类型满足预设缓存条件的情况下,并不会立刻将初始待存储数据写入到第一类型数据存储模块
中,而是对该初始待存储数据进行缓存处理,从而避免了由于频繁的对第一类型数据存储模块进行数据写入,造成第一类型数据存储模块的使用寿命较短的问题,从而提高了第一类型数据存储模块的使用寿命。并且,在当前待存储数据满足预设存储条件的情况下,将缓存的当前待存储数据写入至第一类型数据存储模块,保证了第一类型数据存储模块进行数据存储工作。从而实现了在保证第一类型数据存储模块正常工作的同时,降低第一类型数据存储模块的使用寿命衰减速度。
附图说明
32.图1是本说明书一个实施例提供的一种数据处理系统的结构示意图;
33.图2是本说明书一个实施例提供的一种数据处理系统的处理过程流程图;
34.图3是本说明书一个实施例提供的一种tlc数据存储格式的示意图;
35.图4是本说明书一个实施例提供的一种数据处理系统中qlc的数据存储格式的示意图;
36.图5是本说明书一个实施例提供的一种数据处理方法的流程图;
37.图6是本说明书一个实施例提供的另一种数据处理方法的流程图;
38.图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
39.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
40.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
41.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
42.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
43.chunk:是指一种分布式存储系统的单机引擎上的文件切块单位。
44.iu:是指ssd ftl映射表的indirection unit数据结构。
45.op:是指每块ssd(固态硬盘)需要额外预留一部分nand flash空间用来内部gc搬移数据使用。
46.wa:是指ssd的写放大系数。在完全随机写模式下,wa与op之间有一个固定的曲线关系,严格顺序写的wa永远是1,但是真实世界里是不存在严格意义的顺序写的,所以更多的时候,需要关注随机写io pattern下的wa。
47.dwpd:(diskful writes per day)每日整盘写入次数,指在预期寿命内可每日完整写入ssd固态硬盘所有容量的次数。
48.ftl:闪存转换层(ftl)是闪存控制器其中一个最重要的方面。通过将主机的逻辑地址转换为闪存上的物理地址,可以使ssd进行磨损平衡。
49.indirection unit:是指ftl层用来管理物理介质上数据与逻辑地址数据映射关系的最小管理单元。
50.nand flash:nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。
51.gc:是(garbage collection,垃圾回收)的缩写,是固态硬盘(ssd)的一个基本技术,它对ssd的性能和寿命有直接的影响。
52.iopattern:是指io工作负载的模式特征,一般用io的大小、访问位置、访问时序、读写混合的比例等信息描述。
53.qlc ssd(quad level cell ssd):一种固态硬盘(ssd),每个单元可储存4bit数据。
54.tlc ssd(triple level cell ssd):一种固态硬盘(ssd),每个单元可储存3bit数据。
55.随着计算机技术的不断发展,不同的企业对于存储介质也有不同的要求,一些企业为了节省存储成本,会选择成本较低、同时使用寿命也相对较短的存储介质。而使用寿命较短的存储介质一般具有相对较少的读写次数,随着读写次数的增加该存储介质的使用寿命也会随之衰减;其中,该存储介质可以理解为用于存储数据的固态硬盘;例如,该存储介质可以为qlc ssd;
56.而在云存储场景中,一些企业会采用tlc ssd固态硬盘进行数据存储,但是,该tlc ssd的成本较高,因此,一些企业开始考虑在云存储场景中采用qlc ssd,该qlc ssd在成本上相对于tlc ssd具有一定的优势,但是,虽然qlc ssd在成本上更具优势,但是其硬件设计决定其的使用寿命相对tlc ssd变得更短。如果不做特殊的使用改进,不合适的使用场景或者不恰当的使用方式将浪费掉qlc ssd的成本优势。
57.基于此,本说明书提供一种使用qlc ssd的方案,该方案提供了一种固态硬盘,该固态硬盘是一种二合一ssd(固态硬盘),在单个固态硬盘上结合了3d xpoint(一种存储技术,采用3d xpoint存储技术的一类产品的统称为optane)内存和qlc nand闪存(采用qlc介质的nand flash)。
58.在该方案中,该固态硬盘同时使用了optane介质和qlc介质,其中optane介质提供高速小块随机写性能,qlc介质提供更大的容量空间,以降低成本。
59.但是,该固态硬盘方案的缺点是:optane和qlc两种介质集成在一块盘上,用户不能根据实际需求灵活配置optane和qlc两种介质的空间容量比例;同时,用户也无法单独使用其中一种介质,从而导致optane和qlc两种介质的强耦合性。
60.基于此,在本说明书中,提供了两种数据处理方法,本说明书同时涉及一种数据处理系统、一种数据处理装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。
61.图1示出了根据本说明书一个实施例提供的一种数据处理系统的结构示意图,该
系统包括数据处理模块104,第一类型数据存储模块106,其中,
62.所述数据处理模块104,被配置为接收数据存储请求,所述数据存储请求中携带有初始待存储数据;确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据发送至第一类型数据存储模块106,其中,所述当前待存储数据包括所述初始待存储数据。
63.所述第一类型数据存储模块106,被配置为接收所述数据处理模块104发送的所述目标待存储数据,并对所述目标待存储数据进行存储。
64.其中,该数据处理模块104可以理解为数据处理系统中对数据进行处理的模块;在实际应用中,该数据处理模块104可以为cpu、程序、运行在cpu上的代码、编译后的代码等等,本说明书对此不作具体限制。例如,该数据处理模块104可以为块存储服务(block server)。
65.该第一类型数据存储模块106可以理解为数据处理系统中用于存储目标待存储数据的模块;需要说明的是,该第一类型数据存储模块106具有成本较低、但使用寿命相对较短、性能相对较低等特性,例如,该第一类型数据存储模块106可以为qlc ssd。
66.该数据存储请求可以理解为数据存储请求方102发送的、用于指示该数据处理模块104对数据进行处理的请求。例如,该数据存储请求可以为io请求。
67.该数据存储请求方102可以理解为需要对数据进行存储的模块,在实际应用中,该数据存储请求方102包括但不限于终端、客户端、虚拟机、安全容器、服务器、数据库等等。
68.初始待存储数据可以理解为数据处理模块104接收到的、需要进行处理的数据,需要说明的是,该初始待存储数据可以为任意一种类型的数据,本说明书对此不作具体限定,例如,该初始待存储数据可以为多媒体数据、文件、代码数据等。对应的,该目标待存储数据可以理解为对初始待存储数据进行处理后获得的数据。在实际应用中,为了避免频繁的对第一类型数据存储模块106进行数据写入,导致该第一类型数据存储模块106的使用寿命降低,该数据处理系统会通过数据处理模块104对接收到的数据进行缓存和积攒;当缓存的数据的大小,大于预设大小阈值的情况下,该数据处理模块104会对缓存的数据进行数据处理(该数据处理包括但限于数据拆分、数据ec计算、数据压缩等),从而获得能够存储至第一类型数据存储模块106的数据。
69.在实际应用中,该数据存储系统可以应用在不同的场景中,而当数据存储系统应用于不同场景的情况下,该数据处理模块104、第一类型数据存储模块106也不同。具体地,在数据存储系统应用于分布式存储场景时,该数据存储系统可以理解为分布式存储系统,对应的,该数据处理模块104可以理解为分布式存储系统对数据进行处理的服务器、分布式存储系统中运行有块存储服务的服务器等等;该第一类型数据存储模块106可以理解为分布式存储系统中用于存储目标待存储数据的存储资源池,其中,该存储资源池由多个存储介质构成;该存储介质可以为用于存储数据的介质,具体可以根据实际应用场景进行设置,例如,该存储介质可以为qlc ssd。而在存储介质为qlc ssd的情况下,该存储资源池可以为由多个qlc ssd构成的qlc资源池。需要说明的是,该第一类型数据存储模块106可以部署在独立于数据处理模块104之外的一台机器上,也即是该qlc资源池可以独立部署在一台机器
上。
70.此外,在另一种场景中,该数据存储系统可以为服务器中用于进行数据存储的系统;对应的,该数据处理模块104可以理解为该服务器中用于对数据进行处理的模块,例如,服务器上的cpu、服务器上运行的程序、服务器中的块存储服务等,本说明书对此不作具体限制。对应的,该第一类型数据存储模块106可以理解为该服务器上部署的用于存储数据的固态硬盘,例如,该第一类型数据存储模块106可以理解为qlc ssd。
71.具体地,本说明书提供的数据处理系统中的数据处理模块104,能够接收数据存储请求,其中该数据存储请求可以为数据存储请求方102发送的,且该数据存储请求中携带有初始待存储数据。
72.该数据处理模块104在接收到数据存储请求之后,能够确定该初始待存储数据的数据类型;该数据类型可以理解为表征该初始待存储数据的类型的信息,例如,该数据类型可以为该初始待存储数据的数据来源,不同数据来源的初始待存储数据是不同类型的数据。例如,客户端发送的初始待存储数据可以为客户端类型;服务器发送的初始待存储数据可以为服务器类型等等,或者,该数据类型还可以为多媒体数据类型、代码类型、日志类型、文件类型等等。
73.该数据处理模块104在确定初始待存储数据的数据类型之后,能够判断该数据类型是否满足预设缓存条件,若是(即确定数据类型满足预设缓存条件的情况下),该数据处理模块104则缓存该初始待存储数据。其中,该确定数据类型满足预设缓存条件,可以理解为该数据处理模块104在确定数据来源与预设数据来源为一致的情况下,则确定数据类型满足预设缓存条件,而该预设数据来源可以理解为预先设定的、需要对其发送的数据进行缓存处理的数据存储请求方102,例如,可以预先设定该数据处理模块104对服务器所发送的初始待存储数据进行缓存处理,并将该缓存数据写入至第一类型数据存储模块106。并且还可以预先设定该数据处理模块104对客户端发送的初始待存储数据不会进行缓存处理。
74.此外,该数据处理模块104缓存该初始待存储数据,可以理解为数据处理模块104将该初始待存储数据存储至内存;例如,该块存储服务端将该数据在内存中进行缓存和积攒。
75.该数据处理模块104在缓存该初始待存储数据之后,会在确定缓存的当前待存储数据满足预设存储条件的情况下,将该当前待存储数据转换为目标待存储数据。
76.其中,该确定缓存的当前待存储数据满足预设存储条件,可以理解为该数据处理模块104确定缓存的当前待存储数据的数据大小,并在该数据大小大于预设缓存阈值的情况下,确定缓存的当前待存储数据满足预设存储条件;其中,该预设缓存阈值可以根据实际应用场景进行设置,例如,该预设缓存阈值可以设置为1gb、2gb等。
77.或者,确定缓存的当前待存储数据满足预设存储条件,还可以理解为数据处理模块104在确定缓存的当前待存储数据的缓存时间,并在该缓存时间大于预设时间阈值的情况下,确定该缓存的当前待存储数据满足预设存储条件。
78.此外,在数据处理模块104将初始待存储数据存储至内存的情况下,该确定缓存的当前待存储数据满足预设存储条件,还可以理解为数据处理模块104确定内存中的当前待存储数据的内存占用率,并在该内存占用率大于预设比率阈值的情况下,确定内存中的当前待存储数据满足预设存储条件。
79.其中,该数据处理模块104将该当前待存储数据转换为目标待存储数据,可以理解为该数据处理模块104将确定该目标待存储数据所对应的数据格式;并基于该数据格式将当前待存储数据切分为至少两个目标待存储数据。其中,该数据格式可以根据实际应用场景进行设置,例如,该数据格式可以为64kb大小的数据块。也即是说,该数据处理模块104将缓存的当前待存储数据切分为多个64kb大小的数据块。
80.同时,该数据处理模块104基于数据格式将当前待存储数据切分为至少两个目标待存储数据的过程中,还可以首先基于数据格式对当前待存储数据进行切分,获得至少两个候选待存储数据;然后为每个候选待存储数据计算出对应的数据安全编码;之后基于至少两个候选待存储数据以及对应的所述数据安全编码,构成至少两个目标待存储数据。
81.当该数据处理模块104获取目标待存储数据之后,能够将该目标数据存储模块发送至该第一类型数据存储模块106。
82.而该第一类型数据存储模块106,在接收到数据处理模块104发送的目标待存储数据之后,能够为目标待存储数据计算出对应的初始元数据,并基于目标待存储数据的数据格式,为目标待存储数据以及对应的元数据分配对应的数据存储单元;
83.之后,该第一类型数据存储模块106能够基于该数据存储单元的空间大小,将初始元数据转换为目标元数据,其中,该基于该数据存储单元的空间大小将初始元数据转换为目标元数据的过程,可以为第一类型数据存储模块106从数据存储单元中确定初始元数据对应的元数据存储单元;然后基于该初始元数据的数据大小,从元数据存储单元中确定剩余存储空间;然后基于剩余存储空间的空间大小,为初始元数据确定对应的填充数据,并基于初始元数据以及对应的填充数据,构成目标元数据
84.第一类型数据存储模块106在确定目标元数据之后,将目标待存储数据以及对应的目标元数据,存储至数据存储单元。
85.而在本说明书提供的一种实施例中,该数据处理系统中,还包括第二类型数据存储模块。其中,该第二类型数据存储模块可以理解为数据处理系统中用于存储初始待存储数据的模块;需要说明的是,该第二类型数据存储模块的成本,相对第一类型数据存储模块106较高、但使用寿命相对与第一类型数据存储模块106来说较长、且性能相对较高,例如,该第二类型数据存储模块可以为optane ssd。在实际应用中,当数据存储系统应用于分布式存储场景时,该第二类型数据存储模块,可以理解为用于存储初始待存储数据的存储资源池,而构成该存储资源池的存储介质可以为optane ssd。而在存储介质为optane ssd的情况下,该存储资源池可以为由多个optane ssd构成的optane资源池。需要说明的是,该第二类型数据存储模块可以部署在独立于数据处理模块104和/或第一类型数据存储模块106之外的一台机器上。
86.同时,在数据存储系统为服务器中用于进行数据存储的系统的情况下,该第二类型数据存储模块可以为该服务器上部署的用于存储数据的一种固态硬盘;例如,optane ssd。
87.基于此,当数据处理模块104在确定数据类型不满足预设缓存条件的情况下,则该数据处理模块104会将初始待存储数据发送至第二类型数据存储模块。
88.该第二类型数据存储模块,能够接收数据处理模块104发送的初始待存储数据,并对该初始待存储数据进行存储。
89.而在另一实施例中,该数据处理模块104会将初始待存储数据发送至第二类型数据存储模块,可以理解为该数据处理模块104将初始待存储数据转换为日志数据,并将该日志数据存储至所述第二类型数据存储模块的日志文件。
90.该第二类型数据存储模块,能够从该日志文件中获取该数据处理模块104新写入的日志数据,并将该日志数据存储在本地。
91.下述结合附图2,以本说明书提供的数据处理系统在数据存储场景下的应用为例,对所述数据处理系统进行进一步说明。其中,图2示出了本说明书一个实施例提供的一种数据处理系统的处理过程流程图,具体包括以下步骤。
92.需要说明的是,本说明书提供的数据处理系统可以为分布式文件存储系统,通过在分布式文件存储系统内建立独立的optane资源池和qlc资源池的方式,使得前台小块写和后台大块写的数据流,分别写到optane和qlc两种介质上。其中,该前台小块写数据流可以理解为虚拟机发送的随机写请求,该请求中携带有小块数据(即较小的数据块),该小块数据大多是小块非对齐的随机写数据;该后台大块写数据流可以理解为服务器发送的大块数据写请求,该请求中携带有大块数据。
93.同时,该qlc ssd的定位是低成本、高密度、用于存放相对冷数据的ssd。该qlc ssd为了降低成本,将ftl映射表的i u从4kb加大到64kb,这样减少了16倍dram内存容量的需求。
94.基于此,考虑到如果向qlc ssd中写入数据小于64kb,或者是不能对齐到64kb,那么会产生了很多非对齐的overlap写(即重叠写),会使其寿命将达不到官方标定的0.41dwpd。
95.因此,为了更好的使用qlc ssd,本方案为该qlc ssd预先设计了、更利于提升qlc ssd性能的iu数据格式(比如64kb iu的数据格式);qlc ssd通过该iu数据格式对数据进行存储,从而达到解决qlc介质非64kb对齐写下性能不佳,以及qlc硬件自身使用寿命不足的问题,在使用该iu数据格式之后,在云存储场景下,能够在云盘上使用性价比更好的qlc介质来替代tlc介质(一种固态硬盘),从而在满足性能要求前提下,达到降低云盘成本的目的。
96.需要再次说明的是,本说明书中的optane和qlc两种介质并不是集成在一块盘(即硬盘)上,而是在分布式存储系统里作为两种独立介质资源池使用,两个资源池分别是optane资源池和qlc资源池。基于此,产生了可以根据实际需求灵活配置两种介质的空间占比,也可以灵活指定的将数据写到任一介质上的优势。
97.具体该数据处理系统的执行步骤如下。
98.步骤202:虚拟机或服务器,向块存储服务端发送io请求(即io req);
99.步骤204:块存储服务端确定该io请求的来源,在该io请求为虚拟机发送的情况下,执行步骤206,在该io请求为服务器发送的情况下,执行步骤210。
100.具体地,虚拟机发出的io请求中携带的数据,大多是小块非对齐的随机写数据,因此,通过对小块随机写支持更好的optane介质承担比较合适。
101.而服务器发出的io请求中携带的数据,大多是大块数据且不需要快速响应,基于此,通过qlc介质对该数据进行存储。
102.步骤206:块存储服务端,将虚拟机发送的数据以wal的形式写向optane介质资源
池。
103.具体地,该块存储服务端获取该虚拟机发送的io请求中携带的、小块非对齐的随机写数据,并将该数据作为日志数据发送至该optane资源池中的日志文件。
104.步骤208:optane资源池,获取该日志文件中新增的日志数据,并将该日志数据存储在本地,从而实现对小块非对齐的随机写数据进行存储。
105.步骤210:块存储服务端,将服务器发送的大块写数据缓存在内存中,并在积攒的大块写数据的数据大小,大于预设阈值的情况下,将积攒的大块写数据发送至qlc资源池。
106.具体地,块存储服务端从服务器发送的io请求中获得大块写数据(也称为seg),并将该大块写数据在内存中进行缓存和积攒(即merge in memory)。当数据积攒到足够多时,比如积攒的大块写数据的数据大小(即2gb),大于预设阈值(1gb)。该块存储服务端会根据实际场景的需要,对积攒的数据进行数据处理,该数据处理操作包括但不限于数据拆分、数据ec计算、数据压缩等。从而获得多个大小为64k的块数据,其中,该块数据中包括待存储数据以及该待存储数据对应的纠删码,其中ec为erasure coding(简称ec,即纠删码)。
107.之后,该块存储服务端再以64kb对齐的方式,将块数据dump(发送)到qlc资源池。
108.步骤212:qlc资源池,将多个块数据按照预设iu数据结构进行存储,并为每个iu数据结构中存储块数据,确定对应的元数据。
109.需要说明的是,qlc ssd中iu数据结构的大小为64kb,而qlc资源池是通过多个iu数据结构构成的条带(chunk)对块数据进行存储的情况下,qlc资源池会将一个iu数据结构作为头部区域存储元数据(chunk meta),而元数据的大小一般为4k,无法完全填充该头部区域,因此,为了保证实现64kb对齐写的方式对数据进行存储,因此,会将头部区域中该元数据无法填充的区域,填充上数值“0”,从而保证数据能够以64kb对齐写的方式进行存储。
110.具体地,由于qlc ssd中的iu size(iu数据结构的大小)为64kb,在实际的性能测试中,一旦对qlc采用非64k对齐写,其能够提供的写带宽将会大幅降低。该qlc ssd中的ftl映射单元为64kb,虽然可以支持用户4k访问,但会导致大量rmw(read-modify-write、即读—修改—写操作)操作,从而导致写性能和写放大急剧恶化。
111.并且,将optane介质和qlc介质分别组成资源池的使用方式,虽然可以方便根据实际场景来灵活地使用qlc介质。但是相应的,也会使得qlc对64kb对齐写的使用方式变得更加依赖。而在一些情况中,文件系统自身数据的元信息更新并不满足64kb对齐,也即是该元数据(chunk meta)无法完成填满整个头部区域,从而导致部分有效数据(chunk data)会被写入至头部区域,从而导致非对齐写的情况发生,这些非对齐的数据会对qlc的使用产生了性能和寿命衰退问题。
112.而在本说明书提供的数据处理系统中,为了减少非64kb对切写的比例,采用了与之前存储在tlc上不同的数据存储格式。参见图3,图3是本说明书一个实施例提供的一种tlc数据存储格式的示意图。在之前的tlc介质上,chunk数据格式是每个数据chunk头部存在4kb的特殊区域,该区域为头部区域(header),其内部存放了一些与这个数据chunk相关的元信息(chunk meta),在4kb的chunk meta之后,才是用户的数据部分(chunk data),该数据存在物理扇区(physical sector)中,将每个物理扇区作为一个数据存储单元(data format unit),每个数据存储单元由两部分组成,一部分大小为4048b的空间用于存储有效数据(data payload),一部分大小为48b的空间作为数据尾(data footer),用于存储该有
效数据对应的纠删码。
113.而在qlc介质上的,chunk对应的chunk meta部分增大到了64kb。参见图4,图4是本说明书一个实施例提供的一种数据处理系统中qlc的数据存储格式的示意图。这样做是为了减小元数据更新所带来的非64kb对齐写的比例。每个chunk的元数据需要对齐到64kb大小,而chunk meta数据与chunk data数据之间可以用填充特殊全0数据的方式对齐。这样做的好处是当需要更新chunk的元数据时,也不会造成多余的rmw操作。而在qlc上,数据chunk的meta(元数据)放到chunk自身的头部(即头部区域)。chunk data位于chunk meta之后,chunk meta和chunk data之间不足64kb的部分需要填补全0的padding数据。chunk data中每64kb的数据部分,由16个大小为4kb的数据存储单元(data format unit)组成。其中每个单元包含4048b的用户有效数据,和48b的数据footer(数据尾),数据校验粒度保持在4kb,这样做对小块读取更有好处,避免小粒度读取产生不必要的放大。
114.基于此,本说明书提供的数据处理系统,结合optane资源池分离小块写,以及为64kb iu qlc ssd设计的更合适大块写的数据格式,从而可以先将wal数据写到optane介质上,待内存中的数据积累到一定规模时,再将内存中的合并数据做进一步的处理(如数据拆分、ec计算和数据压缩等)后转写到qlc介质上。极大降低非64kb对齐写的比例,可以达到提升qlc介质寿命,并获得更高更稳定的读写吞吐带宽的目的;其中,wal(write-ahead logging)为预写日志系统,是数据库中一种高效的日志算法。
115.并且,通过在分布式系统中建立独立的optane资源池,以及独立的qlc资源池。利用optane资源池承接小块的随机写数据,利用qlc资源池承接大块64kb对齐的写数据,这样做可以为集群带来更高和更平稳的带宽吞吐能力,同时也降低了qlc内部的写放大流量,提高了qlc介质的使用寿命。
116.通过专门为qlc介质设计的chunk数据格式,可以消除chunk元数据更新所带来的非对齐64kb写的比例,进一步提升了在实际使用qlc时能够达到的稳态写性能,并提高介质的实际使用寿命。
117.并且,针对上述将optane和qlc集成到一块盘的方案,因为wal并不需要写到qlc介质上,可以在内存中经过一段时间的merge后,再直接由内存数据dump到qlc介质上。如果把optane介质集成到qlc ssd内部使用,wal数据也写到qlc介质上,即使通过了盘内optane的优化,但是也会造成不必要的写放大,会引起qlc介质的性能和使用寿命衰退。
118.而本说明书提供的数据处理系统,通过利用在分布式存储系统中建立两个独立资源池的方案,可以有机会单独将wal写到optane上,而再将内存中merge后的数据写到qlc介质里。本方案中也重新设计的更适合qlc介质的数据存储格式。经过测试,在典型的云盘使用场景里,单qlc盘可以达到满足实际需求的带宽吞吐能力,可以在特定的云盘场景里作为替代tlc的ssd介质使用。
119.图5示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,具体包括以下步骤。
120.步骤502:接收数据存储请求,所述数据存储请求中携带有初始待存储数据。
121.在本说明书提供的一种数据处理方法可以应用于上述数据处理系统中的数据处理模块,基于此,针对接收数据存储请求步骤的解释,可以参见上述数据处理系统中对应或相应地内容,在此不过多赘述。
122.步骤504:确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据。
123.具体地,所述数据类型包括数据来源;
124.相应的,所述确定所述数据类型满足预设缓存条件,包括:
125.在所述数据来源与预设数据来源为一致的情况下,确定所述数据类型满足预设缓存条件,其中,所述预设数据来源的初始待存储数据需要进行缓存处理。
126.具体地,该数据处理模块能够确定该初始待存储数据的数据来源,并将该数据来源与预设数据来源进行匹配,在匹配结果为一致的情况下,确定该数据类型满足预设存储条件,从而保证了将预设数据来源发送的数据存储至第一类型数据存储模块中,从而避免了对第一类型数据存储模块频繁的执行数据写入操作。
127.需要说明的是,该数据处理模块会对预设数据来源所发送的初始待存储数据进行缓存处理,而该预设数据来源可以根据实际应用场景进行设置,例如预设数据来源可以设置为客户端来源、虚拟机来源等,本说明书对此不做具体限定。
128.在本说明书提供的一实施例中,所述缓存所述初始待存储数据,包括:
129.将所述初始待存储数据存储至内存。
130.具体地,该数据处理模块将该数据类型满足预设缓存条件的初始待存储数据缓存在内存中,并在后续将缓存的数据写入至第一类型数据存储模块中,避免了对第一类型数据存储模块频繁的执行数据写入操作。
131.步骤506:在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据。
132.在本说明书提供的一实施例中,所述确定缓存的当前待存储数据满足预设存储条件,包括:
133.确定缓存的当前待存储数据的数据大小,并在所述数据大小大于预设缓存阈值的情况下,确定所述缓存的当前待存储数据满足预设存储条件;或者
134.确定缓存的当前待存储数据的缓存时间,并在所述缓存时间大于预设时间阈值的情况下,确定所述缓存的当前待存储数据满足预设存储条件。
135.其中,该数据大小可以理解为数据处理模块当前缓存积攒的待存储数据的大小,例如,该数据大小可以为2gb。该预设缓存阈值可以参见上述数据处理系统的描述,在此不过多赘述。
136.具体地,该数据处理模块能够确定缓存的当前待存储数据的数据大小,并在确定该数据大小大于预设缓存阈值的情况下,确定缓存的当前待存储数据满足预设存储条件,例如,该块存储服务端能确定当前缓存积攒的待存储数据的大小,比如2gb,基于此,该块存储服务端将该数据大小与预设缓存阈值(1gb)进行比较,该数据大小大于该预设缓存阈值,因此该块存储服务端确定当前缓存积攒的待存储数据,能够被存储至qlc资源池。
137.或者,该数据处理模块能够确定缓存的当前待存储数据的缓存时间,并在缓存时间大于预设时间阈值的情况下,确定缓存的当前待存储数据满足预设存储条件。
138.其中,该缓存时间可以理解为数据处理模块接收到当前待存储数据的时间,在该当前待存储数据为该数据处理模块对多次接收到的初始待存储数据进行缓存和积攒获得
的数据的情况下,该缓存时间可以理解为多次接收到的初始待存储数据中,最早接收的初始待存储数据的接收时间。该预设时间阈值可以根据时间应用场景进行设置,例如该预设时间阈值可以为1分钟。
139.沿用上例,该块存储服务端能确定当前缓存积攒的待存储数据的缓存时间,比如2分钟,基于此,该块存储服务端为了避免数据缓存时间过长导致数据丢失,会实时判断该数据时间是否大于预设时间阈值(1分钟),若是,该块存储服务端确定当前缓存积攒的待存储数据,能够被存储至qlc资源池。
140.在本说明书提供的一实施例中,当数据处理模块将初始待存储数据存储是内存的情况下,该,所述确定缓存的当前待存储数据满足预设存储条件,包括:
141.确定所述内存中的当前待存储数据的内存占用率,并在确定所述内存占用率大于预设比率阈值的情况下,确定所述内存中的当前待存储数据满足预设存储条件。
142.其中,内存占用率可以理解为该当前待存储数据在内存所占据的存储空间的比率。该预设比率阈值也可以根据实际应用场景进行设置,本说明书对此不做具体限定。例如,该预设比率阈值可以为50%。
143.具体地,该数据处理模块能够确定该内存中的当前待存储数据的内存占用率,并在确定内存占用率大于预设比率阈值的情况下,确定内存中的当前待存储数据满足预设存储条件。例如,该块存储服务端能确定当前缓存积攒的待存储数据的内存占用率,比如70%,基于此,该块存储服务端将内存占用率与预设比率阈值(50%)进行比较,确定该内存占用率大于该预设比率阈值,因此该块存储服务端确定当前缓存积攒的待存储数据,能够被存储至qlc资源池。
144.在本说明书提供的一实施例中,所述将所述当前待存储数据转换为目标待存储数据,包括:
145.确定所述目标待存储数据对应的数据格式;
146.基于所述数据格式将所述当前待存储数据切分为至少两个目标待存储数据。
147.其中,该数据格式可以理解为该目标待存储数据的大小,例如64kb。
148.具体地,该数据处理模块能够确定该预先设定的该目标待存储数据对应的数据格式,并基于该数据格式对当前待存储数据进行切分,从而获得至少两个目标待存储数据,便于后续该第一类型数据存储模块能够以对齐写的方式对该目标待存储数据进行存储。
149.进一步的,所述基于所述数据格式将所述当前待存储数据切分为至少两个目标待存储数据,包括:
150.基于所述数据格式对所述当前待存储数据进行切分,获得至少两个候选待存储数据;
151.为每个候选待存储数据计算对应的数据安全编码;
152.基于所述至少两个候选待存储数据以及对应的所述数据安全编码,构成至少两个目标待存储数据。
153.其中,该数据安全编码可以理解为能够保证数据安全、避免数据传输过程中由于数据出错、数据丢失等问题导致数据错误的编码,例如,纠删码,奇偶校验码等等。对应的,在目标待存储数据包括数据以及数据安全编码两部分的情况下,该候选待存储数据的大小加上该数据安全编码的大小,等于该目标待存储数据的大小。
154.具体地,该数据处理模块能够将基于数据格式对当前待存储数据进行切分,获得至少两个候选待存储数据;并为每个候选待存储数据计算对应的数据安全编码。其中,该数据安全编码可以通过任意一种纠删码计算方式计算获得,本说明书对为候选待存储数据计算数据安全编码的方式不做具体限定。
155.之后,该数据处理模块基于该至少两个候选待存储数据以及对应的数据安全编码,构成至少两个目标待存储数据。从而便于后续该第一类型数据存储模块能够以对齐写的方式对该目标待存储数据进行存储。
156.在本说明书提供的一实施例中,为了避免频繁的对qlc ssd执行数据写入操作,因此,会在块存储服务端会在当前缓存积攒的数据足够多的情况下,会将缓存的数据写入至该qlc ssd。但是,当块存储服务端确定当前缓存积攒的数据较少的情况下,会继续将预设数据来源的数据进行缓存处理,直至当前缓存积攒的数据足够多。具体地,所述缓存所述初始待存储数据之后,还包括:
157.在确定缓存的当前待存储数据不满足所述预设存储条件的情况下,继续执行接收数据存储请求的步骤,直至确定缓存的当前待存储数据满足所述预设存储条件;
158.将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块。
159.具体地,数据处理模块在确定缓存的当前待存储数据不满足预设存储条件的情况下,会继续执行接收数据存储请求的步骤,直至确定缓存的当前待存储数据满足所述预设存储条件;
160.之后将当前待存储数据转换为目标待存储数据,并将目标待存储数据存储至第一类型数据存储模块。
161.例如,该块存储服务端能确定当前缓存积攒的待存储数据的内存占用率,比如30%,基于此,该块存储服务端将内存占用率与预设比率阈值(50%)进行比较,确定该内存占用率小于该预设比率阈值,因此,该块存储服务端会继续将服务器发送的数据在内存中进行缓存和积攒,直至确定当前缓存积攒的待存储数据的内存占用率,大于预设比率阈值,从而对当前缓存积攒的待存储数据进行数据处理,并将数据处理后的待存储数据存储至qlc资源池。
162.进一步的,在本说明书提供的实施例中,所述确定所述初始待存储数据的数据类型之后,还包括:
163.在确定所述数据类型不满足所述预设缓存条件的情况下,将所述初始待存储数据存储至第二类型数据存储模块。
164.在实际应用中,由于虚拟机发出的io请求中携带的数据,大多是小块非对齐的随机写数据,因此,通过对小块随机写支持更好的optane介质承担比较合适。
165.基于此,块存储服务端在接收到数据存储数据之后,会确定该io请求的来源,在该io请求为虚拟机发送的情况下,块存储服务端会将虚拟机发送的数据写向optane介质资源池。
166.进一步的,所述将所述初始待存储数据存储至第二类型数据存储模块,包括:
167.将所述初始待存储数据转换为日志数据,并将所述日志数据存储至所述第二类型数据存储模块的日志文件,以使所述第二类型数据存储模块,基于所述日志文件中的日志
数据对所述初始待存储数据进行存储。
168.沿用上例,该块存储服务端获取该虚拟机发送的io请求中携带的、小块非对齐的随机写数据,并将该数据作为日志数据发送至该optane资源池中的日志文件。而该optane资源池,获取该日志文件中新增的日志数据,并将该日志数据存储在本地,从而实现对小块非对齐的随机写数据进行存储。
169.本说明书提供的一种数据处理方法,在接收到初始待存储数据时,会在该初始待存储数据的数据类型满足预设缓存条件的情况下,并不会立刻将初始待存储数据写入到第一类型数据存储模块中,而是对该初始待存储数据进行缓存处理,从而避免了由于频繁的对第一类型数据存储模块进行数据写入,造成第一类型数据存储模块的使用寿命较短的问题,从而提高了第一类型数据存储模块的使用寿命。并且,在当前待存储数据满足预设存储条件的情况下,将缓存的当前待存储数据写入至第一类型数据存储模块,保证了第一类型数据存储模块进行数据存储工作。从而实现了在保证第一类型数据存储模块正常工作的同时,降低第一类型数据存储模块的使用寿命衰减速度。
170.同时需要说明的是,本说明书中的数据处理方法,提供了一种结合optane介质资源池和64kb对齐数据格式的qlc ssd使用方法,通过结合optane资源池分离小块写,以及为64kb iu qlc ssd设计的更合适大块写的数据格式,可以极大降低非64kb对齐写的比例,可以达到提升qlc介质寿命,并获得更高更稳定的读写吞吐带宽的目的。
171.图6示出了根据本说明书一个实施例提供的另一种数据处理方法的流程图,该方法应用于第一类型数据存储模块,由于qlc ssd中iu数据结构的大小为64kb,当qlc资源池将一个i u数据结构作为头部区域存储元数据(chunk meta)的情况下,元数据的大小一般为4k,无法完全填充该头部区域,从而导致非对齐写的情况发生,这些非对齐的数据会对qlc的使用产生了性能和寿命衰退问题;基于此,本说明书提供的另一种数据处理方法,能够通过qlc ssd会将头部区域中该元数据无法填充的区域,填充上数值“0”,从而保证数据能够以64kb对齐写的方式进行存储,具体包括以下步骤。
172.步骤602:接收所述目标待存储数据,其中,所述目标待存储数据为上述一种数据处理方法中的目标待存储数据,所述第一类型数据存储模块为上述一种数据处理方法中的第一类型数据存储模块。
173.步骤604:为所述目标待存储数据确定对应的初始元数据,并基于所述目标待存储数据的数据格式,为所述目标待存储数据以及对应的元数据确定数据存储单元。
174.步骤606:基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据。
175.步骤608:将所述目标待存储数据以及对应的目标元数据,存储至所述数据存储单元。
176.其中,该初始元数据为该目标待存储数据对应的元数据,用于对该目标待存储数据进行索引。数据存储单元可以理解为第一类型数据存储模块中,用于对数据进行存储的单元,例如图4中的数据存储单元。需要说明的是,该数据存储单元的大小可以为固定的,因此,目标待存储数据以及对应的初始元数据,可以被分配一个或多个数据存储单元。数据存储单元的空间大小可以理解为数据存储单元的存储空间大小,该空间大小可以根据实际应用场景进行设置。例如4kb、64kb、125kb等等。
177.具体地,针对该另一种数据处理方法的解释,可以参见上述数据处理以及上述一种数据处理方法中的解释,在此不做赘述。
178.在本说明书提供的一实施例中,所述基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据,包括:
179.从所述数据存储单元中确定所述初始元数据对应的元数据存储单元;
180.基于所述初始元数据的数据大小,从所述元数据存储单元中确定剩余存储空间;
181.基于所述剩余存储空间的空间大小,为所述初始元数据确定对应的填充数据;
182.基于所述初始元数据以及对应的所述填充数据,构成目标元数据。
183.其中,元数据存储单元中确定剩余存储空间可以理解为该元数据存储单元中该初始元数据无法填充或无法写入的空间。填充数据可以根据实际应用场景进行设置,本说明书对此不作具体限定,例如,该填充数据可以为0。元数据存储单元可以理解为对该元数据进行存储的数据存储单元,例如,图4中的头部区域。
184.具体地,该第一类型数据存储模块,在为目标待存储数据分配对应的数据存储单元之后,能够从该数据存储单元中确定用于存储初始元数据的元数据存储单元,并基于元数据存储单元的空间大小,从元数据存储单元中确定初始元数据无法填充的剩余存储空间,并基于该剩余存储空间的空间大小确定与该空间大小对应的填充数据,并基于该填充数据以及初始元数据构成目标元数据。
185.本说明书提供的另一种数据处理方法中,该第一类型数据存储模块在接收目标待存储数据的情况下,为目标待存储数据确定对应的初始元数据,并基于数据存储单元的空间大小,将初始元数据转换为目标元数据;从而基于该目标待存储数据以及对应的目标元数据,能够完整的存储至数据存储单元,避免了过小的初始元数据,导致目标待存储数据出现不对齐写的问题,避免了非对齐的数据导致第一类型数据存储模块产生性能和寿命衰退问题。
186.与上述方法实施例相对应,本说明书还提供了一种数据处理装置实施例,该装置包括:
187.接收模块,被配置为接收数据存储请求,所述数据存储请求中携带有初始待存储数据;
188.缓存模块,被配置为确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;
189.存储模块,被配置为在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据。
190.可选地,所述数据处理装置还包括重复缓存模块,被配置为:
191.在确定缓存的当前待存储数据不满足所述预设存储条件的情况下,继续执行接收数据存储请求的步骤,直至确定缓存的当前待存储数据满足所述预设存储条件;
192.将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块。
193.可选地,所述数据处理装置还包括初始数据存储模块,被配置为:
194.在确定所述数据类型不满足所述预设缓存条件的情况下,将所述初始待存储数据
存储至第二类型数据存储模块。
195.可选地,所述初始数据存储模块,还被配置为:
196.将所述初始待存储数据转换为日志数据,并将所述日志数据存储至所述第二类型数据存储模块的日志文件,以使所述第二类型数据存储模块,基于所述日志文件中的日志数据对所述初始待存储数据进行存储。
197.可选地,所述数据类型包括数据来源;
198.相应的,所述缓存模块,还被配置为:
199.在所述数据来源与预设数据来源为一致的情况下,确定所述数据类型满足预设缓存条件,其中,所述预设数据来源的初始待存储数据需要进行缓存处理。
200.可选地,所述存储模块,还被配置为:
201.所述确定缓存的当前待存储数据满足预设存储条件,包括:
202.确定缓存的当前待存储数据的数据大小,并在所述数据大小大于预设缓存阈值的情况下,确定所述缓存的当前待存储数据满足预设存储条件;或者
203.确定缓存的当前待存储数据的缓存时间,并在所述缓存时间大于预设时间阈值的情况下,确定所述缓存的当前待存储数据满足预设存储条件。
204.可选地,所述缓存模块,还被配置为:
205.将所述初始待存储数据存储至内存。
206.相应的,所述确定缓存的当前待存储数据满足预设存储条件,包括:
207.确定所述内存中的当前待存储数据的内存占用率,并在确定所述内存占用率大于预设比率阈值的情况下,确定所述内存中的当前待存储数据满足预设存储条件。
208.可选地,所述存储模块,还被配置为:
209.确定所述目标待存储数据对应的数据格式;
210.基于所述数据格式将所述当前待存储数据切分为至少两个目标待存储数据。
211.可选地,所述存储模块,还被配置为:
212.基于所述数据格式对所述当前待存储数据进行切分,获得至少两个候选待存储数据;
213.为每个候选待存储数据计算对应的数据安全编码;
214.基于所述至少两个候选待存储数据以及对应的所述数据安全编码,构成至少两个目标待存储数据。
215.本说明书提供的一种数据处理装置,在接收到初始待存储数据时,会在该初始待存储数据的数据类型满足预设缓存条件的情况下,并不会立刻将初始待存储数据写入到第一类型数据存储模块中,而是对该初始待存储数据进行缓存处理,从而避免了由于频繁的对第一类型数据存储模块进行数据写入,造成第一类型数据存储模块的使用寿命较短的问题,从而提高了第一类型数据存储模块的使用寿命。并且,在当前待存储数据满足预设存储条件的情况下,将缓存的当前待存储数据写入至第一类型数据存储模块,保证了第一类型数据存储模块进行数据存储工作。从而实现了在保证第一类型数据存储模块正常工作的同时,降低第一类型数据存储模块的使用寿命衰减速度。
216.上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该一种数据处理装置的技术方案与上述两种数据处理方法的技术方案属于同一构思,一种数据处理装
置的技术方案未详细描述的细节内容,均可以参见上述两种数据处理方法的技术方案的描述。
217.与上述方法实施例相对应,本说明书还提供了另一种数据处理装置实施例,应用于第一类型数据存储模块,包括:
218.接收模块,被配置为接收所述目标待存储数据,其中,所述目标待存储数据为上述一种数据处理装置中的目标待存储数据,所述第一类型数据存储模块为上述一种数据处理装置中的第一类型数据存储模块;
219.确定模块,被配置为为所述目标待存储数据确定对应的初始元数据,并基于所述目标待存储数据的数据格式,为所述目标待存储数据以及对应的元数据确定数据存储单元;
220.转换模块,被配置为基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据;
221.存储模块,被配置为将所述目标待存储数据以及对应的目标元数据,存储至所述数据存储单元。
222.可选地,所述转换模块,还被配置为:
223.从所述数据存储单元中确定所述初始元数据对应的元数据存储单元;
224.基于所述初始元数据的数据大小,从所述元数据存储单元中确定剩余存储空间;
225.基于所述剩余存储空间的空间大小,为所述初始元数据确定对应的填充数据;
226.基于所述初始元数据以及对应的所述填充数据,构成目标元数据。
227.本说明书提供的另一种数据处理装置,
228.接收所述目标待存储数据,其中,所述目标待存储数据为上述数据处理方法中的目标待存储数据,所述第一类型数据存储模块为上述数据处理方法中的第一类型数据存储模块;
229.为所述目标待存储数据确定对应的初始元数据,并基于所述目标待存储数据的数据格式,为所述目标待存储数据以及对应的元数据确定数据存储单元;
230.基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据;
231.将所述目标待存储数据以及对应的目标元数据,存储至所述数据存储单元。
232.本说明书提供的另一种数据处理装置,该第一类型数据存储模块在接收目标待存储数据的情况下,为目标待存储数据确定对应的初始元数据,并基于数据存储单元的空间大小,将初始元数据转换为目标元数据;从而基于该目标待存储数据以及对应的目标元数据,能够完整的存储至数据存储单元,避免了过小的初始元数据,导致目标待存储数据出现不对齐写的问题,避免了非对齐的数据导致第一类型数据存储模块产生性能和寿命衰退问题。
233.上述为本实施例的另一种数据处理装置的示意性方案。需要说明的是,该另一种数据处理装置的技术方案与上述两种数据处理方法的技术方案属于同一构思,另一种数据处理装置的技术方案未详细描述的细节内容,均可以参见上述两种数据处理方法的技术方案的描述。
234.图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730
相连接,数据库750用于保存数据。
235.计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
236.在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
237.计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
238.其中,处理器720用于执行如下计算机可执行指令,该计算机可执行指令被处理器720执行时实现上述数据处理方法的步骤。
239.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
240.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。
241.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
242.本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。
243.上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
244.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
245.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储
器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
246.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
247.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
248.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
技术特征:1.一种数据处理方法,包括:接收数据存储请求,所述数据存储请求中携带有初始待存储数据;确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据。2.根据权利要求1所述的数据处理方法,所述缓存所述初始待存储数据之后,还包括:在确定缓存的当前待存储数据不满足所述预设存储条件的情况下,继续执行接收数据存储请求的步骤,直至确定缓存的当前待存储数据满足所述预设存储条件;将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块。3.根据权利要求1所述的数据处理方法,所述确定所述初始待存储数据的数据类型之后,还包括:在确定所述数据类型不满足所述预设缓存条件的情况下,将所述初始待存储数据存储至第二类型数据存储模块。4.根据权利要求3所述的数据处理方法,所述将所述初始待存储数据存储至第二类型数据存储模块,包括:将所述初始待存储数据转换为日志数据,并将所述日志数据存储至所述第二类型数据存储模块的日志文件,以使所述第二类型数据存储模块,基于所述日志文件中的日志数据对所述初始待存储数据进行存储。5.根据权利要求1所述的数据处理方法,所述数据类型包括数据来源;相应地,所述确定所述数据类型满足预设缓存条件,包括:在所述数据来源与预设数据来源为一致的情况下,确定所述数据类型满足预设缓存条件,其中,所述预设数据来源的初始待存储数据需要进行缓存处理。6.根据权利要求1所述的数据处理方法,所述确定缓存的当前待存储数据满足预设存储条件,包括:确定缓存的当前待存储数据的数据大小,并在所述数据大小大于预设缓存阈值的情况下,确定所述缓存的当前待存储数据满足预设存储条件;或者确定缓存的当前待存储数据的缓存时间,并在所述缓存时间大于预设时间阈值的情况下,确定所述缓存的当前待存储数据满足预设存储条件。7.根据权利要求1所述的数据处理方法,所述缓存所述初始待存储数据,包括:将所述初始待存储数据存储至内存;相应地,所述确定缓存的当前待存储数据满足预设存储条件,包括:确定所述内存中的当前待存储数据的内存占用率,并在确定所述内存占用率大于预设比率阈值的情况下,确定所述内存中的当前待存储数据满足预设存储条件。8.根据权利要求1所述的数据处理方法,所述将所述当前待存储数据转换为目标待存储数据,包括:确定所述目标待存储数据对应的数据格式;
基于所述数据格式将所述当前待存储数据切分为至少两个目标待存储数据。9.根据权利要求8所述的数据处理方法,所述基于所述数据格式将所述当前待存储数据切分为至少两个目标待存储数据,包括:基于所述数据格式对所述当前待存储数据进行切分,获得至少两个候选待存储数据;为每个候选待存储数据计算对应的数据安全编码;基于所述至少两个候选待存储数据以及对应的所述数据安全编码,构成至少两个目标待存储数据。10.一种数据处理方法,应用于第一类型数据存储模块,包括:接收所述目标待存储数据,其中,所述目标待存储数据为权利要求1中的目标待存储数据,所述第一类型数据存储模块为权利要求1中的第一类型数据存储模块;为所述目标待存储数据确定对应的初始元数据,并基于所述目标待存储数据的数据格式,为所述目标待存储数据以及对应的元数据确定数据存储单元;基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据;将所述目标待存储数据以及对应的目标元数据,存储至所述数据存储单元。11.根据权利要求10所述的数据处理方法,所述基于所述数据存储单元的空间大小,将所述初始元数据转换为目标元数据,包括:从所述数据存储单元中确定所述初始元数据对应的元数据存储单元;基于所述初始元数据的数据大小,从所述元数据存储单元中确定剩余存储空间;基于所述剩余存储空间的空间大小,为所述初始元数据确定对应的填充数据;基于所述初始元数据以及对应的所述填充数据,构成目标元数据。12.一种数据处理系统,包括数据处理模块,第一类型数据存储模块,其中,所述数据处理模块,被配置为接收数据存储请求,所述数据存储请求中携带有初始待存储数据;确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据发送至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据;所述第一类型数据存储模块,被配置为接收所述数据处理模块发送的所述目标待存储数据,并对所述目标待存储数据进行存储。13.一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至9任意一项所述数据处理方法,或权利要求10至11任意一项所述数据处理方法的步骤。14.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至9任意一项所述数据处理方法,或权利要求10至11任意一项所述数据处理方法的步骤。
技术总结本说明书实施例提供数据处理方法及系统,其中所述数据处理方法包括:接收数据存储请求,所述数据存储请求中携带有初始待存储数据;确定所述初始待存储数据的数据类型,并在确定所述数据类型满足预设缓存条件的情况下,缓存所述初始待存储数据;在确定缓存的当前待存储数据满足预设存储条件的情况下,将所述当前待存储数据转换为目标待存储数据,并将所述目标待存储数据存储至第一类型数据存储模块,其中,所述当前待存储数据包括所述初始待存储数据,从而实现了在保证第一类型数据存储模块正常工作的同时,降低第一类型数据存储模块的使用寿命衰减速度。使用寿命衰减速度。使用寿命衰减速度。
技术研发人员:付万宇 吴忠杰 孔伟康 杜宇 潘再余
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.07.06
技术公布日:2022/11/1