文件存储方法和装置及文件查询方法和装置.pdf

上传人:111****11 文档编号:1285512 上传时间:2018-04-12 格式:PDF 页数:18 大小:1.08MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510563992.3

申请日:

2015.09.07

公开号:

CN106503008A

公开日:

2017.03.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 17/30申请日:20150907|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

网宿科技股份有限公司

发明人:

洪珂; 刘华明; 李波; 柳阳彬

地址:

200030 上海市徐汇区斜土路2899号光启文化广场甲幢5楼

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司 11240

代理人:

韩建伟;李志刚

PDF下载: PDF下载
内容摘要

本发明公开了一种文件存储方法和装置及文件查询方法和装置。该文件存储方法包括:接收日志数据;解析日志数据,得到多个元信息;将多个元信息划分为多个数据块;将多个数据块按序保存到内存缓冲区;根据内存缓冲区的多个数据块将日志数据保存到预设文件。通过本发明,达到了提高文件读写效率的效果。

权利要求书

1.一种文件存储方法,其特征在于,包括:
接收日志数据;
解析所述日志数据,得到多个元信息;
将所述多个元信息划分为多个数据块;
按序将所述多个数据块保存到内存缓冲区;以及
根据所述内存缓冲区的所述多个数据块将所述日志数据保存到预设文件。
2.根据权利要求1所述的方法,其特征在于,
解析所述日志数据包括:解析所述日志数据,还得到多个日志记录,其中,
同一个预设文件对应的部分日志记录和所述部分日志记录对应的相同元信息之间
是多对一的映射关系,
将所述多个元信息划分为多个数据块包括:将所述多个元信息按预设阈值划
分为多个数据块,得到多个元信息数据块,
按序将所述多个数据块保存到所述内存缓冲区包括:按序将所述多个元信息
数据块保存到所述内存缓冲区,
根据所述内存缓冲区的所述多个数据块将所述日志数据保存到所述预设文件
包括:按序将所述多个日志记录写入日志记录预设文件,将所述内存缓冲区中保
存的所述多个元信息数据块按序写入元信息预设文件。
3.根据权利要求2所述的方法,其特征在于,按序将所述多个元信息数据块保存到
所述内存缓冲区包括:
判断所述元信息是否已经保存在所述内存缓冲区;
如果判断出所述元信息未保存在所述内存缓冲区,将所述元信息保存到所述
内存缓冲区;
统计所述内存缓冲区中元信息的占用空间;
判断所述内存缓冲区中元信息占用空间是否大于等于所述预设阈值;如果判
断出所述内存缓冲区元信息占用空间大于等于所述预设阈值,则一个元信息数据
块在内存中保存完毕,将所述内存缓冲区中的元信息数据块按序写入所述元信息
预设文件,并且清空所述内存缓冲区,其中,所述元信息数据块在所述元信息预
设文件中按序写入。
4.一种文件查询方法,其特征在于,包括:
接收查询指令,其中,所述查询指令为指示对日志数据进行查询的指令;
在预设文件中对所述日志数据进行查询,其中,所述预设文件中存储有所述
日志数据,并且通过以下方式将所述日志数据存储至所述预设文件:接收日志数
据;解析所述日志数据,得到多个元信息;将所述多个元信息划分为多个数据块;
按序将所述多个数据块保存到内存缓冲区;根据所述内存缓冲区的所述多个数据
块将所述日志数据保存到预设文件。
5.根据权利要求4所述的方法,其特征在于,所述日志数据包括日志记录和元信息,
在所述预设文件中对所述日志数据进行查询包括:根据所述查询指令在所述
预设文件中读取待查询的日志记录,获取所述待查询日志记录的关联识别码,根
据所述关联识别码判断所述内存缓冲区中是否有与所述待查询日志记录对应的元
信息,如果判断出所述内存缓冲区中没有与所述待查询日志记录对应的元信息,
则从所述元信息预设文件中按序加载新的数据块到所述内存缓冲区,获取所述待
查询日志记录和所述待查询日志记录对应的元信息。
6.一种文件存储装置,其特征在于,包括:
接收单元,用于接收日志数据;
解析单元,用于解析所述日志数据,得到多个元信息;
划分单元,用于将所述多个元信息划分为多个数据块;
第一保存单元,用于按序将所述多个数据块保存到内存缓冲区;以及
第二保存单元,用于根据所述内存缓冲区的所述多个数据块将所述日志数据
保存到预设文件。
7.根据权利要求6所述的装置,其特征在于,
所述解析单元用于解析所述日志数据,还得到多个日志记录,其中,同一个
文件对应的部分日志记录和所述部分日志记录对应的相同元信息之间是多对一的
映射关系,
所述划分单元用于将所述多个元信息按预设阈值划分为多个数据块,得到多
个元信息数据块,
所述第一保存单元用于按序将所述多个元信息数据块保存到所述内存缓冲
区,
所述第二保存单元用于根据所述内存缓冲区中保存的所述多个元信息数据块
中的元信息和所述映射关系将所述多个日志记录保存到日志记录预设文件,将所
述内存缓冲区中保存的所述多个元信息数据块保存到元信息预设文件。
8.根据权利要求7所述的装置,其特征在于,所述第一保存单元包括:
第一判断模块,用于判断所述元信息是否已经保存在所述内存缓冲区;
保存模块,用于在判断出所述元信息未保存在所述内存缓冲区,将所述元信
息保存到所述内存缓冲区;
统计模块,用于统计所述内存缓冲区中元信息的占用空间;
第二判断模块,用于判断所述内存缓冲区中元信息的占用空间是否大于等于
所述预设阈值,
其中,第二保存单元用于在判断出所述内存缓冲区元信息的占用空间大于等
于所述预设阈值,则一个元信息数据块在内存中保存完毕,将所述内存缓冲区中
的元信息数据块按序写入所述元信息预设文件,并且清空所述内存缓冲区,其中,
所述元信息数据块在所述元信息预设文件中按序写入。
9.一种文件查询装置,其特征在于,包括:
接收单元,用于接收查询指令,所述查询指令为指示对日志数据进行查询的
指令;
查询单元,用于在预设文件中对所述日志数据进行查询,其中,所述预设文
件中存储有所述日志数据,并且通过以下方式将所述日志数据存储至所述预设文
件:接收日志数据;解析所述日志数据,得到多个元信息;将所述多个元信息划
分为多个数据块;按序将所述多个数据块保存到内存缓冲区;根据所述内存缓冲
区的所述多个数据块将所述日志数据保存到预设文件。
10.根据权利要求9所述的装置,其特征在于,所述日志数据包括日志记录和元信息,
所述查询单元用于根据所述查询指令在所述预设文件中读取待查询日志记
录,获取所述待查询日志记录的关联识别码,根据所述关联识别码判断所述内存
缓冲区中是否有与所述待查询日志记录对应的元信息,如果判断出所述内存缓冲
区中没有与所述待查询日志记录对应的元信息,则从所述元信息预设文件中按序
加载新的数据块到所述内存缓冲区,获取所述待查询日志记录和所述待查询日志
记录对应的元信息。

说明书

文件存储方法和装置及文件查询方法和装置

技术领域

本发明涉及文件存储领域,具体而言,涉及一种文件存储方法和装置及文件查询
方法和装置。

背景技术

文件在经过收集器收集和分布式消息系统接收后,使用编程模型框架将原始日志
保存在分布式文件系统,比如,保存在分布式文件系统(Hadoop Distribute File System,
简称为HDFS)里。在原始日志保存过程中,除保存日志记录外,还需要保存由日志
的版本等构成的元信息。日志在分布式消息系统中,对于同一个文件的部分日志记录,
它们具有相同的元信息,也即,同一个文件的部分日志记录与元信息具有多对一的关
系。

目前,对于原始日志的保存主要有两种方式。一种是将日志记录与元信息组合成
新记录同时写入文件。由于日志记录与元信息可以是多对一的关系,每条日志记录都
保存相同的元信息,这将会造成元信息的大量冗余。特别地,当分布式消息系统里的
一个文件保存大量日志记录时,元信息的冗余量也会成倍数增长,从而造成存储空间
的浪费,进一步导致文件写入效率低。另一种方法是将日志记录保存在文件里,将相
关的元信息保存在数据库里,通过关联识别码(Universally Unique Identifier,简称为
UUID)将日志记录与元信息进行关联。该方法在数据库中存储时将UUID作为键,也
即,在文件中访问日志记录之后,需要通过UUID的方式,对键进行遍历式查询。当
保存的元信息达到一定量,在数据库中就会有大量的数据。键的快速增长和大量存在
加大日志记录与元信息的匹配难度,从而大大降低数据库的访问效率,并影响整个系
统的访问效率,导致文件读取效率低。此外,系统在访问过程中,连续访问具有相同
元信息的日志记录的可能性极高。当系统在访问连续几十条甚至几百条具有相同元信
息的日志记录时,都需要经过上述与数据库的匹配过程,数据库的高可用性也很难保
证。当数据库不可用的时候元信息就无法存取,不能满足元信息的高可用性,从而导
致文件读取效率低。

针对相关技术中数据冗余从而导致文件读写效率低的问题,目前尚未提出有效的
解决方案。

发明内容

本发明的主要目的在于提供了一种文件存储方法和装置及文件查询方法和装置,
以解决现有技术中数据冗余从而导致文件读写效率低的问题。

为了实现上述目的,根据本发明的一个方面,提供了一种文件存储方法,该方法
包括:接收日志数据;解析日志数据,得到多个元信息;将多个元信息划分为多个数
据块;按序将多个数据块保存到内存缓冲区;以及根据内存缓冲区的多个数据块将日
志数据保存到预设文件。

进一步地,解析日志数据包括:解析日志数据,还得到多个日志记录,其中,同
一个预设文件对应的部分日志记录和部分日志记录对应的相同元信息之间是多对一的
映射关系,将多个元信息划分为多个数据块包括:将多个元信息按预设阈值划分为多
个数据块,得到多个元信息数据块,按序将多个数据块保存到内存缓冲区包括:按序
将多个元信息数据块保存到内存缓冲区,根据内存缓冲区的多个数据块将日志数据保
存到预设文件包括:按序将多个日志记录写入日志记录预设文件,将内存缓冲区中保
存的多个元信息数据块按序写入元信息预设文件。

进一步地,按序将多个元信息数据块保存到内存缓冲区包括:判断元信息是否已
经保存在内存缓冲区;如果判断出元信息未保存在内存缓冲区,将元信息保存到内存
缓冲区;统计内存缓冲区中元信息的占用空间;判断内存缓冲区中元信息的占用空间
是否大于等于预设阈值;以及如果判断出内存缓冲区元信息的占用空间大于等于预设
阈值,则一个元信息数据块在内存中保存完毕,将内存缓冲区中的元信息数据块按序
写入元信息预设文件,并且清空内存缓冲区,其中,元信息数据块在元信息预设文件
中按序写入。

为了实现上述目的,根据本发明的另一方面,还提供了一种文件查询方法,该方
法包括:接收查询指令,其中,查询指令为指示对日志数据进行查询的指令;在预设
文件中对日志数据进行查询,其中,预设文件中存储有日志数据,并且通过以下方式
将日志数据存储至预设文件:接收日志数据;解析日志数据,得到多个元信息;将多
个元信息划分为多个数据块;按序将多个数据块保存到内存缓冲区;根据内存缓冲区
的多个数据块将日志数据保存到预设文件。

进一步地,日志数据包括日志记录和元信息,在预设文件中对日志数据进行查询
包括:用于根据查询指令在预设文件中读取待查询日志记录,获取待查询日志记录的
关联识别码,根据关联识别码判断内存缓冲区中是否有与待查询日志记录对应的元信
息,如果判断出内存缓冲区中没有与待查询日志记录对应的元信息,则从元信息预设
文件中按序加载新的元信息数据块到内存缓冲区,获取待查询日志记录和待查询日志
记录对应的元信息。

为了实现上述目的,根据本发明的另一方面,还提供了一种文件存储装置,该装
置包括:接收单元,用于接收日志数据;解析单元,用于解析日志数据,得到多个元
信息;划分单元,用于将多个元信息划分为多个数据块;第一保存单元,用于按序将
多个数据块保存到内存缓冲区;以及第二保存单元,用于根据内存缓冲区的多个数据
块将日志数据保存到预设文件。

进一步地,该装置的解析单元用于解析日志数据,还得到多个日志记录,其中,
同一个文件对应的部分日志记录和元信息之间是多对一的映射关系,该装置的划分单
元用于将多个元信息按预设阈值划分为多个数据块,得到多个元信息数据块,该装置
的第一保存单元用于按序将多个元信息数据块保存到内存缓冲区,该装置的第二保存
单元用于将多个日志记录保存到日志记录预设文件,将内存缓冲区中保存的多个元信
息数据块保存到元信息预设文件。

进一步地,该装置的第一保存单元包括:第一判断模块,用于判断元信息是否已
经保存在内存缓冲区;保存模块,用于在判断出元信息未保存在内存缓冲区,将元信
息保存到内存缓冲区;统计模块,用于统计内存缓冲区中元信息的占用空间;第二判
断模块,用于判断内存缓冲区中元信息的占用空间是否大于等于预设阈值,其中,第
二保存单元用于在判断出内存缓冲区元信息的占用空间大于等于预设阈值,则一个元
信息数据块在内存中保存完毕,将内存缓冲区中的元信息数据块按序写入元信息预设
文件,并且清空内存缓冲区,其中,元信息数据块在元信息预设文件中按序写入。

为了实现上述目的,根据本发明的另一方面,还提供了一种文件查询装置,该装
置包括:接收单元,用于接收查询指令,其中,查询指令为指示对日志数据进行查询
的指令;查询单元,用于在预设文件中对日志数据进行查询,其中,预设文件中存储
有日志数据,并且通过以下方式将日志数据存储至预设文件:接收日志数据;解析日
志数据,得到多个元信息;将多个元信息划分为多个数据块;按序将多个数据块保存
到内存缓冲区;根据内存缓冲区的多个数据块将日志数据保存到预设文件。

进一步地,日志数据包括日志记录和元信息,查询单元用于根据查询指令在预设
文件中读取待查询的日志记录,获取待查询日志记录的关联识别码,根据关联识别码
判断内存缓冲区中是否有与待查询日志记录对应的元信息,如果判断出内存缓冲区中
没有与待查询日志记录对应的元信息,则从元信息预设文件中按序加载新的元信息数
据块到内存缓冲区,获取待查询日志记录和待查询日志记录对应的元信息。

由此可知,本发明将日志数据的日志记录和元信息以多对一的方式保存,从而避
免了数据冗余,通过接收日志数据,然后解析日志数据,得到多个元信息,再将多个
元信息划分为多个数据块,将多个数据块按序保存到内存缓冲区,最后根据内存缓冲
区的多个数据块将日志数据保存到预设文件,实现了将元信息以数据块形式按序存储,
按序加载入内存缓冲区,而日志记录也是按序存储,这就使得在读取日志记录时能快
速与对应的元信息匹配,达到了提高文件读写效率的效果。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实
施例及其说明解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明第一实施例的文件存储方法的流程图;

图2是根据本发明第二实施例的文件存储方法的流程图;

图3是根据本发明第一实施例的文件查询方法的流程图;

图4是根据本发明第二实施例的文件查询方法的流程图;

图5是根据本发明第一实施例的文件存储装置的示意图;

图6是根据本发明第二实施例的文件存储装置的示意图;以及

图7是根据本发明实施例的文件查询装置的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相
互组合。下面将参考附图并结合实施例来详细说明本发明。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的
附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例
仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领
域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于
本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是区别类似的对象,而不必描述特定的顺序或先后次序。应该理解这样使用的
数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”
和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列
步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,
而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或
单元。

本发明实施例提供了一种文件存储方法。

图1是根据本发明第一实施例的文件存储方法的流程图,如图1所示,该文件存
储方法包括以下步骤:

步骤S102,接收日志数据。

日志在经过收集器收集之后,由分布式消息系统接收。优选地,使用Kafka分布
式消息系统接收日志数据。Kafka分布式消息系统具有高吞吐量、分布式、空间不受
限制等特点,可以作为数据管道和消息接收系统。Kafka分布式消息系统可以为生产
者—消费者的模式,这种模式可以将日志的产生过程和消费过程分开,互不干扰。Kafka
分布式消息系统在生产者—消费者的模式下,将日志数据发送到编程模块中。

步骤S104,解析日志数据,得到多个元信息。

在日志数据发送到编程模块之后,编程模块对日志数据进行解析。日志数据包括
多个日志记录和多个元信息,通过编程模块对日志数据进行解析,得到多个日志记录。
可选地,使用编程模块Mapreduce对数据进行解析。编程模块Mapreduce可以使解析
日志数据的程序运行在分布式消息系统上,通过对日志数据的计算,得到多个日志记
录和多个元信息,其中,同一个预设文件的部分日志记录和元信息之间是多对一的映
射关系。

举例而言,对日志数据进行解析,得出多个元信息为多个日志记录Record1、
Record2、Record3、Record4、Record5和Record6,以及多个元信息Meta1和Meta2。
一个预设文件中存储日志记录Record1、Record2、Record3、Record4、Record5和
Record6,其中Record1、Record2和Record3具有相同的元信息Meta1,满足日志记录
与元信息多一的映射关系,Record4、Record5和Record6具有相同的元信息Meta2,
满足日志记录与元信息多一的映射关系,元信息Meta1和Meta2包含的保存日志版本
等构成的元信息是不同的。

步骤S106,将多个元信息划分为多个数据块。

在对日志数据进行解析,得到多个元信息之后,将多个元信息划分为多个数据块
包括:将多个元信息按预设阈值划分为多个数据块,得到多个元信息数据块。

举例而言,将日志数据进行解析得到多个元信息,包括Meta1、Meta2、Meta3、
Meta4、Meta5和Meta6,设预设阈值为3,则将多个元信息按预设阈值划分为多个数
据块,得到多个元信息数据块的结果为Meta1、Meta2和Meta3为一个数据块,Meta4、
Meta5和Meta6为一个数据块。

步骤S108,按序将多个数据块保存到内存缓冲区。

在将多个元信息划分为多个数据块之后,按序将多个数据块保存到内存缓冲区。

首先,判断元信息是否已经保存在内存缓冲区,如果判断出元信息未保存在内存
缓冲区,将元信息保存到内存缓冲区,同时,统计内存缓冲区中元信息的占用空间,
判断内存缓冲区中元信息的占用空间是否大于等于预设阈值,如果判断出内存缓冲区
元信息的占用空间大于等于预设阈值,则一个元信息数据块在内存中保存完毕,将内
存缓冲区中的元信息数据块按序写入元信息预设文件,并且清空内存缓冲区,内存缓
冲区继续保存新的元信息数据块,其中,多个元信息数据块在元信息预设文件中是按
序写入。

举例而言,首先,判断内存缓冲区中是否保存Meta1,如果判断出Meta1未保存
在内存缓冲区,将Meta1保存到内存缓冲区,其次,判断内存缓冲区中是否保存Meta2
和Meta3,当Meta1、Meta2和Meta3都保存到内存缓冲区,达到预设阈值3,则Meta1、
Meta2和Meta3作为一个数据块在内存中保存完毕,将Meta1、Meta2和Meta3作为一
个元信息数据块按序写入元信息预设文件,清空内存缓冲区,此时,内存缓冲区接收
新的元信息数据块,比如,可以重新接收包含元信息Meta4、Meta5和Meta6的数据
块。元信息数据块在缓冲区中按序保存,可以保证日志记录与元信息的高匹配性,比
如,元信息数据块Meta1、Meta2和Meta3在内存缓冲区的保存先于元信息数据块
Meta4、Meta5和Meta6在内存缓冲区的保存,但是,元信息数据块中具体的元信息
Meta1、Meta2和Meta3,或者,元信息数据块中具体的元信息Meta4、Meta5和Meta6
在内存缓冲区的保存可以没有顺序。通过按序将多个数据块保存到内存缓冲区,从而
提高了文件的写入效率。

步骤S110,根据内存缓冲区的多个数据块将日志数据保存到预设文件。

根据内存缓冲区的多个数据块将日志数据保存到预设文件包括将多个日志记录按
序保存到日志记录预设文件,将内存缓冲区中保存的多个元信息数据块按序保存到元
信息预设文件。日志记录与元信息为多对一的映射关系,此时,内存缓冲区保存有多
个日志记录对应的相同的元信息,将日志数据的日志记录和元信息以多对一的方式分
别保存在日志记录预设文件和元信息预设文件中,降低了元信息在存储空间的数据冗
余。

在步骤S108中,内存缓冲区中元信息的占用空间如果大于等于预设阈值,将内存
缓冲区中的元信息数据块按序写入元信息预设文件,比如,保存到文件MetaFile中,
并且清空内存缓冲区,内存缓冲区继续保存新的元信息数据块,可选地,当日志保存
结束时,内存缓冲区的元信息的占用空间即使没有达到预设阈值,也将其写入元信息
预设文件。元信息数据块在元信息预设文件中是按序写入的。

可选地,预设文件为CamusFile,在日志记录预设文件RecordFile保存日志记录和
元信息预设文件MetaFile保存元信息之后,对日志记录预设文件RecordFile保存的日
志记录和元信息预设文件MetaFile保存的元信息进行封装,比如,将封装结果封装成
CamusRecord。可选地,将日志记录预设文件RecordFile与元信息预设文件MetaFile
的封装结果CamusRecord再用文件CamusFile保存起来。

该实施例的文件存储方法采用接收日志数据,然后解析日志数据,得到多个元信
息,将多个元信息划分为多个数据块,按序将多个数据块保存到内存缓冲区,以及根
据内存缓冲区的多个数据块将日志数据保存到预设文件,其中,解析日志数据还得到
多个日志记录,日志记录和元信息以多对一的方式分别保存在日志记录预设文件和元
信息预设文件中,降低了数据冗余,实现了将元信息以数据块形式按序存储,按序加
载入内存缓冲区,而日志记录也是按序存储,这就使得在读取日志记录时能使日志记
录快速与对应的元信息进行匹配,进而达到了提高文件的写入效率的效果。

图2是根据本发明第二实施例的文件存储方法的流程图,需要说明的是,本发明
实施例可以作为本发明第一实施例的文件存储方法的优选实施例。如图2所示,该文
件存储方法包括以下步骤:

步骤S202,编程模块解析日志数据。

在日志数据发送到编程模块之后,编程模块可以使解析日志数据的程序运行在分
布式消息系统上,编程模块结合解析日志数据的程序对日志数据进行解析。

步骤S204,获取日志记录和元信息。

编程模块对日志数据进行解析得到多个日志记录和多个元信息,其中,同一个预
设文件对应的部分日志记录和部分日志记录对应的相同元信息之间是多对一的映射关
系。

步骤S206,判断内存缓冲区中是否有元信息。

判断内存缓冲区中是否有元信息之前,将多个元信息划分为多个数据块包括:将
多个元信息按预设阈值划分为多个数据块,得到多个元信息数据块。

判断元信息是否已经保存在内存缓冲区,如果判断出元信息未保存在内存缓冲区,
则执行步骤S208,将元信息保存到内存缓冲区,如果判断出元信息保存在内存缓冲区,
则执行步骤S214,将日志记录写入日志记录预设文件。

步骤S208,添加元信息到内存缓冲区。

添加元信息到内存缓冲区,同时,统计内存缓冲区中元信息的占用空间。

步骤S210,判断内存缓冲区的元信息的占用空间是否大于等于预设阈值。

判断内存缓冲区中元信息的占用空间是否大于等于预设阈值,如果判断出内存缓
冲区元信息的占用空间大于等于预设阈值,则一个元信息数据块在内存中保存完毕,
执行步骤S212,将内存缓冲区中的元信息数据块按序写入元信息预设文件,清空内存
缓冲区,内存缓冲区继续保存新的元信息数据块,其中,多个元信息数据块在元信息
预设文件中是按序写入。

如果判断出内存缓冲区元信息的占用空间不大于等于预设阈值,则执行步骤
S214,将日志记录写入日志记录预设文件。

步骤S212,将元信息写入元信息预设文件。

步骤S214,将日志记录写入日志记录预设文件。

该实施例采用编程模块解析日志数据,获取日志记录和元信息,判断内存缓冲区
中是否有与日志记录对应的元信息,如果判断出内存缓冲区中没有与日志记录对应的
元信息,则添加与日志记录对应的元信息到内存缓冲区,然后判断内存缓冲区的元信
息个数是否大于等于预设阈值,如果判断出内存缓冲区的元信息个数大于等于预设阈
值,则将元信息写入元信息预设文件,并且将日志记录写入日志记录预设文件,如果
判断出内存缓冲区中有与日志记录对应的元信息,则将日志记录写入日志记录预设文
件,实现了将元信息以数据块形式按序存储,而日志记录也是按序存储,这就使得在
读取日志记录时能使日志记录快速与对应的元信息进行匹配,从而提高了文件的写入
效率。

本发明实施例还提供了一种文件查询方法。

图3是根据本发明第一实施例的文件查询方法的流程图,如图3所示,该文件存
储方法包括以下步骤:

步骤S302,接收查询指令,其中,查询指令为指示对日志数据进行查询的指令。

步骤S304,在预设文件中对日志数据进行查询,其中,预设文件中存储有日志数
据,并且通过以下方式将日志数据存储至预设文件:接收日志数据,然后解析日志数
据,得到多个元信息,再将多个元信息划分为多个数据块,按序将多个数据块保存到
内存缓冲区,最后根据内存缓冲区的多个数据块将日志数据保存到预设文件。

在预设文件中对日志数据进行查询包括:根据接收到的查询指令在预设文件中读
取待查询日志记录,获取待查询日志记录的关联识别码,在日志预设文件中读取待查
询日志记录,获取日志记录的关联识别码,可选地,获取日志记录的关联识别码UUID,
根据UUID判断内存缓冲区中是否有与日志记录对应的元信息,如果判断出内存缓冲
区中没有与日志记录对应的元信息,则从元信息预设文件中按序加载新的元信息数据
块到内存缓冲区,如果判断待查询的日志记录在内存缓冲区中存在对应的元信息,获
取待查询日志记录和待查询日志记录对应的元信息。

举例而言,用户在日志查询时,根据自己的需求,输入查询条件,比如,按小时
查询,则首先读取日志记录,读取到的日志记录根据查询条件获取关联识别码,然后
在内存缓冲区中查询关联识别码对应的元信息,如果内存缓冲区中没有与关联识别码
对应的元信息,则需要在内存缓冲区中从元信息预设文件中加载新的元信息数据块,
重新查询内存缓冲区中是否有与关联识别码对应的元信息,当内存缓冲区中有与关联
识别码对应的元信息,则读取日志记录对应的元信息,将查询出的日志记录和元信息
对应的日志结果作为一个整体提供给用户,用户对结果进行分析、筛选等。

该实施例采用接收查询指令,在预设文件中对日志数据进行查询,通过在日志记
录预设文件中读取待查询日志记录,然后获取待查询日志记录的关联识别码,再根据
关联识别码判断内存缓冲区中是否有与待查询日志记录对应的元信息,如果判断出内
存缓冲区中没有与待查询日志记录对应的元信息,则从元信息预设文件中按序加载新
的元信息数据块到内存缓冲区,获取待查询日志记录和待查询日志记录对应的元信息,
从而实现了在将元信息以数据块形式按序存储之后,按序加载入内存缓冲区,而日志
记录也是按序存储,这就使得在读取日志记录时能使日志记录快速与对应的元信息进
行匹配,从而实现了对日志数据对应的文件的查询,提高了文件的访问效率。

图4是根据本发明第二实施例的文件查询方法的流程图,如图4所示,该文件查
询方法包括以下步骤:

步骤S402,读取待查询日志记录。

预设文件包括日志记录预设文件和元信息预设文件,将待保存的日志记录保存到
日志记录预设文件,以及将元信息保存到元信息预设文件之后,在预设文件中对日志
数据进行查询,在日志预设文件中读取待查询日志记录。

步骤S404,获取通用识别码。

在读取待查询日志记录之后,获取待查询日志记录的关联识别码,可选地,获取
日志记录的UUID。

步骤S406,判断内存缓冲区中是否有对应的元信息。

根据UUID判断内存缓冲区中是否有与待查询日志记录对应的元信息,如果判断
内存缓冲区中没有与待查询日志记录对应的元信息,则执行步骤S408,加载新的元信
息数据块。如果判断内存缓冲区中有与待查询日志记录对应的元信息,则执行步骤
S410,获取待查询日志记录和待查询日志记录对应的元信息。

步骤S408,按序加载新的元信息数据块。

如果判断出内存缓冲区中没有与待查询日志记录对应的元信息,则从元信息预设
文件中按序加载新的元信息数据块到内存缓冲区。

步骤S410,获取待查询日志记录和待查询日志记录对应的元信息。

该实施例采用读取待查询日志记录,然后获取待查询日志记录的通用识别码,判
断内存缓冲区中是否有对应的元信息,如果判断出内存缓冲区中没有对应的元信息,
则加载新的元信息数据块,最后获取待查询日志记录和待查询日志记录对应的元信息,
实现日志数据的查询,从而实现了对文件的查询,提高了对文件的访问效率。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的
计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可
以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例还提供了一种文件存储装置,需要说明的是,该实施例的文件存储
装置可以用于执行本发明实施例的文件存储方法。

图5是根据本发明第一实施例的文件存储装置的示意图,如图5所示,该装置包
括:接收单元10,解析单元20,划分单元30,第一保存单元40和第二保存单元50。

接收单元10,用于接收日志数据。优选地,日志数据包括多个日志记录和多个元
信息。

解析单元20,用于解析日志数据,得到多个元信息。优选地,解析单元20用于
解析日志数据,还得到多个日志记录,其中,同一个文件对应的部分日志记录和元信
息之间是多对一的映射关系。

划分单元30,用于将多个元信息划分为多个数据块。优选地,划分单元30用于
将多个元信息按预设阈值划分为多个数据块,得到多个元信息数据块。

第一保存单元40,用于按序将多个数据块保存到内存缓冲区。优选地,第一保存
单元40按序将多个元信息数据块保存到内存缓冲区。

第二保存单元50,用于根据内存缓冲区的多个数据块将日志数据保存到预设文
件。优选地,第二保存单元50用于将多个日志记录保存到日志记录预设文件,将内存
缓冲区中保存的多个元信息数据块保存到元信息预设文件。

图6是根据本发明第二实施例的文件存储装置的示意图,在本发明的一个实施例
中,第一保存单元40包括:第一判断模块41,保存模块42,统计模块43和第二判断
模块44。如图6所示,该装置包括:接收单元10,解析单元20,划分单元30,第一
保存单元40和第二保存单元50,其中,第一保存单元40还包括:第一判断模块41,
保存模块42,统计模块43和第二判断模块44。

第一判断模块41,用于判断元信息是否已经保存在内存缓冲区。

保存模块42,用于在判断出元信息未保存在内存缓冲区,将元信息保存到内存缓
冲区。

统计模块43,用于统计内存缓冲区中元信息的占用空间。

第二判断模块44,用于判断内存缓冲区中元信息的占用空间是否大于等于预设阈
值。

第二保存单元50用于在判断出内存缓冲区元信息的占用空间大于等于预设阈值,
则一个元信息数据块在内存中保存完毕,将内存缓冲区中的元信息数据块按序写入元
信息预设文件,并且清空内存缓冲区,其中,元信息数据块在元信息预设文件中按序
写入。

本发明实施例的文件存储装置通过接收单元10第一接收日志数据,通过解析单元
20解析日志数据,得到多个元信息,然后通过划分单元30将多个元信息划分为多个
数据块,再通过第一保存单元40按序将多个数据块保存到内存缓冲区,最后通过第二
保存单元50根据内存缓冲区的多个数据块将日志数据保存到预设文件,进而达到了提
高文件写入效率的效果。

本发明实施例还提供了一种文件查询装置,需要说明的是,该实施例的文件查询
装置可以用于执行本发明实施例的文件查询方法。

图7是根据本发明实施例的文件查询装置的示意图,如图7所示,该装置包括:
接收单元60和查询单元70。

接收单元60,用于接收查询指令,其中,所述查询指令为指示对日志数据进行查
询的指令。

查询单元70,用于在预设文件中对日志数据进行查询,其中,预设文件中存储有
日志数据,并且通过以下方式将日志数据存储至预设文件:接收日志数据;解析日志
数据,得到多个元信息;将多个元信息划分为多个数据块;按序将多个数据块保存到
内存缓冲区;根据内存缓冲区的多个数据块将日志数据保存到预设文件。

日志数据包括日志记录和元信息,接收单元60用于根据查询指令在预设文件中读
取待查询的日志记录,查询单元70用于获取待查询日志记录的关联识别码,根据关联
识别码判断内存缓冲区中是否有与待查询日志记录对应的元信息,如果判断出内存缓
冲区中没有与待查询日志记录对应的元信息,则从元信息预设文件中按序加载新的元
信息数据块到内存缓冲区,获取待查询日志记录和待查询日志记录对应的元信息。

本发明实施例根据内存缓冲区的多个数据块将日志数据保存到文件之后,在预设
文件中对日志数据进行查询,其中,在预设文件中对日志数据进行查询包括:接收单
元60接收查询指令,其中,所述查询指令为指示对日志数据进行查询的指令,接收单
元60根据查询指令在预设文件中读取待查询的日志记录,查询单元70在日志预设文
件中读取待查询日志记录,获取待查询日志记录的关联识别码,可选地,获取日志记
录的关联识别码UUID,根据UUID判断内存缓冲区中是否有与日志记录对应的元信
息,根据关联识别码判断内存缓冲区中是否有与待查询日志记录对应的元信息,如果
判断出内存缓冲区中没有与日志记录对应的元信息,则从元信息预设文件中按序加载
新的元信息数据块到内存缓冲区,如果判断出待查询的日志记录在内存缓冲区中存在
对应的元信息,则获取待查询日志记录和待查询日志记录对应的元信息,从而实现了
对日志数据的查询,进一步地实现了对文件的查询,提高了文件的访问效率。

通过本发明实施例,优化了文件的存储和查询方式,将日志数据的日志记录和元
信息以多对一的方式保存,从而避免了数据冗余,达到了提高文件的读写效率的效果。
此外,日志记录查找对应的元信息不再是基于数据库,而是基于内存缓冲区。将元信
息以数据块形式按序存储,按序加载入内存缓冲区,而日志记录也是按序存储,这就
使得在读取日志记录时能快速使日志记录与对应的元信息进行匹配,并保证日志记录
与元信息之间的映射关系,利用映射关系,大大缩小匹配过程中元信息的数量,系统
可以进行一次匹配,从而使元信息在存储过程中避免了大量冗余,节约了系统存储空
间,提高系统访问效率。本发明这不仅仅对于多条具有相同元信息的日志记录,使存
储更为高效,并且有效地避免了由于大量元信息造成的访问效率问题,和之前的分布
式存储系统(Hadoop Database,简称为Hbase)相比,可以节省60%左右空间,并且
读取速度提高了两倍以上,使集群不在高度依赖于Hbase,提高了数据的高可用性。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用
的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所
组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以
将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模
块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明
不限制于任何特定的硬件和软件结合。

以上仅为本发明的优选实施例而已,并不限制本发明,对于本领域的技术人员来
说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、
等同替换、改进等,均应包含在本发明的保护范围之内。

文件存储方法和装置及文件查询方法和装置.pdf_第1页
第1页 / 共18页
文件存储方法和装置及文件查询方法和装置.pdf_第2页
第2页 / 共18页
文件存储方法和装置及文件查询方法和装置.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《文件存储方法和装置及文件查询方法和装置.pdf》由会员分享,可在线阅读,更多相关《文件存储方法和装置及文件查询方法和装置.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明公开了一种文件存储方法和装置及文件查询方法和装置。该文件存储方法包括:接收日志数据;解析日志数据,得到多个元信息;将多个元信息划分为多个数据块;将多个数据块按序保存到内存缓冲区;根据内存缓冲区的多个数据块将日志数据保存到预设文件。通过本发明,达到了提高文件读写效率的效果。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1