CN106503008A - 文件存储方法和装置及文件查询方法和装置 - Google Patents
文件存储方法和装置及文件查询方法和装置 Download PDFInfo
- Publication number
- CN106503008A CN106503008A CN201510563992.3A CN201510563992A CN106503008A CN 106503008 A CN106503008 A CN 106503008A CN 201510563992 A CN201510563992 A CN 201510563992A CN 106503008 A CN106503008 A CN 106503008A
- Authority
- CN
- China
- Prior art keywords
- metamessage
- core buffer
- daily record
- file
- data
- 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
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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
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)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种文件存储方法和装置及文件查询方法和装置。该文件存储方法包括:接收日志数据;解析日志数据,得到多个元信息;将多个元信息划分为多个数据块;将多个数据块按序保存到内存缓冲区;根据内存缓冲区的多个数据块将日志数据保存到预设文件。通过本发明,达到了提高文件读写效率的效果。
Description
技术领域
本发明涉及文件存储领域,具体而言,涉及一种文件存储方法和装置及文件查询方法和装置。
背景技术
文件在经过收集器收集和分布式消息系统接收后,使用编程模型框架将原始日志保存在分布式文件系统,比如,保存在分布式文件系统(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,提高了数据的高可用性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种文件存储方法,其特征在于,包括:
接收日志数据;
解析所述日志数据,得到多个元信息;
将所述多个元信息划分为多个数据块;
按序将所述多个数据块保存到内存缓冲区;以及
根据所述内存缓冲区的所述多个数据块将所述日志数据保存到预设文件。
2.根据权利要求1所述的方法,其特征在于,
解析所述日志数据包括:解析所述日志数据,还得到多个日志记录,其中,同一个预设文件对应的部分日志记录和所述部分日志记录对应的相同元信息之间是多对一的映射关系,
将所述多个元信息划分为多个数据块包括:将所述多个元信息按预设阈值划分为多个数据块,得到多个元信息数据块,
按序将所述多个数据块保存到所述内存缓冲区包括:按序将所述多个元信息数据块保存到所述内存缓冲区,
根据所述内存缓冲区的所述多个数据块将所述日志数据保存到所述预设文件包括:按序将所述多个日志记录写入日志记录预设文件,将所述内存缓冲区中保存的所述多个元信息数据块按序写入元信息预设文件。
3.根据权利要求2所述的方法,其特征在于,按序将所述多个元信息数据块保存到所述内存缓冲区包括:
判断所述元信息是否已经保存在所述内存缓冲区;
如果判断出所述元信息未保存在所述内存缓冲区,将所述元信息保存到所述内存缓冲区;
统计所述内存缓冲区中元信息的占用空间;
判断所述内存缓冲区中元信息占用空间是否大于等于所述预设阈值;如果判断出所述内存缓冲区元信息占用空间大于等于所述预设阈值,则一个元信息数据块在内存中保存完毕,将所述内存缓冲区中的元信息数据块按序写入所述元信息预设文件,并且清空所述内存缓冲区,其中,所述元信息数据块在所述元信息预设文件中按序写入。
4.一种文件查询方法,其特征在于,包括:
接收查询指令,其中,所述查询指令为指示对日志数据进行查询的指令;
在预设文件中对所述日志数据进行查询,其中,所述预设文件中存储有所述日志数据,并且通过以下方式将所述日志数据存储至所述预设文件:接收日志数据;解析所述日志数据,得到多个元信息;将所述多个元信息划分为多个数据块;按序将所述多个数据块保存到内存缓冲区;根据所述内存缓冲区的所述多个数据块将所述日志数据保存到预设文件。
5.根据权利要求4所述的方法,其特征在于,所述日志数据包括日志记录和元信息,
在所述预设文件中对所述日志数据进行查询包括:根据所述查询指令在所述预设文件中读取待查询的日志记录,获取所述待查询日志记录的关联识别码,根据所述关联识别码判断所述内存缓冲区中是否有与所述待查询日志记录对应的元信息,如果判断出所述内存缓冲区中没有与所述待查询日志记录对应的元信息,则从所述元信息预设文件中按序加载新的数据块到所述内存缓冲区,获取所述待查询日志记录和所述待查询日志记录对应的元信息。
6.一种文件存储装置,其特征在于,包括:
接收单元,用于接收日志数据;
解析单元,用于解析所述日志数据,得到多个元信息;
划分单元,用于将所述多个元信息划分为多个数据块;
第一保存单元,用于按序将所述多个数据块保存到内存缓冲区;以及
第二保存单元,用于根据所述内存缓冲区的所述多个数据块将所述日志数据保存到预设文件。
7.根据权利要求6所述的装置,其特征在于,
所述解析单元用于解析所述日志数据,还得到多个日志记录,其中,同一个文件对应的部分日志记录和所述部分日志记录对应的相同元信息之间是多对一的映射关系,
所述划分单元用于将所述多个元信息按预设阈值划分为多个数据块,得到多个元信息数据块,
所述第一保存单元用于按序将所述多个元信息数据块保存到所述内存缓冲区,
所述第二保存单元用于根据所述内存缓冲区中保存的所述多个元信息数据块中的元信息和所述映射关系将所述多个日志记录保存到日志记录预设文件,将所述内存缓冲区中保存的所述多个元信息数据块保存到元信息预设文件。
8.根据权利要求7所述的装置,其特征在于,所述第一保存单元包括:
第一判断模块,用于判断所述元信息是否已经保存在所述内存缓冲区;
保存模块,用于在判断出所述元信息未保存在所述内存缓冲区,将所述元信息保存到所述内存缓冲区;
统计模块,用于统计所述内存缓冲区中元信息的占用空间;
第二判断模块,用于判断所述内存缓冲区中元信息的占用空间是否大于等于所述预设阈值,
其中,第二保存单元用于在判断出所述内存缓冲区元信息的占用空间大于等于所述预设阈值,则一个元信息数据块在内存中保存完毕,将所述内存缓冲区中的元信息数据块按序写入所述元信息预设文件,并且清空所述内存缓冲区,其中,所述元信息数据块在所述元信息预设文件中按序写入。
9.一种文件查询装置,其特征在于,包括:
接收单元,用于接收查询指令,所述查询指令为指示对日志数据进行查询的指令;
查询单元,用于在预设文件中对所述日志数据进行查询,其中,所述预设文件中存储有所述日志数据,并且通过以下方式将所述日志数据存储至所述预设文件:接收日志数据;解析所述日志数据,得到多个元信息;将所述多个元信息划分为多个数据块;按序将所述多个数据块保存到内存缓冲区;根据所述内存缓冲区的所述多个数据块将所述日志数据保存到预设文件。
10.根据权利要求9所述的装置,其特征在于,所述日志数据包括日志记录和元信息,
所述查询单元用于根据所述查询指令在所述预设文件中读取待查询日志记录,获取所述待查询日志记录的关联识别码,根据所述关联识别码判断所述内存缓冲区中是否有与所述待查询日志记录对应的元信息,如果判断出所述内存缓冲区中没有与所述待查询日志记录对应的元信息,则从所述元信息预设文件中按序加载新的数据块到所述内存缓冲区,获取所述待查询日志记录和所述待查询日志记录对应的元信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510563992.3A CN106503008B (zh) | 2015-09-07 | 2015-09-07 | 文件存储方法和装置及文件查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510563992.3A CN106503008B (zh) | 2015-09-07 | 2015-09-07 | 文件存储方法和装置及文件查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106503008A true CN106503008A (zh) | 2017-03-15 |
CN106503008B CN106503008B (zh) | 2020-02-14 |
Family
ID=58287498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510563992.3A Active CN106503008B (zh) | 2015-09-07 | 2015-09-07 | 文件存储方法和装置及文件查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106503008B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679080A (zh) * | 2017-08-29 | 2018-02-09 | 努比亚技术有限公司 | 一种多媒体数据记录方法、终端及计算机可读存储介质 |
CN107679218A (zh) * | 2017-10-17 | 2018-02-09 | 九州通医疗信息科技(武汉)有限公司 | 基于内存的搜索方法及装置 |
CN108829730A (zh) * | 2018-05-11 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 一种对日志数据进行存储的方法、装置及其可读存储介质 |
WO2019085591A1 (zh) * | 2017-11-02 | 2019-05-09 | 深圳市网心科技有限公司 | 智能硬件设备、磁盘数据智能处理方法和存储介质 |
CN111865741A (zh) * | 2019-04-24 | 2020-10-30 | 瑞昱半导体股份有限公司 | 数据传输方法及数据传输系统 |
CN112199596A (zh) * | 2020-10-19 | 2021-01-08 | 杭州迪普科技股份有限公司 | 一种日志过滤处理的方法、装置、设备及介质 |
CN113283884A (zh) * | 2020-12-31 | 2021-08-20 | 深圳怡化电脑股份有限公司 | 一种日志处理方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332027A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
CN102918534A (zh) * | 2010-06-10 | 2013-02-06 | 惠普发展公司,有限责任合伙企业 | 查询管道 |
US20140258628A1 (en) * | 2013-03-11 | 2014-09-11 | Lsi Corporation | System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots |
CN104468629A (zh) * | 2014-12-30 | 2015-03-25 | 北京奇虎科技有限公司 | 一种批量发送消息的方法和装置 |
CN104731921A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 |
CN104820717A (zh) * | 2015-05-22 | 2015-08-05 | 国网智能电网研究院 | 一种海量小文件存储及管理方法和系统 |
-
2015
- 2015-09-07 CN CN201510563992.3A patent/CN106503008B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102918534A (zh) * | 2010-06-10 | 2013-02-06 | 惠普发展公司,有限责任合伙企业 | 查询管道 |
CN102332027A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
US20140258628A1 (en) * | 2013-03-11 | 2014-09-11 | Lsi Corporation | System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots |
CN104468629A (zh) * | 2014-12-30 | 2015-03-25 | 北京奇虎科技有限公司 | 一种批量发送消息的方法和装置 |
CN104731921A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 |
CN104820717A (zh) * | 2015-05-22 | 2015-08-05 | 国网智能电网研究院 | 一种海量小文件存储及管理方法和系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679080A (zh) * | 2017-08-29 | 2018-02-09 | 努比亚技术有限公司 | 一种多媒体数据记录方法、终端及计算机可读存储介质 |
CN107679218A (zh) * | 2017-10-17 | 2018-02-09 | 九州通医疗信息科技(武汉)有限公司 | 基于内存的搜索方法及装置 |
WO2019085591A1 (zh) * | 2017-11-02 | 2019-05-09 | 深圳市网心科技有限公司 | 智能硬件设备、磁盘数据智能处理方法和存储介质 |
CN108829730A (zh) * | 2018-05-11 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 一种对日志数据进行存储的方法、装置及其可读存储介质 |
CN111865741A (zh) * | 2019-04-24 | 2020-10-30 | 瑞昱半导体股份有限公司 | 数据传输方法及数据传输系统 |
CN112199596A (zh) * | 2020-10-19 | 2021-01-08 | 杭州迪普科技股份有限公司 | 一种日志过滤处理的方法、装置、设备及介质 |
CN112199596B (zh) * | 2020-10-19 | 2023-08-25 | 杭州迪普科技股份有限公司 | 一种日志过滤处理的方法、装置、设备及介质 |
CN113283884A (zh) * | 2020-12-31 | 2021-08-20 | 深圳怡化电脑股份有限公司 | 一种日志处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106503008B (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN105989129B (zh) | 实时数据统计方法和装置 | |
CN104252536B (zh) | 一种基于hbase的上网日志数据查询方法及装置 | |
CN105989076A (zh) | 一种数据统计方法以及装置 | |
CN103593440B (zh) | 日志文件的读写方法及装置 | |
CN102867071A (zh) | 一种网管海量历史数据管理方法 | |
US20140089258A1 (en) | Mail indexing and searching using hierarchical caches | |
CN107682466A (zh) | Ip地址的地域信息搜索方法及其装置 | |
WO2009042920A2 (en) | Lazy updates to indexes in a database | |
CN110110006A (zh) | 数据管理方法及相关产品 | |
CN110489407A (zh) | 数据补采方法、装置、计算机设备及存储介质 | |
CN107613529A (zh) | 消息处理方法以及基站 | |
CN103870480A (zh) | 动态数据遮罩方法以及数据库系统 | |
US8965879B2 (en) | Unique join data caching method | |
CN105224560A (zh) | 缓存数据的查找方法和装置 | |
CN104239337B (zh) | 基于tcam的查表处理方法及装置 | |
CN109343962A (zh) | 数据处理方法、装置及分布式服务系统 | |
CN110324204A (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
CN110119396A (zh) | 数据管理方法及相关产品 | |
CN109726219A (zh) | 数据查询的方法及终端设备 | |
US9129001B2 (en) | Character data compression for reducing storage requirements in a database system | |
CN117093619A (zh) | 一种规则引擎处理方法、装置、电子设备及存储介质 | |
CN107798122B (zh) | 一种非结构化数据解析方法 | |
CN116049193A (zh) | 数据存储方法及装置 | |
CN108197164A (zh) | 业务数据保存方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |