CN105608162A - 文件处理方法和装置 - Google Patents

文件处理方法和装置 Download PDF

Info

Publication number
CN105608162A
CN105608162A CN201510960517.XA CN201510960517A CN105608162A CN 105608162 A CN105608162 A CN 105608162A CN 201510960517 A CN201510960517 A CN 201510960517A CN 105608162 A CN105608162 A CN 105608162A
Authority
CN
China
Prior art keywords
file
merge
destination
space
information
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
Application number
CN201510960517.XA
Other languages
English (en)
Other versions
CN105608162B (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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201510960517.XA priority Critical patent/CN105608162B/zh
Publication of CN105608162A publication Critical patent/CN105608162A/zh
Application granted granted Critical
Publication of CN105608162B publication Critical patent/CN105608162B/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/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种文件处理方法和装置,该方法包括:通过数据库管理文件逻辑信息,该文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、合并文件的信息,其中,合并文件由多个目标文件合并而成;根据文件逻辑信息通过操作系统中的文件处理对合并文件并发进行操作。本发明解决了相关技术中串行处理小文件的方法导致效率低的问题。

Description

文件处理方法和装置
技术领域
本发明涉及软件领域,具体而言,涉及一种文件处理方法和装置。
背景技术
在实现海量存储服务时,一台机器往往要存储千万数量的小文件,很容易超出机器的文件系统目录数量和文件数量限制,过多的小文件会影响系统的读写性能,容易产生磁盘碎片不能有效利用存储空间,所以需要将小文件进行合并。既然是提供海量的存储服务,那么还需要保证多用户并发读写效率,也就是保证将多文件合并的效率和从合并后大文件读小文件的效率,同时便于回收利用删除文件的空间。
在相关技术中,对小文件的合并都是串行进行的。例如,先打开一个文件用于合并,再将一个个小文件串行追加到文件的末尾,记录每个小文件的位置偏移信息和文件大小作为索引;读取时从索引集合中检索到小文件的索引,读取小文件位置偏移信息和文件大小,然后从合并的文件读取内容;删除小文件时,先删除小文件索引,然后将合并文件内其它文件平移占用删除文件的空间,再重建该合并文件的索引,这样小文件就从合并文件中删除了。
上述处理文件的方法均没有注重效率和吞吐量的问题,例如,由于合并文件时是串行进行的,如果多个用户存储文件,那就必须得等待;读取小文件时,小文件索引定位慢。这些问题导致了得处理文件的效率低,影响了存储服务的吞吐量。
发明内容
本发明实施例提供了一种文件处理方法和装置,以至少解决相关技术中串行处理小文件的方法导致效率低的问题。
根据本发明实施例的一个方面,提供了一种文件处理方法,该方法包括:通过数据库管理文件逻辑信息,所述文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、所述合并文件的信息;其中,所述合并文件由多个所述目标文件合并而成;根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作。
进一步地,通过所述数据库管理所述文件逻辑信息包括:在所述数据库中执行处理脚本,通过所述处理脚本的执行管理所述文件逻辑信息;其中,所述处理脚本的执行是原子性的,所述数据库为内存数据库。
进一步地,通过所述数据库管理所述文件逻辑信息包括:根据每个目标文件和合并文件对应的文件标识在所述数据库中管理所述文件逻辑信息;其中,所述数据库为键值数据库。
进一步地,在所述操作为打开所述合并文件并将所述目标文件合并到所述合并文件中的情况下,根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作包括:为所述目标文件分配其在所述合并文件中的信息并写入到所述数据库中,其中,所述目标文件在所述合并文件中的信息包括:位置偏移量和所述目标文件占用的空间,所述位置偏移量表示所述目标文件在所述合并文件中的起始位置;根据所述合并文件的信息打开所述合并文件,其中,所述合并文件的信息至少包括:所述合并文件的物理路径;根据位置偏移量和所述目标文件占用的空间将所述目标文件写入所述合并文件。
进一步地,在为所述目标文件分配其在所述合并文件中的信息之后,所述方法还包括:根据所述目标文件在所述合并文件中的信息对所述合并文件的信息中的以下至少之一进行更新:所述合并文件小文件的数量、所述合并文件中已经分配的空间大小、所述合并文件中的有效空间大小。
进一步地,为所述目标文件分配其在所述合并文件中的信息包括:从所述数据库中的资源回收区中选择占用空间大于或等于所述目标文件大小的项目;其中,所述项目是已经从所述合并文件中删除的文件,所述删除的文件的位置偏移量和占用的空间保留在所述数据库中;根据所述删除文件的位置偏移量和占用的空间为所述目标文件分配其在所述合并文件中的信息。
进一步地,根据所述删除文件的位置偏移量和占用的空间为所述目标文件分配其在所述合并文件中的信息包括:在所述删除文件占用的空间大于所述合并文件的大小的情况下,将所述删除文件的位置偏移量分配给所述目标文件,并从所述删除文件占用的空间中分配空间给所述目标文件;将所述目标文件的偏移量和所述目标文件占用的空间作为所述目标文件在所述合并文件中的信息;根据所述删除文件占用的空间的剩余修改所述资源回收区中的所述删除文件的位置偏移量和所述占用的空间。
进一步地,根据所述删除文件的位置偏移量和占用的空间为所述目标文件分配其在所述合并文件中的信息包括:在所述删除文件占用的空间等于所述合并文件的大小的情况下,将所述删除文件的位置偏移量和所述删除文件占用的空间分配给所述目标文件;将所述目标文件的偏移量和所述目标文件占用的空间作为所述目标文件在所述合并文件中的信息;从所述资源回收区中删除所述项目。
进一步地,在所述操作为从所述合并文件中读取所述目标文件情况下,根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作包括:根据所述目标文件在所述合并文件中的信息从所述合并文件中读取所述目标文件,其中,所述目标文件在所述合并文件中的信息包括:位置偏移量和所述目标文件占用的空间。
根据本发明实施例的另一方面,还提供了一种文件处理装置,该装置包括:管理单元,用于通过调用数据库管理文件逻辑信息,所述文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、所述合并文件的信息;其中,所述合并文件由多个所述目标文件合并而成;调用单元,用于根据所述文件逻辑信息通过操作系统中的文件处理对所述合并文件并发进行操作。
在本发明实施例中,采用本发明实施例,使用数据库管理文件逻辑信息,并通过调用操作系统中的文件处理并发读写合并文件的物理文件。通过本发明解决了现有的串行合并文件的方法效率低的技术问题,实现了高效的并发合并文件的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的文件处理方法的流程图;
图2是根据本发明实施例的可选的文件处理的全局数据组织的示意图;
图3是根据本发明实施例的可选的文件处理方法的流程图一;
图4是根据本发明实施例的可选的文件处理方法的流程图二;
图5是根据本发明实施例的可选的文件处理方法的流程图三;以及
图6是根据本发明实施例的文件处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在以下某些可选实施例中涉及到一些技术词语,在此对这些名词解释如下。需要说明的是,这些技术并不构成限定。
redis:缓存数据库服务。
lua脚本:是一个很轻量级的脚本语言,最快最高效的脚本语言之一。
系统调用open/read/write:操作系统层面的打开/读/写文件调用。
系统调用lseek:操作系统层面的文件位置,能把文件的读写指针指向到大于文件实际大小的位置。
根据本发明实施例,提供了一种文件处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种文件处理方法的示意图,如图1所示,该方法包括如下步骤:
步骤S102,通过数据库管理文件逻辑信息,该文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、合并文件的信息;其中,合并文件由多个目标文件合并而成。
步骤S104,根据文件逻辑信息通过操作系统中的文件处理对合并文件并发进行操作。
通过上述,使用数据库管理文件逻辑信息,并使用操作系统中的文件处理并发读写合并文件的物理文件,操作系统中的文件处理允许多进程或者多线程同时对同个文件进行读写的,从而解决了现有的串行合并文件的方法效率低的技术问题,实现了高效的并发合并文件的效果。
在上述步骤S104中使用了操作系统中对文件的操作,操作系统中的系统调用例如,open(用于文件打开),write(用于文件写入),lseek(用于从文件的某个位置进行读取),read(用于文件读取)等均是可以并行处理,例如,linux系统、windows系统等。在操作系统中,可以通过线程或者进程的方式来对文件进行处理,这些处理线程或进程是并发执行,即其它的处理线程可以执行同样的操作,这样可以提高并发的效率和吞吐量。
在步骤S102中通过数据库管理文件逻辑信息,作为一个可选的实施例,该数据库可以使用内存数据库,内存数据库对于数据的读取速度相对比较快,有利于提高文件处理效率。作为另外一个可选的实施例,如果数据库支持脚本执行,那么可以使用脚本的方式来对文件逻辑信息进行管理,该脚本的执行可以是原子性的,这样可以保证对共享变量的处理可以确保安全。即,在执行处理脚本作用于一个共享变量时,其他线程不能处理该共享变量,即只允许一个线程或进程执行,因此在处理脚本里面对多个共享变量修改是安全的,可以确保对文件逻辑信息处理的可靠性。
在上述步骤S102和步骤S104中涉及到文件逻辑信息管理,该文件逻辑信息用于将一个或多个目标文件(例如,小文件)合并到一个合并文件中(也可以称为大文件,该大文件之所以被称为大文件是因为其包括了多个小文件),因此,本实施例会涉及到多个文件的处理,为了便于处理,可以采用键值数据库来保存文件逻辑信息,在文件逻辑信息中,每个目标文件和合并文件均可以对应一个文件标识,通过这些文件标识可以在数据库中管理文件逻辑信息。由于数据库是键值保存的,而键值的处理较快,可以提高处理速度进而提高文件合并处理效率。
上述步骤S102中涉及的数据库可以选用redis高速缓存数据库,因为该redis高速缓存数据库属于内存数据库,即可以将数据完全在内存中操作,也可以持久化到磁盘中,并且支持事务,可以通过键值来保存文件的逻辑信息,因此,该redis高速缓存数据库可以应用于上述实施例中。而若一个数据库支持事务的数据库却不是内存数据库(比如memcached缓存数据库),则该数据库读写速度较慢,虽然也能够应用到上述实施例中,但是效果不好。
在上述段落中对数据库的一些可选实施方式进行了说明,下面对文件处理的一些可选实施例进行说明。
在上述步骤S104中,数据库操作系统中的文件处理可以包括:打开合并文件后将目标文件合并至合并文件中的操作,在操作为打开合并文件并将目标文件合并到合并文件中的情况下,可以先为目标文件分配其在合并文件中的信息,该信息可以包括:位置偏移量和目标文件占用的空间,并将该分配的位置偏移量和目标文件占用的空间信息写入到数据库中;合并文件的信息中可以至少包括合并文件的物理路径,根据该物理路径打开合并文件;根据位置偏移量确定目标文件在合并文件中的起始位置,根据目标文件占用的空间确定目标文件写入的长度,然后基于写入的起始位置和写入的长度将目标文件写入合并文件。在该可选实施方式中使用了位置偏移量和占用的空间来进行合并,作为另一个可选实施例,也可以使用目标文件在合并文件中的起始位置和终止位置将目标文件合并到合并文件中。
当上述实施例中的数据库采用redis高速缓存数据库时,该redis高速缓存数据库可以为处理进程或者线程预分配合并文件和位置偏移量,利用执行脚本的原子性实现多线程的并发处理而不冲突的效果,可以使用系统调用lseek文件处理函数定位到合并文件的位置偏移量处,实现多进程或者多线程同时写入,提高合并的速度。
下面结合redis数据库进行说明如下:在一个具体的实施例中,当在redis系统中要某个进程或者线程合并一个小文件FILE时,先用redis执行lua批处理脚本获取当前可用的逻辑文件合并文件TRUNK信息(新建或者从资源回收处获取),在TRUNK中预分配小文件FILE的位置偏移量和大小信息,分配之后更新合并文件TRUNK的总分配大小信息;当前进程或者线程得到FILE的位置偏移量后,打开物理文件TRUNK,使用系统调用lseek定位到FILE的位置偏移量,把内容写进去,通过上述实施例,在系统调用将目标文件写入至合并文件时,可以根据目标文件在合并文件中的位置偏移量和目标文件占用的空间来分别获取目标文件写入的位置和写入占用的空间,再通过合并文件的信息打开对应的合并文件,从而实现准确快速的写入目标文件至合并文件中的效果。
作为一个优选实施例,当上述实施例执行为目标文件分配其在合并文件中的信息的步骤之后,还可以根据目标文件在合并文件中的信息对合并文件的信息(包括合并文件小文件的数量、合并文件中已经分配的空间大小、合并文件中的有效空间大小的至少之一)进行更新,从而为下一次的将目标文件合并至合并文件的操作充分准备,保证了合并进程的高效进行。
对于合并文件中的小文件的删除,可以采用直接删除的方式。在本发明实施例中,提供了另外一种可选的删除处理方式,即,在数据库中创建一个资源回收区,用于保存删除文件的信息,在将目标文件合并至合并文件时,为目标文件分配其在合并文件中的信息,可以先将资源回收区中的已删除文件的占用空间分给目标文件,即从数据库中的资源回收区中选择占用空间大于或等于目标文件大小的项目(即已经从合并文件中删除的文件),以重复利用空间。将删除的文件的位置偏移量和占用的空间保留在数据库中;再根据删除文件的位置偏移量和占用的空间为目标文件分配其在合并文件中的信息。
下面依然以redis为例进行说明:当采用redis缓存数据库删除文件时,可以将FILE_ID的逻辑信息置为删除状态,其它逻辑信息依然保留,将这个FILE_ID的逻辑信息作为一个项目添加到该数据库的资源回收区REUSE列表;当要合并一个小文件(即目标文件)时,先遍历回收区列表,在删除文件占用的空间大于合并文件的大小的情况下,即在资源回收区列表里面找到一个分配空间大于文件size的项目,则将删除文件的位置偏移量分配给目标文件,并从删除文件占用的空间中分配空间给目标文件;如果资源回收区的删除文件的逻辑信息显示分配还有剩余,则修改该删除文件对应的项目的逻辑信息,即将目标文件的偏移量和目标文件占用的空间作为目标文件在合并文件中的信息;根据删除文件占用的空间的剩余修改资源回收区中的删除文件的位置偏移量和占用的空间,并继续留在资源回收区。当在删除文件占用的空间等于合并文件的大小的情况下,将删除文件的位置偏移量和删除文件占用的空间分配给目标文件;将目标文件的偏移量和目标文件占用的空间作为目标文件在合并文件中的信息;从资源回收区中删除项目,则从资源回收区将该项目删除,通过上述实施例,可以实现在高效地合并文件的同时,节省了空间,提高了空间资源的利用率。
在上述实施例中,将删除的文件放置到文件回收区(即上述资源回收区),实际上并没有真正的删除文件,即并没有实际上的物理空间的移除,相当于将合并文件属于删除文件那部分逻辑信息迁移到资源回收区。
在另外一个可选实施例中,对合并文件的操作可以是读取操作,例如,在上述步骤S104中,数据库操作系统中的文件处理可以包括:从合并文件中读取目标文件的操作,在操作为从合并文件中读取目标文件情况下,可以根据目标文件在合并文件中的信息从合并文件中读取目标文件,该目标文件在合并文件中的信息包括:位置偏移量和目标文件占用的空间。
通过上述实施例,可以实现对目标文件的读取和写入的并发操作,提高了目标文件合并的效率。
下面依然以redis为例结合如下可选实施例进行说明。
当采用redis缓存数据库读取文件时,高速缓存数据库redis启动时加载所有文件的信息到缓存中,每个小文件FILE(即上述的目标文件)都对应一个FILE_ID,每个合并文件TRUNK也有一个TRUNK_ID,由于高速缓存数据库redis是键值保存信息的,那么由FILE_ID获取小文件FILE逻辑信息(包括:位置偏移量,目标文件占用的空间,实际分配大小,TRUNK_ID),由TRUNK_ID获取合并文件TRUNK的逻辑信息(物理文件路径,当前分配空间大小,文件数量等),然后根据FILE位置偏移量和文件大小,读取合并文件TRUNK物理文件的内容。
在本可选实施例中,可以使用高速缓存数据库redis保存合并文件、小文件的逻辑信息,在读取文件中时直接得到文件的索引,再由索引读到文件信息。高速缓存数据库redis由键读值时间花费比传统的读索引需要花费的时间少且处理效率高。
下面结合图2至图5对上述实施例中的使用内存数据库的文件处理进行合并、删除和读取文件的过程进行详细描述。
图2示出了全局数据组织,下面对相关的名词进行解释:
redis:文件缓存服务,保存所有文件的逻辑信息,也称为高速缓存数据库;
TRUNK_INFO:合并文件的逻辑信息,该合并文件的逻辑信息中包括以下各个信息;
allocated_size:合并文件已分配空间大小;
effect_size:有效空间大小,合并小文件的总和;
file_count:小文件数量;
file_path:合并文件的物理路径;
TRUNK_ID:合并文件的ID;
FILE:小文件(即上述目标文件);
FILE_INFO:小文件逻辑信息(即目标文件的逻辑信息);
offset:在合并文件中位置偏移量;
alloc_size:分配空间大小;
real_size:实际文件大小;
trunk_id:合并文件的id;
FILE_ID:小文件ID;
TRUNK:合并文件物理文件;
block:小文件的存储空间,以块方式分配,大小可视具体情况而定;
LAST_TRUNK_ID:当前用来聚合小文件的合并文件ID;
REUSE:删除文件后的资源回收区。
读取小文件(即目标文件)的流程可以包括如下步骤:
由FILE_ID从redis中读取小文件的逻辑信息FILE_INFO(相当于目标文件的逻辑信息),由FILE_INFO得到trunk_id(相当于合并文件的id),offset(合并文件的位置偏移量),real_size(相当于目标文件的占用空间),由trunk_id(相当于合并文件的id)从redis中读取合并文件逻辑信息TRUNK_INFO,由TRUNK_INFO得到file_path(合并文件的物理路径),再定位到该合并文件的物理文件,由(offset,real_size)从合并文件中读取目标文件的相关内容。
下面的步骤是写文件的流程,即将目标文件写入合并文件的流程,该流程如图3所示。
步骤S301,服务器为合并处理请求分配一个进程,基于目标文件的键值获取目标文件的占用空间FILE_SIZE。
在上述步骤中,当一个用户调用文件存储的接口上传文件,即发起将目标文件合并至合并文件的请求时,服务器中的存储服务的进程池或者线程池分配一个进程或者线程处理这个请求,分配一个键值FILE_ID给该目标文件,读取上传的目标文件的内容FILE_CONTENT,计算出小文件大小(即目标文件的占用空间)FILE_SIZE。
步骤S302,由目标文件的占用空间计算需要分配的空间大小ALLOC_SIZE,其中,分配空间是block的整数倍,block大小可视情况而定;以block方式分配有利于空间的管理,优选地,本发明实施例中的每个block大小可以为1024KB。
步骤S303,使用redis调用lua脚本进行空间的预分配,并将目标文件的占用空间FILE_SIZE,分配空间大小ALLOC_SIZE作为参数传入。进入到lua脚本,即进入预分配空间处理流程,如流程图3。使用lua脚本执行使得整个预分配空间过程是原子性的,是事务性的,避免其它线程执行同样的操作带来的并发冲突、数据不一致现象,实现了提高处理效率的效果。
步骤S304,预分配空间lua脚本接收参数(ALLOC_SIZE,FILE_SIZE),然后对上述参数分别赋值给rsize和asize,其中,上述接收的参数包括目标文件的分配空间和目标文件的占用空间,即赋值变量过程如下:rsize=FILE_SIZE,asize=ALLOC_SIZE,即将目标文件的占用空间赋值给变量rsize,将目标文件的分配空间分配给asize。
下面结合步骤S305至S311介绍从资源回收区获取目标文件的分配空间的过程。
步骤S305,预分配空间lua脚本从redis读取资源回收区REUSE的值列表,并判断其是否为空。
如果资源回收区REUSE的值列表为空,则执行步骤S311,如果不为空,则执行步骤S306。
步骤S306,通过值列表中储存的FILE_ID读取到对应的删除文件的逻辑信息FILE_INFO。上述步骤具体的做法可以为如下所述:遍历值列表里面每个项目FILE_ID,从FILE_ID读取到对应的删除文件的逻辑信息FILE_INFO。
步骤S307,遍历值列表,判断是否存在一个删除文件的逻辑信息FILE_INFO中的alloc_size大于asize。
上述步骤实际上就是检查FILE_INFO里删除文件的分配空间alloc_size的值,判断该删除文件的分配空间alloc_size的值是否大于参数目标文件的分配空间asize。如果资源回收区REUSE存在一个项目,该项目对应FILE_INFO的alloc_size大于asize(即,该项目对应的目标文件的逻辑信息的配空间大于目标文件的分配空间),则执行步骤S308;否则执行步骤S311。
步骤S308,返回并更新合并文件的逻辑信息FILE_INFO中位置偏移量offset和合并文件的键值trunk_id,具体地做法为:将当前符合条件的合并文件的逻辑信息FILE_INFO中位置偏移量offset和合并文件的键值trunk_id作为返回值。修改FILE_INFO的值:alloc_size减去参数asize,offset加上参数asize,即将目标文件的逻辑信息中的分配空间值减去目标文件的并保存。
这一步从资源回收区找到符合条件的空间(原删除文件),更新空间分配后剩余空间的信息,巧妙的利用了删除文件所分配的每个block,这也是之前分配空间都是以block方式分配的原因。
步骤S309,判断修改后的目标文件的逻辑信息FILE_INFO中分配空间alloc_size的值是否等于0。
如果修改后的目标文件的逻辑信息FILE_INFO中分配空间alloc_size的值等于0,则执行步骤S310,将当前项目从资源回收区REUSE中删除并保存。这一步说明删除的小文件空间全部再分配出去了,需要将信息从REUSE中删除。如果修改后的目标文件的逻辑信息FILE_INFO中分配空间alloc_size的值不等于0,则更新空间分配后剩余空间的信息。
步骤S311至步骤S315是从当前活动的合并文件中预分配空间。
步骤S311,读取LAST_TRUNK_ID的值TRUNK_ID,并从TRUNK_ID读取合并文件逻辑信息TRUNK_INFO。
上述步骤S311是在资源回收区不存在资源合并当前小文件(即目标文件)的时候执行的,承接于步骤S305和步骤S307。
步骤S312,判断合并文件的逻辑信息TRUNK_INFO已分配空间allocated_size是否大于规定TRUNK最大值。
如果合并文件的逻辑信息TRUNK_INFO已分配空间allocated_size不大于规定TRUNK最大值,则进行步骤S313,当前合并文件空间大于预设的最大值,则执行步骤S314,新建一个新的合并文件,具体地,可以将新建的合并文件的键值TRUNK_ID+1作为当前合并文件的键值LAST_TRUNK_ID的新的值,初始化新的合并文件的逻辑信息TRUNK_INFO的值:allocated_size=0,effect_size=0,file_count=0,path=”/data/<LAST_TRUNK_ID>”。
步骤S313,将(trunk_id,offset)作为返回值,修改并保存合并文件的逻辑信息。
在步骤步骤S313中,可以将当前合并文件的键值LAST_TRUNK_ID的值TRUNK_ID,已分配空间allocated_size的组合(trunk_id,offset)作为返回值,修改合并文件的逻辑信息TRUNK_INFO,合并文件的已分配空间alloated_size加上参数目标文件的占用空间alloc_size的值,并调用数据库的文件处理保存。
步骤S315,得到返回值(trunk_id,offset)。
在步骤S315中,可以通过服务器处理线程执行完预分配空间lua脚本,得到预分配的(trunk_id,offset),这就是合并文件和位置偏移量。整个lua脚本执行是原子性的,中间对变量的修改不存在竞争问题。
上述图3中的各个步骤主要通过处理线程使用系统调用用于打开文件的函数open打开trunk_id指向的合并文件的物理文件,使用用于定位文件的函数lseek定位到文件的offset位置处,使用用于写入文件的函数write小文件内容FILE_CONTENT到合并文件中。这一步是并发执行的,其它的处理线程可以执行同样的打开、定位以及写入(open,lseek,write)操作,提高了并发的效率和吞吐量。
在执行完在将目标文件写入合并文件的步骤后,即在将目标文件成功写入合并文件之后,系统调用lua脚本保存小文件的键值FILE_ID所对应的逻辑信息FILE_INFO。将目标文件的键值、目标文件的分配空间、目标文件的占用空间和合并文件的键值(FILE_ID,ALLOC_SIZE,FILE_SIZE,TRUNK_ID)作为参数传入。
下面结合图4介绍通过lua脚本保存文件逻辑信息流程,图4中的步骤S401至步骤S403是保存文件的逻辑信息到redis中流程,就相当于小文件(即目标文件)的索引信息注册到数据库(如redis)中。如图4所示,该流程包括如下步骤:
步骤S401,lua脚本获取参数,赋值file_id=FILE_ID,asize=ALLOC_SIZE,rsize=FILE_SIZE,trunk_id=TRUNK_ID,其中,lua脚本所获取的参数包括目标文件的键值FILE_ID、目标文件的分配空间ALLOC_SIZE、目标文件的占用空间FILE_SIZE和合并文件的键值TRUNK_ID。
步骤S402,由合并文件的键值trunk_id获取合并文件的逻辑信息TRUNK_INFO,修改该合并文件的逻辑信息的值,其中,修改该合并文件的逻辑信息的值在操作时,可以将该信息修改为file_count+1,effect_size+参数rsize,即将合并文件小文件的数量加一个,并将合并文件中的有效空间大小增加目标文件的占用空间的大小。
步骤S403,以file_id为键,("trunk_id":trunk_id,"alloc_size":asize,"real_size":rsize,"offset":offset)为值,调用redis保存,其中,redis增加一个新的小文件时,可以以目标文件的键值file_id为键,以目标文件所在的合并文件的键值trunk_id、目标文件的分配空间asize、目标文件的占用空间rsize、目标文件在合并文件中的位置偏移量作为值,来通过服务器调用用于文件保存的函数对目标文件的各个逻辑信息进行保存。上传一个文件并进行合并步骤完成。
下面结合图5中的步骤S501至步骤S504,并以redis为例,介绍从合并文件中删除目标文件的过程。
步骤S501,删除一个目标文件FILE_ID,调用lua脚本,进入lua脚本的删除文件流程。
步骤S502,读取目标文件的参数,对file_id赋值为目标文件中的键值,其中,可以通过如下语言实现对变量file_id的赋值,file_id=FILE_ID。
步骤S503,由file_id从redis读取目标文件的逻辑信息FILE_INFO,并增加一个删除的状态标记,并保存该目标文件的逻辑信息。此时,该目标文件即为待删除的文件。从目标文件的逻辑信息FILE_INFO中获取合并文件的键值信息trunk_id,从而获取到合并文件的逻辑信息TRUNK_INFO。将合并文件的逻辑信息修改为Effect_size-rsize,,file_count-1,即有效空间比原来减小一个目标文件的占用空间的大小,合并文件中的文件数量信息比原来减小一个,保存修改后的合并文件的逻辑信息。这一步是将合并文件逻辑信息移除删除小文件的部分,但实际上目标文件所占用的物理空间没有移除。
步骤S504,从redis中获取资源回收区REUSE的值列表,将目标文件的键值file_id作为一个项目添加到值列表中。
这一步完成对删除文件空间的回收,相当于将合并文件属于删除文件那部分逻辑信息迁移到资源回收区。
以上段落内容分别介绍使用并发方式合并小文件、用键值缓存数据库保存文件的索引,提高文件的定位速度;使用伪删除方式回收删除小文件的空间,不影响合并内其它小文件的读写。通过这些方面提高文件合并的效率,提高读文件的速度,提供一个巧妙的高效的删除文件回收方式,从而达到总体吞吐量的提升。
根据本发明实施例的另一方面,还提供了一种文件处理装置,该装置用于实现上述实施例中的方法步骤,上述方法步骤中的每个步骤均可以作为一个单元来实现,或者也可以使用一个单元实现上述多个步骤,或者多个单元实现上述一个步骤,这些单元可以通过软件实现,这些单元也可以认为是通过处理器实现的功能,即这些单元可以位于处理器中。或者,这些单元可以认为是一种存储在存储器中的软件。
图6示出了该装置的一个示例,如图6所示,该装置可以包括:管理单元20和调用单元40。
其中,管理单元20,用于通过数据库管理文件逻辑信息,文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、合并文件的信息;其中,合并文件由多个目标文件合并而成;调用单元40,用于根据文件逻辑信息通过操作系统中的文件处理对合并文件并发进行操作。
通过上述,使用数据库管理文件逻辑信息,并使用操作系统中的文件处理并发读写合并文件的物理文件,操作系统中的文件处理允许多进程或者多线程同时对同个文件进行读写的,从而解决了现有的串行合并文件的方法效率低的技术问题,实现了高效的并发合并文件的效果。
为了实现多个进程或者线程并发读写,该管理单元20可以包括:执行模块,用于在数据库中执行处理脚本,通过处理脚本的执行管理文件逻辑信息;其中,处理脚本的执行是原子性的,数据库为内存数据库。
由于上述执行模块在内存数据库执行处理脚本可以是串行原子性的,当内存数据库中的原子操作作用于一个共享变量时,其他线程不能处理该共享变量,即只允许一个线程或进程执行,因此在处理脚本里面对多个共享变量修改是安全的,可以实现多个进程或者线程并发读写不冲突的效果。
为了进一步提高文件处理的效率,采用键值保存的方式,上述实施例中的管理单元20还可以包括:管理模块,用于根据每个目标文件和合并文件对应的文件标识在数据库中管理文件逻辑信息;其中,数据库为键值数据库。
因数据库是键值保存的,根据文件标识在数据库中管理文件逻辑信息,也即根据键来管理文件逻辑信息,由于根据键获取值的速度快,从而解决了根据索引获取值时查找索引慢的问题。
上述实施例中的对文件的并发操作可以包括对文件的合并操作,上述的调用单元40可以包括:分配子单元,用于在操作为打开合并文件并将目标文件合并到合并文件中的情况下,为目标文件分配其在合并文件中的信息并写入到数据库中,其中,目标文件在合并文件中的信息包括:位置偏移量和目标文件占用的空间,位置偏移量表示目标文件在合并文件中的起始位置;打开子单元,用于根据合并文件的信息打开合并文件,其中,合并文件的信息至少包括:合并文件的物理路径;写入子单元,用于根据位置偏移量和目标文件占用的空间将目标文件写入合并文件。
通过上述实施例,在系统调用将目标文件写入至合并文件时,可以根据目标文件在合并文件中的位置偏移量和目标文件占用的空间来分别获取目标文件写入的位置和写入占用的空间,再通过合并文件的信息打开对应的合并文件,从而实现准确快速的写入目标文件至合并文件中的效果。
在写入子单元将目标文件写入合并文件之后,还要将目标文件在合并文件中的逻辑信息进行相应的更新,可以通过更新单元来实现,该更新单元,用于在为目标文件分配其在合并文件中的信息之后,根据目标文件在合并文件中的信息对合并文件的信息中的以下至少之一进行更新:合并文件小文件的数量、合并文件中已经分配的空间大小、合并文件中的有效空间大小。
通过上述实施例,将为目标文件分配后的合并文件的信息更新,为下一次的合并作充分的准备,保证了合并进程的高效进行。
上述实施例中的对文件的并发操作还可以包括对文件的删除操作,分配子单元包括:选择模块,用于从数据库中的资源回收区中选择占用空间大于或等于目标文件大小的项目;其中,项目是已经从合并文件中删除的文件,删除的文件的位置偏移量和占用的空间保留在数据库中;分配模块,用于根据删除文件的位置偏移量和占用的空间为目标文件分配其在合并文件中的信息。
通过上述实施例,可以在数据库中创建一个资源回收区,用于保存删除文件的信息,在将目标文件合并至合并文件时,可以先将资源回收区中的已删除文件的占用空间分给目标文件,以重复利用空间。
为了在目标文件的删除操作时,节省空间并提高空间资源的利用率,可以从删除文件占用空间中为目标文件分配空间,当删除文件的占用空间大于目标文件的占用的空间时,可以通过上述实施例中的分配模块的三个子模块来实现目标文件的删除操作,其中,第一分配子模块,用于位置空间分配子模块,用于在删除文件占用的空间大于合并文件的大小的情况下,将删除文件的位置偏移量分配给目标文件,并从删除文件占用的空间中分配空间给目标文件;第二分配子模块,用于将目标文件的偏移量和目标文件占用的空间作为目标文件在合并文件中的信息;第三分配子模块,用于根据删除文件占用的空间的剩余修改资源回收区中的删除文件的位置偏移量和占用的空间。
而当删除文件的占用空间等于目标文件的占用的空间时,对目标文件的删除操作可以通过如下分配模块的子模块来实现。其中,分配模块可以包括:第四分配子模块,用于在删除文件占用的空间等于合并文件的大小的情况下,将删除文件的位置偏移量和删除文件占用的空间分配给目标文件;第五分配子模块,用于将目标文件的偏移量和目标文件占用的空间作为目标文件在合并文件中的信息;删除项目模块,用于从资源回收区中删除项目。
在上述实施例中,在将目标文件合并至合并文件时,可先在已删除文件占用的空间中为目标文件分配写入的空间,当已删除文件占用的空间等于合并文件的大小的情况下,将该已删除文件的信息全部赋给目标文件,作为其在合并文件中的信息,并将该已删除文件的对应项目从资源回收区中删除。通过上述实施例,可以实现高效地利用空间实现目标文件的合并。
上述实施例中的对文件的并发操作还可以包括对文件的读取操作,与上述的合并和删除操作可以是并发进行的,具体地,可以通过如下模块实现:
调用单元包括:调用模块,用于在操作为从合并文件中读取目标文件情况下,根据目标文件在合并文件中的信息从合并文件中读取目标文件,其中,目标文件在合并文件中的信息包括:位置偏移量和目标文件占用的空间。
通过上述实施例,可以实现对目标文件的读取和写入的并发操作,提高了目标文件合并的效率。
上述实施例针对传统的文件合并技术不能很好的提供存储服务问题,使用并发方式合并小文件;用键值缓存数据库保存文件的索引,提高文件的定位速度;使用伪删除方式回收删除小文件的空间,不影响合并内其它小文件的读写。通过这些方面提高文件合并的效率,提高读文件的速度,提供一个巧妙的高效的删除文件回收方式,从而达到总体吞吐量的提升。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种文件处理方法,其特征在于,包括:
通过数据库管理文件逻辑信息,所述文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、所述合并文件的信息;其中,所述合并文件由多个所述目标文件合并而成;
根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作。
2.根据权利要求1所述的方法,其特征在于,通过所述数据库管理所述文件逻辑信息包括:
在所述数据库中执行处理脚本,通过所述处理脚本的执行管理所述文件逻辑信息;其中,所述处理脚本的执行是原子性的,所述数据库为内存数据库。
3.根据权利要求1所述的方法,其特征在于,通过所述数据库管理所述文件逻辑信息包括:
根据每个目标文件和合并文件对应的文件标识在所述数据库中管理所述文件逻辑信息;其中,所述数据库为键值数据库。
4.根据权利要求1至3中任一项所述的方法,其特征在于,在所述操作为打开所述合并文件并将所述目标文件合并到所述合并文件中的情况下,根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作包括:
为所述目标文件分配其在所述合并文件中的信息并写入到所述数据库中,其中,所述目标文件在所述合并文件中的信息包括:位置偏移量和所述目标文件占用的空间,所述位置偏移量表示所述目标文件在所述合并文件中的起始位置;
根据所述合并文件的信息打开所述合并文件,其中,所述合并文件的信息至少包括:所述合并文件的物理路径;
根据位置偏移量和所述目标文件占用的空间将所述目标文件写入所述合并文件。
5.根据权利要求4所述的方法,其特征在于,在为所述目标文件分配其在所述合并文件中的信息之后,所述方法还包括:
根据所述目标文件在所述合并文件中的信息对所述合并文件的信息中的以下至少之一进行更新:所述合并文件小文件的数量、所述合并文件中已经分配的空间大小、所述合并文件中的有效空间大小。
6.根据权利要求4所述的方法,其特征在于,为所述目标文件分配其在所述合并文件中的信息包括:
从所述数据库中的资源回收区中选择占用空间大于或等于所述目标文件大小的项目;其中,所述项目是已经从所述合并文件中删除的文件,所述删除的文件的位置偏移量和占用的空间保留在所述数据库中;
根据所述删除文件的位置偏移量和占用的空间为所述目标文件分配其在所述合并文件中的信息。
7.根据权利要求6所述的方法,其特征在于,根据所述删除文件的位置偏移量和占用的空间为所述目标文件分配其在所述合并文件中的信息包括:
在所述删除文件占用的空间大于所述合并文件的大小的情况下,将所述删除文件的位置偏移量分配给所述目标文件,并从所述删除文件占用的空间中分配空间给所述目标文件;
将所述目标文件的偏移量和所述目标文件占用的空间作为所述目标文件在所述合并文件中的信息;
根据所述删除文件占用的空间的剩余修改所述资源回收区中的所述删除文件的位置偏移量和所述占用的空间。
8.根据权利要求6所述的方法,其特征在于,根据所述删除文件的位置偏移量和占用的空间为所述目标文件分配其在所述合并文件中的信息包括:
在所述删除文件占用的空间等于所述合并文件的大小的情况下,将所述删除文件的位置偏移量和所述删除文件占用的空间分配给所述目标文件;
将所述目标文件的偏移量和所述目标文件占用的空间作为所述目标文件在所述合并文件中的信息;
从所述资源回收区中删除所述项目。
9.根据权利要求1至3中任一项所述的方法,其特征在于,在所述操作为从所述合并文件中读取所述目标文件情况下,根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作包括:
根据所述目标文件在所述合并文件中的信息从所述合并文件中读取所述目标文件,其中,所述目标文件在所述合并文件中的信息包括:位置偏移量和所述目标文件占用的空间。
10.一种文件处理装置,其特征在于,包括:
管理单元,用于通过数据库管理文件逻辑信息,所述文件逻辑信息包括以下至少之一:目标文件在合并文件中的信息、所述合并文件的信息;其中,所述合并文件由多个所述目标文件合并而成;
调用单元,用于根据所述文件逻辑信息通过调用操作系统中的文件处理对所述合并文件并发进行操作。
CN201510960517.XA 2015-12-17 2015-12-17 文件处理方法和装置 Active CN105608162B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510960517.XA CN105608162B (zh) 2015-12-17 2015-12-17 文件处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510960517.XA CN105608162B (zh) 2015-12-17 2015-12-17 文件处理方法和装置

Publications (2)

Publication Number Publication Date
CN105608162A true CN105608162A (zh) 2016-05-25
CN105608162B CN105608162B (zh) 2019-03-19

Family

ID=55988102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510960517.XA Active CN105608162B (zh) 2015-12-17 2015-12-17 文件处理方法和装置

Country Status (1)

Country Link
CN (1) CN105608162B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106202275A (zh) * 2016-06-30 2016-12-07 乐视控股(北京)有限公司 对象文件的追加、截断方法及装置
CN107463395A (zh) * 2016-06-03 2017-12-12 腾讯科技(深圳)有限公司 组件调用方法及装置
CN108763473A (zh) * 2018-05-29 2018-11-06 郑州云海信息技术有限公司 一种分布式存储的本地对象存储方法及装置
CN108776664A (zh) * 2018-04-19 2018-11-09 北京立思辰计算机技术有限公司 强制文件回收方法和系统
CN109727106A (zh) * 2018-09-13 2019-05-07 网联清算有限公司 对账文件的重组方法、装置及电子设备
CN110045978A (zh) * 2019-04-16 2019-07-23 杭州阿姆科技有限公司 一种不同类型ssd设备的固件统一升级方法与系统
CN111723056A (zh) * 2020-06-09 2020-09-29 北京青云科技股份有限公司 小文件的处理方法、装置、设备和存储介质
CN111797140A (zh) * 2020-07-06 2020-10-20 上海弘连网络科技有限公司 基于智能终端电子数据的异常行为分析方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102332029A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量可归类小文件关联存储方法
CN103678579A (zh) * 2013-12-12 2014-03-26 浪潮电子信息产业股份有限公司 一种小文件存储效率的优化方法
US20150019353A1 (en) * 2012-02-06 2015-01-15 Adstruc, Inc. System for managing the utilization of a plurality of outdoor advertising units
CN104731921A (zh) * 2015-03-26 2015-06-24 江苏物联网研究发展中心 Hadoop分布式文件系统针对日志型小文件的存储和处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102332029A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量可归类小文件关联存储方法
US20150019353A1 (en) * 2012-02-06 2015-01-15 Adstruc, Inc. System for managing the utilization of a plurality of outdoor advertising units
CN103678579A (zh) * 2013-12-12 2014-03-26 浪潮电子信息产业股份有限公司 一种小文件存储效率的优化方法
CN104731921A (zh) * 2015-03-26 2015-06-24 江苏物联网研究发展中心 Hadoop分布式文件系统针对日志型小文件的存储和处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘俊龙等: "基于redis的海量互联网小文件实时存储与索引策略研究", 《计算机研究与发展》 *
谢骏等: "基于数据库的海量小文件的实时存储优化方案", 《2014全国高性能计算学术年会论文集》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463395A (zh) * 2016-06-03 2017-12-12 腾讯科技(深圳)有限公司 组件调用方法及装置
CN107463395B (zh) * 2016-06-03 2020-10-09 腾讯科技(深圳)有限公司 组件调用方法及装置
CN106202275A (zh) * 2016-06-30 2016-12-07 乐视控股(北京)有限公司 对象文件的追加、截断方法及装置
CN108776664A (zh) * 2018-04-19 2018-11-09 北京立思辰计算机技术有限公司 强制文件回收方法和系统
CN108763473A (zh) * 2018-05-29 2018-11-06 郑州云海信息技术有限公司 一种分布式存储的本地对象存储方法及装置
CN109727106A (zh) * 2018-09-13 2019-05-07 网联清算有限公司 对账文件的重组方法、装置及电子设备
CN110045978A (zh) * 2019-04-16 2019-07-23 杭州阿姆科技有限公司 一种不同类型ssd设备的固件统一升级方法与系统
CN111723056A (zh) * 2020-06-09 2020-09-29 北京青云科技股份有限公司 小文件的处理方法、装置、设备和存储介质
CN111723056B (zh) * 2020-06-09 2024-04-30 北京青云科技股份有限公司 小文件的处理方法、装置、设备和存储介质
CN111797140A (zh) * 2020-07-06 2020-10-20 上海弘连网络科技有限公司 基于智能终端电子数据的异常行为分析方法

Also Published As

Publication number Publication date
CN105608162B (zh) 2019-03-19

Similar Documents

Publication Publication Date Title
CN105608162A (zh) 文件处理方法和装置
US10642861B2 (en) Multi-instance redo apply
US10474656B1 (en) Repurposing log files
US11693830B2 (en) Metadata management method, system and medium
CN103064639B (zh) 数据存储方法及装置
US5317728A (en) Storage management of a first file system using a second file system containing surrogate files and catalog management information
US7194589B2 (en) Reducing disk IO by full-cache write-merging
US10242050B2 (en) Database caching in a database system
US11487435B1 (en) System and method for non-volatile memory-based optimized, versioned, log-structured metadata storage with efficient data retrieval
EP0474395A2 (en) Data storage hierarchy with shared storage level
US20020073082A1 (en) System modification processing technique implemented on an information storage and retrieval system
KR20170008152A (ko) 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치
DE112011105774B4 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
CN104461685B (zh) 虚拟机处理方法和虚拟计算机系统
US20200097205A1 (en) System and method for early removal of tombstone records in database
US10606494B2 (en) System and method for managing volumes of data in a block storage system as a function of a short condition register and a long condition register
CN108021449A (zh) 一种协程实现方法、终端设备及存储介质
CN104881466A (zh) 数据分片的处理以及垃圾文件的删除方法和装置
Lee et al. ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework
US20200233801A1 (en) TRADING OFF CACHE SPACE AND WRITE AMPLIFICATION FOR B(epsilon)-TREES
CN107153643A (zh) 数据表连接方法及装置
CN106227469A (zh) 用于分布式存储集群的数据删除方法及系统
CN116186085A (zh) 一种基于缓存梯度冷热数据分层机制的键值存储系统及方法
US11775527B2 (en) Storing derived summaries on persistent memory of a storage device
CN106855858A (zh) 数据库操作方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant