CN113312313B - 数据查询方法、非易失性存储介质及电子设备 - Google Patents

数据查询方法、非易失性存储介质及电子设备 Download PDF

Info

Publication number
CN113312313B
CN113312313B CN202110130762.3A CN202110130762A CN113312313B CN 113312313 B CN113312313 B CN 113312313B CN 202110130762 A CN202110130762 A CN 202110130762A CN 113312313 B CN113312313 B CN 113312313B
Authority
CN
China
Prior art keywords
data
time sequence
time
block
index
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
Application number
CN202110130762.3A
Other languages
English (en)
Other versions
CN113312313A (zh
Inventor
胡建洪
吴兴博
张友东
杨成虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taobao China Software Co Ltd
Original Assignee
Taobao China Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Taobao China Software Co Ltd filed Critical Taobao China Software Co Ltd
Priority to CN202110130762.3A priority Critical patent/CN113312313B/zh
Publication of CN113312313A publication Critical patent/CN113312313A/zh
Application granted granted Critical
Publication of CN113312313B publication Critical patent/CN113312313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices

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

数据查询方法、非易失性存储介质及电子设备
技术领域
本申请涉及数据查询领域,具体而言,涉及一种数据查询方法、非易失性存储介质及电子设备。
背景技术
随着5G/IoT技术的高速发展,网络数据呈爆炸式增长,其中,物联网(IoT)与应用性能监控(APM)等是时序数据最典型的应用领域,海量的设备持续产生运行时指标数据,对数据的读写、存储管理都提出了很大的挑战。
例如,现有技术中InfluxDB的TSM文件格式关于时序数据的文件数据组织方法,在查询时需要将索引部分全部加载至内存中,不支持多级分层索引,当文件较大或者文件数较多时,内存的大小会成为查询的瓶颈;用于构建索引的Key的长度不固定且长度通常较长,需要使用冗余的字段KeyLength来表示Key的长度,会导致索引部分占用的磁盘空间占用高;当在一个文件中查询不存在的时序数据时,也要查询索引导致查询效率较低且查询内存消耗高,没有使用最小Key和最大key以及布隆过滤器等方式来提高无效文件的过滤效率;不支持在时序列式压缩的基础上支持通用块压缩,导致数据的压缩效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据查询方法、非易失性存储介质及电子设备,以至少解决现有技术中存在针对时序数据的查询内存消耗及查询延迟高,查询效率低下的技术问题。
根据本申请实施例的一个方面,提供了一种数据查询方法,包括:对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,上述非易失性存储介质包括存储的程序,其中,在上述程序运行时控制上述非易失性存储介质所在设备执行任意一项上述的数据查询方法。
根据本申请实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,与上述处理器连接,用于为上述处理器提供处理以下处理步骤的指令:对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
在本申请实施例中,通过对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
容易注意到的是,本申请实施例针对时序模型中的时序域值数据在文件上的存储,采用按块方式存储时序数据以及采用时序数据查询条件进行查询索引,支持时序压缩和块压缩的存储方式,并设置多级层次的索引结构,可以在时序压缩的基础上进一步提高数据的压缩率,并且支持在查询索引时提前感知文件不包含查询结果,避免无效查询进而提升查询效率。
由此,本申请实施例达到了降低时序数据的查询内存消耗及查询延迟的目的,从而实现了提升时序数据的查询效率的技术效果,进而解决了现有技术中存在针对时序数据的查询内存消耗及查询延迟高,查询效率低下的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了一种用于实现数据查询方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例的一种数据查询方法的流程图;
图3是根据本申请实施例的一种可选的时序模型的示意图;
图4是根据本申请实施例的另一种可选的时序模型的示意图;
图5是根据本申请实施例的一种可选的处理后时序模型的示意图;
图6是根据本申请实施例的一种可选的时序健标识对应的数据源生成数据点的示意图;
图7是根据本申请实施例的一种可选的每个块的组成示意图;
图8是根据本申请实施例的一种可选的时序数据的文件格式框架示意图;
图9是根据本申请实施例的一种可选的数据块的数据组织方式示意图;
图10是根据本申请实施例的一种可选的数据块的元数据的示意图;
图11是根据本申请实施例的一种可选的序列元数据的示意图;
图12是根据本申请实施例的一种可选的数据索引块的示意图;
图13是根据本申请实施例的一种可选的叶子索引块的示意图;
图14是根据本申请实施例的一种可选的布隆过滤器索引块的示意图;
图15是根据本申请实施例的另一种可选的布隆过滤器索引块的示意图;
图16是根据本申请实施例的一种可选的文件元数据块的示意图;
图17是根据本申请实施例的一种可选的文件尾部的示意图;
图18是根据本申请实施例的一种可选的面向时序数据的数据查询流程图;
图19是根据本申请实施例的一种数据查询装置的结构示意图;
图20是根据本申请实施例的一种电子设备的结构示意图;
图21是根据本申请实施例的另一种计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
时序数据库(TimeSeriesDatabase,TSDB):提供高效存取时序数据和统计分析功能的数据管理系统。
时序数据(TimeSeriesData):从定义上来说就是一串按时间维度索引的数据,也可以理解为基于稳定频率持续产生的一系列指标的检测数据,例如,检测某城市的空气质量时,每秒采集一个二氧化硫浓度的值而产生的一系列的数据。
度量(Metric):监测数据的指标,例如风力和温度。
标签(Tag):用于表明指标项监测针对的具体对象,属于指定度量下的数据子类别。一个标签(Tag)由一个标签键(TagKey)和一个对应的标签值(TagValue)组成,例如“城市(TagKey)=杭州(TagValue)”就是一个标签(Tag)或者“机房(TagKey)=A、IP=172.220.110.1(TagValue)”也是一个标签(Tag)。具体的,在监测数据的时候,若指定度量是“气温”,标签是“城市=杭州”,则确定该监测数据表示的就是杭州市的气温。
标签键(TagKey,Tagk):为指标项(Metric)监测指定的对象类型(会有对应的标签值来定位该对象类型下的具体对象),例如国家、省份、城市、机房、IP等。
标签值(TagValue,Tagv):标签键(TagKey)对应的值。例如,当标签键(TagKey)是“国家”时,可指定标签值(TagValue)为“中国”。
值(Value):度量对应的值,例如15级(风力)和20℃(温度)。
时间戳(Timestamp):数据产生的时间点。
域(field):在指定度量下数据的子类别。即一个metric支持多个field,如metric为wind(风力),该metric可以有两个field:direction和speed(方向和速度)。
数值(value):度量对应的数值,如56℃、1000r/s等(实际中不带单位)。如果有多个field,每个field都有相应的value。
布隆过滤器(BloomFilter):是一种空间效率非常高的随机数据结构,它利用位数组非常简洁地表示一个集合,并能推断一个元素是否属于这个集合。
实施例1
根据本申请实施例,还提供了一种数据查询方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现数据查询方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据查询方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据查询方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在上述运行环境下,本申请提供了如图2所示的一种数据查询方法。图2是根据本申请实施例的一种数据查询方法的流程图,如图2所示,上述数据查询方法包括如下方法步骤:
步骤S202,对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;
步骤S204,获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;
步骤S206,基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;
步骤S208,返回上述查询结果。
在本申请实施例中,通过对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
容易注意到的是,本申请实施例针对时序模型中的时序域值数据在文件上的存储,采用按块方式存储时序数据以及采用时序数据查询条件进行查询索引,支持时序压缩和块压缩的存储方式,并设置多级层次的索引结构,可以在时序压缩的基础上进一步提高数据的压缩率,并且支持在查询索引时提前感知文件不包含查询结果,避免无效查询进而提升查询效率。
由此,本申请实施例达到了降低时序数据的查询内存消耗及查询延迟的目的,从而实现了提升时序数据的查询效率的技术效果,进而解决了现有技术中存在针对时序数据的查询内存消耗及查询延迟高,查询效率低下的技术问题。
需要说明的是,本申请实施例所提供的数据查询方法,可以但不限于应用在数据存储与处理需求爆发式增长的时序场景,例如,物联网、应用性能管理APM等,覆盖物联网、车联网、智能家居、工业互联网、应用性能监控等常见的应用场景。
在本申请实施例中,由于本申请实施例所提供的数据查询方法,提供了按块组织数据和索引,支持时序压缩和块压缩的处理方式,以及还提供了一种带时间戳的多级层次索引,可解决时序数据查询时的内存消耗高、查询延迟高以及时序数据存储成本高等痛点问题,因此该数据查询方法,实质可以理解为一种面向时序数据的文件数据组织方法。
作为一种可选的实施例,时序数据的数据模型主要分为单值模型和多值模型两种,需要说明的是,单值模型是多值模型的一个特例,适用于多值模型的描述同样适用于单值模型。
本申请实施例所提供的数据查询方法,主要可以但不限于针对性解决时序模型中的时序域值部分的数据在目标文件上的存储和对该目标文件的查询,因此在存储时序数据之前,可以对时序模型的数据进行如下预处理:
如图3所示,首先将时序模型中数据分为时序健值部分和时序域值部分,其次,如图4所示,为时序健值部分的时序键seriesKey(即metric+tags组合)分配一个唯一的固定长度的整型标识seriesId,如图5所示,使用如图4所示已生成seriesId替换时序模型中的时序健值部分的内容,得到预处理结果。
可选的,在本申请实施例中,预处理的主要作用是使用固定长度(4个字节或者8个字节)的整型表示的时序键标识seriesId替代不定长的时序健值seriesKey,以减少时序健值seriesKey存储在目标文件中的磁盘空间占用。
作为一种可选的实施例,实际上每个时序健标识seriesId(或者时序健值seriesKey)对应着一个数据源,这个数据源按时间顺序产生一系列数据点,如图6所示,取值为1的时序键标识seriesId的域F1,从左到右按时间顺序产生了取值为180、121、12、…、32等的一批数据点。本申请实施例中所给出的一种面向时序数据的文件数据组织方法,可以用于解决海量数据源在一个时间范围内的一批数据点的高效存储和查询的技术问题。
在一种可选的实施例中,上述目标文件包括多个块,其中,上述多个块中的每个块包括:块头部、负载以及校验和。
本申请实施例提出的一种面向时序数据的文件数据组织方法,整体思路是以块的方式组织数据的,每个块包括:块头部block header、负载payload、校验和checksums三个部分,如图7所示,每个块的大小,可根据实际情况指定为合适的大小,比如32KB或者64KB等。
在一种可选的实施例中,上述块头部包括:
第一字段,用于标识上述负载存储的数据类型;
第二字段,用于标识上述负载与上述校验和占用的存储空间;
第三字段,用于标识上述负载在压缩前占用的存储空间;
第四字段,用于标识前一个块在存储空间内的偏移量;
第五字段,用于标识上述校验和的计算方式;
第六字段,用于标识上述校验和的计算频率;
第七字段,用于标识上述块头部上述负载在压缩后共同占用的存储空间。
仍如图7所示,上述块头部block header的长度固定为33个字节,主要包括以下几个部分:
第一字段block type:块类型,固定为8个字节,用于标识负载payload存储的数据类型;第二字段onDiskSizeWithoutHeader:去除块头部后块在磁盘上的大小,固定为4个字节,用于标识负载payload、校验和checksum在磁盘空间上的字节数;第三字段uncompressedSizeWithoutHeader:去除块头部后块在压缩前的大小,固定为4个字节,用于标识负载payload在压缩前的字节数;第四字段preBlockOffset:前一个块的偏移preBlockOffset,固定为8个字节,用于标识前一个相同块在磁盘文件上的偏移;第五字段checksumType:校验和类型,固定为1个字节,用于标识计算校验和时使用的算法,如CRC32等;第六字段bytesPerChecksum:用于标识每隔多少个自己计算一次校验和,固定为4个字节;第七字段onDiskDataSizeWithHeader:负载payload压缩后加上块头部在磁盘上的字节数。
在一种可选的实施例中,上述负载占用的存储空间由每个块实际写入的内容来确定。
在一种可选的实施例中,上述校验和占用的存储空间由上述校验和的计算方式与上述负载占用的存储空间来确定。
需要说明的是,上述负载Payload的长度不固定,取决于实际写入块的内容;上述校验和checksums是一个字节数组,占用的磁盘空间取决于块头部中的第五字段checksumType和第六字段bytesPerChecksum以及负载payload的字节数。
假设checksumType为CRC32(CRC32计算出来的校验和长度为4个字节),第六字段bytesPerChecksum为16KB,负载payload的字节数为64KB,那么checksums的长度为(64KB/16KB)*4=16。
在一种可选的实施例中,上述多个块包括:
数据块、数据索引块、布隆过滤器块、布隆过滤器索引块、文件元数据块、文件尾部块。
可选的,上述多个块主要包括:数据块DataBlock、数据索引块IndexBlock、布隆过滤器块BloomFilterBlock、布隆过滤器索引块BloomFilterIndexBlock、元数据块MetaBlock、尾部TrailerBlock等部分。
如图8所示,使用本申请实施例所生成的时序数据的文件格式框架示意图,布隆过滤器索引块BloomFilterIndexBlock、元数据块MetaBlock、尾部TrailerBlock会在目标文件打开时加载至内存中。
在一种可选的实施例中,上述数据块用于存储多个时序键标识关联的压缩后的时序数据,上述数据块的负载包括:多个切片,上述多个切片中的每个切片是按照每个切片对应的时序键标识所关联的域值在预设时间范围内产生的时序数据点的数据量大小或者时序数据点的数量进行切分后的最小单位,每个切片包括:多个时间戳以及上述多个时间戳中每个时间戳对应的域值,每个时间戳与对应的域值分别采用不同的压缩方式。
在一种可选的实施例中,上述数据块的负载还包括:数据块元数据,上述数据块元数据包括:序列元数据、序列索引、序列数、最小序列键标识、最大序列键标识,其中,上述序列索引为上述序列元数据的索引,上述序列索引用于记录每个序列元数据在上述数据块中的偏移和大小,上述序列元数据在上述数据块中的位置按照序列键标识从小到大排序。
可选的,在本申请实施例中,数据块DataBlock用于存储多个时序键标识seriesId关联的压缩后的时序数据,数据块DataBlock的数据组织方式如图9所示,该数据块的负载payload包括:一系列的切片slice和数据块元数据Blockmeta。
在一种可选的实施例中,上述切片slice表示的是一个时序键标识seriesId关联的一个域值,在某段时间范围的数据点按照大小或者数据点个数切分后的最小块。
例如,时序键键标识为1的域F1在某段时间范围的数据点的大小总和为16KB,假设配置切片slice的最大大小为4KB,那么域F1在这段时间范围内的数据点将切分4个slice。或者时序键键标识为1的域F1在某段时间范围的数据点的总数为5000个,假设配置每个slice最多包含1000个数据点,则域值F1在这段时间范围内的数据点将切分5个slice。
再例如,每个切片slice包含一系列时间戳及时间戳对应域值,时间戳部分使用delta-of-delta算法进行压缩,域值部分根据数据类型的使用不同的压缩算法进行压缩,如浮点数使用xor算法压缩、整型使用zigzag算法压缩、布尔型使用0或者1压缩等。
在另一种可选的实施例中,如图10所示,上述数据块的元数据blockmeta,包含的是序列元数据seriesmeta、序列索引seriesindex、序列数numSeries、最小序列键标识minId、最大序列键标识maxId,其中,序列索引seriesindex是序列元数据seriesmeta的索引,序列索引seriesindex中的序列索引入口seriesindexentry记录了每个序列元数据seriesmeta在数据块中的偏移offset和大小size。
而且,序列元数据seriesmeta在块中的位置是按照序列键标识seriesId从小到大排序的,因此当给某个序列键标识seriesId要查找对应的序列元数据seriesmeta时,可以根据序列索引seriesindex进行二分检索。
另外,每个序列索引入口seriesindexentry的大小是固定为8个字节的,因此,结合序列数numSeries就可以计算出序列索引seriesindex的在块中偏移offset和大小size,无需冗余存储序列索引seriesindex在块中的偏移量offset和大小size。
在一种可选的实施例中,上述序列元数据包括:序列键标识、序列最小时间戳、序列最大时间戳、域元数据、域索引以及域个数,其中,上述域索引是上述域元数据的索引,用于记录上述域元数据在上述数据块中的偏移量,上述域元数据在上述序列元数据中的位置基于域名称按照字典序排序生成。
在一种可选的实施例中,上述域元数据包括:域名、域值的数据类型、域最小时间戳、域最大时间戳、切片个数、切片索引,其中,上述切片索引用于记录每个切片的域最小时间戳、域最大时间戳和每个切片在上述数据块中的偏移量和大小。
如图11所示,上述序列元数据seriesmeta包含的内容为序列键标识seriesId,序列最小时间戳minTime(8个字节)、序列最大时间戳maxTime(8个字节)、域元数据fieldmeta、域索引fieldindex、以及域个数fieldcount。其中,域索引fieldindex是域元数据fieldmeta的索引,仅记录了域元数据fieldmeta在块中的偏移量offset,域元数据fieldmeta在序列元数据seriesmeta中的位置是按照域名称name按照字典序排序生成的,当给定域名时,根据域索引fieldindex进行二分检索即可。域个数fieldcount的作用是序列键标识seriesId关联的域的个数,同时计算出域索引fieldindex在块中的偏移量offset和大小size。
在上述可选的实施例中,域元数据fieldmeta包含的内容为域名name、域值的数据类型dataType、域最小时间戳minTime、域最大时间戳maxTime、切片个数numSlices、切片索引sliceindexentry。其中,切片索引sliceindexentry记录的内容为切片的最小时间戳minTime、最大时间戳maxTime和切片在块中的偏移量offset和大小size。
在一种可选的实施例中,上述数据索引块用于记录上述数据块在存储空间内的索引,上述数据索引块的负载包括:索引项个数、索引项,其中,上述索引项用于记录索引对应块的偏移量、大小、最小序列键标识、最大序列键标识、域最小时间戳、域最大时间戳。
在上述可选实施例中,如图12所示,数据索引块IndexBlock记录了数据块DataBlock在磁盘上的索引,其负载payload的包含:索引项个数numentries、索引项indexentry等两部分内容,其中索引项indexentry记录了其索引的块的偏移量offset和大小size,最小序列键标识minId,最大序列键标识maxId,最小时间戳minTime,最大时间戳maxTime。
在一种可选的实施例中,采用树状多级层次方式设置上述数据索引块,上述数据索引块的类型包括:叶子索引块、中间层级索引块和根索引块,其中,上述叶子索引块用于索引上述数据块,上述中间层级索引块用于索引上述叶子索引块,上述根索引块用于索引上述中间层级索引块。
在本申请实施例中,可以采用树状多级层次方式组织数据块的索引,因此索引块的类型又细分为叶子索引块leafindexblock、中间层级索引块interindexblock、根索引块rootindexblock等三个类型。
需要说明的是,上述三种类型的索引块的负载payload的格式是一样,仅blockheader中的block type不同。
如图13所示,叶子索引块leafindexblock直接索引数据块DataBlock,中间层级索引块interindexblock索引叶子索引块和中间层级索引块,根索引块rootindexblock索引中间层级索引块。其中,当树状结构的索引只有叶子索引块时,根索引块即是叶子索引块。
在一种可选的实施例中,上述布隆过滤器索引块用于存储基于时序键标识生成的布隆过滤器,上述布隆过滤器索引块的负载包括:哈希函数类型、哈希函数个数、布隆过滤器位数组长度、布隆过滤器位数组。
如图14所示,布隆过滤器块BloomFilterBlock用于存储根据时序键标识seriesId生成的布隆过滤器BloomFilter,该布隆过滤器索引块的负载payload包括:hash函数类型、hash函数个数、布隆过滤器位数组长度bitarraysize,以及布隆过滤器位数组bitarray等内容。
在一种可选的实施例中,上述布隆过滤器索引块用于索引多个布隆过滤器索引块在存储空间内的偏移和大小,以及每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识。
如图15所示,布隆过滤器索引块BloomFilterIndexBlock用于索引多个布隆过滤器块BloomFilterBlock在磁盘上的偏移offset和大小size,以及每个布隆过滤器块BloomFilterBlock包含的最小序列键标识minId,最大序列键标识maxId。
在一种可选的实施例中,上述文件元数据块用于记录文件压缩标识、时序压缩使用的方法标识、文件的首次创建时间戳和更新时间戳、文件中包含的时序数据的第二时间范围以及文件中包含的时序数据的最小时序键标识和最大序列键标识。
如图16所示,上述文件元数据块MetaBlock记录的内容包括文件压缩标识compress,时序压缩使用的方法标识serder,文件的首次创建时间createTime和更新时间戳updateTime、文件中包含的时序数据的时间范围以及文件中包含的时序的最小时序键标识minId、最大序列键标识maxId等。
在一种可选的实施例中,上述文件尾部块用于记录根索引块的偏移量和大小、层次索引树的深度、布隆过滤器索引块的偏移和大小、文件元数据块的偏移和大小、数据块的个数、文件包含的序列个数、文件的版本号。
需要说明的是,上述文件尾部TrailerBlock与其他类型的块不同的是,该文件尾部TrailerBlock长度是固定的,块头部仅一个块类型标识,且校验和checksum是固定为4个字节的CRC32的校验和。
如图17所示,上述文件尾部TrailerBlock是其他类型块的索引,记录了数据块根索引结点的偏移量offset和大小size以及层次索引树的深度numLevels,布隆过滤器索引块的偏移offset和大小size、元数据块MetaBlock的偏移offset和大小size,数据块的个数numdatablocks,以及文件包含的序列个数,以及文件的大版本号majorversion、小版本号minorversion等内容。
在一种可选的实施例中,对上述时序数据进行预处理包括:
步骤S302,将上述时序数据划分为时序健值部分和时序域值部分;
步骤S304,分别为上述时序健值部分中的每个时序健值分配对应的时序键标识;
步骤S306,采用分配的时序键标识替换上述时序健值部分中对应的时序健值。
在本申请实施例中,预先给定一个时序数据查询条件,即一个时间键标识seriesId,一个域名称fieldName,以及第一时间范围[startTime,endTime],分别为上述时序健值部分中的每个时序健值分配对应的时序键标识;以及采用分配的时序键标识替换上述时序健值部分中对应的时序健值。
在一种可选的实施例中,上述数据查询方法还包括:
步骤S402,将文件尾部块、文件元数据块、根索引块和布隆过滤器索引块加载至内存中。
本申请实施例所提供的一种可选的面向时序数据的数据查询流程图,如图18所示,首先,打开目标文件,将文件尾部块Trailerblock、元数据块MetaBlock、数据根索引块RootIndexBlock、布隆过滤器索引块BloomFilterIndexBlock加载至内存中。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果包括:
步骤S502,获取文件元数据块中记录的时序数据的第二时间范围、第一最小时序键标识和第一最大序列键标识;
步骤S504,当未满足第一判定条件与第二判定条件中至少之一时,确定上述查询结果为空,其中,上述第一判定条件为上述时序键标识大于或等于上述第一最小时序键标识并且上述时序键标识小于或等于上述第一最大序列键标识,上述第二判定条件为上述第一时间范围与上述第二时间范围之间存在交集。
仍如图18所示,在本申请实施例中,采用元数据块MetaBlock中的记录的最小时序键标识minId和最大时序键标识maxId和最小时间戳minTime和最大时间戳maxTime,判断给定的时间键标识seriesId是否满足minId<=seriesId且seriesId<=maxId,并判断给定的第一时间范围[startTime,endTime]是否与第二时间范围[minTime,maxTime]存在交集。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S602,当同时满足上述第一判定条件与上述第二判定条件时,基于每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识进行二分查找;
步骤S504,当未查找到上述时序键标识对应的布隆过滤器索引块时,确定上述查询结果为空。
在上述可选的实施例中,若上述第一判定条件与上述第二判定条件均满足,则基于每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识进行二分查找,否则返回空结果集,并退出查询流程。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S602,当查找到上述时序键标识对应的布隆过滤器索引块时,获取查找到的布隆过滤器索引块的偏移量和大小;
步骤S604,基于上述查找到的布隆过滤器索引块的偏移量和大小从上述目标文件中读取上述查找到的布隆过滤器索引块,并利用上述查找到的布隆过滤器索引块查找上述时序键标识;
步骤S606,当上述时序键标识不存在时,确定上述查询结果为空。
仍如图18所示,根据给定的时间键标识seriesId,在布隆过滤器索引块BloomFilterIndexBlock中根据索引项indexentry中的最小时序键标识minId和最大时序键标识maxId进行二分查找,查找给定的时间键标识seriesId对应的布隆过滤器块BloomFilterBlock。
若未查找到给定的时间键标识seriesId对应的布隆过滤器块,则返回空结果集,退出查询流程;否则返回给定的时间键标识seriesId对应的布隆过滤器块的偏移offset和大小offset,并根据上述步骤得到的布隆过滤器块的偏移offset和大小offset,从文件中读取布隆过滤器块,然后使用布隆过滤器判断给定时间键标识seriesId是否存在,如不存在,则返回空结果集,退出查询流程。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S702,当上述时序键标识存在时,获取根索引块中记录的时序数据的第三时间范围、第二最小时序键标识和第二最大序列键标识;
步骤S704,当未满足第三判定条件与第四判定条件中至少之一时,确定上述查询结果为空,其中,上述第三判定条件为上述时序键标识大于或等于上述第二最小时序键标识并且上述时序键标识小于或等于上述第二最大序列键标识,上述第二判定条件为上述第一时间范围与上述第三时间范围之间存在交集。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S802,当同时满足上述第三判定条件与上述第四判定条件时,获取目标索引块的类型、偏移量和大小。
在上述可选的实施例中,根据给定的时间键标识seriesId,结合数据块根索引结点的每个索引项中记录的minId和maxId进行二分检索,若某个索引项的minId和maxId满足minId<=seriesId且seriesId<=maxId,则判断给定的第一时间范围[startTime,endTime]是否与索引项中记录的第三时间范围[minTime,maxTime]存在交集,若存在交集,则返回索引块中记录的偏移量offset和大小size,并判断索引块类型是叶子索引块还是中间层次索引块,否则返回空结果集,退出查询流程。
作为一种可选的实施例,若二分查找为找到索引项的minId和maxId满足minId<=seriesId且seriesId<=maxId,则返回空结果集,退出查询流程。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S902,当上述目标索引块的类型为中间层级索引块时,基于上述中间层级索引块的偏移量和大小获取上述中间层级索引块中记录的时序数据的第四时间范围、第三最小时序键标识和第三最大序列键标识;
步骤S904,当未满足第五判定条件与第六判定条件中至少之一时,确定上述查询结果为空,其中,上述第五判定条件为上述时序键标识大于或等于上述第三最小时序键标识并且上述时序键标识小于或等于上述第三最大序列键标识,上述第六判定条件为上述第一时间范围与上述第四时间范围之间存在交集。
在上述可选地实施例中,当上述目标索引块的类型为中间层级索引块时,根据中间层次索引块的偏移量offset和大小size,从文件中读取索引块,并根据给定的时间键标识seriesId结合索引块的每个索引项中记录的minId和maxId进行二分检索,若某个索引项的minId和maxId满足minId<=seriesId且seriesId<=maxId,则判断给定的第一时间范围[startTime,endTime]是否与索引项中记录的第四时间范围[minTime,maxTime]存在交集,若存在交集,则返回索引块中记录的偏移量offset和大小size,则判断索引块类型是叶子索引块还是中间层次索引块,否则返回空结果集,退出查询流程。
其中,若二分查找为找到索引项的minId和maxId不满足minId<=seriesId且seriesId<=maxId,则返回空结果集,退出查询流程。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S1002,当上述目标索引块的类型为叶子索引块时,基于上述叶子索引块的偏移量和大小从上述目标文件中获取目标数据块,并基于上述目标数据块中数据块元数据所包含的序列索引进行二分查找;
步骤S1004,当未查找到与上述时序键标识对应的序列元数据时,确定上述查询结果为空。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S1102,当查找到与上述时序键标识对应的序列元数据时,获取上述查找到的序列元数据记录的第五时间范围;
步骤S1104,当上述第一时间范围与上述第五时间范围之间未存在交集时,确定上述查询结果为空。
在上述可选的实施例中,当上述目标索引块的类型为叶子索引块时,根据查询索引得到的数据块的偏移量offset和大小size,从文件中读取数据块,再根据数据块中块元数据block meta中的序列索引二分查找给定给定的时间键标识seriesId对应的序列元数据series meta,若查找到则判断给定的第一时间范围[startTime,endTime]和序列元数据series meta记录的第五时间范围[minTime,maxTime]是否存在交集,若未存在交集则返回空结果集,退出查询流程。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S1202,当上述第一时间范围与上述第五时间范围之间存在交集时,基于上述查找到的序列元数据域索引进行二分查找;
步骤S1204,当未查找到与上述域名称对应的域元数据时,确定上述查询结果为空。
在上述可选的实施例中,判断给定的第一时间范围[startTime,endTime]和序列元数据series meta记录的第五时间范围[minTime,maxTime]是否存在交集,若存在交集,则基于上述查找到的序列元数据域索引进行二分查找,当未查找到与上述域名称对应的域元数据时,确定上述查询结果为空。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S1302,当查找到与上述域名称对应的域元数据时,获取上述查找到的域元数据记录的第六时间范围;
步骤S1304,当上述第一时间范围与上述第六时间范围之间未存在交集时,确定上述查询结果为空。
在上述可选的实施例中,根据序列元数据series meta的域索引二分查找给定的域名称fieldName对应的域元数据fieldmeta。若查找到则获取上述查找到的域元数据记录的第六时间范围,否则返回空结果集,退出查询流程。
在获取上述查找到的域元数据记录的第六时间范围之后,判断给定的第一时间范围[startTime,endTime]和域元数据fieldmeta记录的第六时间范围[minTime,maxTime]是否存在交集,若存在交集,则遍历上述查找到的域元数据中记录的切片索引,否则返回空结果集,退出查询流程。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S1402,当上述第一时间范围与上述第六时间范围之间存在交集时,遍历上述查找到的域元数据中记录的切片索引,获取上述查找到的切片索引记录的第七时间范围;
步骤S1404,当上述第一时间范围与上述第七时间范围之间未存在交集时,确定上述查询结果为空。
在上述可选的实施例中,在获取上述查找到的域元数据记录的第六时间范围之后,判断给定的第一时间范围[startTime,endTime]和域元数据fieldmeta记录的第六时间范围[minTime,maxTime]是否存在交集。
若存在交集,则依次遍历域元数据fieldmeta记录的所有切片索引项sliceindexentry,判断给定的第一时间范围[startTime,endTime]和切片索引项sliceindexentry记录的第七时间范围[minTime,maxTime]是否存在交集,不存在交集,则退出查询流程,并返回已经过滤出来的数据点集合。
在一种可选的实施例中,基于上述时序数据查询条件对上述目标文件执行查询操作,得到上述查询结果还包括:
步骤S1502,当上述第一时间范围与上述第七时间范围之间存在交集时,基于上述查找到的切片索引的偏移量和大小解码得到上述查找到的切片索引所包含的时序数据;
步骤S1504,利用上述第一时间范围对解码得到的时序数据进行过滤操作,得到上述查询结果。
在上述可选的实施例中,若存在交集,则根据索引项sliceindexentry的切片slice偏移offset和大小,解码出切片slice包含的数据点,并根据给定的[startTime,endTime]过滤出满足条件的数据点,直到某个切片索引项sliceindexentry记录的第七时间范围[minTime,maxTime]和给定的第一时间范围[startTime,endTime]不存在交集,则退出查询流程,并返回已经过滤出来的数据点集合。
在本申请实施例中,针对时序键seriesKey的较长且长度不固定,导致索引项比较大且需要冗余字段标识索引项的大小的问题,本文通过将时序键seriesKey映射为一个固定长度的整型的时序键标识seriesId,让索引项的大小固定不变,无需额外冗余字段标识每个索引项的大小。
本申请实施例,通过引入布隆过滤器提高了查询文件中不存在的序列的效率,并使用分块的方式将文件的布隆过滤器切分为多个互不重叠的布隆过滤器,查询时在内存中按需加载和缓存使用到的布隆过滤器。
本申请实施例还通过引入带时间戳的多级层次索引,无需将每个文件的全部索引加载至内存,只需将根索引加载内存即可,解决了将索引项全部加载内存时导致的内存问题。
本申请实施例还通过采用按块的方式组织数据,每个块包括头部、负载、校验和,支持使用通用压缩算法对块负载进行在次压缩,可以在时序压缩的基础上进一步提高数据的压缩率。
本申请实施例在文件上使用按块的方式组织时序数据,支持在时序压缩的基础上使用通用压缩算法进一步压缩时序数据;支持按照时序键标识seriesId范围和时间戳范围两个纬度过滤时序数据,支持文件元数据,数据块索引、时间线索引、域索引以及切片索引等多个层次的时序键标识seriesId范围和时间戳范围双重过滤数据。
仍需说明的是,本申请实施例引入带时间戳的多级层次索引结构,每个索引项包含时序键标识seriesId范围和时间戳范围,支持在查询索引时提前感知文件不包含查询结果,可以提前终止查询流程。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例上述的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述数据查询方法的装置实施例,图19是根据本申请实施例的一种数据查询装置的结构示意图,如图19所示,该装置包括:预处理模块1900、获取模块1902、查询模块1904和返回模块1906,其中:
预处理模块1900,用于对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取模块1902,用于获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;查询模块1904,用于基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回模块1906,用于返回上述查询结果。
此处需要说明的是,上述预处理模块1900、获取模块1902、查询模块1904和返回模块1906对应于实施例1中的步骤S202至步骤S208,四个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
需要说明的是,本实施例的优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例3
根据本申请实施例,还提供了一种电子设备的实施例,该电子设备可以是计算设备群中的任意一个计算设备。图20是根据本申请实施例的一种电子设备的结构示意图,如图20所示,该电子设备包括:处理器2000和存储器2002,其中:
处理器800;以及存储器802,与上述处理器800连接,用于为上述处理器提供处理以下处理步骤的指令:对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
在本申请实施例中,通过对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
容易注意到的是,本申请实施例针对时序模型中的时序域值数据在文件上的存储,采用按块方式存储时序数据以及采用时序数据查询条件进行查询索引,支持时序压缩和块压缩的存储方式,并设置多级层次的索引结构,可以在时序压缩的基础上进一步提高数据的压缩率,并且支持在查询索引时提前感知文件不包含查询结果,避免无效查询进而提升查询效率。
由此,本申请实施例达到了降低时序数据的查询内存消耗及查询延迟的目的,从而实现了提升时序数据的查询效率的技术效果,进而解决了现有技术中存在针对时序数据的查询内存消耗及查询延迟高,查询效率低下的技术问题。
需要说明的是,本实施例的优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
实施例4
根据本申请的实施例,还提供了一种计算机终端的实施例,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行数据查询方法中以下步骤的程序代码:对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
可选地,图21是根据本申请实施例的另一种计算机终端的结构框图,如图21所示,该计算机终端可以包括:一个或多个(图中仅示出一个)处理器2102、存储器2104、以及外设接口2106。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的数据查询方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据查询方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
可选的,上述处理器还可以执行如下步骤的程序代码:分别为上述时序健值部分中的每个时序健值分配对应的时序键标识;采用分配的时序键标识替换上述时序健值部分中对应的时序健值。
可选的,上述处理器还可以执行如下步骤的程序代码:将文件尾部块、文件元数据块、根索引块和布隆过滤器索引块加载至内存中。
可选的,上述处理器还可以执行如下步骤的程序代码:获取文件元数据块中记录的时序数据的第二时间范围、第一最小时序键标识和第一最大序列键标识;当未满足第一判定条件与第二判定条件中至少之一时,确定上述查询结果为空,其中,上述第一判定条件为上述时序键标识大于或等于上述第一最小时序键标识并且上述时序键标识小于或等于上述第一最大序列键标识,上述第二判定条件为上述第一时间范围与上述第二时间范围之间存在交集。
可选的,上述处理器还可以执行如下步骤的程序代码:当同时满足上述第一判定条件与上述第二判定条件时,基于每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识进行二分查找;当未查找到上述时序键标识对应的布隆过滤器索引块时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当查找到上述时序键标识对应的布隆过滤器块时,获取查找到的布隆过滤器块的偏移量和大小;基于上述查找到的布隆过滤器块的偏移量和大小从上述目标文件中读取上述查找到的布隆过滤器索引块,并利用上述查找到的布隆过滤器索引块查找上述时序键标识;当上述时序键标识不存在时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当上述时序键标识存在时,获取根索引块中记录的时序数据的第三时间范围、第二最小时序键标识和第二最大序列键标识;当未满足第三判定条件与第四判定条件中至少之一时,确定上述查询结果为空,其中,上述第三判定条件为上述时序键标识大于或等于上述第二最小时序键标识并且上述时序键标识小于或等于上述第二最大序列键标识,上述第二判定条件为上述第一时间范围与上述第三时间范围之间存在交集。
可选的,上述处理器还可以执行如下步骤的程序代码:当同时满足上述第三判定条件与上述第四判定条件时,获取目标索引块的类型、偏移量和大小。
可选的,上述处理器还可以执行如下步骤的程序代码:当上述目标索引块的类型为中间层级索引块时,基于上述中间层级索引块的偏移量和大小获取上述中间层级索引块中记录的时序数据的第四时间范围、第三最小时序键标识和第三最大序列键标识;当未满足第五判定条件与第六判定条件中至少之一时,确定上述查询结果为空,其中,上述第五判定条件为上述时序键标识大于或等于上述第三最小时序键标识并且上述时序键标识小于或等于上述第三最大序列键标识,上述第六判定条件为上述第一时间范围与上述第四时间范围之间存在交集。
可选的,上述处理器还可以执行如下步骤的程序代码:当上述目标索引块的类型为叶子索引块时,基于上述叶子索引块的偏移量和大小从上述目标文件中获取目标数据块,并基于上述目标数据块中数据块元数据所包含的序列索引进行二分查找;当未查找到与上述时序键标识对应的序列元数据时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当查找到与上述时序键标识对应的序列元数据时,获取上述查找到的序列元数据记录的第五时间范围;当上述第一时间范围与上述第五时间范围之间未存在交集时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当上述第一时间范围与上述第五时间范围之间存在交集时,基于上述查找到的序列元数据域索引进行二分查找;当未查找到与上述域名称对应的域元数据时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当查找到与上述域名称对应的域元数据时,获取上述查找到的域元数据记录的第六时间范围;当上述第一时间范围与上述第六时间范围之间未存在交集时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当上述第一时间范围与上述第六时间范围之间存在交集时,遍历上述查找到的域元数据中记录的切片索引,获取上述查找到的切片索引记录的第七时间范围;当上述第一时间范围与上述第七时间范围之间未存在交集时,确定上述查询结果为空。
可选的,上述处理器还可以执行如下步骤的程序代码:当上述第一时间范围与上述第七时间范围之间存在交集时,基于上述查找到的切片索引的偏移量和大小解码得到上述查找到的切片索引所包含的时序数据;利用上述第一时间范围对解码得到的时序数据进行过滤操作,得到上述查询结果。
采用本申请实施例,提供了一种时序数据的数据查询方案。通过对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
容易注意到的是,本申请实施例针对时序模型中的时序域值数据在文件上的存储,采用按块方式存储时序数据以及采用时序数据查询条件进行查询索引,支持时序压缩和块压缩的存储方式,并设置多级层次的索引结构,可以在时序压缩的基础上进一步提高数据的压缩率,并且支持在查询索引时提前感知文件不包含查询结果,避免无效查询进而提升查询效率。
由此,本申请实施例达到了降低时序数据的查询内存消耗及查询延迟的目的,从而实现了提升时序数据的查询效率的技术效果,进而解决了现有技术中存在针对时序数据的查询内存消耗及查询延迟高,查询效率低下的技术问题。
本领域普通技术人员可以理解,图21所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternetDevices,MID)、PAD等终端设备。图21其并不对上述电子装置的结构造成限定。例如,计算机终端还可包括比图21中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图21所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读非易失性存储介质中,非易失性存储介质可以包括:闪存盘、只读存储器(Read-OnlyMemory,ROM)、随机存取器(RandomAccessMemory,RAM)、磁盘或光盘等。
实施例5
根据本申请的实施例,还提供了一种非易失性存储介质的实施例。可选地,在本实施例中,上述非易失性存储介质可以用于保存上述实施例1所提供的数据查询方法所执行的程序代码。
可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:对时序数据进行预处理,并将处理后的上述时序数据存储至目标文件,其中,上述目标文件采用按块方式存储上述时序数据;获取上述时序数据查询条件,其中,上述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;基于上述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,上述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;返回上述查询结果。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:分别为上述时序健值部分中的每个时序健值分配对应的时序键标识;采用分配的时序键标识替换上述时序健值部分中对应的时序健值。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:将文件尾部块、文件元数据块、根索引块和布隆过滤器索引块加载至内存中。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:获取文件元数据块中记录的时序数据的第二时间范围、第一最小时序键标识和第一最大序列键标识;当未满足第一判定条件与第二判定条件中至少之一时,确定上述查询结果为空,其中,上述第一判定条件为上述时序键标识大于或等于上述第一最小时序键标识并且上述时序键标识小于或等于上述第一最大序列键标识,上述第二判定条件为上述第一时间范围与上述第二时间范围之间存在交集。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当同时满足上述第一判定条件与上述第二判定条件时,基于每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识进行二分查找;当未查找到上述时序键标识对应的布隆过滤器索引块时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当查找到上述时序键标识对应的布隆过滤器块时,获取查找到的布隆过滤器块的偏移量和大小;基于上述查找到的布隆过滤器块的偏移量和大小从上述目标文件中读取上述查找到的布隆过滤器索引块,并利用上述查找到的布隆过滤器索引块查找上述时序键标识;当上述时序键标识不存在时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当上述时序键标识存在时,获取根索引块中记录的时序数据的第三时间范围、第二最小时序键标识和第二最大序列键标识;当未满足第三判定条件与第四判定条件中至少之一时,确定上述查询结果为空,其中,上述第三判定条件为上述时序键标识大于或等于上述第二最小时序键标识并且上述时序键标识小于或等于上述第二最大序列键标识,上述第二判定条件为上述第一时间范围与上述第三时间范围之间存在交集。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当同时满足上述第三判定条件与上述第四判定条件时,获取目标索引块的类型、偏移量和大小。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当上述目标索引块的类型为中间层级索引块时,基于上述中间层级索引块的偏移量和大小获取上述中间层级索引块中记录的时序数据的第四时间范围、第三最小时序键标识和第三最大序列键标识;当未满足第五判定条件与第六判定条件中至少之一时,确定上述查询结果为空,其中,上述第五判定条件为上述时序键标识大于或等于上述第三最小时序键标识并且上述时序键标识小于或等于上述第三最大序列键标识,上述第六判定条件为上述第一时间范围与上述第四时间范围之间存在交集。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当上述目标索引块的类型为叶子索引块时,基于上述叶子索引块的偏移量和大小从上述目标文件中获取目标数据块,并基于上述目标数据块中数据块元数据所包含的序列索引进行二分查找;当未查找到与上述时序键标识对应的序列元数据时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当查找到与上述时序键标识对应的序列元数据时,获取上述查找到的序列元数据记录的第五时间范围;当上述第一时间范围与上述第五时间范围之间未存在交集时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当上述第一时间范围与上述第五时间范围之间存在交集时,基于上述查找到的序列元数据域索引进行二分查找;当未查找到与上述域名称对应的域元数据时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当查找到与上述域名称对应的域元数据时,获取上述查找到的域元数据记录的第六时间范围;当上述第一时间范围与上述第六时间范围之间未存在交集时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当上述第一时间范围与上述第六时间范围之间存在交集时,遍历上述查找到的域元数据中记录的切片索引,获取上述查找到的切片索引记录的第七时间范围;当上述第一时间范围与上述第七时间范围之间未存在交集时,确定上述查询结果为空。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:当上述第一时间范围与上述第七时间范围之间存在交集时,基于上述查找到的切片索引的偏移量和大小解码得到上述查找到的切片索引所包含的时序数据;利用上述第一时间范围对解码得到的时序数据进行过滤操作,得到上述查询结果。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取非易失性存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的非易失性存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (30)

1.一种数据查询方法,包括:
对时序数据进行预处理,并将处理后的所述时序数据存储至目标文件,其中,所述目标文件采用按块方式存储所述时序数据,所述目标文件包括多个块,所述多个块包括数据块;
获取所述时序数据查询条件,其中,所述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;
基于所述时序数据查询条件对目标文件执行查询操作,得到查询结果;
返回所述查询结果;
其中,对所述时序数据进行预处理包括:将所述时序数据划分为时序健值部分和时序域值部分;分别为所述时序健值部分中的每个时序健值分配对应的时序键标识,其中,所述时序键标识的长度固定;采用分配的时序键标识替换所述时序健值部分中对应的时序健值;
其中,所述数据块用于存储多个时序键标识关联的压缩后的时序数据,所述数据块的负载包括:多个切片,所述多个切片中的每个切片是按照每个切片对应的时序键标识所关联的域值在预设时间范围内产生的时序数据点的数据量大小或者时序数据点的数量进行切分后的最小单位,每个切片包括:多个时间戳以及所述多个时间戳中每个时间戳对应的域值,每个时间戳与对应的域值分别采用不同的压缩方式。
2.根据权利要求1所述的数据查询方法,其中,所述多个块中的每个块包括:块头部、负载以及校验和。
3.根据权利要求2所述的数据查询方法,其中,所述块头部包括:
第一字段,用于标识所述负载存储的数据类型;
第二字段,用于标识所述负载与所述校验和占用的存储空间;
第三字段,用于标识所述负载在压缩前占用的存储空间;
第四字段,用于标识前一个块在存储空间内的偏移量;
第五字段,用于标识所述校验和的计算方式;
第六字段,用于标识所述校验和的计算频率;
第七字段,用于标识所述块头部所述负载在压缩后共同占用的存储空间。
4.根据权利要求2所述的数据查询方法,其中,所述负载占用的存储空间由每个块实际写入的内容来确定。
5.根据权利要求2所述的数据查询方法,其中,所述校验和占用的存储空间由所述校验和的计算方式与所述负载占用的存储空间来确定。
6.根据权利要求2所述的数据查询方法,其中,所述多个块还包括:
数据索引块、布隆过滤器块、布隆过滤器索引块、文件元数据块、文件尾部块。
7.根据权利要求6所述的数据查询方法,其中,所述数据块的负载还包括:数据块元数据,所述数据块元数据包括:序列元数据、序列索引、序列数、最小序列键标识、最大序列键标识,其中,所述序列索引为所述序列元数据的索引,所述序列索引用于记录每个序列元数据在所述数据块中的偏移和大小,所述序列元数据在所述数据块中的位置按照序列键标识从小到大排序。
8.根据权利要求7所述的数据查询方法,其中,所述序列元数据包括:序列键标识、序列最小时间戳、序列最大时间戳、域元数据、域索引以及域个数,其中,所述域索引是所述域元数据的索引,用于记录所述域元数据在所述数据块中的偏移量,所述域元数据在所述序列元数据中的位置基于域名称按照字典序排序生成。
9.根据权利要求8所述的数据查询方法,其中,所述域元数据包括:域名、域值的数据类型、域最小时间戳、域最大时间戳、切片个数、切片索引,其中,所述切片索引用于记录每个切片的域最小时间戳、域最大时间戳和每个切片在所述数据块中的偏移量和大小。
10.根据权利要求6所述的数据查询方法,其中,所述数据索引块用于记录所述数据块在存储空间内的索引,所述数据索引块的负载包括:索引项个数、索引项,其中,所述索引项用于记录索引对应块的偏移量、大小、最小序列键标识、最大序列键标识、域最小时间戳、域最大时间戳。
11.根据权利要求10所述的数据查询方法,其中,采用树状多级层次方式设置所述数据索引块,所述数据索引块的类型包括:叶子索引块、中间层级索引块和根索引块,其中,所述叶子索引块用于索引所述数据块,所述中间层级索引块用于索引所述叶子索引块,所述根索引块用于索引所述中间层级索引块。
12.根据权利要求6所述的数据查询方法,其中,所述布隆过滤器索引块用于存储基于时序键标识生成的布隆过滤器,所述布隆过滤器索引块的负载包括:哈希函数类型、哈希函数个数、布隆过滤器位数组长度、布隆过滤器位数组。
13.根据权利要求6所述的数据查询方法,其中,所述布隆过滤器索引块用于索引多个布隆过滤器索引块在存储空间内的偏移和大小,以及每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识。
14.根据权利要求6所述的数据查询方法,其中,所述文件元数据块用于记录文件压缩标识、时序压缩使用的方法标识、文件的首次创建时间戳和更新时间戳、文件中包含的时序数据的第二时间范围以及文件中包含的时序数据的最小时序键标识和最大序列键标识。
15.根据权利要求6所述的数据查询方法,其中,所述文件尾部块用于记录根索引块的偏移量和大小、层次索引树的深度、布隆过滤器索引块的偏移和大小、文件元数据块的偏移和大小、数据块的个数、文件包含的序列个数、文件的版本号。
16.根据权利要求1所述的数据查询方法,其中,所述数据查询方法还包括:
将文件尾部块、文件元数据块、根索引块和布隆过滤器索引块加载至内存中。
17.根据权利要求1所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果包括:
获取文件元数据块中记录的时序数据的第二时间范围、第一最小时序键标识和第一最大序列键标识;
当未满足第一判定条件与第二判定条件中至少之一时,确定所述查询结果为空,其中,所述第一判定条件为所述时序键标识大于或等于所述第一最小时序键标识并且所述时序键标识小于或等于所述第一最大序列键标识,所述第二判定条件为所述第一时间范围与所述第二时间范围之间存在交集。
18.根据权利要求17所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当同时满足所述第一判定条件与所述第二判定条件时,基于每个布隆过滤器索引块所包含的最小序列键标识和最大序列键标识进行二分查找;
当未查找到所述时序键标识对应的布隆过滤器索引块时,确定所述查询结果为空。
19.根据权利要求18所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当查找到所述时序键标识对应的布隆过滤器块时,获取查找到的布隆过滤器块的偏移量和大小;
基于所述查找到的布隆过滤器块的偏移量和大小从所述目标文件中读取所述查找到的布隆过滤器索引块,并利用所述查找到的布隆过滤器索引块查找所述时序键标识;
当所述时序键标识不存在时,确定所述查询结果为空。
20.根据权利要求19所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当所述时序键标识存在时,获取根索引块中记录的时序数据的第三时间范围、第二最小时序键标识和第二最大序列键标识;
当未满足第三判定条件与第四判定条件中至少之一时,确定所述查询结果为空,其中,所述第三判定条件为所述时序键标识大于或等于所述第二最小时序键标识并且所述时序键标识小于或等于所述第二最大序列键标识,所述第二判定条件为所述第一时间范围与所述第三时间范围之间存在交集。
21.根据权利要求20所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当同时满足所述第三判定条件与所述第四判定条件时,获取目标索引块的类型、偏移量和大小。
22.根据权利要求21所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当所述目标索引块的类型为中间层级索引块时,基于所述中间层级索引块的偏移量和大小获取所述中间层级索引块中记录的时序数据的第四时间范围、第三最小时序键标识和第三最大序列键标识;
当未满足第五判定条件与第六判定条件中至少之一时,确定所述查询结果为空,其中,所述第五判定条件为所述时序键标识大于或等于所述第三最小时序键标识并且所述时序键标识小于或等于所述第三最大序列键标识,所述第六判定条件为所述第一时间范围与所述第四时间范围之间存在交集。
23.根据权利要求21所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当所述目标索引块的类型为叶子索引块时,基于所述叶子索引块的偏移量和大小从所述目标文件中获取目标数据块,并基于所述目标数据块中数据块元数据所包含的序列索引进行二分查找;
当未查找到与所述时序键标识对应的序列元数据时,确定所述查询结果为空。
24.根据权利要求23所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当查找到与所述时序键标识对应的序列元数据时,获取所述查找到的序列元数据记录的第五时间范围;
当所述第一时间范围与所述第五时间范围之间未存在交集时,确定所述查询结果为空。
25.根据权利要求24所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当所述第一时间范围与所述第五时间范围之间存在交集时,基于所述查找到的序列元数据域索引进行二分查找;
当未查找到与所述域名称对应的域元数据时,确定所述查询结果为空。
26.根据权利要求25所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当查找到与所述域名称对应的域元数据时,获取所述查找到的域元数据记录的第六时间范围;
当所述第一时间范围与所述第六时间范围之间未存在交集时,确定所述查询结果为空。
27.根据权利要求26所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当所述第一时间范围与所述第六时间范围之间存在交集时,遍历所述查找到的域元数据中记录的切片索引,获取所述查找到的切片索引记录的第七时间范围;
当所述第一时间范围与所述第七时间范围之间未存在交集时,确定所述查询结果为空。
28.根据权利要求27所述的数据查询方法,其中,基于所述时序数据查询条件对所述目标文件执行查询操作,得到所述查询结果还包括:
当所述第一时间范围与所述第七时间范围之间存在交集时,基于所述查找到的切片索引的偏移量和大小解码得到所述查找到的切片索引所包含的时序数据;
利用所述第一时间范围对解码得到的时序数据进行过滤操作,得到所述查询结果。
29.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至28中任意一项所述的数据查询方法。
30.一种电子设备,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
对时序数据进行预处理,并将处理后的所述时序数据存储至目标文件,其中,所述目标文件采用按块方式存储所述时序数据,所述目标文件包括多个块,所述多个块包括数据块;
获取所述时序数据查询条件,其中,所述时序数据查询条件包括:时序键标识、域名称以及第一时间范围;
基于所述时序数据查询条件对目标文件执行查询操作,得到查询结果,其中,所述目标文件采用按块方式存储时序数据并设置有多级层次索引结构;
返回所述查询结果;
其中,对所述时序数据进行预处理包括:将所述时序数据划分为时序健值部分和时序域值部分;分别为所述时序健值部分中的每个时序健值分配对应的时序键标识,其中,所述时序键标识的长度固定;采用分配的时序键标识替换所述时序健值部分中对应的时序健值;
其中,所述数据块用于存储多个时序键标识关联的压缩后的时序数据,所述数据块的负载包括:多个切片,所述多个切片中的每个切片是按照每个切片对应的时序键标识所关联的域值在预设时间范围内产生的时序数据点的数据量大小或者时序数据点的数量进行切分后的最小单位,每个切片包括:多个时间戳以及所述多个时间戳中每个时间戳对应的域值,每个时间戳与对应的域值分别采用不同的压缩方式。
CN202110130762.3A 2021-01-29 2021-01-29 数据查询方法、非易失性存储介质及电子设备 Active CN113312313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110130762.3A CN113312313B (zh) 2021-01-29 2021-01-29 数据查询方法、非易失性存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110130762.3A CN113312313B (zh) 2021-01-29 2021-01-29 数据查询方法、非易失性存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN113312313A CN113312313A (zh) 2021-08-27
CN113312313B true CN113312313B (zh) 2023-09-29

Family

ID=77370655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110130762.3A Active CN113312313B (zh) 2021-01-29 2021-01-29 数据查询方法、非易失性存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN113312313B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360551B (zh) * 2021-08-11 2021-11-16 南京赛宁信息技术有限公司 一种靶场中时序数据的存储与快速统计方法及系统
CN113934725A (zh) * 2021-09-02 2022-01-14 远景智能国际私人投资有限公司 数据获取方法、装置及物联网
CN113987233B (zh) * 2021-12-30 2022-03-29 成都国星宇航科技有限公司 瓦片请求方法、装置、及电子设备
CN115934792A (zh) * 2022-11-29 2023-04-07 沈阳尚源智慧科技有限公司 一种数组型时序数据压缩与跨维度查询方法
CN117573703B (zh) * 2024-01-16 2024-04-09 科来网络技术股份有限公司 时序数据的通用检索方法、系统、设备及存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023991A (zh) * 2009-09-21 2011-04-20 中兴通讯股份有限公司 在终端上更新索引并基于其对搜索结果排序的方法及装置
CN105408857A (zh) * 2013-07-29 2016-03-16 亚马逊科技公司 通过针对选择性交织数据位生成用于关系数据库的多列索引
CN106874348A (zh) * 2016-12-26 2017-06-20 贵州白山云科技有限公司 文件存储和索引方法、装置及读取文件的方法
CN108062378A (zh) * 2017-12-12 2018-05-22 清华大学 一种列式存储下多时间序列的连接查询方法及系统
CN108255958A (zh) * 2017-12-21 2018-07-06 百度在线网络技术(北京)有限公司 数据查询方法、装置和存储介质
CN109739811A (zh) * 2018-12-11 2019-05-10 河南辉煌科技股份有限公司 支持双维度查询海量监测数据的存储方法
CN109902088A (zh) * 2019-02-13 2019-06-18 北京航空航天大学 一种面向流式时序数据的数据索引方法
CN110018983A (zh) * 2017-09-27 2019-07-16 华为技术有限公司 一种元数据查询方法及装置
CN110619000A (zh) * 2019-09-25 2019-12-27 网易(杭州)网络有限公司 时序数据的查询方法、装置、存储介质及电子设备
US10659076B1 (en) * 2019-04-30 2020-05-19 EMC IP Holding Company LLC Reducing the amount of data stored in a sequence of data blocks by combining deduplication and compression
CN111291235A (zh) * 2020-05-13 2020-06-16 成都四方伟业软件股份有限公司 一种基于时序数据库的元数据存储方法及装置
CN111813840A (zh) * 2020-05-29 2020-10-23 阿里巴巴集团控股有限公司 一种数据处理方法、设备及存储介质
CN111813782A (zh) * 2020-07-14 2020-10-23 杭州海康威视数字技术股份有限公司 一种时序数据的存储方法、装置
CN111966695A (zh) * 2020-10-23 2020-11-20 山东鼎滏软件科技有限公司 一种用于油气田生产的时序数据库系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248681B2 (en) * 2014-07-08 2019-04-02 Sap Se Faster access for compressed time series data: the block index
US10067944B2 (en) * 2017-01-09 2018-09-04 Splunk, Inc. Cache aware searching of buckets in remote storage

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023991A (zh) * 2009-09-21 2011-04-20 中兴通讯股份有限公司 在终端上更新索引并基于其对搜索结果排序的方法及装置
CN105408857A (zh) * 2013-07-29 2016-03-16 亚马逊科技公司 通过针对选择性交织数据位生成用于关系数据库的多列索引
CN106874348A (zh) * 2016-12-26 2017-06-20 贵州白山云科技有限公司 文件存储和索引方法、装置及读取文件的方法
CN110018983A (zh) * 2017-09-27 2019-07-16 华为技术有限公司 一种元数据查询方法及装置
CN108062378A (zh) * 2017-12-12 2018-05-22 清华大学 一种列式存储下多时间序列的连接查询方法及系统
CN108255958A (zh) * 2017-12-21 2018-07-06 百度在线网络技术(北京)有限公司 数据查询方法、装置和存储介质
CN109739811A (zh) * 2018-12-11 2019-05-10 河南辉煌科技股份有限公司 支持双维度查询海量监测数据的存储方法
CN109902088A (zh) * 2019-02-13 2019-06-18 北京航空航天大学 一种面向流式时序数据的数据索引方法
US10659076B1 (en) * 2019-04-30 2020-05-19 EMC IP Holding Company LLC Reducing the amount of data stored in a sequence of data blocks by combining deduplication and compression
CN110619000A (zh) * 2019-09-25 2019-12-27 网易(杭州)网络有限公司 时序数据的查询方法、装置、存储介质及电子设备
CN111291235A (zh) * 2020-05-13 2020-06-16 成都四方伟业软件股份有限公司 一种基于时序数据库的元数据存储方法及装置
CN111813840A (zh) * 2020-05-29 2020-10-23 阿里巴巴集团控股有限公司 一种数据处理方法、设备及存储介质
CN111813782A (zh) * 2020-07-14 2020-10-23 杭州海康威视数字技术股份有限公司 一种时序数据的存储方法、装置
CN111966695A (zh) * 2020-10-23 2020-11-20 山东鼎滏软件科技有限公司 一种用于油气田生产的时序数据库系统

Also Published As

Publication number Publication date
CN113312313A (zh) 2021-08-27

Similar Documents

Publication Publication Date Title
CN113312313B (zh) 数据查询方法、非易失性存储介质及电子设备
WO2021091489A1 (en) Method and apparatus for storing time series data, and server and storage medium thereof
CN110347651B (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN104462141A (zh) 一种数据存储与查询的方法、系统及存储引擎装置
CN111475105A (zh) 监控数据存储方法、设备、服务器及存储介质
CN117056130A (zh) 一种虚拟磁带库备份系统及备份方法
CN113297339B (zh) 数据存储的方法、设备、存储介质及产品
CN108197050B (zh) 一种设备识别方法、装置及系统
CN110288666B (zh) 一种数据压缩方法及装置
CN115380267A (zh) 数据压缩方法及装置、数据压缩设备和可读存储介质
CN103020264B (zh) 多子集实体数据的存储显示方法及装置
CN108376054B (zh) 一种对标识数据进行索引的处理方法及装置
CN116049153A (zh) 时序数据处理方法、装置、电子设备及存储介质
CN110968255A (zh) 数据处理方法、装置、存储介质以及处理器
CN111625502B (zh) 数据读取方法及装置、存储介质、电子装置
CN104636432A (zh) 一种日志文件压缩和解压的方法及装置
CN115292280A (zh) 一种跨区域的数据调度方法、装置、设备及存储介质
CN115729893A (zh) 数据存取方法、装置、非易失性存储介质及电子装置
CN112419058A (zh) 数据管理方法和装置、存储介质及电子设备
CN113553215A (zh) 一种基于环境信息的纠删码数据恢复优化方法及装置
CN111046249A (zh) 一种数据存储、定位、应用方法及相关装置
CN103164431B (zh) 关系型数据库的数据存储方法和存储系统
CN114556283A (zh) 一种数据写入、一致性检查和读取的方法及装置
CN109902067A (zh) 文件处理方法、装置、存储介质及计算机设备
CN116909816B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40059795

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant