时序数据库多维查询的优化方法及系统与流程

文档序号:36958401发布日期:2024-02-07 13:01阅读:27来源:国知局
本发明涉及数据库数据查询,具体地说是时序数据库多维查询的优化方法及系统。
背景技术
::1、时序数据是随时间不断产生的一系列数据(即带时间戳的数据)。时序数据库(time series database,tsdb)是用于摄取、处理和存储时序数据的数据库。时序数据可能来自服务器和应用程序的指标、物联网传感器的读数、网站或应用程序上的用户交互或金融市场上的交易活动等各种场景。而且,时序数据可能是多维的和相关的,写多读少,需要支持秒级和毫秒级甚至纳秒级高频写入;查询通常是多维聚合查询,对查询的延时要求比较高,查询数据范围通常是一段时间内的,数据量比较大。2、针对时序数据的多维查询,现有的做法是通过遍历表数据根据多维的过滤条件获取结果集,随着数据量增加,查询耗时随之增加。3、对于时序数据库的多维查询场景、如何建立高效的查询方法,是需要解决的技术问题。技术实现思路1、本发明的技术任务是针对以上不足,提供时序数据库多维查询的优化方法及系统,来解决对于时序数据库的多维查询场景、如何建立高效的查询方法的技术问题。2、第一方面,本发明一种时序数据库多维查询的优化方法,包括如下步骤:3、在内存中构建倒排索引信息:时序数据写入时序数据库中数据文件后,基于时序表名和维度值构建倒排索引信息,并将倒排索引信息写入wal预写日志和内存中;4、将倒排索引信息持久化到磁盘的倒排索引文件中:内存中倒排索引信息满足持久化操作条件后,将内存中倒排索引信息写入磁盘的倒排索引文件;5、对于写入时序数据库的数据,基于倒排索引信息作为多维度查询条件从数据文件中过滤查询数据。6、作为优选,倒序排序在内存中存在如下两个数据结构:7、seriesbyid map<seriesid,serieskey>;8、seriesbytagkeyvalue map<tagkey,<tagvalue,list<seriesid>>>;9、其中,serieskey由时序表名和维度值拼接而成,seriesid是serieskey倒排索引文件中的偏移量,tagkey为时序表中的维度名,tagvalue为时序表具体的维度值;10、对应的,基于时序表名和维度值构建倒排索引信息,并将倒排索引信息写入wal预写日志和内存中,包括如下操作:11、将时序表名和维度值拼成多个serieskey;12、对于serieskey,每个在磁盘文件中,根据布隆过滤器、b+树以及hash index确认serieskey是否已经存在,如果已经存在就忽略,否则将所述serieskey写入wal预写日志和内存数据结构中。13、作为优选,倒序排序在磁盘文件中包括index file trailer、table block、tagblock以及series block四个部分;14、file trailer用于记录table block、tag block以及series block在倒排索引文件中的偏移量以及数据大小;15、table block用于存储数据库中表的信息;16、tag block用于表示seriesbytagkeyvalue在倒排索引文件中的实际存储;seriesblock用于存储数据库中所有serieskey;17、对应的,将内存中倒排索引信息写入磁盘的倒排索引文件,包括如下步骤:18、将seriesbyid以及seriesbytagkeyvalue数据排序;19、持久化serieskey:构建series block,在构建的同时记录下serieskey与serieskey在倒排索引文件中偏移量的对应关系,得到<serieskey,20、serieskeyoffset>;21、持久化tagvalue,将同一个tagkey下的所有tagvalue持久化在一起并生成对应hash index写入倒排索引文件;22、持久化所有的tagkey,形成tag block;23、持久化时序表元数据信息形成table block。24、作为优选,基于倒排索引信息作为多维度查询条件从数据文件中过滤查询数据,包括如下步骤:25、根据时序表名在table block进行过滤,直接定位到时序表对应的所有维度值所在的文件区域;26、加载出时序表名对应tag key区域的hash index,使用维度名进行hash定位到该维度名对应的维度值的存储区域;27、加载出维度名对应维度值区域的hash index,使用维度值进行hash定位到该维度值对应的所有seriesid,seriesid为对应serieskey在索引文件中的偏移量;28、根据seriesid加载出对应的serieskey;29、根据serieskey、fieldkey以及时间范围在数据文件中查找对应的满足查询条件的结果集。30、第二方面,本发明一种时序数据库多维查询的优化系统,通过如第一方面任一项所述的时序数据库多维查询的优化方法进行时序数据库多维查询,所述系统包括倒信息构建模块、信息写入模块以及多维查询模块;31、所述信息构建模块用于在内存中构建倒排索引信息,包括:时序数据写入时序数据库中数据文件后,基于时序表名和维度值构建倒排索引信息,并将倒排索引信息写入wal预写日志和内存中;32、所述信息写入模块用于将倒排索引信息持久化到磁盘的倒排索引文件中,包括:内存中倒排索引信息满足持久化操作条件后,将内存中倒排索引信息写入磁盘的倒排索引文件;33、所述多维查询模块用于执行如下:对于写入时序数据库的数据,基于倒排索引信息作为多维度查询条件从数据文件中过滤查询数据。34、作为优选,倒序排序在内存中存在如下两个数据结构:35、seriesbyid map<seriesid,serieskey>;36、seriesbytagkeyvalue map<tagkey,<tagvalue,list<seriesid>>>;37、其中,serieskey由时序表名和维度值拼接而成,seriesid是serieskey倒排索引文件中的偏移量,tagkey为时序表中的维度名,tagvalue为时序表具体的维度值;38、对应的,信息构建模块用于执行如下操作:39、将时序表名和维度值拼成多个serieskey;40、对于serieskey,每个在磁盘文件中,根据布隆过滤器、b+树以及hash index确认serieskey是否已经存在,如果已经存在就忽略,否则将所述serieskey写入wal预写日志和内存数据结构中。41、作为优选,倒序排序在磁盘文件中包括index file trailer、table block、tagblock以及series block四个部分;42、file trailer用于记录table block、tag block以及series block在倒排索引文件中的偏移量以及数据大小;43、table block用于存储数据库中表的信息;44、tag block用于表示seriesbytagkeyvalue在倒排索引文件中的实际存储;seriesblock用于存储数据库中所有serieskey;45、对应的,信息写入模块用于执行如下操作:46、将seriesbyid以及seriesbytagkeyvalue数据排序;47、持久化serieskey:构建series block,在构建的同时记录下serieskey与serieskey在倒排索引文件中偏移量的对应关系,得到<serieskey,48、serieskeyoffset>;49、持久化tagvalue,将同一个tagkey下的所有tagvalue持久化在一起并生成对应hash index写入倒排索引文件;50、持久化所有的tagkey,形成tag block;51、持久化时序表元数据信息形成table block。52、作为优选,所述多维查询模块用于执行如下:53、根据时序表名在table block进行过滤,直接定位到时序表对应的所有维度值所在的文件区域;54、加载出时序表名对应tag key区域的hash index,使用维度名进行hash定位到该维度名对应的维度值的存储区域;55、加载出维度名对应维度值区域的hash index,使用维度值进行hash定位到该维度值对应的所有seriesid,seriesid为对应serieskey在索引文件中的偏移量;56、根据seriesid加载出对应的serieskey;57、根据serieskey、fieldkey以及时间范围在数据文件中查找对应的满足查询条件的结果集。58、本发明的时序数据库多维查询的优化方法及系统具有以下优点:通过在时序数据库中在各个维度上构建倒排索引,能够快速缩小查询数据范围,进而提升多维查询性能,为用户节省了大量的查询时间。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1