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

数据处理方法及装置与流程

2022-02-20 20:21:59 来源:中国专利 TAG:


1.本公开涉及数据存储技术领域,具体涉及一种数据处理方法及装置。


背景技术:

2.为了避免多个进程之间相互干扰,服务器上可以创建多个容器,每个容器负责对不同数据分区的数据文件进行查询处理。以服务器包括第一容器为例,第一容器可以关联第一数据分区,第一数据分区存储有第一数据文件。第一容器可以基于用户的查询请求,从第一数据分区读取与查询请求对应的数据。
3.另外,第一容器还可以对第一数据文件进行更新。具体地,第一容器可以将第一数据文件的增量数据文件与第一数据文件进行合并,得到第二数据文件。进一步地,第一容器可以将第二数据文件存储至第一数据分区。此后,第一容器可以基于第二数据文件进行数据查询。
4.然而,上述第一数据文件的合并过程需要占用大量的计算资源和输入输出(input output,io)资源,使得用于查询服务的计算资源和存储io资源减少,从而数据查询服务质量。另外,由于第一数据分区需要同时存储第一数据文件和第二数据文件,从而导致存储空间资源的使用率低于50%。


技术实现要素:

5.本公开实施例提供一种数据处理方法及装置,有利于提高数据查询服务质量和存储空间资源的利用率。
6.第一方面,提供一种数据处理方法,所述方法应用于服务器,所述服务器包括第一容器和第二容器,所述第一容器和所述第二容器分别与所述服务器的第一数据分区和第二数据分区关联,所述第一容器为查询服务容器,所述第二容器为合并计算容器,所述方法包括:所述第二容器读取所述第一数据分区中存储的第一数据文件;所述第二容器将所述第一数据文件与所述第一数据文件的增量数据文件进行合并,得到第二数据文件;所述第二容器将所述第二数据文件存储至所述第二数据分区;所述第一容器将所述第一容器关联的数据分区从所述第一数据分区切换至所述第二数据分区。
7.第二方面,提供一种数据处理装置,所述装置应用于服务器,所述服务器包括第一容器和第二容器,所述第一容器和所述第二容器分别与所述服务器的第一数据分区和第二数据分区关联,所述第一容器为查询服务容器,所述第二容器为合并计算容器,所述装置包括:第一读取单元,用于利用所述第二容器读取所述第一数据分区中存储的第一数据文件;第一合并单元,用于利用所述第二容器将所述第一数据文件与所述第一数据文件的增量数据文件进行合并,得到第二数据文件;第一存储单元,用于利用所述第二容器将所述第二数据文件存储至所述第二数据分区;第一切换单元,用于利用所述第一容器将所述第一容器关联的数据分区从所述第一数据分区切换至所述第二数据分区。
8.第三方面,提供一种数据处理装置,包括存储器、处理器以及存储在存储器上并可
在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的方法。
9.第四方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
10.第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
11.本公开实施例的服务器可以包括第一容器(即查询服务容器)和第二容器(即合并计算容器),第一容器仅负责对用户查询请求进行处理,第二容器仅负责对文件进行合并计算,通过将查询服务容器和合并计算容器分离,可以避免计算资源冲突的问题。
12.其次,一个容器对应的数据分区并不是固定不变的,而是服务器上所有的数据分区可以在不同容器之间共享,使得各个容器可以切换与数据分区之间的关联关系。第二容器在完成对第一数据分区的文件的合并之后,可以将合并后的第二数据文件存储至第二数据分区。之后,查询服务容器可以将关联的数据分区由第一数据分区切换为第二数据分区,从而可以基于第二数据文件进行数据查询。由于第一数据文件存储的数据分区与第二数据文件存储的数据分区不同,从而可以避免第二数据文件的写入对查询过程中的数据读取产生影响,从而可以避免查询过程中的读io和合并过程中的写io冲突的问题。
13.另外,由于第一数据分区不需要同时存储第一数据文件和第二数据文件,因此,第一数据分区不需要为第二数据文件的写入预留存储空间,第一数据分区中的数据规模可以等于第一数据分区的存储容量。因此,本公开实施例的方案有利于提高存储空间资源的利用率。
附图说明
14.图1是本公开实施例提供的一种数据文件的合并过程的示意图。
15.图2是本公开实施例提供的一种包括多个容器的服务器的结构示意图。
16.图3是本公开实施例提供的一种数据查询的方法的示意图。
17.图4是本公开实施例提供的一种将合并计算容器与查询服务容器进行分离的方法的示意图。
18.图5是本公开实施例提供的一种数据处理方法的示意性流程图。
19.图6-图9是本公开实施例提供的一种数据文件更新方式的示意图。
20.图10是本公开一实施例提供的数据处理装置的结构示意图。
21.图11是本公开另一实施例提供的数据处理装置的结构示意图。
具体实施方式
22.下面将结合本公开实施例的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
23.本公开实施例中的服务器可用于存储数据文件,以供用户查询。例如,该服务器可用于存储一个或多个文件。当用户请求数据查询时,该服务器可以从该一个或多个文件中获取与查询请求对应的数据。该服务器也可以称为存储服务器或数据库服务器。
24.本公开实施例的服务器也可以称为物理机、物理服务器、宿主机等。
25.数据的存储方式可以为关系型数据存储方式,或者也可以为非关系型存储方式。关系型数据存储方式的数据库可以称为关系型数据库,其一般采用二维表结构的存储方式,数据以行和列的方式进行存储。非关系型数据存储方式的数据库可以称为非关系型数据库(not only sql,nosql)。nosql中的数据存储不需要固定的表结构,通常也不存在连接操作。nosql不使用传统的关系数据库模型,而是使用例如键值(key-value)存储、文档型的、列存储、图型数据库、xml等方式存储数据模型。其中,用的最多的是key-value存储。
26.日志结构合并(the log-structured merge,lsm)树常被应用于键值对(key-value)存储系统的设计。因此,lsm树在nosql系统里也非常常见,基本已经成为必选方案了。目前很多产品都使用了lsm树,geabase图数据库的底层key-value数据引擎使用的就是lsm树结构。直接或间接应用lsm树的产品例如还可以包括leveldb,rocksdb,mongodb,tidb,hbase等。
27.本公开实施例的服务器可以包括存储空间资源和处理器计算资源(简称为计算资源)。存储空间资源例如可以包括内存、硬盘或磁盘(disk)等。以磁盘为例,上文描述的一个或多个文件可以存储在磁盘上。计算资源例如可以包括中央处理单元(central processing unit,cpu)芯片或处理芯片。
28.以key-value存储为例,用户可以向服务器发送查询请求,该查询请求用于查询目标key对应的数据。服务器在接收到查询请求后,可以利用计算资源对目标key进行解析,如对目标key进行语义分析,和/或确定目标key所在的文件位置等。服务器可以从磁盘中读取与目标key对应的数据,并返回给用户。
29.为了保证存储的数据的时效性,服务器还可以对存储的数据进行更新。数据更新的方式有多种。例如,服务器可以实时地对数据进行更新。又例如,服务器可以定期对数据进行更新。服务器可以在每间隔一定的时间周期对服务器上存储的数据进行更新。定期更新的时间周期可以为几个小时或几天等,本公开实施例对此不做具体限定。定期更新的服务器也可以称为批处理系统服务器。
30.举例说明,在启动查询服务之前,服务器可以先生成一份数据文件,供用户查询。然后每隔一定的时间周期,会回流新数据(或称为增量数据文件或增量数据)。例如,服务器可以从网络下载增量数据文件。服务器可以将增量数据文件与现有的数据文件进行合并,生成新的数据文件。此后,所有的查询请求都基于新的数据文件进行查询。也就是说,数据更新后,用户可以查询到最新的数据集合。
31.如图1所示,增量数据文件(deltadatafile)为一定周期内回流过来的文件,服务器可以通过网络将增量数据文件下载到本地(如磁盘或内存)。进一步地,服务器可以将增量数据文件与现有的数据文件(basedatafile)从磁盘读取到内存中,并对增量数据文件和现有的数据文件进行合并,得到新的数据文件(newdatafile)。服务器可以将新的数据文件存储至磁盘。服务器在处理用户的查询请求时,可以将新的数据文件作为查询文件。
32.当服务器上运行多个进程时,多个进程之间会存在干扰。例如,多个进程包括第一进程和第二进程,由于第一进程和第二进程共享服务器上的资源,如计算资源、存储空间资源和内存资源,当第一个进程由于计算需要,占用了服务器上大量的计算资源后,使得能够用于第二进程的计算资源大大减少,从而影响了第二进程的运行。
33.为了避免多个进程之间的相互干扰,出现了一种容器技术,容器技术可以将服务
器上的计算资源进行隔离以及存储空间资源进行隔离。也就是说,多个容器可以将服务器的资源划分为多个相互隔离的计算资源和相互隔离的存储空间资源。服务器上可以创建多个容器,每个容器对应一部分存储空间资源和一部分计算资源。每个容器上的进程只能在该容器对应的资源上运行,而不会占用其他容器对应的资源。
34.本公开实施例中的服务器也可以使用容器技术,也就是说,该服务器可以包括多个容器。多个容器可以将服务器的存储空间资源划分为多个数据分区(或多个存储空间资源),每个容器可以负责不同数据分区的文件查询。可以理解的是,数据分区与服务器中的磁盘之间具有映射关系,每个数据分区映射到服务器上独立的磁盘空间。多个容器上的进程可以并行进行。例如,多个容器可以同时进行数据查询,从而可以提高查询效率。
35.下面结合图2对包括多个容器的服务器进行描述。
36.图2示出的服务器包括6个容器,如容器0~容器5,该6个容器可以将服务器上的资源划分为6份,一个容器对应一份资源。每个容器仅在各自对应的资源上运行,而不会占用其他容器对应的资源。例如,容器0只能将数据文件存储在磁盘0,而不会占用其他磁盘上的存储空间资源。
37.每个容器对应的资源大小可以相等,也可以不等,本公开实施例对此不做具体限定。例如,6个容器可以将服务器上的资源划分为资源对等的6份,每个容器占服务器上的计算资源的六分之一,占存储空间资源的六分之一。又例如,6个容器可以根据实际需要向服务器申请相应的资源,每个容器对应的资源可以不等。
38.以每个容器对应的资源大小相等为例,如果服务器包括12块磁盘,则每个容器对应的存储空间资源包括2块磁盘;如果服务器包括60个处理器核心,则每个容器对应的计算资源可以包括10个处理器核心。
39.在图2所示的多个容器中,容器0与数据分区0关联,数据分区0对应服务器上的磁盘0。容器1与数据分区1关联,数据分区1对应服务器上的磁盘1,以此类推。容器5与数据分区5关联,数据分区5对应服务器上的磁盘5。每个容器负责与各自数据分区对应的数据的处理。也就是说,每个容器仅负责全量数据库中部分数据的查询服务。
40.每个数据分区都包含对应的数据文件。数据分区0对应文件0,文件0存储在磁盘0上,容器0负责对文件0进行数据查询。类似地,数据分区1对应文件1,文件1存储在磁盘1上,容器1负责对文件1进行数据查询。数据分区2对应文件2,文件2存储在磁盘2上,容器2负责对文件2进行数据查询。数据分区3对应文件3,文件3存储在磁盘3上,容器3负责对文件3进行数据查询。数据分区4对应文件4,文件4存储在磁盘4上,容器4负责对文件4进行数据查询。数据分区5对应文件5,文件5存储在磁盘5上,容器5负责对文件5进行数据查询。
41.任意一个承载数据分区的容器,在接收到对应分区的查询请求后,可以根据查询请求,从对应分区的数据文件中读取相应的数据。
42.下面结合图3,以容器0为例,对数据的查询过程进行描述。其中,容器0负责对数据分区0中存储的文件的查询处理。容器0接收到用户的查询请求后,可以对该查询请求进行分析,并从第一数据分区中读取与该查询请求对应的数据。
43.此外,与图1所示的文件更新过程类似,容器0还可以对数据分区0中的文件进行更新。容器0可以从新数据源下载增量数据文件0(deltadatafile0)到本地磁盘0。容器0可以从磁盘0读取现有的数据文件(basedatafile0),如将basedatafile0从磁盘0读取到内存
中,并将deltadatafile0与basedatafile0进行合并,得到合并后的新数据文件(newdatafile0)。
44.在完成数据合并之后,容器0将newdatafile0写入磁盘0,此后,所有的数据查询都是基于newdatafile0。
45.为了保证在数据合并过程中,容器0还能同时处理用户的查询请求,则在newdatafile0成功写入磁盘0之前,basedatafile0都不会被删除。也就是说,在数据合并之前,如果有用户进行数据查询,则容器0仍可以基于basedatafile0为用户提供查询服务。在newdatafile0写入磁盘0之后,容器0对应的数据文件在某一时刻从basedatafile0切换至newdatafile0。之后,容器0可以基于newdatafile0为用户提供查询服务。
46.另外,在newdatafile0写入磁盘0之后,容器0还可以删除之前的basedatafile0和deltadatafile0,以释放磁盘0的存储空间。
47.但是,当查询过程和合并计算过程同时进行时,会存在计算资源冲突、存储io资源冲突以及存储空间资源使用率低的问题。下面分别对这三种情况进行描述。
48.1、计算资源冲突在进行数据合并的过程中,需要使用大量的计算资源处理文件的合并。由于单个容器内总的计算资源是一定的,当合并过程占用较多的计算资源后,会导致负责用户查询请求的计算资源减少,从而导致查询请求处理能力下降,影响用户体验。
49.2、存储io资源冲突以容器0为例,合并过程需要从磁盘0读取basedatafile0,并重新写入newdatafile0。在该过程中,数据的读取和写入需要涉及大量的io操作。另外,在查询过程中,需要从磁盘0中读取与用户查询请求对应的数据。合并过程对磁盘io资源的抢占,尤其是newdatafile0的写入操作,会导致查询过程的读取操作的时延陡增。因此,如果容器0在处理用户的查询请求时,后台正在进行newdatafile0的写入操作,则会导致容器0读取数据的io时延大幅升高,从而使得用户查询请求的时延增加,影响用户体验。需要说明的是,下文描述的存储io资源冲突主要指查询过程中读io与合并过程中写io之间的冲突。
50.3、存储空间资源使用率低由于在完成新旧数据文件切换之前,如从basedatafile0切换至newdatafile0,旧文件(如basedatafile0)不能删除。因此,旧文件(如basedatafile0)和新文件(如newdatafile0)需要同时保存在磁盘0上,在该情况下,磁盘0上的数据规模不能超过磁盘容量的50%。因此,在上述方案中,磁盘的有效使用率低于50%。类似地,其他容器对应的磁盘的使用率也低于50%,从而导致服务器的整个存储空间资源的使用率低于50%。
51.相关技术中,有一种方案可以解决计算资源冲突的问题,但其仍然存在存储io资源冲突和磁盘使用率低的问题。下面结合图4,分别从合并计算容器和查询服务容器的角度,对该方案进行描述。
52.为了避免计算资源冲突的问题,图4所示的方案将合并计算任务移出到独立的服务器b中执行。图4所示的查询系统包括服务器a和服务器b。服务器a和服务器b均包括一个容器,服务器b中的容器仅负责数据文件的合并计算操作,服务器a中的容器仅负责查询请求的处理。为方便描述,下文将服务器a中的容器称为查询服务容器,将服务器b中的容器称为合并计算容器。查询服务容器对应的存储空间资源为服务器a中的磁盘0,合并计算容器
对应的存储空间资源为服务器b中的磁盘1。
53.合并计算容器可以从新数据源下载文件0的增量数据文件0,并将增量数据文件0与现有的数据文件0进行合并,生成新数据文件0。合并计算容器可以将新数据文件0存储至磁盘1。在新数据文件存储至磁盘1之后,合并计算容器可以通知查询服务容器从磁盘1下载新数据文件0,或者合并计算容器可以直接将新数据文件发送给查询服务容器。
54.在查询服务容器完成对新数据文件的下载后,合并计算容器可以删除旧数据文件0。合并计算容器通常会保留新生成的数据文件,将其作为下一次数据更新的basedatafile。当然,合并计算容器也可以不保留新生成的数据文件,在每次进行数据更新时,从查询服务容器获取basedatafile。
55.查询服务容器在接收到合并计算容器发送的通知后,可以从合并计算容器下载新数据文件0。当完成新数据文件的下载之后,查询服务容器可以将查询文件从现有数据文件0切换为新数据文件0。此后,所有的查询请求都基于新数据文件0。在完成数据文件的切换之后,查询服务容器即可删除现有数据文件0。
56.虽然上述方案采用合并操作和查询操作分离的方式,可以降低合并过程中对计算资源的抢占。但是,最终合并生成的新数据文件还是需要回写到查询服务容器。在数据写入的过程中,同样会引发存储io资源的抢占,导致查询io延时的升高。
57.另外,由于查询服务容器仍然需要同时存储现有数据文件和新数据文件,因此,磁盘的有效使用率仍然低于50%。
58.此外,图4所示的方案中,由于需要将新数据文件从合并计算容器拉取到查询服务容器,在拉取的过程中需要占用大量的网络资源,这会与用户发送查询请求的网络资源发生冲突,从而会影响用户体验。
59.从上文的描述可以看出,虽然上述方案能够避免计算资源的冲突,但其仍然存在存储io资源冲突和存储空间资源使用率低的问题。因此,如何同时解决计算资源冲突、存储io资源冲突和存储空间资源使用率低的问题,是目前亟需解决的问题。
60.基于此,本公开实施例提供一种数据处理的方法,能够同时解决计算资源冲突、存储io资源冲突和存储空间资源使用率低的问题。
61.本公开实施例的服务器可以包括查询服务容器和合并计算容器,不同容器对应服务器上不同的数据分区。此外,一个容器对应的数据分区并不是固定不变的,而是服务器上所有的数据分区可以在不同容器之间共享,使得各个容器可以切换与数据分区之间的关联关系。这里所谓的共享,即查询服务容器可以访问任意一个磁盘上的数据文件。比如,容器0对应的数据文件可以存储在磁盘0上,也可以将数据文件存储在任意其他磁盘上,但其数据文件仅保存在一个磁盘上,而不是多个磁盘上。
62.合并计算容器负责对数据文件进行合并,在合并完成后,合并计算容器可以将合并后的新数据文件存储在合并计算容器关联的数据分区。之后,查询服务容器可以将关联的数据分区切换至存储新数据文件的数据分区。
63.下面以服务器包括第一容器和第二容器为例进行描述。第一容器为查询服务容器,第二容器为合并计算容器。第一容器仅负责对用户查询请求进行处理,第二容器仅负责对文件进行合并计算,通过将查询服务容器和合并计算容器分离,可以避免计算资源冲突的问题。
64.其次,第一容器与服务器的第一数据分区关联,第二容器与服务器的第二数据分区关联,第二容器在完成对第一数据分区的文件的合并之后,可以将合并后的文件存储至第二数据分区。之后,查询服务容器可以将关联的数据分区由第一数据分区切换为第二数据分区,从而可以基于合并后的文件进行数据查询。由于合并后的文件存储的数据分区与旧文件所在的数据分区不同,查询服务容器对应的数据分区仅存在读请求,不存在写请求,从而可以避免新文件的写入对查询过程中的数据读取产生影响,从而可以避免存储io资源冲突的问题。
65.另外,由于第一数据分区不需要同时存储新数据文件和旧数据文件,因此,第一数据分区不需要为新数据的写入预留存储空间,第一数据分区中的数据规模可以等于第一数据分区的存储容量。因此,上述方案有利于提高存储空间资源的利用率。
66.下面结合图5,对本公开实施例的方案进行详细描述。图5所示的方法可应用于上文描述的服务器。图5所示的方法包括步骤s510~步骤s540。
67.在步骤s510、第二容器读取第一数据分区中存储的第一数据文件。
68.第一容器与第一数据分区关联,第一数据分区中存储有第一数据文件。在第一数据文件更新之前,第一容器可以基于查询请求,从第一数据文件中获取与查询请求对应的数据。
69.在需要对第一数据文件更新时,第二容器可以从第一数据分区获取第一数据文件。具体地,第二容器可以将第一数据文件从第一数据分区读取到第二容器对应的内存中。
70.可以理解的是,第一数据文件可以为第一数据分区存储的全部文件。在每次进行数据更新时,可以对第一数据分区中的全部文件进行更新。
71.在步骤s520、第二容器将第一数据文件与第一数据文件的增量数据文件进行合并,得到第二数据文件。
72.第二容器可以从数据源下载第一数据文件的增量数据文件。例如,第二容器可以先将增量数据文件下载到第二数据分区,在进行合并时,再从第二数据分区将增量数据文件读取到内存中,然后在内存中将第一数据文件与增量数据文件进行合并。
73.在步骤s530、第二容器将第二数据文件存储至第二数据分区。
74.在完成文件的合并之后,第二容器可直接将第二数据文件存储至第二数据分区。也就是说,第二容器将第二数据文件存储至与第二容器对应的数据分区,而不是与查询服务容器对应的数据分区。
75.在步骤s540、第一容器将第一容器关联的数据分区从第一数据分区切换至第二数据分区。换句话说,第一容器可以将对应的数据文件从第一数据文件切换为第二数据文件。
76.在第二容器将第二数据文件存储至第二数据分区之后,第二容器可以通知第一容器,以使第一容器进行数据分区的切换。在完成数据分区的切换之后,第一容器可以基于第二数据分区中存储的第二数据文件,对用户的查询请求进行处理。例如,在完成数据分区的切换之后,第一容器可以接收用户发送的查询请求,基于该查询请求,第一容器可以从第二数据分区中获取与该查询请求对应的数据。
77.可以理解的是,在完成数据分区的切换之前,第一容器仍然可以基于第一数据分区中存储的第一数据文件,对用户的查询请求进行处理。
78.本公开实施例的服务器可以包括一个合并计算容器或多个合并计算容器。如果服
务器仅包括一个合并计算容器,则该合并计算容器可以依次对多个查询服务容器对应的数据文件进行更新,这种方式将更有利于提高存储空间资源的利用率。如果服务器包括多个合并计算容器,则该多个合并计算容器可以分别对多个查询服务容器对应的数据文件进行更新,也就是说,多个数据文件的合并计算可以同时进行,从而有利于提高文件的更新速度。下文以服务器包括一个合并计算容器为例进行说明。
79.在完成第一数据文件的更新后,第二容器可以将第二容器关联的数据分区从第二数据分区切换至第一数据分区。由于第一数据分区还存储有第一数据文件,为了提高存储空间的使用率,第二容器还可以删除第一数据分区对应的第一数据文件。此后,第一数据分区可以作为存储下一个新合并的数据文件的数据分区。
80.服务器可以包括多个容器,该多个容器除了包括上文描述的第一容器和第二容器之外,还可以包括其他的容器,例如,服务器可以包括第三容器。其中,第三容器为查询服务容器。第三容器与服务器的第三数据分区关联。第二容器还可以对第三数据分区中存储的数据文件进行更新。也就是说,如果服务器包括多个查询服务容器,则第二容器可以对该多个查询服务容器对应的数据文件进行更新。
81.具体地,第二容器可以读取第三数据分区中存储的第三数据文件,并从新数据源下载第三数据文件的增量数据文件。进一步地,第二容器可以将第三数据文件与第三数据文件的增量数据文件进行合并,得到第四数据文件。第二容器可以将第四数据文件存储至第一数据分区。在第四数据文件存储至第一数据分区之后,第二容器可以通知第三容器进行数据分区的切换。第三容器接收到通知之后,可以将第三容器关联的数据分区从第三数据分区切换至第一数据分区。
82.当然,第二容器也可以将第二容器关联的数据分区从第一数据分区切换至第三数据分区。此后,第三数据分区可以作为存储下一个更新后的数据文件的数据分区。
83.在服务器包括多个查询服务容器时,合并计算容器对数据文件进行更新的顺序可以有多种,本公开实施例对此不做具体限定。例如,合并计算容器可以按照预设的顺序依次对多个查询服务容器对应的数据文件进行更新。又例如,合并计算容器也可以根据各个查询服务容器对应的数据文件的更新速度,确定数据文件的更新顺序。举例说明,如果第一容器对应的数据文件的更新速度较快,而第三容器对应的数据文件的更新速度较慢,则第二容器可以对第一容器对应的数据文件进行两次更新后,再对第三容器对应的数据文件进行更新。
84.下面结合图6~图9,以服务器包括5个查询服务容器和1个合并计算容器为例,对本公开实施例的数据处理方法进行详细描述。当然,服务器还可以包括其他数量的查询服务容器和合并计算容器,本公开实施例对此不做具体限定。
85.该5个查询服务容器分别为容器0~容器4。查询服务容器仅负责各自对应的磁盘上的数据文件的查询请求,而不需要负责文件的合并处理。需要说明的是,各个容器对应的磁盘的数量可以为一个,也可以为多个。例如,磁盘0包括的磁盘数量可以为一个或多个。各个磁盘上存储的文件数量可以为一个,也可以为多个。例如,文件0包括的文件数量可以为一个,也可以为多个。
86.容器0可以接收用户对磁盘0上的数据文件0的查询请求,容器0可以基于该查询请求,从磁盘0上读取与查询请求对应的数据。容器1可以接收用户对磁盘1上的数据文件1的
查询请求,容器1可以基于该查询请求,从磁盘1上读取与该查询请求对应的数据。容器2可以接收用户对磁盘2上的数据文件2的查询请求,容器2可以基于该查询请求,从磁盘2上读取与该查询请求对应的数据。容器3可以接收用户对磁盘3上的数据文件3的查询请求,容器3可以基于该查询请求,从磁盘3上读取与该查询请求对应的数据。容器4可以接收用户对磁盘4上的数据文件4的查询请求,容器4可以基于该查询请求,从磁盘4上读取与该查询请求对应的数据。
87.磁盘0~磁盘4仅涉及数据的读取操作,而不涉及数据的写入操作,因此,可以避免存储io资源的冲突。
88.合并计算容器负责对容器0~容器4对应的数据文件进行合并计算。合并计算容器与磁盘5关联,合并计算容器可以将合并后的数据文件存储至磁盘5。在合并计算之前,磁盘5为空闲的磁盘,即磁盘5上没有存储数据。合并计算容器在对数据文件进行合并计算时,可以通过轮转的方式依次对容器0~容器4对应的数据文件进行更新。下面以容器0、容器1、容器2、容器3、容器4的更新顺序,对数据文件的合并计算过程进行描述。
89.如图7所示,以合并计算容器对文件0进行更新为例,合并计算容器可以从新数据源下载增量数据文件0到磁盘5,此外,合并计算容器可以从磁盘0中读取文件0。在进行数据合并时,合并计算容器可以从磁盘5中读取增量数据文件0。然后合并计算容器可以将文件0与增量数据文件0进行合并,得到新文件0。合并计算容器可以将新文件0写入磁盘5。此后,合并计算容器还可以将磁盘5中的增量数据文件0删除,而仅保留新文件0。
90.在新文件0存储至磁盘5之后,合并计算容器还可以通知容器0进行磁盘切换。容器0接收到合并计算容器发送的切换通知后,可以将关联的磁盘从磁盘0切换至磁盘5。容器0将关联的磁盘从磁盘0切换至磁盘5,也就意味着容器0将对应的数据文件从文件0切换至新文件0。此后,容器0可以基于磁盘5中的新文件0进行数据查询,容器0可以从磁盘5中读取用户查询的数据,并返回给用户。
91.合并计算容器也可以将关联的磁盘从磁盘5切换至磁盘0,如图8所示。容器0的磁盘切换与合并计算容器的磁盘切换可以同时进行,也可以先后进行,本公开实施例对此不做具体限定。
92.作为一个示例,合并计算容器与容器0不同时进行磁盘切换。例如,合并计算容器可以在容器0完成磁盘切换之后,再进行磁盘切换。也就是说,合并计算容器可以在保证容器0切换成功的前提下,再进行磁盘切换。
93.合并计算容器在关联至磁盘0后,可以将磁盘0中的文件0进行删除,并将磁盘0作为新的存储磁盘。
94.进一步地,合并计算容器可以对磁盘1中存储的文件1进行更新,如图8所示。合并计算容器从新数据源下载增量数据文件1到磁盘0,此外,合并计算容器可以从磁盘1中读取文件1。在进行数据合并时,合并计算容器可以从磁盘0中读取增量数据文件1。然后合并计算容器可以将文件1与增量数据文件1进行合并,得到新文件1。合并计算容器可以将新文件1写入磁盘0。此后,合并计算容器还可以将磁盘0中的增量数据文件1删除,而仅保留新文件1。
95.在新文件1存储至磁盘0之后,合并计算容器还可以通知容器1进行磁盘切换。容器1接收到合并计算容器发送的切换通知后,可以将关联的磁盘从磁盘1切换至磁盘0。容器1
将关联的磁盘从磁盘1切换至磁盘0,也就意味着容器1将对应的数据文件从文件1切换至新文件1。
96.合并计算容器也可以将关联的磁盘从磁盘0切换至磁盘1。合并计算容器在关联至磁盘1后,可以将磁盘1中的文件1进行删除,并将磁盘1作为新的存储磁盘。
97.合并计算容器可以对磁盘2中存储的文件2进行更新。合并计算容器从新数据源下载增量数据文件2到磁盘1,此外,合并计算容器可以从磁盘2中读取文件2。在进行数据合并时,合并计算容器可以从磁盘1中读取增量数据文件2。然后合并计算容器可以将文件2与增量数据文件2进行合并,得到新文件2。合并计算容器可以将新文件2写入磁盘1。此后,合并计算容器还可以将磁盘1中的增量数据文件2删除,而仅保留新文件2。
98.在新文件2存储至磁盘1之后,合并计算容器还可以通知容器2进行磁盘切换。容器2接收到合并计算容器发送的切换通知后,可以将关联的磁盘从磁盘2切换至磁盘1。容器2将关联的磁盘从磁盘2切换至磁盘1,也就意味着容器2将对应的数据文件从文件2切换至新文件2。
99.合并计算容器也可以将关联的磁盘从磁盘1切换至磁盘2。合并计算容器在关联至磁盘2后,可以将磁盘2中的文件2进行删除,并将磁盘2作为新的存储磁盘。
100.合并计算容器可以对磁盘3中存储的文件3进行更新。合并计算容器从新数据源下载增量数据文件3到磁盘2,此外,合并计算容器可以从磁盘3中读取文件3。在进行数据合并时,合并计算容器可以从磁盘2中读取增量数据文件3。然后合并计算容器可以将文件3与增量数据文件3进行合并,得到新文件3。合并计算容器可以将新文件3写入磁盘2。此后,合并计算容器还可以将磁盘2中的增量数据文件3删除,而仅保留新文件3。
101.在新文件3存储至磁盘2之后,合并计算容器还可以通知容器3进行磁盘切换。容器3接收到合并计算容器发送的切换通知后,可以将关联的磁盘从磁盘3切换至磁盘2。容器3将关联的磁盘从磁盘3切换至磁盘2,也就意味着容器3将对应的数据文件从文件3切换至新文件3。
102.合并计算容器也可以将关联的磁盘从磁盘2切换至磁盘3。合并计算容器在关联至磁盘3后,可以将磁盘3中的文件3进行删除,并将磁盘3作为新的存储磁盘。
103.合并计算容器可以对磁盘4中存储的文件4进行更新。合并计算容器从新数据源下载增量数据文件4到磁盘3,此外,合并计算容器可以从磁盘4中读取文件4。在进行数据合并时,合并计算容器可以从磁盘3中读取增量数据文件4。然后合并计算容器可以将文件4与增量数据文件4进行合并,得到新文件4。合并计算容器可以将新文件4写入磁盘3。此后,合并计算容器还可以将磁盘3中的增量数据文件4删除,而仅保留新文件4。
104.在新文件4存储至磁盘3之后,合并计算容器还可以通知容器4进行磁盘切换。容器4接收到合并计算容器发送的切换通知后,可以将关联的磁盘从磁盘4切换至磁盘3。容器4将关联的磁盘从磁盘4切换至磁盘3,也就意味着容器4将对应的数据文件从文件4切换至新文件4。
105.合并计算容器也可以将关联的磁盘从磁盘3切换至磁盘4。合并计算容器在关联至磁盘4后,可以将磁盘4中的文件4进行删除,并将磁盘4作为新的存储磁盘。
106.经过以上文件更新,各个容器对应的文件的布局如图9所示。容器0与磁盘5关联,容器1与磁盘0关联,容器2与磁盘1关联,容器3与磁盘2关联,容器4与磁盘3关联,容器5与磁
盘4关联。
107.从以上的数据更新过程可以看出,在整个数据更新的过程中,仅需要空出一个额外的磁盘即可。其他磁盘的存储空间资源都可以存满,如图6-图9所示,整个服务器的存储空间资源的利用率可以达到六分之五,约83%。
108.上文结合图1至图9,详细描述了本公开的方法实施例,下面结合图10至图11,详细描述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
109.图10是本公开实施例提供的数据处理装置的示意性结构图。图10所示的装置1000可应用于服务器,所述服务器包括第一容器和第二容器,所述第一容器和所述第二容器分别与所述服务器的第一数据分区和第二数据分区关联,所述第一容器为查询服务容器,所述第二容器为合并计算容器。图10的装置1000包括第一读取单元1010、第一合并单元1020、第一存储单元1030和第一切换单元1040。
110.第一读取单元1010,用于利用所述第二容器读取所述第一数据分区中存储的第一数据文件。
111.第一合并单元1020,用于利用所述第二容器将所述第一数据文件与所述第一数据文件的增量数据文件进行合并,得到第二数据文件。
112.第一存储单元1030,用于利用所述第二容器将所述第二数据文件存储至所述第二数据分区。
113.第一切换单元1040,用于利用所述第一容器将所述第一容器关联的数据分区从所述第一数据分区切换至所述第二数据分区。
114.可选地,所述装置1000还包括:第二切换单元,用于利用所述第二容器将所述第二容器关联的数据分区从所述第二数据分区切换至所述第一数据分区;删除单元,用于利用所述第二容器删除所述第一数据分区中存储的所述第一数据文件。
115.可选地,所述服务器还包括第三容器,所述第三容器为查询服务容器,所述第三容器与所述服务器的第三数据分区关联,所述装置还包括:第二读取单元,用于利用所述第二容器读取所述第三数据分区中存储的第三数据文件;第二合并单元,用于利用所述第二容器将所述第三数据文件与所述第三数据文件的增量数据文件进行合并,得到第四数据文件;第二存储单元,用于利用所述第二容器将所述第四数据文件存储至所述第一数据分区;第三切换单元,用于利用所述第三容器将所述第三容器关联的数据分区从所述第三数据分区切换为所述第一数据分区。
116.可选地,所述装置1000还包括:接收单元,用于利用所述第一容器接收查询请求;获取单元,用于利用所述第一容器从所述第二数据分区获取与所述查询请求对应的数据。
117.可选地,所述容器为基于docker的容器。
118.可选地,所述服务器为批处理系统服务器。
119.图11是本公开又一实施例提供的数据处理装置的结构示意图。该装置1100可以为上文描述的任意一种服务器。装置1100可以包括存储器1110和处理器1120。存储器1110可用于存储可执行代码。处理器1120可用于执行所述存储器1110中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置1100还可以包括网络接口1130,处理器1120与外部设备的数据交换可以通过该网络接口1130实现。
120.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
121.本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
122.在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
123.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
124.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
125.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献