CN112235422A - 数据处理方法、装置、计算机可读存储介质及电子装置 - Google Patents
数据处理方法、装置、计算机可读存储介质及电子装置 Download PDFInfo
- Publication number
- CN112235422A CN112235422A CN202011436437.1A CN202011436437A CN112235422A CN 112235422 A CN112235422 A CN 112235422A CN 202011436437 A CN202011436437 A CN 202011436437A CN 112235422 A CN112235422 A CN 112235422A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- check
- merged
- target
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据处理方法、装置、计算机可读存储介质及电子装置,其中,该方法包括:接收到用于请求写入第一文件的写指令,其中,第一文件中包括的数据量小于或等于第一阈值;基于写指令确定允许存储第一文件的目标文件,其中,目标文件中的空闲存储空间超过第二阈值,第二阈值大于或等于第一阈值;确定与第一文件对应的第一校验数据,其中,第一校验数据用于校验第一文件的可靠性;将第一文件以及第一校验数据一并写入目标文件中。通过本发明,解决了相关技术中存在的数据可靠性低的问题,进而达到了提高数据可靠性的效果。
Description
技术领域
本发明实施例涉及通信领域,具体而言,涉及一种数据处理方法、装置、计算机可读存储介质及电子装置。
背景技术
在相关技术中的分布式存储系统针对海量小文件存储的场景中,为了实现海量元数据存储,一般采用的方式之一就是将小文件组合成大文件进行存储,元数据服务器只需要记录大文件的元数据即可,从而减少小文件存储的元数据量。
但是,在相关技术的方案中小文件的合并和上传下载的过程中,并不会对小文件的数据进行可靠性验证,进而会默认上传下载的数据即为真实的数据,但是在实际操作中,文件在上传下载时会出现错误,例如,网络传输出现故障便会导致文件的上传下载出错,出现乱码或者数据丢失的情况,在该情况下,由于不会对上传下载的文件进行校验,因而会无法及时得到文件中的数据出错,进而导致后续的一系列问题。
因此,在相关技术中,存在着数据可靠性低的问题。
发明内容
本发明实施例提供了一种数据处理方法、装置、计算机可读存储介质及电子装置,以至少解决相关技术中存在的数据可靠性低的问题。
根据本发明的一个实施例,提供了一种数据处理方法,包括:接收到用于请求写入第一文件的写指令,其中,所述第一文件中包括的数据量小于或等于第一阈值;基于所述写指令确定允许存储第一文件的目标文件,其中,所述目标文件中的空闲存储空间超过第二阈值,所述第二阈值大于或等于所述第一阈值;确定与所述第一文件对应的第一校验数据,其中,所述第一校验数据用于校验所述第一文件的可靠性;将所述第一文件以及所述第一校验数据一并写入所述目标文件中。
根据本发明的另一个实施例,提供了一种数据处理装置,包括:接收模块,用于接收到用于请求写入第一文件的写指令,其中,所述第一文件中包括的数据量小于或等于第一阈值;第一确定模块,用于基于所述写指令确定允许存储第一文件的目标文件,其中,所述目标文件中的空闲存储空间超过第二阈值,所述第二阈值大于或等于所述第一阈值;第二确定模块,用于确定与所述第一文件对应的第一校验数据,其中,所述第一校验数据用于校验所述第一文件的可靠性;写模块,用于将所述第一文件以及所述第一校验数据一并写入所述目标文件中。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法实施例中的步骤。
通过本发明,由于在目标文件中写入小文件时,会将校验数据一并写入,因此,后续在对数据进行处理,例如,读取数据的时候,能够基于写入的校验数据来验证数据在传输中是否发生了错误,有效提高了数据的可靠性,进而解决了相关技术中存在的数据可靠性低的问题。
附图说明
图1是本发明实施例的一种数据处理方法的移动终端的硬件结构框图;
图2是根据本发明实施例的数据处理方法的流程图;
图3是根据本发明实施例的一种可选的大文件的结构图;
图4是根据本发明实施例的写操作的流程示意图;
图5是根据本发明实施例的读操作的流程示意图;
图6是根据本发明实施例的数据处理装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种数据处理方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种数据处理方法,图2是根据本发明实施例的数据处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,接收到用于请求写入第一文件的写指令,其中,所述第一文件中包括的数据量小于或等于第一阈值;
步骤S204,基于所述写指令确定允许存储第一文件的目标文件,其中,所述目标文件中的空闲存储空间超过第二阈值,所述第二阈值大于或等于所述第一阈值;
步骤S206,确定与所述第一文件对应的第一校验数据,其中,所述第一校验数据用于校验所述第一文件的可靠性;
步骤S208,将所述第一文件以及所述第一校验数据一并写入所述目标文件中。
其中,上述的第一文件也可以称为小文件,上述的目标文件也可以称为大文件。上述写指令可以是接收到的来自其他设备的指令,也可以是基于检测到的触控操作或按键操作所触发的写指令,接收的方式在此不作限制。在确定上述目标文件时,可以先查找是否存在未存满的大文件,在确定存在多个的情况下,从多个大文件中确定出能够存储第一文件的一个大文件,并将确定出的这个大文件确定为上述的目标文件。将第一文件以及第一校验数据一并写入目标文件中的写入方式可以为多种,例如,可以将第一校验数据写在第一文件之后,当然,还可以将第一校验数据写在第一文件之前等等。图3是一种可选的大文件的结构图,其中,是以校验数据写在小文件之后为例的示意图,由图3可知,每个大文件是由多个小文件组成的,每一个小文件写完以后都会追加写一个这个小文件的校验数据,用于校验数据,保证数据的可靠性。
通过上述实施例,由于在目标文件中写入小文件时,会将校验数据一并写入,因此,后续在对数据进行处理,例如,读取数据的时候,能够基于写入的校验数据来验证数据在传输中是否发生了错误,有效提高了数据的可靠性,进而解决了相关技术中存在的数据可靠性低的问题。
在一个可选的实施例中,将所述第一文件以及所述第一校验数据一并写入所述目标文件中包括:在所述目标文件的本地缓存中依次写入所述第一文件中包括的数据;对写入所述本地缓存中的满足第一条件的数据进行合并,以得到第一合并数据,并将所述第一合并数据写入至所述目标文件中;以及,对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并,以得到第二合并数据,并将所述第二合并数据写入至所述目标文件中。在本实施例中,小文件写入过程中会被切分成多个块,然后会对切分后的块进行合并,对合并后的块进行校验值的计算,减少了计算量,提高效率。然后,通过累加计算的方法,计算整个小文件的校验值,整个小文件只需要保存一个校验值即可,提高了空间的利用率。
在一个可选的实施例中,对写入所述本地缓存中的满足第一条件的数据进行合并,以得到第一合并数据,并将所述第一合并数据写入至所述目标文件中包括:在所述第一文件未完全写入至所述本地缓存中的情况下,对写入所述本地缓存中的数据总量达到合并阈值的数据进行合并,以得到所述第一合并数据;将所述第一合并数据写入至所述目标文件中。在本实施例中,在写第一文件时,只要写入目标文件中的数据达到合并阈值,就会对已写入的数据进行合并,并且将合并的数据写入目标文件中,然后继续统计后续写入的数据的数据量,并继续执行在确定后续写入的数据达到合并阈值之后对写入的数据进行合并,并将合并的数据写入目标文件中的操作。
在一个可选的实施例中,对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并,以得到第二合并数据,并将所述第二合并数据写入至所述目标文件中包括:在所述第一文件已完全写入至所述本地缓存中的情况下,对写入所述本地缓存中且未被合并的数据与所述第一校验数据进行合并,以得到所述第二合并数据;将所述第二合并数据写入至所述目标文件中。在本实施例中,可能会存在小文件已经写完,但是最后写入的一部分数据并未进行合并的情况(原因在于最后写入的数据未达到合并阈值),在该情况下,可以直接将最后写入的未被合并的数据与对应的校验数据进行合并,并将合并得到的数据写入目标文件中。由此可知,在本实施例中,是将小文件的最后一块数据和小文件的校验数据合成一个完整的数据进行读写的,这样能够减少网络通信次数,提高读写效率,此外,还需要说明的是,一个小文件只有一个校验数据,减少了空间的浪费。此外,校验数据是小文件包括的多个块合并以后再计算的,可以有效减少计算校验值的次数,提高效率。
在一个可选的实施例中,在对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并之前,所述方法还包括:确定对所述第一文件中包括的已合并的数据进行预定校验所得到的历史校验数据;对所述历史校验数据以及写入所述本地缓存中的满足第二条件的数据整体进行所述预定校验,以得到所述第一校验数据。
在一个可选的实施例中,确定对所述第一文件中包括的已合并的数据进行预定校验所得到的历史校验数据包括:在所述第一文件中包括的已合并的数据为仅进行了一次合并的数据的情况下,对所述第一文件中包括的已合并的数据进行所述预定校验,以得到所述历史校验数据;在所述第一文件中包括的已合并的数据为进行了至少两次合并的数据的情况下,依次确定各次合并的数据所对应的校验数据,其中,第一次合并的数据所对应的校验数据为对第一次合并的数据进行所述预定校验后所得到的校验数据,其余次合并的数据所对应的校验数据为对前一次合并对应的校验数据与当前次合并的数据整体进行所述预定校验后所得到的校验数据,将最后一次合并的数据所对应的校验数据确定为所述历史校验数据。在本实施例中,第一文件中的数据可能会分块(一次合并操作得到的数据成为一块)存储到目标文件中,每一块数据都会对应一个校验数据,并且,后一块数据的校验数据是对前一块数据的校验数据和后一块数据一起进行预订校验后所得到的校验数据,通过该校验操作,最后会得到一个对应第一文件的校验数据,即,上述的第一校验数据。
在一个可选的实施例中,在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,所述方法还包括:生成所述第一文件的文件名,其中,所述文件名包括所述第一文件在所述目标文件中的偏移地址以及所述第一文件的数据量大小;将所述文件名发送给用于发出所述写指令的第一目标终端。在本实施例中,生成的文件名是为了方便读取第一文件的,并且,该文件名可以返回给发出指令的用户,从而方便用户后续可以快速读取该第一文件。
在一个可选的实施例中,将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,所述方法还包括:本地保存所述第一校验数据。在本实施例中,本地保存第一校验数据之后,可以实现在后续在读取第一文件时,对通过读取数据所计算得到的校验数据与本地保存的校验数据进行比较,并基于比较结果来确定是否存在数据传输错误的目的,从而保证了数据的可靠性。此外,还需要说明的是,在将第一校验数据写入目标文件中之后,本地也可以不用保存该第一校验数据,在该情况下,在后续读取第一文件时,再计算第一位文件的校验值,并比较再次计算的校验值和读取出的校验值,进而基于比较结果来确定数据的可靠性。
下面结合一个具体实施例,对小文件的写操作进行具体说明:
图4是根据本发明实施例的写操作的流程示意图,如图4所示,包括如下步骤:
S402,用户调用小文件打包(即小文件合并对外提供API,调用该API就表示对外写的是小文件)write接口(即,写接口)后,小文件打包内部会将小文件数据往大文件写入(只要调用了小文件合并接口,默认都是要将小文件数据写入大文件的);
S404,服务端从本地取一个可用的大文件(其中,取大文件的操作相当于是在本地创建了多个大文件,并且将这些大文件放到池子里,类似于线程池的方式,取大文件实际就是取大文件的文件描述符fd),如果不存在可用的大文件,就会打开一个新的大文件;
S406,用户写的小文件数据会存储在大文件的本地缓存(其中,每个大文件都对应一个本地缓存,且各个本地缓存是互相独立的)中;
S408,判断本地缓存中的数据是否达到了合并数据的阈值,如果达到合并阈值,转至步骤S410,如果没有达到合并阈值,转至步骤S412;
S410,在确定达到合并阈值的情况下,合并这些数据;
S412,如果没达到合并阈值,判断小文件中的数据是否都写完了,判断为是的情况下,即判断出小文件close了,即,小文件中的数据都写完了(其中,判断数据是否写完,是由用户决定的,即,当确定出用户调用了close接口后,就表示数据都写完了,内部也是通过判断close接口是否被调用来判断数据是否写完),这个时候也需要合并大文件缓存中的数据,需要转至步骤S410,否则,转至步骤S406,即,其他情况都会等用户接着写数据,直到达到合并阈值;
S414,合并后,会计算合并数据加上之前数据校验值的总的校验值(比如,现在有1到10这10个数据需要合并,刚开始1-4合并后,会算出这4个合并后的校验值C1,然后5-10又合并后,再算合并数据+校验数据C1的校验值得到1-10的总的校验值,依次类推),以CRC算法为例就是CRC(当前合并数据+上一次CRC校验值),并保持当前校验值(其中,该校验值是保存在本地的),将校验结果保存在本地;
S416,判断当前数据是否是最后一块数据,判断结果为否的情况下,转至步骤S418,判断结果为是的情况下,转至步骤S420;
S418,只将合并数据写入至大文件;
S420,如果当前数据是小文件的最后一块数据,则直接将合并数据和校验数据写入到大文件中;
S422,数据都写完以后,会返回小文件名给用户,小文件名包含了小文件在大文件中的偏移和大小。
在一个可选的实施例中,在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,所述方法还包括:接收到用于请求读取所述第一文件的读指令,其中,所述读指令中包括有所述第一文件的文件名,所述文件名包括所述第一文件在所述目标文件中的偏移地址以及所述第一文件的数据量大小;基于所述偏移地址以及所述数据量的大小读取所述第一文件以及对所述目标文件中存储的所述第一校验数据进行校验,并在校验通过的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端。
在一个可选的实施例中,基于所述偏移地址以及所述数据量的大小读取所述第一文件以及对所述目标文件中存储的所述第一校验数据进行校验,并在校验通过的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端包括:基于所述偏移地址跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照合并阈值读取所述第一文件中包括的数据,以及,基于所述数据量的大小确定所述目标文件中存储的所述第一校验数据;基于按照所述合并阈值依次读取的数据块计算所述第一文件的第三校验数据;将所述第一校验数据与所述第三校验数据进行比对;在比对结果为一致的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端。本实施例主要对数据的读操作进行了说明,其中,该实施例中的部分描述与前述的数据写操作中的类似,在此,不再赘述。
在一个可选的实施例中,基于按照所述合并阈值依次读取的数据块计算所述第一文件的第三校验数据包括:在仅读取到了一个数据块的情况下,对所述一个数据块进行预定校验,并将校验得到的校验数据确定为所述第三校验数据;在读取到了多个数据块的情况下,依次对各个数据块进行校验,并将对最后一个数据块进行校验所得到的校验数据确定为所述第三校验数据,其中,在对除第一个数据块之外的其他数据块进行校验时,采用对当前数据块以及所述当前数据块的前一个数据块的校验数据整体进行所述预定校验的校验方式。在本实施例中,在读取第一文件时,是按照合并阈值来读取各个数据块的(其中,满足合并阈值的数据可以作为一个数据块),并且在读取数据块的过程中会对每个数据块进行校验,其校验方式和写操作时的操作本质类似,都是对数据进行一块一块的校验,并且在对后一块数据校验时,是需要对前一块数据的校验结果和该后一块数据整体进行校验。
在一个可选的实施例中,基于所述偏移地址跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照合并阈值读取所述第一文件中包括的数据包括:对所述第一文件的文件名进行解析,以得到所述偏移地址;基于所述偏移地址中所记载的目标标识打开所述目标文件,其中,所述目标标识用于标识所述目标文件;基于所述偏移地址中所记载的所述第一文件的偏移位置跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照所述合并阈值读取所述第一文件中包括的数据。在本实施例中,在需要读数据时,可以基于待读取的数据的文件名来确定文件的存储位置以及数据大小,进而可以实现基于待读取的数据的文件名来实现数据读取的目的。
在一个可选的实施例中,将所述第一校验数据与所述第三校验数据进行比对之后,所述方法还包括:在比对结果为一致的情况下,向所述第二目标终端返回第一标识;在比对结果为不一致的情况下,向所述第二目标终端返回第二标识。在本实施例中,第一标识可以是一个用于标识成功的信息,第二标识可以是一个用于标识失败的信息。
下面结合一个具体实施例,对小文件的写操作进行具体说明:
图5是根据本发明实施例的读操作的流程示意图,如图5所示,包括如下步骤:
S502,用户基于小文件名读取数据;
S504,服务端解析该文件名,从文件名中获取该小文件所处的大文件名,在该大文件中的偏移值和小文件的大小,基于大文件名打开大文件;
S506,跳转到小文件在大文件中的偏移,并读取小文件数据;
S508,按照合并阈值读取数据块;
S510,计算读取的数据加上前一次校验值的校验数据(需要说明的是,在写的时候,由于一次网络通信大小的限制,一个小文件的数据需要分成多次到一个大文件中,每进行异常网络通信就需要算一下当前写的数据和之前数据的校验值,这两部分数据的一个总校验值,如果整个数据都写完了以后,才把最后算的那个校验值写到大文件中保存,本地的整体校验值就可以删了,这样做的主要目的是一个小文件就只保存一个校验值,还有删除写入的整体校验值主要是因为在海量小文件的场景下,本地把所有小文件的校验值都保存就需要消耗很多的存储空间,查询某个小文件的校验值速度会比直接算还要慢,所以将小文件的整体校验值写入大文件就删掉,因此在读的时候需要再算一下校验值,而且小文件都不大,基本几次网络通信就读完了,所以计算量也不大,不会消耗太大CPU资源。其中,该上一次校验值的校验数据会保存到本地),以CRC校验为例,就是CRC(当前读取的数据+上一次CRC校验值),保存校验值的计算结果;
S512,根据小文件的大小判断小文件是否读取完毕,如果读取完成,转至步骤S514,否则,转至步骤S508;
S514,读取小文件后面的校验值;
S516,判断小文件本地计算的校验值(即,保存到本地的校验值或称为保存到本地的校验结果)和读取的校验值(即,前述S510中计算出来的校验值)是否一致,判断结果为一致的情况下,转至步骤S518,判断结果为不一致的情况下,转至步骤S520;
S518,返回成功;
S520,返回失败。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本发明实施例的数据处理装置的结构框图,如图6所示,该装置包括:
接收模块62,用于接收到用于请求写入第一文件的写指令,其中,所述第一文件中包括的数据量小于或等于第一阈值;
第一确定模块64,用于基于所述写指令确定允许存储第一文件的目标文件,其中,所述目标文件中的空闲存储空间超过第二阈值,所述第二阈值大于或等于所述第一阈值;
第二确定模块66,用于确定与所述第一文件对应的第一校验数据,其中,所述第一校验数据用于校验所述第一文件的可靠性;
写模块68,用于将所述第一文件以及所述第一校验数据一并写入所述目标文件中。
在一个可选的实施例中,所述写模块68用于在所述目标文件的本地缓存中依次写入所述第一文件中包括的数据;对写入所述本地缓存中的满足第一条件的数据进行合并,以得到第一合并数据,并将所述第一合并数据写入至所述目标文件中;以及,对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并,以得到第二合并数据,并将所述第二合并数据写入至所述目标文件中。
在一个可选的实施例中,所述写模块68用于通过如下方式实现对写入所述本地缓存中的满足第一条件的数据进行合并,以得到第一合并数据,并将所述第一合并数据写入至所述目标文件中:在所述第一文件未完全写入至所述本地缓存中的情况下,对写入所述本地缓存中的数据总量达到合并阈值的数据进行合并,以得到所述第一合并数据;将所述第一合并数据写入至所述目标文件中。
在一个可选的实施例中,所述写模块68用于通过如下方式实现对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并,以得到第二合并数据,并将所述第二合并数据写入至所述目标文件中:在所述第一文件已完全写入至所述本地缓存中的情况下,对写入所述本地缓存中且未被合并的数据与所述第一校验数据进行合并,以得到所述第二合并数据;将所述第二合并数据写入至所述目标文件中。
在一个可选的实施例中,所述装置还用于在对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并之前,确定对所述第一文件中包括的已合并的数据进行预定校验所得到的历史校验数据;对所述历史校验数据以及写入所述本地缓存中的满足第二条件的数据整体进行所述预定校验,以得到所述第一校验数据。
在一个可选的实施例中,所述装置可以通过如下方式确定对所述第一文件中包括的已合并的数据进行预定校验所得到的历史校验数据:在所述第一文件中包括的已合并的数据为仅进行了一次合并的数据的情况下,对所述第一文件中包括的已合并的数据进行所述预定校验,以得到所述历史校验数据;在所述第一文件中包括的已合并的数据为进行了至少两次合并的数据的情况下,依次确定各次合并的数据所对应的校验数据,其中,第一次合并的数据所对应的校验数据为对第一次合并的数据进行所述预定校验后所得到的校验数据,其余次合并的数据所对应的校验数据为对前一次合并对应的校验数据与当前次合并的数据整体进行所述预定校验后所得到的校验数据,将最后一次合并的数据所对应的校验数据确定为所述历史校验数据。
在一个可选的实施例中,所述装置还用于在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,生成所述第一文件的文件名,其中,所述文件名包括所述第一文件在所述目标文件中的偏移地址以及所述第一文件的数据量大小;将所述文件名发送给用于发出所述写指令的第一目标终端。
在一个可选的实施例中,所述装置还用于在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,本地保存所述第一校验数据。
在一个可选的实施例中,所述装置还用于在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,接收到用于请求读取所述第一文件的读指令,其中,所述读指令中包括有所述第一文件的文件名,所述文件名包括所述第一文件在所述目标文件中的偏移地址以及所述第一文件的数据量大小;基于所述偏移地址以及所述数据量的大小读取所述第一文件以及对所述目标文件中存储的所述第一校验数据进行校验,并在校验通过的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端。
在一个可选的实施例中,所述装置还用于基于所述偏移地址跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照合并阈值读取所述第一文件中包括的数据,以及,基于所述数据量的大小确定所述目标文件中存储的所述第一校验数据;基于按照所述合并阈值依次读取的数据块计算所述第一文件的第三校验数据;将所述第一校验数据与所述第三校验数据进行比对;在比对结果为一致的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端。
在一个可选的实施例中,所述装置用于通过如下方式计算所述第三校验数据:在仅读取到了一个数据块的情况下,对所述一个数据块进行预定校验,并将校验得到的校验数据确定为所述第三校验数据;在读取到了多个数据块的情况下,依次对各个数据块进行校验,并将对最后一个数据块进行校验所得到的校验数据确定为所述第三校验数据,其中,在对除第一个数据块之外的其他数据块进行校验时,采用对当前数据块以及所述当前数据块的前一个数据块的校验数据整体进行所述预定校验的校验方式。
在一个可选的实施例中,所述装置用于通过如下方式实现基于所述偏移地址跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照合并阈值读取所述第一文件中包括的数据:对所述第一文件的文件名进行解析,以得到所述偏移地址;基于所述偏移地址中所记载的目标标识打开所述目标文件,其中,所述目标标识用于标识所述目标文件;基于所述偏移地址中所记载的所述第一文件的偏移位置跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照所述合并阈值读取所述第一文件中包括的数据。
在一个可选的实施例中,所述装置还用于在将所述第一校验数据与所述第三校验数据进行比对之后,在比对结果为一致的情况下,向所述第二目标终端返回第一标识;在比对结果为不一致的情况下,向所述第二目标终端返回第二标识。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据处理方法,其特征在于,包括:
接收到用于请求写入第一文件的写指令,其中,所述第一文件中包括的数据量小于或等于第一阈值;
基于所述写指令确定允许存储第一文件的目标文件,其中,所述目标文件中的空闲存储空间超过第二阈值,所述第二阈值大于或等于所述第一阈值;
确定与所述第一文件对应的第一校验数据,其中,所述第一校验数据用于校验所述第一文件的可靠性;
将所述第一文件以及所述第一校验数据一并写入所述目标文件中。
2.根据权利要求1所述的方法,其特征在于,将所述第一文件以及所述第一校验数据一并写入所述目标文件中包括:
在所述目标文件的本地缓存中依次写入所述第一文件中包括的数据;
对写入所述本地缓存中的满足第一条件的数据进行合并,以得到第一合并数据,并将所述第一合并数据写入至所述目标文件中;以及,
对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并,以得到第二合并数据,并将所述第二合并数据写入至所述目标文件中。
3.根据权利要求2所述的方法,其特征在于,
对写入所述本地缓存中的满足第一条件的数据进行合并,以得到第一合并数据,并将所述第一合并数据写入至所述目标文件中包括:在所述第一文件未完全写入至所述本地缓存中的情况下,对写入所述本地缓存中的数据总量达到合并阈值的数据进行合并,以得到所述第一合并数据;将所述第一合并数据写入至所述目标文件中;
对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并,以得到第二合并数据,并将所述第二合并数据写入至所述目标文件中包括:在所述第一文件已完全写入至所述本地缓存中的情况下,对写入所述本地缓存中且未被合并的数据与所述第一校验数据进行合并,以得到所述第二合并数据;将所述第二合并数据写入至所述目标文件中。
4.根据权利要求2所述的方法,其特征在于,在对写入所述本地缓存中的满足第二条件的数据与所述第一校验数据进行合并之前,所述方法还包括:
确定对所述第一文件中包括的已合并的数据进行预定校验所得到的历史校验数据;
对所述历史校验数据以及写入所述本地缓存中的满足第二条件的数据整体进行所述预定校验,以得到所述第一校验数据。
5.根据权利要求4所述的方法,其特征在于,确定对所述第一文件中包括的已合并的数据进行预定校验所得到的历史校验数据包括:
在所述第一文件中包括的已合并的数据为仅进行了一次合并的数据的情况下,对所述第一文件中包括的已合并的数据进行所述预定校验,以得到所述历史校验数据;
在所述第一文件中包括的已合并的数据为进行了至少两次合并的数据的情况下,依次确定各次合并的数据所对应的校验数据,其中,第一次合并的数据所对应的校验数据为对第一次合并的数据进行所述预定校验后所得到的校验数据,其余次合并的数据所对应的校验数据为对前一次合并对应的校验数据与当前次合并的数据整体进行所述预定校验后所得到的校验数据,将最后一次合并的数据所对应的校验数据确定为所述历史校验数据。
6.根据权利要求1所述的方法,其特征在于,在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,所述方法还包括:
生成所述第一文件的文件名,其中,所述文件名包括所述第一文件在所述目标文件中的偏移地址以及所述第一文件的数据量大小;
将所述文件名发送给用于发出所述写指令的第一目标终端。
7.根据权利要求1所述的方法,其特征在于,在将所述第一文件以及所述第一校验数据一并写入所述目标文件中之后,所述方法还包括:
接收到用于请求读取所述第一文件的读指令,其中,所述读指令中包括有所述第一文件的文件名,所述文件名包括所述第一文件在所述目标文件中的偏移地址以及所述第一文件的数据量大小;
基于所述偏移地址以及所述数据量的大小读取所述第一文件以及对所述目标文件中存储的所述第一校验数据进行校验,并在校验通过的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端。
8.根据权利要求7所述的方法,其特征在于,基于所述偏移地址以及所述数据量的大小读取所述第一文件以及对所述目标文件中存储的所述第一校验数据进行校验,并在校验通过的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端包括:
基于所述偏移地址跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照合并阈值读取所述第一文件中包括的数据,以及,基于所述数据量的大小确定所述目标文件中存储的所述第一校验数据;
基于按照所述合并阈值依次读取的数据块计算所述第一文件的第三校验数据;
将所述第一校验数据与所述第三校验数据进行比对;
在比对结果为一致的情况下,将读取的所述第一文件返回给用于发出所述读指令的第二目标终端。
9.根据权利要求8所述的方法,其特征在于,基于按照所述合并阈值依次读取的数据块计算所述第一文件的第三校验数据包括:
在仅读取到了一个数据块的情况下,对所述一个数据块进行预定校验,并将校验得到的校验数据确定为所述第三校验数据;
在读取到了多个数据块的情况下,依次对各个数据块进行校验,并将对最后一个数据块进行校验所得到的校验数据确定为所述第三校验数据,其中,在对除第一个数据块之外的其他数据块进行校验时,采用对当前数据块以及所述当前数据块的前一个数据块的校验数据整体进行所述预定校验的校验方式。
10.根据权利要求8所述的方法,其特征在于,基于所述偏移地址跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照合并阈值读取所述第一文件中包括的数据包括:
对所述第一文件的文件名进行解析,以得到所述偏移地址;
基于所述偏移地址中所记载的目标标识打开所述目标文件,其中,所述目标标识用于标识所述目标文件;
基于所述偏移地址中所记载的所述第一文件的偏移位置跳转到所述目标文件用于存储所述第一文件的偏移位置上,并按照所述合并阈值读取所述第一文件中包括的数据。
11.根据权利要求8所述的方法,其特征在于,将所述第一校验数据与所述第三校验数据进行比对之后,所述方法还包括:
在比对结果为一致的情况下,向所述第二目标终端返回第一标识;
在比对结果为不一致的情况下,向所述第二目标终端返回第二标识。
12.一种数据处理装置,其特征在于,包括:
接收模块,用于接收到用于请求写入第一文件的写指令,其中,所述第一文件中包括的数据量小于或等于第一阈值;
第一确定模块,用于基于所述写指令确定允许存储第一文件的目标文件,其中,所述目标文件中的空闲存储空间超过第二阈值,所述第二阈值大于或等于所述第一阈值;
第二确定模块,用于确定与所述第一文件对应的第一校验数据,其中,所述第一校验数据用于校验所述第一文件的可靠性;
写模块,用于将所述第一文件以及所述第一校验数据一并写入所述目标文件中。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至11任一项中所述的方法的步骤。
14.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至11任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011436437.1A CN112235422B (zh) | 2020-12-11 | 2020-12-11 | 数据处理方法、装置、计算机可读存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011436437.1A CN112235422B (zh) | 2020-12-11 | 2020-12-11 | 数据处理方法、装置、计算机可读存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112235422A true CN112235422A (zh) | 2021-01-15 |
CN112235422B CN112235422B (zh) | 2021-03-30 |
Family
ID=74124601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011436437.1A Active CN112235422B (zh) | 2020-12-11 | 2020-12-11 | 数据处理方法、装置、计算机可读存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235422B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568767A (zh) * | 2021-06-30 | 2021-10-29 | 宁波三星医疗电气股份有限公司 | 适用于智能用电终端的数据写文件校验方法 |
CN114301575A (zh) * | 2021-12-21 | 2022-04-08 | 阿里巴巴(中国)有限公司 | 数据处理方法、系统、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120751A1 (en) * | 2001-11-21 | 2003-06-26 | Husain Syed Mohammad Amir | System and method for providing virtual network attached storage using excess distributed storage capacity |
CN104536959A (zh) * | 2014-10-16 | 2015-04-22 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN107291915A (zh) * | 2017-06-27 | 2017-10-24 | 北京奇艺世纪科技有限公司 | 一种小文件存储方法、小文件读取方法及系统 |
CN107391280A (zh) * | 2017-07-31 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种小文件的接收和存储方法及装置 |
CN108234594A (zh) * | 2017-11-28 | 2018-06-29 | 北京市商汤科技开发有限公司 | 文件存储方法和装置、电子设备、程序和介质 |
CN109634914A (zh) * | 2018-11-21 | 2019-04-16 | 华侨大学 | 一种对讲语音小文件整存散分和分叉检索的优化方法 |
CN110531929A (zh) * | 2019-08-09 | 2019-12-03 | 济南浪潮数据技术有限公司 | 存储系统的小文件处理方法及装置 |
CN111930684A (zh) * | 2020-07-28 | 2020-11-13 | 苏州亿歌网络科技有限公司 | 基于hdfs的小文件处理方法、装置、设备及存储介质 |
-
2020
- 2020-12-11 CN CN202011436437.1A patent/CN112235422B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120751A1 (en) * | 2001-11-21 | 2003-06-26 | Husain Syed Mohammad Amir | System and method for providing virtual network attached storage using excess distributed storage capacity |
CN104536959A (zh) * | 2014-10-16 | 2015-04-22 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN107291915A (zh) * | 2017-06-27 | 2017-10-24 | 北京奇艺世纪科技有限公司 | 一种小文件存储方法、小文件读取方法及系统 |
CN107391280A (zh) * | 2017-07-31 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种小文件的接收和存储方法及装置 |
CN108234594A (zh) * | 2017-11-28 | 2018-06-29 | 北京市商汤科技开发有限公司 | 文件存储方法和装置、电子设备、程序和介质 |
CN109634914A (zh) * | 2018-11-21 | 2019-04-16 | 华侨大学 | 一种对讲语音小文件整存散分和分叉检索的优化方法 |
CN110531929A (zh) * | 2019-08-09 | 2019-12-03 | 济南浪潮数据技术有限公司 | 存储系统的小文件处理方法及装置 |
CN111930684A (zh) * | 2020-07-28 | 2020-11-13 | 苏州亿歌网络科技有限公司 | 基于hdfs的小文件处理方法、装置、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568767A (zh) * | 2021-06-30 | 2021-10-29 | 宁波三星医疗电气股份有限公司 | 适用于智能用电终端的数据写文件校验方法 |
CN113568767B (zh) * | 2021-06-30 | 2024-04-30 | 宁波三星医疗电气股份有限公司 | 适用于智能用电终端的数据写文件校验方法 |
CN114301575A (zh) * | 2021-12-21 | 2022-04-08 | 阿里巴巴(中国)有限公司 | 数据处理方法、系统、设备及介质 |
CN114301575B (zh) * | 2021-12-21 | 2024-03-29 | 阿里巴巴(中国)有限公司 | 数据处理方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112235422B (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108563532B (zh) | 数据处理方法及相关装置 | |
CN112235422B (zh) | 数据处理方法、装置、计算机可读存储介质及电子装置 | |
CN111831297B (zh) | 零差分升级方法及装置 | |
CN109040191B (zh) | 文件下载方法、装置、计算机设备和存储介质 | |
US11494403B2 (en) | Method and apparatus for storing off-chain data | |
CN112486915B (zh) | 数据存储方法及装置 | |
CN109145651B (zh) | 一种数据处理方法及装置 | |
CN108200387A (zh) | 一种文件的传输方法、系统及相机 | |
CN110659905A (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN110989934B (zh) | 区块链节点数据存储方法、区块链系统及区块链节点 | |
CN108563774B (zh) | Gps数据处理方法及装置 | |
CN108108262A (zh) | 具有检查所选择的存储器访问的硬件检查单元的集成电路 | |
CN109597566B (zh) | 一种数据读取、存储方法及装置 | |
CN112422604B (zh) | 文件上传方法、装置、系统及计算机设备 | |
CN112463067A (zh) | 一种NVMe-oF场景下的数据保护方法及设备 | |
CN112969198A (zh) | 数据传输方法、终端及存储介质 | |
CN115039082A (zh) | 日志写入方法、装置、电子设备以及存储介质 | |
CN115004162A (zh) | 确定数据完整性的方法、装置、电子设备及存储介质 | |
CN115599299A (zh) | 一种存储桶管理方法、装置及电子设备和存储介质 | |
CN112396100B (zh) | 一种细粒度分类模型的优化方法、系统及相关装置 | |
CN111459819B (zh) | 软件测试方法及装置、电子设备、计算机可读介质 | |
CN115033551A (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN113791735A (zh) | 视频数据存储方法、装置、计算机设备及存储介质 | |
CN113055433A (zh) | 一种文件传输方法、装置、设备及机器可读存储介质 | |
CN112306823B (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 |