CN102929936B - 日志记录方法、日志查询方法及*** - Google Patents
日志记录方法、日志查询方法及*** Download PDFInfo
- Publication number
- CN102929936B CN102929936B CN201210366195.2A CN201210366195A CN102929936B CN 102929936 B CN102929936 B CN 102929936B CN 201210366195 A CN201210366195 A CN 201210366195A CN 102929936 B CN102929936 B CN 102929936B
- Authority
- CN
- China
- Prior art keywords
- daily record
- play amount
- log
- index file
- field
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种日志***,包括日志记录装置和日志查询装置。在日志记录装置中,记录单元记录日志的写入位置距离日志数据文件的起始位置的偏移量。索引文件写入单元将各个字段的字段取值、日志偏移量和/或日志长度相关联地写入到对应的索引文件中。在日志查询装置中,日志偏移量获取单元根据多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量。交集计算单元计算所读取的日志偏移量的交集。日志读取单元根据交集中的日志偏移量,从日志数据文件中读取满足多个查询条件的日志。利用该日志***,可以显著提高日志的查询性能,并且减少索引文件所占用的存储空间。
Description
技术领域
本发明涉及日志处理领域,更为具体地,涉及一种日志记录方法及装置、一种日志查询方法及装置以及具有上述装置的日志***。
背景技术
日志***负责接收网关发送的日志数据,按照一定格式存储所接收的日志数据,并且提供对日志数据的查询功能。网关发送的日志数据通常包括三种类型:管理日志,运行日志和访问日志。管理日志记录的是网关的管理员对网关的管理操作,运行日志记录的是网关本身运行过程中发生的事件,而访问日志记录的是通过网关的访问事件,通常一个会话会产生一条访问日志。通常情况下,网关的管理日志和运行日志不会很多,而访问日志每秒可能达到成千上万条。
图1示出了网关发送的日志数据的一个示例。如图1所示,在该日志数据中包括的字段是时间,模块,等级,源IP,目的IP,目的端口,协议和动作。
目前的日志***主要运行在Linux/Unix或者Windows服务器上,采用关系数据库来实现对日志数据的存储和查询功能。另外,为了提高日志的查询性能,还会为关系数据库建立索引。
然而,基于关系数据库实现的日志***的性能差。一方面,在基于关系数据库实现的日志***中,日志数据的***性能差。如果为了提高日志的查询性能而给关系数据库建立索引,则日志数据的***性能会进一步下降。此外,关系数据库的***性能还会随着记录的增多而下降。另一方面,即使为数据库建立索引,随着所记录的日志增多,查询性能仍然无法满足要求。
此外,基于关系数据库实现的日志***的存储空间(例如,磁盘空间)利用率低。在基于关系数据库实现的日志***中,为了提高日志的查询性能,必须为关系数据库建立搜索引,此时会明显增大关系数据库文件所占用的存储空间,从而使得日志***的存储空间利用率低。
发明内容
鉴于上述,本发明的目的在于提供一种日志记录方法及装置,该方法及装置能够减少索引文件所占用的存储空间。
本发明的另一目的在于提供一种日志查询方法及装置,该方法及装置能够提高日志的查询性能。
本发明的另一目的在于提供包括上述装置的日志***。
根据本发明的一个方面,提供了一种日志记录方法,包括:从所获取的日志中获取该日志中的各个字段的字段取值;将所获取的日志***到日志数据文件中,所述日志数据文件与多个预先创建的索引文件相关联地存储在存储装置中;记录所述日志在所述日志数据文件中的写入位置距离所述日志数据文件的起始位置的偏移量;以及将各个字段的字段取值和日志的偏移量相关联地写入到对应的索引文件中,每个字段对应一个索引文件,其中,所述多个索引文件中的至少一个索引文件是主索引文件,在所述主索引文件中,还与对应字段的字段取值和日志的偏移量相关联地写入所述日志的长度。
在上述方面的一个或多个示例中,在非主索引文件中,还与对应字段的字段取值和日志的偏移量相关联地写入所述日志的长度。
在上述方面的一个或多个示例中,所述字段包括时间类型字段、枚举类型字段和变量类型字段,对于时间类型字段,所获取的字段取值是日志的起始时间和结束时间,对于枚举类型字段,所获取的字段取值是字段的枚举类型,以及对于变量类型字段,所获取的字段取值是变量值。
在上述方面的一个或多个示例中,所述与时间索引对应的索引文件、所述与枚举类型字段对应的索引文件采用数组方式,以及所述与变量类型字段对应的索引文件采用HASH表的方式。
根据本发明的另一方面,提供了一种日志记录装置,包括:字段取值获取单元,用于从所获取的日志中获取该日志中的各个字段的字段取值;日志***单元,用于将所获取的日志***到日志数据文件中,所述日志数据文件与多个预先创建的索引文件相关联地存储在存储装置中;记录单元,用于记录所述日志在所述日志数据文件中的写入位置距离所述日志数据文件的起始位置的偏移量;以及索引文件写入单元,用于将各个字段的字段取值和日志的偏移量相关联地写入到对应的索引文件中,每个字段对应一个索引文件,其中,所述多个索引文件中的至少一个索引文件是主索引文件,在对应的索引文件是主索引文件时,所述索引文件写入单元还用于将所述日志的长度与对应字段的字段取值和日志的偏移量相关联地写入到所述主索引文件中。
在上述方面的一个或多个示例中,在非主索引文件中,还与对应字段的字段取值和日志的偏移量相关联地写入所述日志的长度。
根据本发明的另一方面,提供了一种日志查询方法,所述日志按照如上所述的方法进行记录,所述日志查询方法包括:根据用户输入的多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量,以得到与该单个查询条件对应的日志偏移量集合;计算所读取的所有日志偏移量集合的交集;根据所计算出的日志偏移量集合的交集,获取与该交集中的日志偏移量对应的主索引文件;以及根据所获取的主索引文件中的日志偏移量和日志长度,从所述日志数据文件中读取满足多个查询条件的日志。
在上述方面的一个或多个示例中,计算所读取的所有日志偏移量集合的交集包括:对所获取的日志偏移量集合,按照所包含的数据元素的个数从小到大进行排序;以及针对排序后的日志偏移量集合,迭代计算排序后的日志偏移量集合中的前两个日志偏移量集合的交集,直到针对所有所获取的日志偏移量集合完成迭代计算,其中,每次迭代计算的结果替换进行本次迭代计算的两个日志偏移量集合,作为下次迭代计算时的第一个日志偏移量集合。
在上述方面的一个或多个示例中,两个日志偏移量集合之间的交集采用二分法计算,以及在进行二分法时,对于在先日志偏移量集合的第一个元素,二分法的开始和结束位置分别为在后日志偏移量集合的第一个元素和最后一个元素;对于所述在先日志偏移量集合的除了第一个元素之外的元素,二分法的开始位置是前一次二分法查找的结果位置,结束位置是在先日志偏移量集合的最后一个元素。
根据本发明的另一方面,提供了一种日志查询装置,所述日志按照如上所述的方法进行记录,所述日志查询装置包括:日志偏移量获取单元,用于根据用户输入的多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量,以得到与该单个查询条件对应的日志偏移量集合;交集计算单元,用于计算所读取的所有日志偏移量集合的交集;主索引文件获取单元,用于根据所计算出的日志偏移量集合的交集,获取与该交集中的日志偏移量对应的主索引文件;以及日志读取单元,用于根据所获取的主索引文件中的日志偏移量和日志长度,从所述日志数据文件中读取满足多个查询条件的日志。
在上述方面的一个或多个示例中,所述交集计算单元包括:排序模块,用于对所获取的日志偏移量集合,按照所包含的数据元素的个数从小到大进行排序;以及迭代计算模块,用于针对排序后的日志偏移量集合,迭代计算排序后的日志偏移量集合中的前两个日志偏移量集合的交集,直到针对所有所获取的日志偏移量集合完成迭代计算,其中,每次迭代计算的结果替换进行本次迭代计算的两个日志偏移量集合,作为下次迭代计算时的第一个日志偏移量集合。
根据本发明的另一方面,提供了一种日志***,包括:如上所述的日志记录装置;以及如上所述的日志查询装置。
利用上述日志记录方法及装置,按照日志数据文件与日志索引文件结合的方式对日志进行记录,从而无需基于关系数据库进行存储,由此减少索引文件所占用的存储空间。
利用上述日志查询方法及装置,通过获取满足多个查询条件的偏移量之间的交集来读取满足多个查询条件的日志,可以显著提高日志的查询性能。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
根据下述参照附图进行的详细描述,本发明的上述和其他目的、特征和优点将变得更加显而易见。在附图中:
图1示出了日志的一个示例;
图2示出了根据本发明的实施例的日志记录方法的流程图;
图3示出了根据本发明的实施例的日志记录装置的方框示意图;
图4示出了根据本发明实施例的日志查询方法的流程图;
图5示出了图4中的偏移量交集的计算过程的一个示例的流程图;
图6示出了根据本发明的实施例的日志查询装置的方框示意图;
图7示出了图6中的交集计算单元的一个实现示例的方框示意图;和
图8示出了根据本发明的实施例的日志***的方框示意图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
下面描述本公开的各个方面。应该明白的是,本文的教导可以以多种多样形式具体体现,并且在本文中公开的任何具体结构、功能或两者仅仅是代表性的。基于本文的教导,本领域技术人员应该明白的是,本文所公开的一个方面可以独立于任何其它方面实现,并且这些方面中的两个或多个方面可以按照各种方式组合。例如,可以使用本文所阐述的任何数目的方面,实现装置或实践方法。另外,可以使用其它结构、功能、或除了本文所阐述的一个或多个方面之外或不是本文所阐述的一个或多个方面的结构和功能,实现这种装置或实践这种方法。此外,本文所描述的任何方面可以包括权利要求的至少一个元素。
下面将参照图2到图7描述本发明的各个实施例。
图2示出了根据本发明的实施例的日志记录方法的流程图。
如图2所示,在获取日志后,例如,从网关接收到日志数据后,在步骤S210中,从所获取的日志中获取该日志中的各个字段的字段取值。通常,日志由多个字段构成。所述日志中的字段可以包括时间类型字段、枚举类型字段和变量类型字段。所述时间类型字段用于记录日志的时间信息,比如关于日志的发生时间的信息。所述枚举类型字段可以是日志等级字段、模块名称字段等的字段,用于记录日志等级值、模块名称等。变量类型字段可以是比如IP地址字段、用户名字段等的字段,用于记录IP地址、用户名字等。对于时间类型字段,所获取的字段取值是日志的发生时间。对于枚举类型字段,所获取的字段取值是字段的枚举类型值,比如日志等级值、模块名称等。对于变量类型字段,所获取的字段取值是变量值,比如IP地址、用户名等。
接着,在步骤S220,将所获取的日志***到日志数据文件中。这里,所述日志数据文件用于记录日志数据,并且与预先创建的索引文件相关联的存储在存储装置中。通常,在日志数据文件中,每一行写入一条日志。在其它示例中,在一行中也可以写入多条日志。所述预先创建的索引文件可以包括与时间类型字段对应的索引文件(下文中称为时间索引文件)、与枚举类型字段对应的索引文件以及与变量类型字段对应的索引文件。所述索引文件可以包括主索引文件和非主索引文件。在主索引文件中记录字段取值、偏移量和日志长度。在非主索引文件中记录字段取值和偏移量。另外,可选地,在非主索引文件中,可以不记录日志长度,也可以记录日志长度。在所述预先创建的索引文件中,至少包括一个主索引文件,比如时间索引文件是主索引文件。在本发明的其它示例中,所述预先创建的索引文件可以都是主索引文件。优选地,所述预先创建的索引文件中仅仅包括一个主索引文件。
然后,在步骤S230,记录所述日志在所述日志数据文件中的写入位置距离所述日志数据文件的起始位置的偏移量。
接着,在步骤S240,从日志中的第一个字段开始,对于每个字段,判断该字段所对应的索引文件是否是主索引文件。例如,根据字段的类型,确定该字段所对应的索引文件是否是主索引文件。
在步骤S240中判断该字段所对应的索引文件是主索引文件时,在步骤S250,将所获取的该字段的字段取值、日志的偏移量以及日志长度相关联地写入到与该字段对应的主索引文件中。在步骤S240中判断该字段所对应的索引文件是非主索引文件时,在步骤S260中,将所获取的该字段的字段取值和日志的偏移量相关联地写入到与该字段对应的索引文件中。
对于不同类型的索引文件,采用不同的格式。在本发明的一个示例中,时间索引文件和枚举索引文件采用数组方式。在时间索引文件和枚举类型文件是主索引文件时,每个数组元素是三元数组,比如,在时间索引文件中,记录一条日志的起始时间和结束时间、日志的偏移量和日志长度。在枚举索引文件中,记录一条日志的枚举类型(比如日志等级、模块名称)、偏移量以及日志长度。
比如,对于时间索引文件,如果一条日志发生的时间是0x5059bd05,在日志数据文件中的偏移量是256,长度是100,则在时间索引文件中需要添加12个字节(二进制方式):0x5059bd050x000001000x00000064,时间索引文件是下面数据结构的数组:
在时间索引文件和枚举类型文件是非主索引文件时,每个数组元素是二元数组,比如,在时间索引文件中,记录一条日志的起始时间和结束时间和日志的偏移量。在枚举索引文件中,记录一条日志的枚举类型(比如日志等级、模块名称)以及偏移量。变量索引文件采用HASH表方式。在变量索引文件是主索引文件时,HASH表的每个节点记录了日志字段的键值、和该键值相对应的所有日志的偏移量以及日志长度。例如用户名索引文件HASH表中的每个节点记录了用户名、该用户对应的所有日志在日志数据文件中的偏移量以及日志长度。在变量索引文件是非主索引文件时,HASH表的每个节点记录了日志字段的键值以及和该键值相对应的所有日志的偏移量。
然后,在步骤S270中,判断是否针对日志中的所有字段都完成上述索引文件写入过程。如果完成,则流程结束。否则,在步骤S280中,转到下一字段,然后返回到步骤S240。
图2仅仅是本发明的日志记录过程的一个实现示例。针对上述示例,还可以进行各种变型。
比如,在本发明的一个变型中,可以认为所有索引文件都是主索引文件,从而省略图2中的步骤S240和步骤S260。在本发明的另一变型中,在步骤S240之前,还可以包括判断过程,用于对于每个字段,判断在预先创建的索引文件中是否存在对应的索引文件。在判断为不存在对应的索引文件时,创建对应的索引文件,并且将该字段的字段取值和日志的偏移量相关联地写入到所创建的索引文件中。在存在对应的索引文件时,流程进行到步骤S240。
图3示出了根据本发明的实施例的日志记录装置300的方框示意图。如图3所示,日志记录装置300包括字段取值获取单元310、日志***单元320、记录单元330以及索引文件写入单元340。
字段取值获取单元310用于从所获取的日志中获取该日志中的各个字段的字段取值。日志***单元320用于将所获取的日志***到日志数据文件中,所述日志数据文件与多个预先创建的索引文件相关联地存储在存储装置中。所述多个预先创建的索引文件中的至少一个索引文件是主索引文件。
记录单元330用于记录所述日志在所述日志数据文件中的写入位置距离所述日志数据文件的起始位置的偏移量。
索引文件写入单元340用于将各个字段的字段取值和日志的偏移量相关联地写入到对应的索引文件中,每个字段对应一个索引文件。此外,在对应的索引文件是主索引文件时,所述索引文件写入单元340还用于将所述日志的长度与对应字段的字段取值和日志的偏移量相关联地写入到所述主索引文件中。此外,在本发明的另一实施例中,对于非主索引文件,也可以将所述日志的长度与对应字段的字段取值和日志的偏移量相关联地写入到所述非主索引文件中。
在本发明的另一示例中,所述日志记录装置还可以包括:判断单元(未示出),用于对于每个字段,在将该字段的字段取值和日志的偏移量相关联地写入到对应的索引文件中之前,判断在预先创建的索引文件中是否存在对应的索引文件;以及创建单元(未示出),用于在判断单元判断出不存在对应的索引文件时,创建对应的索引文件。在不存在对应的索引文件时,所述索引文件写入单元340被配置为将该字段的字段取值和日志的偏移量相关联地写入到所创建的索引文件中,以及在存在对应的索引文件时,所述索引文件写入单元340被配置为将该字段的字段取值和日志的偏移量相关联地写入到该对应的索引文件中。
图4示出了根据本发明实施例的日志查询方法的流程图。
如图4所示,在利用多个查询条件对如上参照图2所述进行记录的日志进行查询时,首先,在步骤S410,根据用户输入的多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量,以得到与该单个查询条件对应的日志偏移量集合。所述多个查询条件可以包括比如与时间相关的查询条件,与指定等级相关的查询条件,与用户名相关的查询条件等。对于给定起始时间和结束时间日志的查询条件,在时间索引文件中读取满足该查询条件的所有偏移量,并组成日志偏移量集合offsets_1[]。对于指定等级的查询条件,在日志等级索引文件中读取满足该指定等级的所有日志的偏移量,并组成日志偏移量集合offsets_2[]。对于给出用户名的查询条件,在用户名索引文件中读取满足指定用户的所有日志的偏移量,并组成日志偏移量offsets_n[]。这里的偏移量offsets_1[]、offsets_2[]和偏移量offsets_n[]通常是偏移量集合。
然后,在步骤S420,计算所读取的所有日志偏移量集合的交集,即求偏移量集合offsets_1[],offsets_2[],……offsets_n[]的交集。
在如上求出日志偏移量集合的交集后,在步骤S430,根据所计算出的日志偏移量集合的交集,获取与该交集中包含的日志偏移量对应的主索引条件。这里,所计算出的交集中可能存在多个日志偏移量,从而可以得到多个主索引条件。
然后,在步骤S440,根据所获取的主索引条件中的日志偏移量以及日志长度,从所述日志数据文件中读取满足多个查询条件的日志。
图5示出了图4中的偏移量集合交集的计算过程的一个示例的流程图。
如图5所示,首先,在步骤S421中,对于所获取的偏移量集合,按照所包含的数组元素的个数从小到大进行排序。假设偏移量集合offsets_1[]<offsets_2[]<……<offsets_n[]。接着,在步骤S423中,将第一个偏移量集合设置为当前偏移量集合,即,将offsets_1[]设置为当前偏移量集合。然后,在步骤S425,计算当前偏移量集合与下一偏移量集合的交集,即,在当前偏移量集合是offsets_1[],计算offsets_1[]和offsets_2[]的交集。在当前偏移量集合是offsets_1[]和offsets_2[]的交集时,计算该交集与offsets_3[]的交集。如此类推。
在计算出交集后,在步骤S427中,判断是否计算出所有偏移量集合的交集。如果已经计算出,则流程结束。否则,流程进行到步骤S429,将计算出的交集作为当前偏移量集合,并且随后流程返回到步骤S425,继续进行交集计算。
在本发明的另一示例中,在计算两个偏移量集合offsets_1[]和offsets_2[](假设两者分别具有M和N个元素)的交集时,如果第一个偏移量集合的元素个数远小于第二个偏移量集合的元素个数(即M远小于N),将采用二分法来计算交集。即对于第一个偏移量集合中的每个元素,使用二分法在第二偏移量集合中查找是否存在相同的元素。
由于两个偏移量集合都是单调递增的,在使用二分法的时候,对于offsets_1[]的第一个元素,二分法的开始和结束位置分别为offsets_2[]的第一个元素和最后一个元素。对于offsets_1[]的第二个元素,二分法的开始位置是前一次二分法查找的结果位置,结束位置还是offsets_2[]的最后一个元素。依次下去,由此可以减少二分次数。
由于这些数组元素都是单调递增的,理论上计算两个递增数组offsets_m[],offsets_n[](分别具有M和N个元素)交集的时间复杂度最好结果是o(M+N),从而减小了计算交集的复杂度。进而提高了查询性能。
图6示出了根据本发明的实施例的日志查询装置600的方框示意图。如图6所示,日志查询装置600包括日志偏移量获取单元610、交集计算单元620、主索引文件获取单元630和日志读取单元640。
日志偏移量获取单元610用于根据用户输入的多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量,以得到与该单个查询条件对应的日志偏移量集合。交集计算单元620用于计算所读取的所有日志偏移量集合的交集。
主索引文件获取单元630用于根据所计算出的日志偏移量集合的交集,获取与该交集中包含的日志偏移量对应的主索引条件。
日志读取单元630用于根据所获取的主索引条件中的日志偏移量和日志长度,从所述日志数据文件中读取满足多个查询条件的日志。
图6中的交集计算单元可以采用多种方式实现。图7示出了图6中的交集计算单元的一个实现示例的方框示意图。如图7所示,所述交集计算单元620包括排序模块621和迭代计算模块623。排序模块621用于对所获取的日志偏移量集合,按照所包含的数据元素的个数从小到大进行排序。迭代计算模块623用于针对排序后的日志偏移量集合,迭代计算排序后的日志偏移量集合中的前两个日志偏移量集合的交集,直到针对所有所获取的日志偏移量集合完成迭代计算,其中,每次迭代计算的结果替换进行本次迭代计算的两个日志偏移量集合,作为下次迭代计算时的第一个日志偏移量集合。
图8示出了根据本发明的实施例的日志***10的方框示意图。如图8所示,日志***10包括日志记录装置300和日志查询装置600。这里,日志***10中也可以包括日志记录装置300和日志查询装置的各种变型。
利用上述日志记录方法及装置,按照日志数据文件与日志索引文件结合的方式对日志进行存储,从而无需基于关系数据库进行存储,由此减少索引文件所占用的存储空间。
利用上述日志查询方法及装置,通过获取满足多个查询条件的偏移量之间的交集来读取满足多个查询条件的日志,可以显著提高日志的查询性能。
经过试验,采用本发明,可以大幅提高日志***的性能,并且索引文件占用的磁盘空间不到日志数据文件的20%。
利用根据本发明的技术方案,在DELL R71服务器上,对于具有5个字段,长度为128-256字节的日志,***100万条日志只需要12秒。而且,根据查询条件的不同,查询时间在0.3毫秒到5毫秒之间。而在相同软硬件环境下,使用基于关系数据库(比如sqlite数据库)的技术方案,在开启事务的情况下,***100万条记录用时37分53秒,以及查询时间在3毫秒到15毫秒之间。另外,sqlite数据库的***性能随着***日志的增加而明显下降。而采用本发明的方案则几乎没有下降。
此外,通过采用上述优化之后求多个递增数组交集的算法,比普通算法性能提升了3-10倍,使用优化之后的算法,查询的性能提升了40%。
尽管前面公开的内容示出了本发明的示例性实施例,但是应当注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。
虽然如上参照图描述了根据本发明的各个实施例进行了描述,但是本领域技术人员应当理解,对上述本发明所提出的各个实施例,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
Claims (6)
1.一种日志查询方法,所述日志按照如下记录方法进行记录,所述记录方法包括:
从所获取的日志中获取该日志中的各个字段的字段取值;
将所获取的日志***到日志数据文件中,所述日志数据文件与多个预先创建的索引文件相关联地存储在存储装置中;
记录所述日志在所述日志数据文件中的写入位置距离所述日志数据文件的起始位置的偏移量;以及
将各个字段的字段取值和日志的偏移量相关联地写入到对应的索引文件中,每个字段对应一个索引文件,
其中,所述多个索引文件中的至少一个索引文件是主索引文件,在所述主索引文件中,还与对应字段的字段取值和日志的偏移量相关联地写入所述日志的长度;
所述日志查询方法包括:
根据用户输入的多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量,以得到与该单个查询条件对应的日志偏移量集合;
计算所读取的所有日志偏移量集合的交集;
根据所计算出的日志偏移量集合的交集,获取与该交集中的日志偏移量对应的主索引文件;以及
根据所获取的主索引文件中的日志偏移量和日志长度,从所述日志数据文件中读取满足所述多个查询条件的日志。
2.如权利要求1所述的日志查询方法,其中,计算所读取的所有日志偏移量集合的交集包括:
对所获取的日志偏移量集合,按照所包含的数据元素的个数从小到大进行排序;以及
针对排序后的日志偏移量集合,迭代计算排序后的日志偏移量集合中的前两个日志偏移量集合的交集,直到针对所有所获取的日志偏移量集合完成迭代计算,其中,每次迭代计算的结果替换进行本次迭代计算的两个日志偏移量集合,作为下次迭代计算时的第一个日志偏移量集合。
3.如权利要求2所述的日志查询方法,其中,两个日志偏移量集合之间的交集采用二分法计算,以及在进行二分法计算时,对于在先日志偏移量集合的第一个元素,二分法的开始和结束位置分别为在后日志偏移量集合的第一个元素和最后一个元素,以及对于所述在先日志偏移量集合的除了第一个元素之外的元素,二分法的开始位置是前一次二分法查找的结束位置,结束位置是在后日志偏移量集合的最后一个元素。
4.一种日志查询装置,所述日志按照如下记录方法进行记录,所述记录方法包括:
从所获取的日志中获取该日志中的各个字段的字段取值;
将所获取的日志***到日志数据文件中,所述日志数据文件与多个预先创建的索引文件相关联地存储在存储装置中;
记录所述日志在所述日志数据文件中的写入位置距离所述日志数据文件的起始位置的偏移量;以及
将各个字段的字段取值和日志的偏移量相关联地写入到对应的索引文件中,每个字段对应一个索引文件,
其中,所述多个索引文件中的至少一个索引文件是主索引文件,在所述主索引文件中,还与对应字段的字段取值和日志的偏移量相关联地写入所述日志的长度;
所述日志查询装置包括:
日志偏移量获取单元,用于根据用户输入的多个查询条件,在对应的索引文件中读取满足单个查询条件的所有日志偏移量,以得到与该单个查询条件对应的日志偏移量集合;
交集计算单元,用于计算所读取的所有日志偏移量集合的交集;
主索引文件获取单元,用于根据所计算出的日志偏移量集合的交集,获取与该交集中的日志偏移量对应的主索引文件;以及
日志读取单元,用于根据所获取的主索引文件中的日志偏移量和日志长度,从所述日志数据文件中读取满足查询条件的日志。
5.如权利要求4所述的日志查询装置,其中,所述交集计算单元包括:
排序模块,用于对所获取的日志偏移量集合,按照所包含的数据元素的个数从小到大进行排序;以及
迭代计算模块,用于针对排序后的日志偏移量集合,迭代计算排序后的日志偏移量集合中的前两个日志偏移量集合的交集,直到针对所有所获取的日志偏移量集合完成迭代计算,其中,每次迭代计算的结果替换进行本次迭代计算的两个日志偏移量集合,作为下次迭代计算时的第一个日志偏移量集合。
6.一种日志***,包括:
如权利要求4或5所述的日志查询装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210366195.2A CN102929936B (zh) | 2012-09-26 | 2012-09-26 | 日志记录方法、日志查询方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210366195.2A CN102929936B (zh) | 2012-09-26 | 2012-09-26 | 日志记录方法、日志查询方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929936A CN102929936A (zh) | 2013-02-13 |
CN102929936B true CN102929936B (zh) | 2016-08-24 |
Family
ID=47644734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210366195.2A Active CN102929936B (zh) | 2012-09-26 | 2012-09-26 | 日志记录方法、日志查询方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929936B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644070A (zh) * | 2017-09-13 | 2018-01-30 | 北京柠檬微趣科技股份有限公司 | 数据索引方法、数据查询方法及电子设备 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103177116B (zh) * | 2013-04-08 | 2016-05-04 | 国电南瑞科技股份有限公司 | 一种基于两级索引的分布式日志处理和查询方法 |
CN104794123B (zh) * | 2014-01-20 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN104834648B (zh) * | 2014-02-12 | 2018-07-31 | 华为技术有限公司 | 日志查询方法和装置 |
CN104035839B (zh) * | 2014-06-12 | 2017-07-18 | 上海交通大学 | Android***隐私数据恢复实现方法 |
GB2536655B (en) * | 2015-03-24 | 2017-09-20 | Imagination Tech Ltd | Logging events with timestamps |
CN107861956B (zh) * | 2016-09-22 | 2020-10-02 | 杭州海康威视***技术有限公司 | 一种卡口过车数据记录的查询方法及装置 |
CN107943807B (zh) * | 2016-10-13 | 2020-06-16 | 华为技术有限公司 | 一种数据处理方法及存储设备 |
CN106649627B (zh) * | 2016-12-06 | 2019-09-17 | 杭州迪普科技股份有限公司 | 一种日志查找的方法和装置 |
CN106951557B (zh) * | 2017-03-31 | 2020-02-07 | 北京希嘉创智教育科技有限公司 | 日志关联方法、装置和应用其的计算机*** |
CN107220287A (zh) * | 2017-04-24 | 2017-09-29 | 东软集团股份有限公司 | 用于日志查询的索引管理方法、装置、存储介质及设备 |
CN107688624B (zh) * | 2017-08-18 | 2020-12-29 | 杭州迪普科技股份有限公司 | 一种日志索引构建方法及装置 |
CN108427705B (zh) * | 2018-01-17 | 2022-04-12 | 平安科技(深圳)有限公司 | 电子装置、分布式***日志查询方法及存储介质 |
CN108572914B (zh) * | 2018-03-14 | 2020-12-18 | 口碑(上海)信息技术有限公司 | 一种生成用于压力测试的日志的方法及装置 |
CN110515803B (zh) * | 2019-08-27 | 2021-04-13 | 联想(北京)有限公司 | 针对日志消息的处理方法、装置以及电子设备 |
CN112800006B (zh) * | 2021-01-27 | 2023-05-26 | 杭州迪普科技股份有限公司 | 用于网络设备的日志存储方法及装置 |
CN113342768B (zh) * | 2021-06-01 | 2023-10-10 | 北京奇艺世纪科技有限公司 | 一种日志读取方法、装置、电子设备及可读存储介质 |
CN114567503B (zh) * | 2022-03-04 | 2024-06-11 | 南京联成科技发展股份有限公司 | 一种集中管控的可信的数据采集的加密方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620617A (zh) * | 2009-07-28 | 2010-01-06 | 中兴通讯股份有限公司 | 日志文件的查询和处理的方法及装置 |
US20100023545A1 (en) * | 2008-07-25 | 2010-01-28 | Tibbo Technology, Inc. | Data logging system and method thereof for heterogeneous data |
CN102239472A (zh) * | 2008-09-05 | 2011-11-09 | Arc景象有限责任公司 | 在支持查询的同时高效地存储日志数据 |
-
2012
- 2012-09-26 CN CN201210366195.2A patent/CN102929936B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100023545A1 (en) * | 2008-07-25 | 2010-01-28 | Tibbo Technology, Inc. | Data logging system and method thereof for heterogeneous data |
CN102239472A (zh) * | 2008-09-05 | 2011-11-09 | Arc景象有限责任公司 | 在支持查询的同时高效地存储日志数据 |
CN101620617A (zh) * | 2009-07-28 | 2010-01-06 | 中兴通讯股份有限公司 | 日志文件的查询和处理的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644070A (zh) * | 2017-09-13 | 2018-01-30 | 北京柠檬微趣科技股份有限公司 | 数据索引方法、数据查询方法及电子设备 |
CN107644070B (zh) * | 2017-09-13 | 2020-09-15 | 北京柠檬微趣科技股份有限公司 | 数据索引方法、数据查询方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102929936A (zh) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929936B (zh) | 日志记录方法、日志查询方法及*** | |
CN109165224B (zh) | 一种在区块链数据库上针对关键字key的索引方法 | |
CN105608088B (zh) | 一种基于配置文件的数据库自动创建与数据动态记录方法 | |
US9189506B2 (en) | Database index management | |
US20100161565A1 (en) | Cluster data management system and method for data restoration using shared redo log in cluster data management system | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
US8392473B2 (en) | Fast hierarchical enrichment | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN103177094B (zh) | 一种物联网数据清洗方法 | |
CN106649602B (zh) | 业务对象数据处理方法、装置和服务器 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
CN105373541A (zh) | 数据库的数据操作请求的处理方法和*** | |
CN104035956A (zh) | 一种基于分布式列存储的时间序列数据存储方法 | |
Gu et al. | Chronos: An elastic parallel framework for stream benchmark generation and simulation | |
CN109460404A (zh) | 一种基于redis的高效Hbase分页查询方法 | |
CN108984744A (zh) | 一种非主链区块自增长方法 | |
Ramesh et al. | Data modelling for discrete time series data using Cassandra and MongoDB | |
CN107291876A (zh) | 一种分布式数据管理方法 | |
CN110532307A (zh) | 一种流滑动窗口的数据存储方法及查询方法 | |
CN103778120A (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件*** | |
CN110543585B (zh) | 一种基于关系模型的rdf图和属性图统一存储方法 | |
CN109299101A (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN110008030A (zh) | 一种元数据访问的方法、***及设备 | |
CN111752941B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |