CN106897391A - 文件存储方法及装置 - Google Patents
文件存储方法及装置 Download PDFInfo
- Publication number
- CN106897391A CN106897391A CN201710063006.7A CN201710063006A CN106897391A CN 106897391 A CN106897391 A CN 106897391A CN 201710063006 A CN201710063006 A CN 201710063006A CN 106897391 A CN106897391 A CN 106897391A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- numerical value
- write
- storage structure
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
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)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文件存储方法及装置。其中,该方法包括:从缓存中获取预定数量的数据;将获取到的所述数据根据第一文件存储结构写入第一文件中;将所述第一文件根据所述第二文件存储结构写入到第二文件中,其中,所述第二文件能够写入多个所述第一文件;将所述第二文件进行存储。本发明解决了相关技术中文件存储的性能较低的技术问题。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种文件存储方法及装置。
背景技术
随着短信业务的快速发展,公司业务发展也从单机模式发展为集群模式,用于提高业务接口速度,然而采用上述方式导致数据库瓶颈越来越明显,进而又引入了高速缓存机制缓解数据库的压力。可是由于业务存在短时峰值的问题会引起高速读写进而导致缓存持久化频繁,对业务峰值时的处理效率产生很大影响,如果采用关闭持久化的方式又可能会引起故障数据的恢复问题。
针对上述问题,相关技术中采用将缓存中的数据序列化为小文件的方式进行数据缓存和故障数据恢复,并且在接口程序设定数量阈值及时间阈值,在缓存中的数据的任何一项达到阈值时,将缓存中的内容提取并序列化后存入一个小文件中,然后由其他线程根据目录中的文件记录,将文件数据的异步处理入库,通过该方式可以成功的将数据库的访问压力降低三至四个数量级,但是会产生是文件系统的索引文件暴增的问题。在实际工作中,也曾出现过系统的索引文件耗尽的情况,从而导致了文件缓存目录的访问时间开销过大。对于该问题,公司采取缩短数据备份删除任务的周期,但是有时数据备份删除任务耗时较长,而且硬盘故障率也一直居高不下。
针对上述相关技术中文件存储的性能较低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种文件存储方法及装置,以至少解决相关技术中文件存储的性能较低的技术问题。
根据本发明实施例的一个方面,提供了一种文件存储方法,包括:从缓存中获取预定数量的数据;将获取到的所述数据根据第一文件存储结构写入第一文件中;将所述第一文件根据所述第二文件存储结构写入到第二文件中,其中,所述第二文件能够写入多个所述第一文件;将所述第二文件进行存储。
进一步地,将所述第一文件根据所述第二文件存储结构写入到所述第二文件中包括:获取所述第二文件存储结构中的写入位置数值,其中,所述写入位置数值用于所述第二文件中能够写入所述第一文件的起始位置;根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域;在锁定成功后,将所述第一文件写入到所述数据长度区域;在写入成功后,进行锁定释放并且更新所述写入位置数值。
进一步地,还包括:在锁定失败之后,等待预定时长后,重新根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域。
进一步地,将所述第二文件进行存储之后,所述方法还包括:获取所述第二文件;根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构,其中,所述第一文件存储中结构中至少包括所述第一文件的文件长度,所述第二文件包括多个所述第一文件;根据所述第一文件的文件长度从所述第二文件中读取所述第一文件。
进一步地,在根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构之前,所述方法还包括:根据所述读取位置数值对所述第二文件进行锁定;在从所述第二文件中读取所述第一文件成功之后,所述方法还包括:进行锁定释放。
进一步地,在从所述第二文件中读取所述第一文件之后,所述方法还包括:根据所述第一文件的文件长度更新所述读取位置数值。
进一步地,在从所述第二文件中读取所述第一文件之后,所述方法还包括:修改所述第二文件中的所述第一文件存储结构中的删除标记,其中,修改后的所述删除标记用于指示所述第一文件已经被读取。
进一步地,将获取到的所述数据写入所述第一文件中包括:将所述数据进行序列化;将序列化后的数据进行压缩;将压缩后的数据写入所述第一文件中。
根据本发明实施例的另一方面,还提供了一种文件存储装置,包括:第一获取单元,用于从缓存中获取预定数量的数据;第一写入单元,用于将获取到的所述数据根据第一文件存储结构写入第一文件中;第二写入单元,用于将所述第一文件根据所述第二文件存储结构写入到第二文件中,其中,所述第二文件能够写入多个所述第一文件;存储单元,用于将所述第二文件进行存储。
进一步地,所述第二写入单元包括:获取模块,用于获取所述第二文件存储结构中的写入位置数值,其中,所述写入位置数值用于所述第二文件中能够写入所述第一文件的起始位置;第一锁定模块,用于根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域;第一写入模块,用于在锁定成功后,将所述第一文件写入到所述数据长度区域;更新模块,用于在写入成功后,进行锁定释放并且更新所述写入位置数值。
进一步地,还包括:锁定单元,用于在锁定失败之后,等待预定时长后,重新根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域。
进一步地,所述装置还包括:第二获取单元,用于将所述第二文件进行存储之后,获取所述第二文件;第一读取单元,用于将所述第二文件进行存储之后,根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构,其中,所述第一文件存储中结构中至少包括所述第一文件的文件长度,所述第二文件包括多个所述第一文件;第二读取单元,用于根据所述第一文件的文件长度从所述第二文件中读取所述第一文件。
进一步地,所述装置还包括:第二锁定模块,用于在根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构之前,根据所述读取位置数值对所述第二文件进行锁定;释放模块,用于在从所述第二文件中读取所述第一文件成功之后,进行锁定释放。
进一步地,所述装置还包括:更新单元,用于在从所述第二文件中读取所述第一文件之后,根据所述第一文件的文件长度更新所述读取位置数值。
进一步地,所述装置还包括:修改单元,用于在从所述第二文件中读取所述第一文件之后,修改所述第二文件中的所述第一文件存储结构中的删除标记,其中,修改后的所述删除标记用于指示所述第一文件已经被读取。
进一步地,所述第一写入单元包括:序列化模块,用于将所述数据进行序列化;压缩模块,用于将序列化后的数据进行压缩;第二写入模块,用于将压缩后的数据写入所述第一文件中。
在本发明实施例中,从缓存中获取预定数量的数据,然后将获取到的数据根据第一文件存储结构写入第一文件中,并将第一文件根据第二文件存储结构写入到第二文件中,其中,第二文件能够写入多个第一文件,在将第二文件进行存储。通过本发明实施例,解决了相关技术中文件存储的性能较低的技术问题,从而实现了提高文件存储的性能的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的文件存储方法的流程图;
图2是根据本发明实施例的小文件存储结构的示意图;
图3是根据本发明实施例的大文件存储结构的示意图;
图4是根据本发明实施例的文件写入的流程图;
图5是根据本发明实施例的文件读取的流程图;
图6是根据本发明实施例的文件数据恢复的流程图;以及
图7是根据本发明实施例的文件存储装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种文件存储方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本发明实施中,由于第一文件的文件存储量要小于第二文件的文件存储量,所以在本发明实施例中第一文件又称为小文件,第二文件又称为大文件。
在本实施例中,提供了一种文件存储方法,图1是根据本发明实施例的文件存储方法的流程图,如图1所示,该方法可以包括如下步骤:
步骤S102,从缓存中获取预定数量的数据。
步骤S104,将获取到的数据根据第一文件存储结构写入第一文件中。
步骤S106,将第一文件根据第二文件存储结构写入到第二文件中,其中,第二文件能够写入多个第一文件。
步骤S108,将第二文件进行存储。
通过上述步骤,从缓存中获取预定数量的数据,然后将获取到的数据根据第一文件存储结构(即下述的小文件存储结构)写入第一文件(即下述的小文件)中,并将小文件根据第二文件存储结构(即下述的大文件存储结构)写入到第二文件(即下述的大文件)中,其中,大文件能够写入多个小文件,在将大文件进行存储。通过本发明实施例,解决了相关技术中文件存储的性能较低的技术问题,从而实现了提高文件存储的性能的技术效果。
在步骤S102提供的技术方案中,从内存缓存中获取指定量的数据。
在步骤S104提供的技术方案中,首先从缓存中根据阈值的触发获取缓存数据,然后需要有创建小文件存储结构,图2是根据本发明实施例的小文件存储结构的示意图,如图2所示包括:文件头和文件体,其中,文件头包括文件长度、文件类型、是否删除标记以及数据校验位;文件体中包括数据区。再按照小文件存储结构的顺序依次写入指定位数的文件长度数据,文件类型数据,从而实现将获取到的数据根据第一文件存储结构写入第一文件中的效果。
在步骤S106提供的技术方案中,根据大文件存储结构将小文件写入大文件指定存储区域中,图3是根据本发明实施例的大文件存储结构的示意图,如图3所示同样包括文件头和文件体两部分,其中,文件头包括文件长度、写入位置、读取位置以及文件归结数,文件体包括n个小文件和空白区,n为正整数。从而实现了将小文件根据大文件存储结构写入到大文件中,其中,如图3所示大文件能够写入多个小文件。最后通过步骤S108,将大文件进行存储。
下面结合图4对本发明一个可选的实施方式进行说明,图4是根据本发明实施例的文件写入的流程图,该方法可以包括如下步骤:
步骤S401,从内存中加载数据。
步骤S402,利用序列化技术对获取到的数据进行序列化。
步骤S403,利用压缩技术对获取到的数据进行压缩。
步骤S404,根据小文件存储结构进行数据填充。
步骤S405,判断是否存在可写入的大文件;在不存在可写入的大文件的情况下,执行步骤S406,否则,执行步骤S407。
步骤S406,根据大文件存储结构创建大文件。
步骤S407,获取大文件中写入区域的文件锁。
步骤S408,将小文件数据写入到大文件的指定位置。
步骤S409,更新大文件的归结数及写入位置。
步骤S410,释放大文件中写入位置文件锁。
在上述步骤中,首先执行步骤S401,从内存中加载数据;再通过步骤S402利用序列化技术,将数据转换成字节数组;执行步骤S403,利用压缩技术,选择合适的压缩算法对序列化后的数据进行压缩,降低存储开销;接下来执行步骤S404,创建小文件存储结构,按照图2所示的顺序依次写入指定位数的文件长度数据,文件类型数据,根据数据压缩后的结果计算md5校验码数据和压缩后的数据,根据小文件存储结构对小文件进行数据填充,在此步骤中需要获取大文件存储结构中的写入位置数值,其中,写入位置数值用于大文件中能够写入小文件的起始位置;通过步骤S405,判断是否存在可写入的大文件;在不存在可写入的大文件的情况下,执行步骤S406,根据大文件存储结构创建大文件,然后执行步骤S407;在存在可写入的大文件的情况下,执行步骤S407,获取大文件中写入区域的文件锁,利用文件锁定位置向后锁定小文件存储的数据长度区域,在锁定失败之后,等待预定时长(例如30秒)后,重新根据小文件的大小从写入位置数值锁定用于存储小的数据长度区域;锁定成功后重新读取文件写入位置数值,写入数据成功后,更新大文件归结数据值和文件写入数据位置值后释放文件锁定;然后执行步骤S408,将小文件数据写入到大文件的指定位置;再执行步骤S409,更新大文件的归结数及写入位置;最后步骤S410释放大文件中写入位置文件锁。
下面结合图5对本发明一个可选的实施方式进行说明,图5是根据本发明实施例的文件读取的流程图,该方法可以包括如下步骤:
步骤S501,尝试获取大文件读取区域文件锁。
步骤S502,锁定获取的大文件读取区域的文件锁,获得大文件读取位置。
步骤S503,从锁定位置读取小文件的文件头数据。
步骤S504,根据文件头数据确认小文件的文件数据信息。
步骤S505,根据文件头数据确认小文件是否删除;在没有删除的情况下执行步骤,执行步骤S506,否则,执行步骤S507。
步骤S506,文件体重新加载指定长度数据。
步骤S507,返回错误提示。
步骤S508,判断使用校验位数据对数据进行校验的结果是否一致;在校验结果一致的情况下,执行步骤S509,反之,执行步骤S507;
步骤S509,解压缩。
步骤S510,利用反向序列化技术将解压缩后的数据还原成原数据。
在上述步骤中,将大文件进行存储之后,可以获取大文件;根据大文件存储结构中的读取位置数值读取小文件存储结构,其中,小文件存储中结构中至少包括小文件的文件长度,大文件包括多个小文件,可以根据小文件的文件长度从大文件中读取小文件。
在根据大文件存储结构中的读取位置数值读取小文件存储结构之前,需要执行步骤S501,根据读取位置数值对大文件进行锁定,尝试获取大文件读取区域文件锁,用于定位读取位置;在步骤S502中,尝试锁定大文件读取位置;步骤S504,从锁定位置读取小文件的文件头数据,根据读取的读取位置数据,从指定位置开始读取小文件结构数据,读取小文件的文件长度、文件类型、校验码及是否删除数据标记,然后从数据区读取数据,在从大文件中读取小文件成功之后,还需要对进行文件锁定进行释放操作;在步骤S505中,根据文件头数据确认小文件是否删除,在没有删除的情况下通过执行步骤S506,对文件体重新加载指定长度数据,也即根据小文件的文件长度更新读取位置数值;否则,执行步骤S507,更改小文件数据删除位标志为删除状态,返回错误提示;在步骤S508中,判断使用校验位数据对数据进行校验的结果是否一致,在校验结果一致的情况下,执行步骤S509,读取的数据区数据域校验码进行比较判断,保证数据完整性,通过步骤S509进行解压缩,并通过步骤S510进行反序列化恢复成原数据。
在一个可选的实施例中,从大文件中读取小文件之后,还需要修改大文件中的小文件存储结构中的删除标记,其中,修改后的删除标记用于指示小文件已经被读取。
下面结合图6对本发明一个可选的实施方式进行说明,图6是根据本发明实施例的文件数据恢复的流程图,该方法可以包括如下步骤:
步骤S601,解析大文件的文件头。
步骤S602,获取小文件在大文件存储区域的位置。
步骤S603,尝试读取小文件。
步骤S604,判断是否到大文件的文件体结尾。在到大文件的文件体结尾的情况下,执行步骤S605;反之,执行步骤S606。
步骤S605,小文件数据恢复完成。
步骤S606,按照小文件存储结构读取小文件信息并进行解压与反序列化操作。
步骤S607,存储解析后的原始数据。
在上述步骤中,通过解析大文件的文件头,实现根据大文件定位数据结构定位数据存储区的小文件起始位置,解析数据结构;如图3所示大文件存储结构包括文件头(例如文件长度、文件归结数、写入位置及文件读取位)和文件体;在步骤S602中,获取小文件在大文件中存储区域的位置,如图2所示小文件存储结构也包括文件头(例如文件长度、文件类型、是否删除标记以及数据校验位)和文件体;在步骤S603中,根据大文件存储结构定位数据存储区的小文件起始位置,尝试读取小文件,在步骤S604中,判断是否到大文件的文件体结尾;在到大文件的文件体结尾的情况下,执行步骤S605,也即小文件数据恢复完成;反之,执行步骤S606,按照小文件存储结构读取小文件信息并进行解压与反序列化操作;在步骤S607中,根据小文件存储结构顺序解析校验小文件,按文件存储顺序依次恢复,存储解析后的原始数据。
在本发明中,首先根据业务需求定义大文件存储结构,然后定义小文件存储结构;根据小文件定义结构顺序解析校验小文件,按文件存储顺序依次恢复存储数据。从缓存中根据阈值触发获取缓存数据;根据小文件存储结构对缓存数据进行压缩封装;根据大文件存储结构将小文件写入大文件指定存储区域,同时更新大文件相关缓存信息;逻辑删除更改指定小文件逻辑删除位数值即可;数据读取从大文件指定存储结构中获取等待读取的下一小文件位置,从大文件存储的该位置读取小文件数据,按小文件结构进行数据封装,校验删除位,校验验证位数据是否一致,决定是否返回实际缓存数据;数据恢复从大文件存储区进行顺序读取小文件存储结构,进行数据恢复,如果某个缓存文件数据错误不影响后续文件读取;数据转储备份,直接进行大文件的压缩转储。
本实施例中的基于文件的可恢复的数据缓存方法降低了文件索引开销和目录访问开销,实现了目录访问速度从分钟为单位的访问变成毫秒级访问的效果;同时在运维级别通过大文件方式能够有效降低数据存储备份所需时间,例如采用本发明能够将同样的处理方式从4个小时压缩到10分钟;另外在硬件级别上,也使得硬盘故障率直线下降,从而提高了客户体验。
实施例2
本发明实施例还提供了一种文件存储装置,需要说明的是,本发明实施例的文件存储装置可以用于执行本发明实施例所提供的用于文件存储方法。以下对本发明实施例提供的文件存储装置进行介绍。
图7是根据本发明实施例的一种文件存储装置的示意图,如图7所示,该装置可以包括:第一获取单元71、第一写入单元73、第二写入单元75以及存储单元77。下面对该装置进行说明。
第一获取单元71,用于从缓存中获取预定数量的数据。
第一写入单元73,用于将获取到的数据根据第一文件存储结构写入第一文件中。
第二写入单元75,用于将第一文件根据第二文件存储结构写入到第二文件中,其中,第二文件能够写入多个第一文件。
存储单元77,用于将第二文件进行存储。
在本发明实施例的一种文件存储装置中,通过第一获取单元71,用于从缓存中获取预定数量的数据;第一写入单元73,用于将获取到的数据根据第一文件存储结构写入第一文件中;第二写入单元75,用于将第一文件根据第二文件存储结构写入到第二文件中,其中,第二文件能够写入多个第一文件;存储单元77,用于将第二文件进行存储,解决了相关技术中文件存储的性能较低的技术问题,从而实现了提高文件存储的性能的技术效果。
可选地,在本发明实施例的一种文件存储装置中,第二写入单元75包括:获取模块,用于获取第二文件存储结构中的写入位置数值,其中,写入位置数值用于第二文件中能够写入第一文件的起始位置;第一锁定模块,用于根据第一文件的大小从写入位置数值锁定用于存储第一文件的数据长度区域;第一写入模块,用于在锁定成功后,将第一文件写入到数据长度区域;更新模块,用于在写入成功后,进行锁定释放并且更新写入位置数值。
可选地,在本发明实施例的一种文件存储装置中,还包括:锁定单元,用于在锁定失败之后,等待预定时长后,重新根据第一文件的大小从写入位置数值锁定用于存储第一文件的数据长度区域。
可选地,在本发明实施例的一种文件存储装置中,装置还包括:第二获取单元,用于将第二文件进行存储之后,获取第二文件;第一读取单元,用于将第二文件进行存储之后,根据第二文件存储结构中的读取位置数值读取第一文件存储结构,其中,第一文件存储中结构中至少包括第一文件的文件长度,第二文件包括多个第一文件;第二读取单元,用于根据第一文件的文件长度从第二文件中读取第一文件。
可选地,在本发明实施例的一种文件存储装置中,装置还包括:第二锁定模块,用于在根据第二文件存储结构中的读取位置数值读取第一文件存储结构之前,根据读取位置数值对第二文件进行锁定;释放模块,用于在从第二文件中读取第一文件成功之后,进行锁定释放。
可选地,在本发明实施例的一种文件存储装置中,装置还包括:更新单元,用于在从第二文件中读取第一文件之后,根据第一文件的文件长度更新读取位置数值。
可选地,在本发明实施例的一种文件存储装置中,装置还包括:修改单元,用于在从第二文件中读取第一文件之后,修改第二文件中的第一文件存储结构中的删除标记,其中,修改后的删除标记用于指示第一文件已经被读取。
可选地,在本发明实施例的一种文件存储装置中,第一写入单元73包括:序列化模块,用于将数据进行序列化;压缩模块,用于将序列化后的数据进行压缩;第二写入模块,用于将压缩后的数据写入第一文件中。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种文件存储方法,其特征在于,包括:
从缓存中获取预定数量的数据;
将获取到的所述数据根据第一文件存储结构写入第一文件中;
将所述第一文件根据第二文件存储结构写入到第二文件中,其中,所述第二文件能够写入多个所述第一文件;
将所述第二文件进行存储。
2.根据权利要求1所述的方法,其特征在于,将所述第一文件根据所述第二文件存储结构写入到所述第二文件中包括:
获取所述第二文件存储结构中的写入位置数值,其中,所述写入位置数值用于所述第二文件中能够写入所述第一文件的起始位置;
根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域;
在锁定成功后,将所述第一文件写入到所述数据长度区域;
在写入成功后,进行锁定释放并且更新所述写入位置数值。
3.根据权利要求2所述的方法,其特征在于,还包括:
在锁定失败之后,等待预定时长后,重新根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域。
4.根据权利要求1至3中任一项所述的方法,其特征在于,将所述第二文件进行存储之后,所述方法还包括:
获取所述第二文件;
根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构,其中,所述第一文件存储中结构中至少包括所述第一文件的文件长度,所述第二文件包括多个所述第一文件;
根据所述第一文件的文件长度从所述第二文件中读取所述第一文件。
5.根据权利要求4所述的方法,其特征在于,
在根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构之前,所述方法还包括:根据所述读取位置数值对所述第二文件进行锁定;
在从所述第二文件中读取所述第一文件成功之后,所述方法还包括:进行锁定释放。
6.根据权利要求4所述的方法,其特征在于,在从所述第二文件中读取所述第一文件之后,所述方法还包括:
根据所述第一文件的文件长度更新所述读取位置数值。
7.根据权利要求4所述的方法,其特征在于,在从所述第二文件中读取所述第一文件之后,所述方法还包括:
修改所述第二文件中的所述第一文件存储结构中的删除标记,其中,修改后的所述删除标记用于指示所述第一文件已经被读取。
8.根据权利要求1至3中任一项所述的方法,其特征在于,将获取到的所述数据写入所述第一文件中包括:
将所述数据进行序列化;
将序列化后的数据进行压缩;
将压缩后的数据写入所述第一文件中。
9.一种文件存储装置,其特征在于,包括:
第一获取单元,用于从缓存中获取预定数量的数据;
第一写入单元,用于将获取到的所述数据根据第一文件存储结构写入第一文件中;
第二写入单元,用于将所述第一文件根据第二文件存储结构写入到第二文件中,其中,所述第二文件能够写入多个所述第一文件;
存储单元,用于将所述第二文件进行存储。
10.根据权利要求9所述的装置,其特征在于,所述第二写入单元包括:
获取模块,用于获取所述第二文件存储结构中的写入位置数值,其中,所述写入位置数值用于所述第二文件中能够写入所述第一文件的起始位置;
第一锁定模块,用于根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域;
第一写入模块,用于在锁定成功后,将所述第一文件写入到所述数据长度区域;
更新模块,用于在写入成功后,进行锁定释放并且更新所述写入位置数值。
11.根据权利要求10所述的装置,其特征在于,还包括:
锁定单元,用于在锁定失败之后,等待预定时长后,重新根据所述第一文件的大小从所述写入位置数值锁定用于存储所述第一文件的数据长度区域。
12.根据权利要求9至11中任一项所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于将所述第二文件进行存储之后,获取所述第二文件;
第一读取单元,用于将所述第二文件进行存储之后,根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构,其中,所述第一文件存储中结构中至少包括所述第一文件的文件长度,所述第二文件包括多个所述第一文件;
第二读取单元,用于根据所述第一文件的文件长度从所述第二文件中读取所述第一文件。
13.根据权利要求12所述的装置,其特征在于,
所述装置还包括:
第二锁定模块,用于在根据所述第二文件存储结构中的读取位置数值读取所述第一文件存储结构之前,根据所述读取位置数值对所述第二文件进行锁定;
释放模块,用于在从所述第二文件中读取所述第一文件成功之后,进行锁定释放。
14.根据权利要求12所述的装置,其特征在于,所述装置还包括:
更新单元,用于在从所述第二文件中读取所述第一文件之后,根据所述第一文件的文件长度更新所述读取位置数值。
15.根据权利要求12所述的装置,其特征在于,所述装置还包括:
修改单元,用于在从所述第二文件中读取所述第一文件之后,修改所述第二文件中的所述第一文件存储结构中的删除标记,其中,修改后的所述删除标记用于指示所述第一文件已经被读取。
16.根据权利要求9至11中任一项所述的装置,其特征在于,所述第一写入单元包括:
序列化模块,用于将所述数据进行序列化;
压缩模块,用于将序列化后的数据进行压缩;
第二写入模块,用于将压缩后的数据写入所述第一文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710063006.7A CN106897391A (zh) | 2017-01-24 | 2017-01-24 | 文件存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710063006.7A CN106897391A (zh) | 2017-01-24 | 2017-01-24 | 文件存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106897391A true CN106897391A (zh) | 2017-06-27 |
Family
ID=59198783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710063006.7A Pending CN106897391A (zh) | 2017-01-24 | 2017-01-24 | 文件存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106897391A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644056A (zh) * | 2017-08-04 | 2018-01-30 | 武汉烽火众智数字技术有限责任公司 | 一种文件存储方法、装置及系统 |
CN111274208A (zh) * | 2018-12-05 | 2020-06-12 | 杭州海康威视系统技术有限公司 | 锁定文件的方法和装置 |
CN114020216A (zh) * | 2021-11-03 | 2022-02-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332027A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
CN102710769A (zh) * | 2012-05-31 | 2012-10-03 | 深圳市远行科技有限公司 | 一种Web Service客户端及其大批量数据传输方法 |
CN104123237A (zh) * | 2014-06-24 | 2014-10-29 | 中电科华云信息技术有限公司 | 海量小文件分级存储方法及系统 |
CN104462563A (zh) * | 2014-12-26 | 2015-03-25 | 浙江宇视科技有限公司 | 一种文件存储方法和系统 |
CN104820714A (zh) * | 2015-05-20 | 2015-08-05 | 国家电网公司 | 基于hadoop的海量瓦片小文件存储管理方法 |
CN105335531A (zh) * | 2015-12-14 | 2016-02-17 | 北京奇虎科技有限公司 | 一种文档的压缩、解压方法和装置 |
CN106021491A (zh) * | 2016-05-20 | 2016-10-12 | 天津海量信息技术股份有限公司 | 基于hdfs的准实时数据存储方法 |
CN106294603A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
-
2017
- 2017-01-24 CN CN201710063006.7A patent/CN106897391A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332027A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
CN102710769A (zh) * | 2012-05-31 | 2012-10-03 | 深圳市远行科技有限公司 | 一种Web Service客户端及其大批量数据传输方法 |
CN104123237A (zh) * | 2014-06-24 | 2014-10-29 | 中电科华云信息技术有限公司 | 海量小文件分级存储方法及系统 |
CN104462563A (zh) * | 2014-12-26 | 2015-03-25 | 浙江宇视科技有限公司 | 一种文件存储方法和系统 |
CN104820714A (zh) * | 2015-05-20 | 2015-08-05 | 国家电网公司 | 基于hadoop的海量瓦片小文件存储管理方法 |
CN105335531A (zh) * | 2015-12-14 | 2016-02-17 | 北京奇虎科技有限公司 | 一种文档的压缩、解压方法和装置 |
CN106021491A (zh) * | 2016-05-20 | 2016-10-12 | 天津海量信息技术股份有限公司 | 基于hdfs的准实时数据存储方法 |
CN106294603A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644056A (zh) * | 2017-08-04 | 2018-01-30 | 武汉烽火众智数字技术有限责任公司 | 一种文件存储方法、装置及系统 |
CN111274208A (zh) * | 2018-12-05 | 2020-06-12 | 杭州海康威视系统技术有限公司 | 锁定文件的方法和装置 |
CN114020216A (zh) * | 2021-11-03 | 2022-02-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
CN114020216B (zh) * | 2021-11-03 | 2024-03-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9280487B2 (en) | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques | |
KR100380955B1 (ko) | 파일 시스템, 데이터 관리 방법 및 기록 매체 | |
EP2363815B1 (en) | System for permanent file deletion | |
DE102016013248A1 (de) | Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement | |
US20050015396A1 (en) | System and method for structuring data in a computer system | |
US8504541B2 (en) | File management method | |
CN107045531A (zh) | 一种优化hdfs小文件存取的系统及方法 | |
US20040139127A1 (en) | Backup system and method of generating a checkpoint for a database | |
CN106445815B (zh) | 一种自动化测试方法及装置 | |
US20090271456A1 (en) | Efficient backup data retrieval | |
CN106897391A (zh) | 文件存储方法及装置 | |
CN109614055B (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
Li et al. | Database management strategy and recovery methods of Android | |
CN111104377A (zh) | 文件管理的方法、电子设备和计算机可读存储介质 | |
CN106776795A (zh) | 基于Hbase数据库的数据写入方法及装置 | |
CN104951482B (zh) | 一种操作Sparse格式的镜像文件的方法及装置 | |
CN108133026B (zh) | 一种多数据的处理方法、系统及存储介质 | |
US7685186B2 (en) | Optimized and robust in-place data transformation | |
CN105677579A (zh) | 缓存系统中的数据访问方法和系统 | |
CN110196786B (zh) | 数据库回滚同步中内存的控制方法及设备 | |
CN107526840A (zh) | 文件系统快照查询方法、装置及计算机可读存储介质 | |
CN111241090A (zh) | 存储系统中管理数据索引的方法和装置 | |
CN115858471A (zh) | 业务数据变更记录方法、装置、计算机设备及介质 | |
CN105930534B (zh) | 一种基于云存储服务价格的数据碎片减少方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1239871 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170627 |
|
RJ01 | Rejection of invention patent application after publication |