CN117472852A - 日志数据查询方法、装置、设备和介质 - Google Patents
日志数据查询方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN117472852A CN117472852A CN202210862134.9A CN202210862134A CN117472852A CN 117472852 A CN117472852 A CN 117472852A CN 202210862134 A CN202210862134 A CN 202210862134A CN 117472852 A CN117472852 A CN 117472852A
- Authority
- CN
- China
- Prior art keywords
- target
- time value
- time
- range
- log
- 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
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000004590 computer program Methods 0.000 claims description 25
- 238000013500 data storage Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 description 32
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/14—Details of searching files based on file metadata
-
- 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
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本申请涉及一种日志数据查询方法、装置、设备和介质,属于云技术领域。方法包括:从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点记录日志查询的时间范围;目标节点记录的时间范围与查询时间范围有交集;从目标节点下的子树中确定目标子树;从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据;确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,得到查询时间范围对应的边界时间值;根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。采用本方法可提升日志数据查询效率。
Description
技术领域
本申请涉及数据查询技术,更涉及云技术领域,特别是涉及一种日志数据查询方法、装置、设备和介质。
背景技术
日常业务交互所产生的日志数据通常会存储在磁盘中,由于日志数据的数据量一般都比较大,因此,日志数据大概率会分别存储在磁盘的多个扇区中。这给日志数据的查询带来了很大的挑战。比如,若采用二分查找的方式从磁盘中查询某段时间范围内的日志数据,容易造成散点访问,即,二分查找过程中所涉及的位于中间位置的日志数据的大概率分布在磁盘的多个扇区中,每读取一次位于中间位置的日志数据需要执行一次针对相应扇区的读写操作,多次的针对多个扇区的读写操作需要花费较长的时间,从而导致日志数据的查询效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升日志数据查询效率的日志数据查询方法、装置、设备和介质。
第一方面,本申请提供了一种日志数据查询方法,所述方法包括:
从日志查询时间树中确定与查询时间范围匹配的目标节点;所述日志查询时间树中各节点用于记录供日志查询的时间范围;所述目标节点中记录的时间范围与所述查询时间范围存在交集;
从所述目标节点下的子树中确定用于查找边界时间值的目标子树;
从所述目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;所述目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据;
确定所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值;
根据所述边界时间值从磁盘中获取与所述查询时间范围匹配的日志数据。
第二方面,本申请提供了一种日志数据查询装置,所述装置包括:
确定模块,用于从日志查询时间树中确定与查询时间范围匹配的目标节点;所述日志查询时间树中各节点用于记录供日志查询的时间范围;所述目标节点中记录的时间范围与所述查询时间范围存在交集;
所述确定模块还用于从所述目标节点下的子树中确定用于查找边界时间值的目标子树;
遍历模块,用于从所述目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;所述目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据;
所述确定模块还用于确定所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值;
获取模块,用于根据所述边界时间值从磁盘中获取与所述查询时间范围匹配的日志数据。
在一个实施例中,所述目标节点下的子树为至少两个;所述确定模块还用于在所述查询时间范围与所述目标节点下至少两个子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树。
在一个实施例中,所述目标节点下的子树包括左子树和右子树;所述边界时间值包括下边界时间值;所述确定模块还用于在所述查询时间范围与所述左子树和所述右子树各自记录的时间范围皆存在交集的情况下,若需查找所述下边界时间值,则将所述左子树作为所述目标子树;所述遍历模块还用于从所述左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,所述遍历模块还用于在未从所述左子树遍历到目标叶子节点的情况下,从所述右子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,所述目标节点下的子树包括左子树和右子树;所述边界时间值包括上边界时间值;所述确定模块还用于在所述查询时间范围与所述左子树和所述右子树各自记录的时间范围皆存在交集的情况下,若需查找所述上边界时间值,则将所述右子树作为所述目标子树;所述遍历模块还用于从所述右子树中的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,所述遍历模块还用于在未从所述右子树遍历到目标叶子节点的情况下,从所述左子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,所述确定模块还用于将所述目标时间范围中的端点时间值作为本轮的起始时间值,将所述查询时间范围作为本轮的目标查找范围,从所述起始时间值开始在所述目标查找范围中进行日志时间值查找处理;所述日志时间值是对应有日志数据的时间值;在查找到日志时间值后,基于所述日志时间值更新所述查询时间范围,得到更新后的时间范围;将所述日志时间值作为下一轮查找的起始时间值,将更新后的时间范围作为下一轮的目标查找范围,并返回从所述起始时间值开始在所述目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,将查找到的最后一个日志时间值作为所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值。
在一个实施例中,所述端点时间值为所述目标叶子节点所指向磁盘中日志数据存储文件的偏移量对应的时间值;所述确定模块还用于将所述偏移量对应的时间值作为本轮的起始时间值,将所述查询时间范围作为本轮的目标查找范围,从所述起始时间值开始更新所述目标叶子节点所指向磁盘中数据存储文件的偏移量,以在所述目标查找范围中进行日志时间值查找处理。
在一个实施例中,所述确定模块还用于在查找所述查询时间范围对应的下边界时间值的情况下,使用所述日志时间值更新所述查询时间范围的上限值,得到更新后的时间范围。
在一个实施例中,所述确定模块还用于在查找所述查询时间范围对应的上边界时间值的情况下,使用所述日志时间值更新所述查询时间范围的下限值,得到更新后的时间范围。
在一个实施例中,所述边界时间值包括下边界时间值和上边界时间值;所述获取模块还用于从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与所述查询时间范围匹配的日志数据;其中,所述目标编号范围,是以所述下边界时间值对应的日志数据编号为范围起始值,且以位于所述上边界时间值对应的日志数据编号为范围终止值所构成的编号范围。
第三方面,本申请提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现本申请各方法实施例中的步骤。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现本申请各方法实施例中的步骤。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请各方法实施例中的步骤。
上述日志数据查询方法、装置、设备、介质和计算机程序产品,从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。由于日志查询时间树中记录的是用于供日志查询的时间范围,数据量较小,因此,日志查询时间树所占用的存储空间相对于存储日志数据所占用的存储空间要小,不用像存储日志数据占用那么多扇区。从目标节点下的子树中确定用于查找边界时间值的目标子树,从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值,根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。由于日志查询时间树所占用的存储空间不用像存储日志数据占用那么多扇区,从而减少了针对扇区的读写操作,节省了日志数据的查询时间,从而提升了日志数据的查询效率。
附图说明
图1为一个实施例中日志数据查询方法的应用环境图;
图2为一个实施例中日志数据查询方法的流程示意图;
图3为一个实施例中日志查询时间树的结构示意图;
图4为一个实施例中二分查找的原理示意图;
图5为一个实施例中查询时间范围与目标节点下各子树的交集情况示意图;
图6为一个实施例中边界时间值的查询步骤流程示意图;
图7为另一个实施例中日志数据查询方法的流程示意图;
图8为一个实施例中日志数据查询装置的结构框图;
图9为一个实施例中计算机设备的内部结构图;
图10为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的日志数据查询方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端102以及服务器104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
服务器104可从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。服务器104可从目标节点下的子树中确定用于查找边界时间值的目标子树,并从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。服务器104可确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。服务器104可根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。
可以理解,终端102可以获取查询时间范围,并将查询时间范围发送至服务器104,进而服务器104可从日志查询时间树中确定与查询时间范围匹配的目标节点。还可以理解,服务器104可将获取的查询时间范围匹配的日志数据发送至终端102中,以供终端102进行相应的业务处理。本实施例对此不做限定,可以理解,图1中的应用场景仅为示意说明,并不限定于此。
在一个实施例中,如图2所示,提供了一种日志数据查询方法,该方法可应用于计算机设备,计算机设备可以是终端或服务器,由终端或服务器自身单独执行,也可以通过终端和服务器之间的交互来实现。本实施例以该方法应用于计算机设备为例进行说明,包括以下步骤:
步骤202,从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。
其中,查询时间范围,是查询日志数据的时间范围。比如,若用户要查询落在昨天10:00-11:00这个时间范围的日志数据,则昨天10:00-11:00这个时间范围就是查询时间范围。目标节点,是日志查询时间树中与查询时间范围存在交集的节点。
具体地,日志查询时间树中各节点中可记录有供日志查询的时间范围,且日志查询时间树可存储在计算机设备的磁盘中。计算机设备可从位于磁盘的日志查询时间树中,确定与用户输入的查询时间范围匹配的目标节点。
步骤204,从目标节点下的子树中确定用于查找边界时间值的目标子树。
其中,边界时间值,是查询时间范围内各个时间值中对应有日志数据、且处于临界状态的时间值。为便于理解,现举例说明,比如,用户输入的查询时间范围为10:00-11:00,若10:00-10:09和10:51-11:00这两个时间范围内各个时间点都没有对应的日志数据,而10:10和10:50这两个时间值对应有日志数据,且10:10-10:50这个时间范围内的各个时间值也可能有对应的日志数据,可以理解,10:10和10:50这两个时间值处于10:10-10:50这个时间范围内的临界点,则10:10和10:50这两个时间值即为边界时间值。
具体地,目标节点下的子树的数量为至少一个,计算机设备可从目标节点下的各个子树中,确定用于查找边界时间值的目标子树。
在一个实施例中,计算机设备可确定用户输入的查询时间范围与目标节点下的各个子树的相交情况,并根据查询时间范围与目标节点下的各个子树的相交情况,从目标节点下的各个子树中确定用于查找边界时间值的目标子树。
步骤206,从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。
其中,叶子结点,是日志查询时间树下各个节点中没有出度的叶子节点。可以理解,叶子结点没有后继节点,或者叶子结点是日志查询时间树中某分支的终端节点。边缘叶子节点,是目标子树下各个叶子节点中位于边缘的叶子节点,可以理解,边缘叶子节点可以包括左边缘叶子节点和右边缘叶子节点。左边缘叶子节点,是目标子树下最左边的叶子节点。右边缘叶子节点,是目标子树下最右边的叶子节点。目标叶子节点,是记录的时间范围内的时间值在磁盘中存在相应的日志数据的叶子节点。目标时间范围,是目标叶子节点记录的时间范围。
具体地,计算机设备可从目标子树的边缘叶子节点起,依次往旁边的叶子节点进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。可以理解,计算机设备可从目标子树的边缘叶子节点起,依次往旁边的叶子节点进行叶子节点遍历处理,一旦当前遍历到的叶子节点中记录的时间范围内的时间值在磁盘中存在相应的日志数据,则计算机设备可将这个当前遍历到的叶子节点作为目标叶子节点,并停止进行叶子节点遍历处理,即目标叶子节点后面的叶子节点不再遍历。
在一个实施例中,计算机可确定当前需要查找的边界时间值的属性信息,进而计算机设备可根据当前需要查找的边界时间值的属性信息,确定是从目标子树的边缘叶子节点起进行叶子节点遍历处理,还是从目标子树的右缘叶子节点起进行叶子节点遍历处理。其中,边界时间值的属性信息,用于指示当前需要查找的边界时间值是查询时间范围对应的下边界时间值,还是查询时间范围对应的上边界时间值。下边界时间值,是查询时间范围对应的两个边界时间值中最小的那个边界时间值,上边界时间值,是查询时间范围对应的两个边界时间值中最大的那个边界时间值。
可以理解,上述举例中的10:10这个时间值即为查询时间范围对应的下边界时间值,10:50这个时间值即为查询时间范围对应的上边界时间值。
在一个实施例中,日志查询时间树具体可以是用于记录供日志查询的时间范围的多叉搜索树,比如,二叉搜索树和三叉搜索树等,本实施例对此不做限定。
在一个实施例中,日志查询时间树是用于记录供日志查询的时间范围的二叉搜索树。如图3所示,该日志查询时间树包括7个节点(即,节点1至节点7),若该日志查询时间树记录的时间范围为[min,max],可以理解,节点1是该日志查询时间树的根节点,节点1记录的时间范围也为[min,max]。其中,min表示该日志查询时间树记录的时间范围的最小值,max表示该日志查询时间树记录的时间范围的最大值。中间值1是时间范围[min,max]内位于中间位置的时间值,可以理解,根据中间值1可将节点1的时间范围划分为两部分,分别形成节点2和节点3。节点2记录的时间范围为[min,中间值1],节点3记录的时间范围为[中间值1,max]。同理,中间值2是时间范围[min,中间值1]内位于中间位置的时间值,中间值3是时间范围[中间值1,max]内位于中间位置的时间值。根据中间值2可以将节点2的时间范围划分为两部分,分别形成节点4和节点5。根据中间值3可以将节点3的时间范围划分为两部分,分别形成节点6和节点7。可以理解,节点4-节点7没有后继节点,节点4-节点7为日志查询时间树的叶子节点。
步骤208,确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
具体地,计算机设备可确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。可以理解,用户输入的查询时间范围内可能存在多个时间值均分别对应有日志数据,计算机设备可从对应有日志数据的这多个时间值中,确定处于临界状态的时间值,并将确定得到的时间值作为查询时间范围对应的边界时间值。
在一个实施例中,目标时间范围存在两个端点时间值,分别为目标时间范围的范围起始值和范围终止值。计算机设备可从目标时间范围中的任一端点时间值起,朝着另一端点时间值的方向遍历目标时间范围中的每一个时间值,以从目标时间范围中查找对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
步骤210,根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。
在一个实施例中,与查询时间范围对应的各个边界时间值分别与存储于磁盘中的日志数据的日志数据标识具有对应关系。计算机设备可根据各个边界时间值对应的日志数据标识,从磁盘中获取与查询时间范围匹配的日志数据。
上述日志数据查询方法中,从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。由于日志查询时间树中记录的是用于供日志查询的时间范围,数据量较小,因此,日志查询时间树所占用的存储空间相对于存储日志数据所占用的存储空间要小,不用像存储日志数据占用那么多扇区。从目标节点下的子树中确定用于查找边界时间值的目标子树,从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值,根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。由于日志查询时间树所占用的存储空间不用像存储日志数据占用那么多扇区,从而减少了针对扇区的读写操作,节省了日志数据的查询时间,从而提升了日志数据的查询效率。
同时,由于本申请中,从目标子树的边缘叶子节点起进行叶子节点遍历处理,且在遍历到目标叶子节点后就停止遍历,可在避免遍历所有的叶子节点的情况下,准确查找到查询时间范围对应的边界时间值,节省了边界时间值的查找时间,进一步提升了日志数据查询效率。
需要说明的是,传统的日志查询方式可通过二分查找的方式实现,若日志数据存储于内存中,由于日志数据在内存中不会进行分扇区存储,因此,二分查找的方式对内存的日志查询比较高效。但是,考虑到日志数据的数据量庞大,存储于内存中需要耗费较高的成本,且存储于内存中数据丢失的风险也较高,因此,日志数据通常被存储于磁盘中,由于日志数据量较大,日志数据会分别存储在磁盘的多个扇区中。若直接采用二分查找的方式从磁盘中查询某一个时间范围内的日志数据,会造成散点访问,日志数据的查询效率较低。
为便于理解,现举例说明,如图4所示,各个灰色矩形块401分别代表时间值,可以理解,各个时间值是按照从左到右的顺序进行排序的。402为磁盘中的一个扇区,若直接采用二分查找的方式从磁盘中查询一个时间范围内的日志数据,那么二分查找的过程会需要对多个扇区进行读写操作,每一次对扇区的访问都需要时间,从而导致日志数据的查询效率较低。而本申请引入日志查询时间树来记录供日志查询的时间范围,数据量较小,因此,日志查询时间树所占用的存储空间相对于存储日志数据所占用的存储空间要小,不用像存储日志数据占用那么多扇区。减少了针对扇区的读写操作,节省了日志数据的查询时间,从而提升了日志数据的查询效率。
在一个实施例中,目标节点下的子树为至少两个;从目标节点下的子树中确定用于查找边界时间值的目标子树,包括:在查询时间范围与目标节点下至少两个子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树。
具体地,目标节点下的子树为至少两个,计算机设备可判断查询时间范围与目标节点下各个子树记录的时间范围的相交情况。在查询时间范围与目标节点下至少两个子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树。
在一个实施例中,日志查询时间树是用于记录供日志查询的时间范围的二叉搜索树,目标节点下的子树包括左子树和右子树。如图5所示,图5的(a)部分表示用户输入的查询时间范围,该查询时间范围为[查询-min,查询-max]。在图5的(b)部分中,灰色的矩形框代表目标节点,该目标节点记录的时间范围为[节点-min,节点-max],中间值为时间范围[节点-min,节点-max]中位于中间位置的时间值。根据中间值可将该目标节点划分为左子树和右子树,其中,左子树记录的时间范围为[节点-min,中间值],右子树记录的时间范围为[中间值,节点-max]。若查询时间范围与目标节点下左子树记录的时间范围存在交集(即,图5的(b)部分中的情况1),则计算机设备可将存在交集的左子树作为用于查找边界时间值的目标子树。若查询时间范围与目标节点下右子树记录的时间范围存在交集(即,图5的(b)部分中的情况2),则计算机设备可将存在交集的右子树作为用于查找边界时间值的目标子树。
上述实施例中,在查询时间范围与目标节点下至少两个子树中的其中一个记录的时间范围存在交集情况下,由于需要查找的边界时间值只可能存在于存在交集的子树,因此,可直接将存在交集的子树作为用于查找边界时间值的目标子树,可以提升边界时间值的查询效率。
在一个实施例中,目标节点下的子树包括左子树和右子树;边界时间值包括下边界时间值;从目标节点下的子树中确定用于查找边界时间值的目标子树,包括:在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找下边界时间值,则将左子树作为目标子树;从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历,包括:从左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
具体地,日志查询时间树是用于记录供日志查询的时间范围的二叉搜索树,目标节点下的子树包括左子树和右子树,边界时间值包括下边界时间值和上边界时间值。计算机设备可判断查询时间范围与目标节点下各个子树记录的时间范围的相交情况。在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下(即,图5的(b)部分中的情况3),若需查找下边界时间值,计算机设备可则将左子树(即,图5中记录的时间范围为[节点-min,中间值]的子树)作为目标子树,并从左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
上述实施例中,在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,说明需要查找的边界时间值可能存在于左子树也可能存在于右子树。由于针对日志查询时间树中每一个层级,该层级中各个节点记录的时间值是从左往右依次增大的,因此,下边界时间值存在左子树的概率比存在右子树的概率大,因此,若需查找下边界时间值,可直接将左子树作为目标子树,优先从左子树开始遍历查找下边界时间值,这样可以提升下边界时间值的查询效率。
在一个实施例中,方法还包括:在未从左子树遍历到目标叶子节点的情况下,从右子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
具体地,在未从左子树(即,图5中记录的时间范围为[节点-min,中间值]的子树)遍历到目标叶子节点的情况下,计算机设备可从右子树(即,图5中记录的时间范围为[中间值,节点-max]的子树)的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
上述实施例中,在未从左子树遍历到目标叶子节点的情况下,说明需要查找的边界时间值存在于右子树。由于针对日志查询时间树中每一个层级,该层级中各个节点记录的时间值是从左往右依次增大的,因此,直接从右子树的左边缘叶子节点起进行叶子节点遍历处理,可提升边界时间值的查询效率。
在一个实施例中,目标节点下的子树包括左子树和右子树;边界时间值包括上边界时间值;从目标节点下的子树中确定用于查找边界时间值的目标子树,包括:在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找上边界时间值,则将右子树作为目标子树;从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历,包括:从右子树中的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
具体地,日志查询时间树是用于记录供日志查询的时间范围的二叉搜索树,目标节点下的子树包括左子树和右子树,边界时间值包括下边界时间值和上边界时间值。计算机设备可判断查询时间范围与目标节点下各个子树记录的时间范围的相交情况。在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下(即,图5的(b)部分中的情况3),若需查找上边界时间值,计算机设备可则将右子树(即,图5中记录的时间范围为[中间值,节点-max]的子树)作为目标子树,并从右子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
上述实施例中,在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,说明需要查找的边界时间值可能存在于左子树也可能存在于右子树。由于针对日志查询时间树中每一个层级,该层级中各个节点记录的时间值是从左往右依次增大的,因此,上边界时间值存在右子树的概率比存在左子树的概率大,因此,若需查找上边界时间值,优先从右子树开始遍历查找上边界时间值,可直接将右子树作为目标子树,这样可以提升上边界时间值的查询效率。
在一个实施例中,方法还包括:在未从右子树遍历到目标叶子节点的情况下,从左子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
具体地,在未从右子树(即,图5中记录的时间范围为[中间值,节点-max]的子树)遍历到目标叶子节点的情况下,计算机设备可从左子树(即,图5中记录的时间范围为[节点-min,中间值]的子树)的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
上述实施例中,在未从右子树遍历到目标叶子节点的情况下,说明需要查找的边界时间值存在于左子树。由于针对日志查询时间树中每一个层级,该层级中各个节点记录的时间值是从左往右依次增大的,因此,直接从左子树的右边缘叶子节点起进行叶子节点遍历处理,可提升边界时间值的查询效率。
在一个实施例中,如图6所示,确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值,包括:
步骤602,将目标时间范围中的端点时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始在目标查找范围中进行日志时间值查找处理;日志时间值是对应有日志数据的时间值。
其中,端点时间值是目标时间范围中的端点对应的时间值。本轮的起始时间值,是本轮进行日志时间值查找处理的第一个查找的时间值。本轮的目标查找范围,是本轮进行日志时间值查找处理的时间范围。可以理解,起始时间值和目标查找范围是不断更新的。
具体地,目标时间范围中包括两个端点时间值,计算机设备可将这两个端点时间值中的任一个作为本轮的起始时间值,并将用户输入的查询时间范围作为本轮的目标查找范围。进而,计算机设备可从起始时间值开始在目标查找范围中进行日志时间值查找处理。
步骤604,在查找到日志时间值后,基于日志时间值更新查询时间范围,得到更新后的时间范围。
具体地,计算机设备在在目标查找范围中查找到日志时间值后,可基于查找到的日志时间值对用户输入的查询时间范围进行更新,得到更新后的时间范围。
步骤606,将日志时间值作为下一轮查找的起始时间值,将更新后的时间范围作为下一轮的目标查找范围,并返回从起始时间值开始在目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,将查找到的最后一个日志时间值作为目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
其中,查找结束条件,是使得日志时间值查找处理的迭代过程停止的条件。
在一个实施例中,查找结束条件可以是遍历完目标时间范围中的每一个时间值,也可以是迭代次数达到预设的迭代次数。
具体地,计算机设备可将本轮查找到的日志时间值作为下一轮查找的起始时间值,将本轮更新后的时间范围作为下一轮的目标查找范围,将下一轮作为本轮,并返回从起始时间值开始在目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,计算机设备可将查找到的最后一个日志时间值作为目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
上述实施例中,通过在目标查找范围中进行迭代地日志时间值查找处理,并在每一次在查找到日志时间值后,基于日志时间值更新查询时间范围,通过一步步缩小查找范围,可以快速找到目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,从而可以提升边界时间值的查找效率,从而进一步提升日志数据的查询效率。
在一个实施例中,端点时间值为目标叶子节点所指向磁盘中日志数据存储文件的偏移量对应的时间值;将目标时间范围中的端点时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始在目标查找范围中进行日志时间值查找处理,包括:将偏移量对应的时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始更新目标叶子节点所指向磁盘中数据存储文件的偏移量,以在目标查找范围中进行日志时间值查找处理。
其中,日志数据存储文件是用于存储日志数据的文件。
具体地,端点时间值为目标叶子节点所指向磁盘中日志数据存储文件的偏移量对应的时间值,计算机设备可将偏移量对应的时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始更新目标叶子节点所指向磁盘中数据存储文件的偏移量,以从磁盘中日志数据存储文件的相应位置处读取日志数据,从而实现在目标查找范围中进行日志时间值查找处理。
在一个实施例中,参考图3,若节点7为查找到的一个目标叶子节点,由于节点7记录的时间范围为[中间值3,max],因此,若端点时间值为“中间值3”,则日志数据存储文件中记录的“中间值3”(即,图3中的301对应的时间值),即为节点7所指向磁盘中日志数据存储文件的偏移量对应的时间值。计算机设备可从图3中的301对应的时间值开始更新目标叶子节点所指向磁盘中数据存储文件的偏移量,以从磁盘中日志数据存储文件的相应位置处读取日志数据,从而实现在目标查找范围中进行日志时间值查找处理。可以理解,只要查找到的时间值在日志数据存储文件对应有日志数据编号,即可表明该查找的时间值在日志数据存储文件对应有日志数据,该查找的时间值即为查找到的日志时间值。其中,日志数据编号用于唯一标识日志数据。可以理解,日志数据编号是日志数据标识的其中一种表达方式。
上述实施例中,通过将偏移量对应的时间值作为本轮的起始时间值,从起始时间值开始不断更新目标叶子节点所指向磁盘中数据存储文件的偏移量,以从快速从磁盘中读取相应的数据,以在目标查找范围中进行日志时间值查找处理,从而可以提升边界时间值的查找效率,从而进一步提升日志数据的查询效率。
在一个实施例中,在查找到日志时间值后,基于日志时间值更新查询时间范围,得到更新后的时间范围,包括:在查找查询时间范围对应的下边界时间值的情况下,使用日志时间值更新查询时间范围的上限值,得到更新后的时间范围。
其中,查询时间范围的上限值,是指查询时间范围内各个时间值中最大的那个时间值。
具体地,查找查询时间范围对应的边界时间值包括上边界时间值和下边界时间值。在查找查询时间范围对应的下边界时间值的情况下,计算机设备可使用日志时间值更新查询时间范围的上限值,得到更新后的时间范围。
举例说明,若查询时间范围为[min,max],且从[min,max]中查找到的日志时间值为V1,则计算机设备可使用该日志时间值V1更新查询时间范围[min,max]的上限值max,得到更新后的时间范围[min,V1]。
上述实施例中,在查找查询时间范围对应的下边界时间值的情况下,由于最后查找到的下边界时间值一定是最接近查询时间范围中下限值的那一个日志时间值,因此,使用日志时间值更新查询时间范围的上限值,得到更新后的时间范围,可以提升下边界时间值的查询效率。
在一个实施例中,在查找到日志时间值后,基于日志时间值更新查询时间范围,得到更新后的时间范围,包括:在查找查询时间范围对应的上边界时间值的情况下,使用日志时间值更新查询时间范围的下限值,得到更新后的时间范围。
其中,查询时间范围的下限值,是指查询时间范围内各个时间值中最小的那个时间值。
具体地,查找查询时间范围对应的边界时间值包括上边界时间值和下边界时间值。在查找查询时间范围对应的上边界时间值的情况下,计算机设备可使用日志时间值更新查询时间范围的下限值,得到更新后的时间范围。
举例说明,若查询时间范围为[min,max],且从[min,max]中查找到的日志时间值为V2,则计算机设备可使用该日志时间值V2更新查询时间范围[min,max]的下限值min,得到更新后的时间范围[V2,max]。
上述实施例中,在查找查询时间范围对应的上下边界时间值的情况下,由于最后查找到的上边界时间值一定是最接近查询时间范围中上限值的那一个日志时间值,因此,使用日志时间值更新查询时间范围的下限值,得到更新后的时间范围,可以提升上边界时间值的查询效率。
在一个实施例中,边界时间值包括下边界时间值和上边界时间值;根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据,包括:从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与查询时间范围匹配的日志数据;其中,目标编号范围,是以下边界时间值对应的日志数据编号为范围起始值,且以位于上边界时间值对应的日志数据编号为范围终止值所构成的编号范围。
具体地,边界时间值包括下边界时间值和上边界时间值。计算机设备可获取下边界时间值对应的日志数据编号,以及获取上边界时间值对应的日志数据编号。计算机设备可以下边界时间值对应的日志数据编号为范围起始值,且以位于上边界时间值对应的日志数据编号为范围终止值,构建目标编号范围。计算机设备可从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与查询时间范围匹配的日志数据。
上述实施例中,由于目标编号范围,是以下边界时间值对应的日志数据编号为范围起始值,且以位于上边界时间值对应的日志数据编号为范围终止值所构成的编号范围,所以,目标编号范围中所包括的各个日志数据编号,均与查询时间范围中各个日志时间值具有对应关系,进而从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,可直接作为与查询时间范围匹配的日志数据,进一步提升了日志数据的查询效率。
如图7所示,在一个实施例中,提供了一种日志数据查询方法,该方法可应用于计算机设备,计算机设备可以是终端或服务器,由终端或服务器自身单独执行,也可以通过终端和服务器之间的交互来实现。本实施例以该方法应用于计算机设备为例进行说明,该方法具体包括以下步骤:
步骤702,从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。
步骤704,在查询时间范围与目标节点下左子树和右子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树;边界时间值包括下边界时间值和上边界时间值。
步骤706,在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找下边界时间值,则将左子树作为目标子树;从左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;在未从左子树遍历到目标叶子节点的情况下,从右子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
步骤708,在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找上边界时间值,则将右子树作为目标子树;从右子树中的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;在未从右子树遍历到目标叶子节点的情况下,从左子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
步骤710,从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。
步骤712,将目标时间范围中的端点时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始在目标查找范围中进行日志时间值查找处理;日志时间值是对应有日志数据的时间值。
步骤714,在查找到日志时间值后,基于日志时间值更新查询时间范围,得到更新后的时间范围。
步骤716,将日志时间值作为下一轮查找的起始时间值,将更新后的时间范围作为下一轮的目标查找范围,并返回从起始时间值开始在目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,将查找到的最后一个日志时间值作为目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
步骤718,从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与查询时间范围匹配的日志数据;其中,目标编号范围,是以下边界时间值对应的日志数据编号为范围起始值,且以位于上边界时间值对应的日志数据编号为范围终止值所构成的编号范围。
本申请还提供一种应用场景,该应用场景应用上述的日志数据查询方法。具体地,该日志数据查询方法可应用于基于二叉搜索树实现日志数据查询场景。可以理解,日志查询时间树为日志查询时间二叉树。计算机设备可从日志查询时间二叉树中确定与查询时间范围匹配的目标节点;日志查询时间二叉树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。在查询时间范围与目标节点下左子树和右子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树;边界时间值包括下边界时间值和上边界时间值。
在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找下边界时间值,则计算机设备可将左子树作为目标子树;从左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;在未从左子树遍历到目标叶子节点的情况下,从右子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找上边界时间值,则计算机设备可将右子树作为目标子树;从右子树中的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;在未从右子树遍历到目标叶子节点的情况下,从左子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
计算机设备可从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。将目标时间范围中的端点时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始在目标查找范围中进行日志时间值查找处理;日志时间值是对应有日志数据的时间值;在查找到日志时间值后,基于日志时间值更新查询时间范围,得到更新后的时间范围;将日志时间值作为下一轮查找的起始时间值,将更新后的时间范围作为下一轮的目标查找范围,并返回从起始时间值开始在目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,将查找到的最后一个日志时间值作为目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
计算机设备可从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与查询时间范围匹配的日志数据;其中,目标编号范围,是以下边界时间值对应的日志数据编号为范围起始值,且以位于上边界时间值对应的日志数据编号为范围终止值所构成的编号范围。
本申请还另外提供一种应用场景,该应用场景应用上述的日志数据查询方法。具体地,该日志数据查询方法可应用于基于多叉搜索树实现日志数据查询的场景。可以理解,日志查询时间树可以为日志查询时间多叉树,比如,日志查询时间三叉树或日志查询时间四叉树等。可以理解,日志查询时间多叉树中各节点用于记录供日志查询的时间范围。基于日志查询时间多叉树可实现针对磁盘中的日志数据的快速查询,提升日志数据的查询效率。
应该理解的是,虽然上述各实施例的流程图中的各个步骤按照顺序依次显示,但是这些步骤并不是必然按照顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种日志数据查询装置800,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:
确定模块802,用于从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。
确定模块802还用于从目标节点下的子树中确定用于查找边界时间值的目标子树。
遍历模块804,用于从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。
确定模块802还用于确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
获取模块806,用于根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。
在一个实施例中,目标节点下的子树为至少两个;确定模块802还用于在查询时间范围与目标节点下至少两个子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树。
在一个实施例中,目标节点下的子树包括左子树和右子树;边界时间值包括下边界时间值;确定模块802还用于在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找下边界时间值,则将左子树作为目标子树;遍历模块804还用于从左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,遍历模块804还用于在未从左子树遍历到目标叶子节点的情况下,从右子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,目标节点下的子树包括左子树和右子树;边界时间值包括上边界时间值;确定模块802还用于在查询时间范围与左子树和右子树各自记录的时间范围皆存在交集的情况下,若需查找上边界时间值,则将右子树作为目标子树;遍历模块804还用于从右子树中的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,遍历模块804还用于在未从右子树遍历到目标叶子节点的情况下,从左子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
在一个实施例中,确定模块802还用于将目标时间范围中的端点时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始在目标查找范围中进行日志时间值查找处理;日志时间值是对应有日志数据的时间值;在查找到日志时间值后,基于日志时间值更新查询时间范围,得到更新后的时间范围;将日志时间值作为下一轮查找的起始时间值,将更新后的时间范围作为下一轮的目标查找范围,并返回从起始时间值开始在目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,将查找到的最后一个日志时间值作为目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值。
在一个实施例中,端点时间值为目标叶子节点所指向磁盘中日志数据存储文件的偏移量对应的时间值;确定模块802还用于将偏移量对应的时间值作为本轮的起始时间值,将查询时间范围作为本轮的目标查找范围,从起始时间值开始更新目标叶子节点所指向磁盘中数据存储文件的偏移量,以在目标查找范围中进行日志时间值查找处理。
在一个实施例中,确定模块802还用于在查找查询时间范围对应的下边界时间值的情况下,使用日志时间值更新查询时间范围的上限值,得到更新后的时间范围。
在一个实施例中,确定模块802还用于在查找查询时间范围对应的上边界时间值的情况下,使用日志时间值更新查询时间范围的下限值,得到更新后的时间范围。
在一个实施例中,边界时间值包括下边界时间值和上边界时间值;获取模块806还用于从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与查询时间范围匹配的日志数据;其中,目标编号范围,是以下边界时间值对应的日志数据编号为范围起始值,且以位于上边界时间值对应的日志数据编号为范围终止值所构成的编号范围。
上述日志数据查询装置,从日志查询时间树中确定与查询时间范围匹配的目标节点;日志查询时间树中各节点用于记录供日志查询的时间范围;目标节点中记录的时间范围与查询时间范围存在交集。由于日志查询时间树中记录的是用于供日志查询的时间范围,数据量较小,因此,日志查询时间树所占用的存储空间相对于存储日志数据所占用的存储空间要小,不用像存储日志数据占用那么多扇区。从目标节点下的子树中确定用于查找边界时间值的目标子树,从目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据。确定目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到查询时间范围对应的边界时间值,根据边界时间值从磁盘中获取与查询时间范围匹配的日志数据。由于日志查询时间树所占用的存储空间不用像存储日志数据占用那么多扇区,从而减少了针对扇区的读写操作,节省了日志数据的查询时间,从而提升了日志数据的查询效率。
上述日志数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种日志数据查询方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种日志数据查询方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9和图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种日志数据查询方法,其特征在于,所述方法包括:
从日志查询时间树中确定与查询时间范围匹配的目标节点;所述日志查询时间树中各节点用于记录供日志查询的时间范围;所述目标节点中记录的时间范围与所述查询时间范围存在交集;
从所述目标节点下的子树中确定用于查找边界时间值的目标子树;
从所述目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;所述目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据;
确定所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值;
根据所述边界时间值从磁盘中获取与所述查询时间范围匹配的日志数据。
2.根据权利要求1所述的方法,其特征在于,所述目标节点下的子树为至少两个;
所述从所述目标节点下的子树中确定用于查找边界时间值的目标子树,包括:
在所述查询时间范围与所述目标节点下至少两个子树中的其中一个记录的时间范围存在交集情况下,将存在交集的子树作为用于查找边界时间值的目标子树。
3.根据权利要求1所述的方法,其特征在于,所述目标节点下的子树包括左子树和右子树;所述边界时间值包括下边界时间值;
所述从所述目标节点下的子树中确定用于查找边界时间值的目标子树,包括:
在所述查询时间范围与所述左子树和所述右子树各自记录的时间范围皆存在交集的情况下,若需查找所述下边界时间值,则将所述左子树作为所述目标子树;
所述从所述目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历,包括:
从所述左子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在未从所述左子树遍历到目标叶子节点的情况下,从所述右子树的左边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
5.根据权利要求1所述的方法,其特征在于,所述目标节点下的子树包括左子树和右子树;所述边界时间值包括上边界时间值;
所述从所述目标节点下的子树中确定用于查找边界时间值的目标子树,包括:
在所述查询时间范围与所述左子树和所述右子树各自记录的时间范围皆存在交集的情况下,若需查找所述上边界时间值,则将所述右子树作为所述目标子树;
所述从所述目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历,包括:
从所述右子树中的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在未从所述右子树遍历到目标叶子节点的情况下,从所述左子树的右边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历。
7.根据权利要求1所述的方法,其特征在于,所述确定所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值,包括:
将所述目标时间范围中的端点时间值作为本轮的起始时间值,将所述查询时间范围作为本轮的目标查找范围,从所述起始时间值开始在所述目标查找范围中进行日志时间值查找处理;所述日志时间值是对应有日志数据的时间值;
在查找到日志时间值后,基于所述日志时间值更新所述查询时间范围,得到更新后的时间范围;
将所述日志时间值作为下一轮查找的起始时间值,将更新后的时间范围作为下一轮的目标查找范围,并返回从所述起始时间值开始在所述目标查找范围中进行日志时间值查找处理以进行下一轮的查找,直至满足查找结束条件,将查找到的最后一个日志时间值作为所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值。
8.根据权利要求7所述的方法,其特征在于,所述端点时间值为所述目标叶子节点所指向磁盘中日志数据存储文件的偏移量对应的时间值;
所述将所述目标时间范围中的端点时间值作为本轮的起始时间值,将所述查询时间范围作为本轮的目标查找范围,从所述起始时间值开始在所述目标查找范围中进行日志时间值查找处理,包括:
将所述偏移量对应的时间值作为本轮的起始时间值,将所述查询时间范围作为本轮的目标查找范围,从所述起始时间值开始更新所述目标叶子节点所指向磁盘中数据存储文件的偏移量,以在所述目标查找范围中进行日志时间值查找处理。
9.根据权利要求7所述的方法,其特征在于,所述在查找到日志时间值后,基于所述日志时间值更新所述查询时间范围,得到更新后的时间范围,包括:
在查找所述查询时间范围对应的下边界时间值的情况下,使用所述日志时间值更新所述查询时间范围的上限值,得到更新后的时间范围。
10.根据权利要求7所述的方法,其特征在于,所述在查找到日志时间值后,基于所述日志时间值更新所述查询时间范围,得到更新后的时间范围,包括:
在查找所述查询时间范围对应的上边界时间值的情况下,使用所述日志时间值更新所述查询时间范围的下限值,得到更新后的时间范围。
11.根据权利要求1至10中任一项所述的方法,其特征在于,所述边界时间值包括下边界时间值和上边界时间值;所述根据所述边界时间值从磁盘中获取与所述查询时间范围匹配的日志数据,包括:
从磁盘中获取目标编号范围内各个日志数据编号分别对应的日志数据,作为与所述查询时间范围匹配的日志数据;
其中,所述目标编号范围,是以所述下边界时间值对应的日志数据编号为范围起始值,且以位于所述上边界时间值对应的日志数据编号为范围终止值所构成的编号范围。
12.一种日志数据查询装置,其特征在于,所述装置包括:
确定模块,用于从日志查询时间树中确定与查询时间范围匹配的目标节点;所述日志查询时间树中各节点用于记录供日志查询的时间范围;所述目标节点中记录的时间范围与所述查询时间范围存在交集;
所述确定模块还用于从所述目标节点下的子树中确定用于查找边界时间值的目标子树;
遍历模块,用于从所述目标子树的边缘叶子节点起进行叶子节点遍历处理,在遍历到目标叶子节点后停止遍历;所述目标叶子节点中记录的目标时间范围内的时间值在磁盘中存在相应的日志数据;
所述确定模块还用于确定所述目标叶子节点记录的对应有日志数据、且处于临界状态的时间值,以得到所述查询时间范围对应的边界时间值;
获取模块,用于根据所述边界时间值从磁盘中获取与所述查询时间范围匹配的日志数据。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
14.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210862134.9A CN117472852A (zh) | 2022-07-20 | 2022-07-20 | 日志数据查询方法、装置、设备和介质 |
PCT/CN2023/092092 WO2024016789A1 (zh) | 2022-07-20 | 2023-05-04 | 日志数据查询方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210862134.9A CN117472852A (zh) | 2022-07-20 | 2022-07-20 | 日志数据查询方法、装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117472852A true CN117472852A (zh) | 2024-01-30 |
Family
ID=89616982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210862134.9A Pending CN117472852A (zh) | 2022-07-20 | 2022-07-20 | 日志数据查询方法、装置、设备和介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117472852A (zh) |
WO (1) | WO2024016789A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1110160A1 (en) * | 1998-08-11 | 2001-06-27 | i2 TECHNOLOGIES, INC. | Data structure and operations for time-varying variable in an enterprise model |
US7120637B2 (en) * | 2003-05-30 | 2006-10-10 | Microsoft Corporation | Positional access using a b-tree |
US7761474B2 (en) * | 2004-06-30 | 2010-07-20 | Sap Ag | Indexing stored data |
CN105630914A (zh) * | 2015-12-21 | 2016-06-01 | 山东中创软件商用中间件股份有限公司 | 日志数据查询方法及装置 |
CN106649627B (zh) * | 2016-12-06 | 2019-09-17 | 杭州迪普科技股份有限公司 | 一种日志查找的方法和装置 |
-
2022
- 2022-07-20 CN CN202210862134.9A patent/CN117472852A/zh active Pending
-
2023
- 2023-05-04 WO PCT/CN2023/092092 patent/WO2024016789A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2024016789A1 (zh) | 2024-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11334544B2 (en) | Method, apparatus, device and medium for storing and querying data | |
CN112287182B (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN110162525B (zh) | 基于b+树的读写冲突解决方法、装置及存储介质 | |
CN111459978A (zh) | 查询方法、装置、计算机设备和存储介质 | |
CN110134335B (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
CN107103011B (zh) | 终端数据搜索的实现方法和装置 | |
CN110928882B (zh) | 一种基于改进红黑树的内存数据库索引方法及系统 | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN109815241B (zh) | 数据查询方法、装置、设备和存储介质 | |
CN114817657A (zh) | 待检索数据处理方法、数据检索方法、电子设备及介质 | |
CN113779286B (zh) | 管理图数据的方法及装置 | |
CN117472852A (zh) | 日志数据查询方法、装置、设备和介质 | |
CN113254470B (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
CN112905587B (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN112416966A (zh) | 即席查询方法、装置、计算机设备和存储介质 | |
CN113419792A (zh) | 一种事件处理方法、装置、终端设备和存储介质 | |
CN117540056B (zh) | 数据查询的方法、装置、计算机设备和存储介质 | |
US20180373807A1 (en) | Data management apparatuses, methods, and non-transitory tangible machine-readable media thereof | |
CN115168409B (zh) | 数据库分表的数据查询方法、装置和计算机设备 | |
CN117909301B (zh) | 基于索引的对象查询方法、装置、设备及介质 | |
CN112948376B (zh) | 一种ip地理位置信息查询方法、终端设备及存储介质 | |
CN111708806B (zh) | 一种数据访问的方法、装置、服务器、系统及存储介质 | |
CN117785889A (zh) | 一种针对图数据库的索引管理方法及相关设备 | |
CN113051441A (zh) | 实体对象的存储设计及管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |