CN113961573B - 一种时序数据库查询方法和查询系统 - Google Patents
一种时序数据库查询方法和查询系统 Download PDFInfo
- Publication number
- CN113961573B CN113961573B CN202111584562.1A CN202111584562A CN113961573B CN 113961573 B CN113961573 B CN 113961573B CN 202111584562 A CN202111584562 A CN 202111584562A CN 113961573 B CN113961573 B CN 113961573B
- Authority
- CN
- China
- Prior art keywords
- data
- target
- time
- index layer
- data segment
- 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
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种时序数据库查询方法和查询系统,其中方法包括:获取查询起始时间的目标页码;基于以预设时间间隔生成的索引层定位目标页码中的目标数据;其中,以预设时间间隔生成的索引层的过程,包括:以预设时间间隔将时序数据库中的现有数据划分为多个数据段;将多个数据段按照时间顺序分别存入多个树中,以建立索引层。本发明提供的技术方案提高了时序数据库查询数据的速度,节省了设备算力。
Description
技术领域
本发明涉及数据库领域,具体涉及一种时序数据库查询方法和查询系统。
背景技术
在工业大数据存储领域,除了传统的关系型数据库外,还有一种用来存储大量测量数据的时序数据库。时序数据库不单是一个数据库,而是一个系统,包括:各类工业接口采集协议、海量检测数据存储、和对外提供的接口。在一般时序数据库中,采集和数据存储都很完善,而对外提供的接口往往都是未经加工的原始接口,在使用时会遇到功能不完善和性能瓶颈。传统接口只有按时间段查询的功能,由于数据是变化存储,时间间隔不固定,虽然每一页数据的数据行数是固定的,但是不知道多长的时间段代表着一页数据,若想要查任意一个时间点往后页数的数据,只能从第一页开始顺序查询,并且无法跳页。对于存储顺序较为靠后的数据,也要按顺序先查询出之前的所有数据,才能定位到目标页码,这种查询方式耗时较长,且效率较低。
发明内容
有鉴于此,本发明实施方式提供了一种时序数据库查询方法和查询系统,从而解决了现有时序数据查询数据不能随意跳页的问题。
根据第一方面,本发明实施例提供了一种时序数据库查询方法,所述方法包括:获取查询起始时间的目标页码;基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据;其中,以预设时间间隔生成的索引层的过程,包括:以所述预设时间间隔将所述时序数据库中的现有数据划分为多个数据段;将所述多个数据段按照时间顺序分别存入多个树中,以建立所述索引层。
可选地,所述以预设时间间隔生成的索引层的过程,还包括:将新的经过预设时间间隔的数据写入新的树,并与所述索引层的树相关联,以更新所述索引层。
可选地,所述将所述多个数据段按照时间顺序分别存入多个树中,以建立所述索引层,包括:将所述多个数据段中的数据压缩成字节二进制数组;将压缩后的多个数据段按照时间顺序分别存入多个树中,以建立所述索引层。
可选地,在所述基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据之后,所述方法还包括:将所述时序数据库中需要查询的数据段存入缓存,所述缓存中的数据在第二预设时间间隔之后过期。
可选地,所述时序数据库的每一页包含预设条数的数据,所述基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据,包括:统计目标页码内数据的序号范围,并统计所述查询起始时间之后各数据段内的数据条数;将查询起始时间之后的各数据段内的数据条数依次相加得到多个加和结果,并将各加和结果和所述序号范围的起始序号进行比对,以根据比对结果确定目标数据段,所述目标数据段为所述起始序号落入的数据段;从所述目标数据段中找到所述起始序号对应的起始数据,以基于所述起始数据获取所述序号范围对应的目标数据。
可选地,所述将查询起始时间之后的各数据段内的数据条数依次相加得到多个加和结果,并将各加和结果和所述序号范围的起始序号进行比对,以根据比对结果确定目标数据段,包括:在每次获得新加和结果之后,均将所述新加和结果与所述起始序号进行比对,直到所述起始序号小于所述新加和结果为止,当前加和结果末尾的数据段即为目标数据段。
可选地,所述树中包括秒级时间和毫秒级时间的就近匹配机制,所述方法还包括:在树中获取到目标单个数据的目标时间戳的情况下,利用所述目标时间戳和所述预设时间间隔确定所述目标单个数据所在的第二目标数据段;在所述第二目标数据段根据目标时间戳搜索目标单个数据;在树中未获取到所述目标时间戳的情况下,在第二目标数据段中根据秒级时间找到距离目标时间戳最近的相邻数据作为目标单个数据;若存在多个所述相邻数据,则在所述第二目标数据段中,根据毫秒级时间筛选出相邻数据中距离目标时间戳最近的数据作为目标单个数据。
根据第二方面,本发明实施例提供了一种时序数据库查询系统,所述系统包括:目标接收模块,用于获取查询起始时间的目标页码;检索模块,用于基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据,其中,以预设时间间隔生成的索引层的过程,包括:以所述预设时间间隔将所述时序数据库中的现有数据划分为多个数据段;将所述多个数据段按照时间顺序分别存入多个树中,以建立所述索引层。
根据第三方面,本发明实施例提供了一种电子设备,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机从而执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
本发明技术方案,具有如下优点:
本发明实施例提供的一种时序数据库查询方法和查询系统。该方法通过将时序数据库的数据以预设时间间隔划分为多个小段,建立了时序数据库的索引层,通过获取查询起始时间和目标页数,可计算得到目标页数中数据的序号范围,统计查询起始时间之后的数据段内的数据条数,并将序号范围与每次数据条数的累加情况进行比对,从而确定目标页数中数据所在的目标数据段,并直接从目标数据段中搜索序号范围的起始数据,之后以根据起始数据获得序号范围对应的全部数据。与传统技术中每次查询需要从数据库第一条开始遍历搜索相比,大大减少了检索时间,提高了机器性能。并且本发明可以以任意时间点为起始点,查询该时间点之后任意页数的数据,解决了现有时序数据库无法跳页的问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种时序数据库查询方法的步骤示意图;
图2为本发明实施例的一种时序数据库查询系统的结构示意图;
图3为本发明实施例的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
请参阅图1,本发明实施例提供的一种时序数据库查询方法,具体包括如下步骤:
步骤S101:获取查询起始时间的目标页码。
具体地,本发明实施例提供的查询方法,可以实现在任意时间点查询之后任意页码的功能。时序数据库全称为时间序列数据库,其中时序数据库的数据是按照时间的顺序存储排列的。例如:某个时序数据库存储了从2021年8月1号0点开始的数据,这个时间可以被称为存储起始时间,而本发明实施例中的查询起始时间可以是在存储起始时间之后的任意时间点,例如要查询2021年8月1号13点30分开始的数据,上述查询起始时间就是2021年8月1号13点30分。基于此,本发明实施例中提到的目标页码是从查询起始时间之后开始的任意页码,例如:从2021年8月1号13点30分的数据位置开始,查询后面的第7页数据。
步骤S102:基于以预设时间间隔生成的索引层定位目标页码中的目标数据;其中,以预设时间间隔生成的索引层的过程,包括:以预设时间间隔将时序数据库中的现有数据划分为多个数据段;将多个数据段按照时间顺序分别存入多个树中,以建立索引层。
具体地,时序数据库不单是一个数据库,而是一个系统,包括:各类工业接口采集协议、海量检测数据存储、和对外提供的接口。在一般时序数据库中,采集和数据存储都很完善,而对外提供的接口往往都是未经加工的原始接口,在使用时会遇到功能不完善和性能瓶颈。业务数据在关系数据库使用Sql语法查询,而时序数据库是独立接口且不支持Sql(关系库标准的Sql),在使用时序数据库时加大了定制开发工作量,鉴于Sql的便捷性和普及程度广,基于JDBC接口创建时序数据库的索引服务,使得时序数据库支持Sql语法,查询操作更加轻松,并且方便时序数据库与其它数据库的融合与对接。具体地,在本发明实施例中,还基于JDBC接口创建了Restful风格接口,提高了时序数据库与第三方软件对接的兼容程度。传统的时序数据库中的数据也是按照页数存储的,例如每页存储50行数据,但是在按照页数进行数据检索的时候,传统数据库只能从头查询。例如我们要检索第100页的数据,可知第100页的数据是第4950~5000条,计算机需要从头开始搜索4950次才能找到所需的第一条数据。若我们要检索的数据页数非常大,其数据条数增长到以万为单位,这样的查询方法对机器的性能影响非常大。例如我们要检索第1万条单个数据,或者2021年8月9号0点10分12秒的数据,也是需要从头开始依次搜索;同理如果在任意时间点查询数据,例如需要查询2021年8月1号13点30分以后的第50000页数据,其中有50000×50=2500000条数据,计算机的工作量是非常大的。
基于此,本发明实施例在JDBC接口协议中,创建了以预设时间间隔划分数据的索引层,并将时序数据库以预设时间段划分为多个小段,并将每个数据段存入树结构中从而建立索引层来解决这个问题,首先确定目标页码的第一条数据与起始时间数据之间的条数(后续称为查询距离),再利用各个小段(数据段)内的数据条数与查询距离作比对,即可确定目标页码的第一条数据所在的目标数据段,从而在目标数据段中查询数据,将其他数据段忽略,减少了大量的无用匹配操作,提高了检索效率。而为便利数据的搜索和提取,将数据按照时间顺序存入树结构中(包括但不限于二叉树、平衡二叉树、B树、B+树),使得提取步骤更加快速。树结构存储数据及提取数据过程为现有技术,本发明不再赘述。本发明实施例采用B+树进行数据存数,B+数相比其他树结构的存储机制,左右数据更加平衡,查询效率稳定,遍历效率高。一个B+树集合存储该时序数据库内一个小时的所有数据,树的键是时间戳(毫秒级),叶子节点存数据对象。
具体地,在一实施例中,时序数据库的每一页包含预设条数的数据,上述步骤S102中基于以预设时间间隔生成的索引层定位目标页码中的目标数据,具体包括如下步骤:
步骤S1021:统计目标页码内数据的序号范围,并统计查询起始时间之后各数据段内的数据条数。
步骤S1022:将查询起始时间之后的各数据段内的数据条数依次加和得到多个加和结果,并将各加和结果和序号范围的起始序号进行比对,以根据比对结果确定目标数据段,目标数据段为起始序号落入的数据段;
步骤S1023从目标数据段中找到起始序号对应的起始数据,以基于起始数据获取序号范围对应的目标数据。
具体地,预设时间间隔包含有时间起点。在一实施例中,数据库实际的第一条数据是从0点20分开始的,但是预设时间间隔的时间起点不一定是0点20分,为了方便统计,预设时间间隔的时间起点可以设为0点,采用整点时间段对数据进行划分,根据时间顺序将所有数据存入到每两个整点之间的时间段的数据段内,即预设时间间隔是以0点到1点、1点到2点、2点到3点的形式划分的。每一页有50条数据,之后在查询数据的过程中,通过计算目标页码的数据序号范围(例如从查询起始时间13点30分开始第7页的数据是第301-350条),并将起始序号(本实施例中为301)和各个数据段的数据条数加和作比对(例如统计出13点30分到2点有200条数据,2点到3点有150条数据,第一次比对结果为200小于301,第二次比对结果为200+150=350大于301),判断出起始序号所在的目标数据段(本实时例中目标数据段是2点到3点的数据段),即可跳过大量的无用数据检索(2点之前的数据均不用检索),直接在目标数据段内检索,提高了检索效率。在本实施例中,在目标数据段中找到起始序号对应的数据之后,向后检索50条即可找到第7页的全部数据。基于时间段建立索引层,相较于基于硬件存储量等方式,结合时序数据库以时间为主的特性,具有查询更方便,实时更容易的优点。并且,本发明实现了在任意时间点之后进行分页查询,其数据分页与传统技术相比并不是固定不变的。传统技术的页码从数据库的第一条数据所在的第一页向后依次累加,而本发明实施例提供的方法是将查询起始时间的数据作为第一条数据,并将之后的数据条数重新排页进行显示,使得页码更加灵活,实现了跳页的功能。
具体地,在一实施例中,上述步骤S1022,具体包括如下步骤:
步骤S401:在每次获得新加和结果之后,均将新加和结果与起始序号进行比对,直到起始序号小于新加和结果为止,当前加和结果末尾的数据段即为目标数据段。
具体地,引用上述步骤S1021-1023中的举例,统计出13点30分到2点有200条数据,2点到3点有150条数据,第一次比对结果为200小于301,第二次比对结果为200+150=350大于301,从而目标数据段即为2点到3点的数据段。一种可选方案,若查询的时间较远,例如查询第100页数据,那么起始序号为4950,所要比较的数据段非常多,将所有数据段的依次累加结果都算出来之后,再依次进行比较,会造成算力的浪费。因此,从第一个数据段开始,先将条数与4950进行比较,若小于再进行下一个数据段条数的累加,每比较一次再进行累加,直到新加和结果大于4950时,即可确定4950所在的数据段为最后一个参与累加的数据段。减少了累加次数,节省计算机算力。
具体地,在一实施例中,在步骤S102之后,还包括如下步骤:
步骤S201:将新的经过预设时间间隔的数据写入新的树,并与索引层的树相关联,以更新索引层。具体地,服务在运行中,每过1小时的整点,会追加上一小时的数据条数写入索引文件,也就是一个新的B+树中,用于保证索引的时效性。
具体地,在一实施例中,上述步骤S201,具体包括如下步骤:
步骤S301:当现有数据的最后一个数据段的时间长度等于预设时间间隔时,将每次新经过的预设时间间隔内的数据写入新的树。
步骤S302:当现有数据的最后一个数据段的时间长度小于预设时间间隔时,将新数据存入最后一个数据段的树中,直到该数据段的时间长度等于预设时间间隔时停止存入,并以停止存入的时间点重新开始统计时间长度,之后将每次新经过的预设时间间隔内的数据写入新的树。
具体地,时序数据库是具有时效性的数据库,在服务运行过程中,该数据库中的数据以时间顺序在不断的增加,因此新增加的数据也需要添加到索引服务中来。上述步骤S301~S302以具体例子解释:例如某一的数据库从当天的0点开始存储数据,预设时间段为1小时,若当前时间是5点30分,当时序数据库中的现有数据进行整点划分后,有30分钟的数据存储在5点到6点之间的数据段A内,数据段A的长度是30分钟,不够1小时的长度。因此在服务中,当系统检测到时间为6点时,将5点半到6点这30分钟的数据存入数据段A内,以使得数据段A的时间长度满足1小时。之后重新开始计算时间长度,并将每小时的数据均放入一个新的B+树中,一个B+树中即只存储一个小时的数据。若现有数据的节点恰巧符合预设时间间隔(一小时)的长度,那么从下一时刻开始,将每小时的数据均存入一个新的B+树中即可。
具体地,在一实施例中,上述步骤S102中将多个数据段按照时间顺序分别存入多个树中,以建立索引层,具体包括如下步骤:
步骤S1024:将多个数据段中的数据压缩成字节二进制数组。
步骤S1025:将压缩后的多个数据段按照时间顺序分别存入多个树中,以建立索引层。
具体地,B+树数据对象为字节数组。一个数据对象需要存储1个小时的数据,明文内容为“2021-01-23 01:00:01 352_12.3,2021-01-23 01:00:02 352_11.9...”如果1秒变化一次,1小时有3600条数据,每条数据大约30个左右字符,总数近10万个字符。为了压缩存储空间,使用第三方压缩类库ZipSnappy把明文字符串压缩成byte[]二进制数组,压缩率近9倍,有效的节约了内存占用。
具体地,在一实施例中,在步骤S102之后,还包括如下步骤:
步骤S202:将时序数据库中需要查询的数据段存入缓存,缓存中的数据在第二预设时间间隔之后过期。具体地,B+树数据对象加入缓存机制。在本发明实时例中,从时序数据库查询的历史数据进入缓存,默认第二预设时间间隔为30秒过期。(过期策略使用第三方类库ExpiringMap支持)。如在这期间再次访问该时段数据,则缓存时间重置,如缓存时间内没有再次访问,则该时段数据清空。这样可以有效解决高并发压力,不增加时序数据库负载,也能有效节约使用内存。
具体地,在一实施例中,树包括秒级时间和毫秒级时间的就近匹配机制,具体地,B+树的标准匹配算法只是按Key精准匹配(例如直接根据时间戳查找数据,若数据库中没有所选时间对应的时间戳就查不到数据),没有就近匹配。本设计根据需要满足多种业务场景,添加了“秒级”和“毫秒级”就近匹配算法。如果所查询的时间戳在B+树中不存在,就将时间戳换算为具体时间,从而就近寻找时间更接近的数据条目。从而在查询目标单个数据时,在一实施例中,具体包括如下步骤:
步骤S306:在树中获取到目标单个数据的目标时间戳的情况下,利用目标时间戳和预设时间间隔确定目标单个数据所在的第二目标数据段。具体地,在查询时序数据库中一个单个数据时,首先选择想要查询的时间,并获得该时间点对应的目标时间戳,以便于在B+树中搜索该目标时间戳从而找到对应的数据。同时根据目标时间戳所在的范围,即可确定第二目标数据段,直接在第二目标数据段中搜索数据,跳过其它数据段的搜索过程,大大节约了搜索时间和机器消耗成本。
步骤S307: 在第二目标数据段根据目标时间戳搜索目标单个数据。具体地,根据目标时间戳直接在B+树中找到对应的键进行匹配,即可找到目标单个数据。
步骤S308:在B+树中未获取到目标时间戳的情况下,在第二目标数据段中根据秒级时间找到距离目标时间戳最近的相邻数据作为目标单个数据。具体地,在时序数据库中,数据的时间并不是连续的,即不是每一毫秒或者每一秒都有数据。例如在13点00分有数据,相邻的下一条数据在13点02分,这两个时间点之间没有数据。因此当目标时间戳不存在于B+树时,即想要查询的时间点不存在数据。在本步骤实施例中引用步骤S1中实施例的时间间隔机制,想要查询13点31分00秒的数据,在以整点为预设时间间隔的数据段中,若发现13点31分00秒的时间戳在第二目标数据段内不存在,开始启动秒级就近匹配机制,例如距离13点31分00秒最近的数据时间为13点31分01秒的相邻数据,那么该数据即为目标单个数据。
步骤S309:若存在多个相邻数据,则在第二目标数据段中,根据毫秒时间筛选出相邻数据中距离目标时间戳最近的数据作为目标单个数据。具体地,引用步骤S308中的例子,若在秒级就近匹配机制中,出现距离目标时间戳的13点31分00秒的相邻数据有多个的情况。例如在13点31分01秒包含一条数据,在13点30分59秒包含两条数据,此时出现了三条相邻数据。为了筛选出其中最优的数据,开始启动毫秒级就近匹配机制。通过计算出13点31分01秒一条数据的毫秒时间和13点30分59秒两条数据的毫秒时间,根据毫秒时间找到其中距离13点31分00秒最近的时间,并将最近时间对应的相邻数据作为目标单个数据。例如三条数据的毫秒时间分别为13点31分01秒200毫秒、13点30分59秒999毫秒、13点30分59秒525毫秒,其中13点30分59秒999毫秒距离13点31分00秒最近,即13点30分59秒999毫秒对应的数据为目标单个数据。
通过执行上述各个步骤,本发明实施例提供的一种时序数据库查询方法,通过将时序数据库的数据以预设时间间隔划分为多个小段,建立了时序数据库的索引层,通过获取查询起始时间和目标页数,可计算得到目标页数中数据的序号范围,统计查询起始时间之后的数据段内的数据条数,并将序号范围与每次数据条数的累加情况进行比对,从而确定目标页数中数据所在的目标数据段,并直接从目标数据段中搜索序号范围的起始数据,之后以根据起始数据获得序号范围对应的全部数据。与传统技术中每次查询需要从数据库第一条开始遍历搜索相比,大大减少了检索时间,提高了机器性能。并且本发明可以以任意时间点为起始点,查询该时间点之后任意页数的数据,解决了现有时序数据库无法跳页的问题。之后,基于分页功能本发明实施例中还在B+树中提供了秒级和毫秒级的就近匹配机制,使得查询数据人员可根据实际情况更精准的查询到所需要的数据。
如图2所示,本实施例还提供了一种时序数据库查询系统,该系统包括:
目标接收模块101,用于获取查询起始时间的目标页码。详细内容参见上述方法实施例中步骤S101的相关描述,在此不再进行赘述。
检索模块102,用于基于以预设时间间隔生成的索引层定位目标页码中的目标数据;其中,以预设时间间隔生成的索引层的过程,包括:以预设时间间隔将时序数据库中的现有数据划分为多个数据段;将多个数据段按照时间顺序分别存入多个树中,以建立索引层。详细内容参见上述方法实施例中步骤S102的相关描述,在此不再进行赘述。
本发明实施例提供的一种时序数据库查询系统,用于执行上述实施例提供的一种时序数据库查询方法,其实现方式与原理相同,详细内容参见上述方法实施例的相关描述,不再赘述。
通过执行上述各个组成部分的协同工作,本发明实施例提供的一种时序数据库查询系统,通过将时序数据库的数据以预设时间间隔划分为多个小段,建立了时序数据库的索引层,通过获取查询起始时间和目标页数,可计算得到目标页数中数据的序号范围,统计查询起始时间之后的数据段内的数据条数,并将序号范围与每次数据条数的累加情况进行比对,从而确定目标页数中数据所在的目标数据段,并直接从目标数据段中搜索序号范围的起始数据,之后以根据起始数据获得序号范围对应的全部数据。与传统技术中每次查询需要从数据库第一条开始遍历搜索相比,大大减少了检索时间,提高了机器性能。并且本发明可以以任意时间点为起始点,查询该时间点之后任意页数的数据,解决了现有时序数据库无法跳页的问题。之后,基于分页功能本发明实施例中还在B+树中提供了秒级和毫秒级的就近匹配机制,使得查询数据人员可根据实际情况更精准的查询到所需要的数据。
图3示出了本发明实施例的一种电子设备,该设备包括:处理器901和存储器902,可以通过总线或者其他方式连接,图3中以通过总线连接为例。
处理器901可以为中央处理器(Central Processing Unit,CPU)。处理器901还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如上述方法实施例中的方法所对应的程序指令/模块。处理器901通过运行存储在存储器902中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器902中,当被处理器901执行时,执行上述方法实施例中的方法。
上述电子设备具体细节可以对应参阅上述方法实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,实现的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (9)
1.一种时序数据库查询方法,其特征在于,所述方法包括:
获取查询起始时间的目标页码;
基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据;
其中,以预设时间间隔生成的索引层的过程,包括:以所述预设时间间隔将所述时序数据库中的现有数据划分为多个数据段;将所述多个数据段按照时间顺序分别存入多个树中,以建立所述索引层;
其中,所述时序数据库的每一页包含预设条数的数据,所述基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据的步骤,包括:统计目标页码内数据的序号范围,并统计所述查询起始时间之后各数据段内的数据条数;将查询起始时间之后的各数据段内的数据条数依次相加得到多个加和结果,并将各加和结果和所述序号范围的起始序号进行比对,以根据比对结果确定目标数据段,所述目标数据段为所述起始序号落入的数据段;从所述目标数据段中找到所述起始序号对应的起始数据,以基于所述起始数据获取所述序号范围对应的目标数据。
2.根据权利要求1所述的方法,其特征在于,所述以预设时间间隔生成的索引层的过程,还包括:
将新的经过预设时间间隔的数据写入新的树,并与所述索引层的树相关联,以更新所述索引层。
3.根据权利要求1所述的方法,其特征在于,所述将所述多个数据段按照时间顺序分别存入多个树中,以建立所述索引层,包括:
将所述多个数据段中的数据压缩成字节二进制数组;
将压缩后的多个数据段按照时间顺序分别存入多个树中,以建立所述索引层。
4.根据权利要求1所述的方法,其特征在于,在所述基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据之后,所述方法还包括:
将所述时序数据库中需要查询的数据段存入缓存,所述缓存中的数据在第二预设时间间隔之后过期。
5.根据权利要求1所述的方法,其特征在于,所述将查询起始时间之后的各数据段内的数据条数依次相加得到多个加和结果,并将各加和结果和所述序号范围的起始序号进行比对,以根据比对结果确定目标数据段,包括:
在每次获得新加和结果之后,均将所述新加和结果与所述起始序号进行比对,直到所述起始序号小于所述新加和结果为止,当前加和结果末尾的数据段即为目标数据段。
6.根据权利要求1所述的方法,其特征在于,所述树中包括秒级时间和毫秒级时间的就近匹配机制,所述方法还包括:
在树中获取到目标单个数据的目标时间戳的情况下,利用所述目标时间戳和所述预设时间间隔确定所述目标单个数据所在的第二目标数据段;
在所述第二目标数据段根据目标时间戳搜索目标单个数据;
在树中未获取到所述目标时间戳的情况下,在第二目标数据段中根据秒级时间找到距离目标时间戳最近的相邻数据作为目标单个数据;
若存在多个所述相邻数据,则在所述第二目标数据段中,根据毫秒级时间筛选出相邻数据中距离目标时间戳最近的数据作为目标单个数据。
7.一种时序数据库查询系统,其特征在于,所述系统包括:
目标接收模块,用于获取查询起始时间的目标页码;
检索模块,用于基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据;
其中,以预设时间间隔生成的索引层的过程,包括:以所述预设时间间隔将所述时序数据库中的现有数据划分为多个数据段;将所述多个数据段按照时间顺序分别存入多个树中,以建立所述索引层;
其中,所述时序数据库的每一页包含预设条数的数据,所述基于以预设时间间隔生成的索引层定位所述目标页码中的目标数据的步骤,包括:统计目标页码内数据的序号范围,并统计所述查询起始时间之后各数据段内的数据条数;将查询起始时间之后的各数据段内的数据条数依次相加得到多个加和结果,并将各加和结果和所述序号范围的起始序号进行比对,以根据比对结果确定目标数据段,所述目标数据段为所述起始序号落入的数据段;从所述目标数据段中找到所述起始序号对应的起始数据,以基于所述起始数据获取所述序号范围对应的目标数据。
8.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机从而执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111584562.1A CN113961573B (zh) | 2021-12-23 | 2021-12-23 | 一种时序数据库查询方法和查询系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111584562.1A CN113961573B (zh) | 2021-12-23 | 2021-12-23 | 一种时序数据库查询方法和查询系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113961573A CN113961573A (zh) | 2022-01-21 |
CN113961573B true CN113961573B (zh) | 2022-03-04 |
Family
ID=79473594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111584562.1A Active CN113961573B (zh) | 2021-12-23 | 2021-12-23 | 一种时序数据库查询方法和查询系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961573B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114547073B (zh) * | 2022-02-10 | 2023-03-21 | 清华大学 | 时序数据的聚合查询方法、装置及存储介质 |
CN116226222B (zh) * | 2022-12-02 | 2023-11-07 | 清华大学 | 基于时序数据库的数据段标记处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046183A (zh) * | 2019-04-16 | 2019-07-23 | 北京易沃特科技有限公司 | 一种时序数据聚合检索方法、设备及介质 |
CN113434518A (zh) * | 2021-08-26 | 2021-09-24 | 西安热工研究院有限公司 | 时序数据库查询方法、系统、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216924A (zh) * | 2013-06-03 | 2014-12-17 | 肖瑞 | 基于趋势的时间序列索引 |
CN106445927A (zh) * | 2015-08-04 | 2017-02-22 | 北京京东金融科技控股有限公司 | 数据分页查询方法及装置 |
CN107748766B (zh) * | 2017-09-28 | 2021-08-24 | 南威软件股份有限公司 | 一种基于Presto和Elasticsearch的大数据快速查询方法 |
CN107871022B (zh) * | 2017-12-20 | 2018-12-11 | 清华大学 | 一种时序数据列式存储、查询方法及系统 |
CN108460102A (zh) * | 2018-02-05 | 2018-08-28 | 湖南视觉伟业智能科技有限公司 | 社交网络数据查询方法、装置、计算机设备和存储介质 |
CN111552687B (zh) * | 2020-03-10 | 2023-08-04 | 远景智能国际私人投资有限公司 | 时序数据的存储方法、查询方法、装置、设备及存储介质 |
CN112328842B (zh) * | 2021-01-05 | 2022-03-25 | 北京谷数科技股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-12-23 CN CN202111584562.1A patent/CN113961573B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046183A (zh) * | 2019-04-16 | 2019-07-23 | 北京易沃特科技有限公司 | 一种时序数据聚合检索方法、设备及介质 |
CN113434518A (zh) * | 2021-08-26 | 2021-09-24 | 西安热工研究院有限公司 | 时序数据库查询方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113961573A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113961573B (zh) | 一种时序数据库查询方法和查询系统 | |
CN109241093B (zh) | 一种数据查询的方法、相关装置及数据库系统 | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
CN104424258B (zh) | 多维数据查询的方法、查询服务器、列存储服务器及系统 | |
US20140122022A1 (en) | Processing time series data from multiple sensors | |
US8189912B2 (en) | Efficient histogram storage | |
CN110196847A (zh) | 数据处理方法和装置、存储介质及电子装置 | |
CN105956068A (zh) | 基于分布式数据库的网页url去重方法 | |
US20140032568A1 (en) | System and Method for Indexing Streams Containing Unstructured Text Data | |
US20220358178A1 (en) | Data query method, electronic device, and storage medium | |
CN104035938A (zh) | 一种性能持续集成数据处理的方法及装置 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN116089414B (zh) | 基于海量数据场景的时序数据库写入性能优化方法及装置 | |
US20240078234A1 (en) | Apparatus, method and storage medium for database pagination | |
CN114090631A (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN111488736A (zh) | 自学习分词方法、装置、计算机设备和存储介质 | |
CN114398520A (zh) | 数据检索方法、系统、装置、电子设备及存储介质 | |
CN117633105A (zh) | 基于时间分区索引的时序数据存储管理方法及系统 | |
CN109992708B (zh) | 一种元数据查询的方法、装置、设备以及存储介质 | |
JP2023531751A (ja) | 車載データ記憶方法およびシステム | |
CN109388658B (zh) | 一种数据确定方法和装置 | |
CN110765125A (zh) | 一种存储数据的方法及装置 | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
CN113505276A (zh) | 预计算模型的评分方法、装置、设备和存储介质 | |
CN112699149A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |