CN113868267A - 注入时序数据的方法、查询时序数据的方法及数据库系统 - Google Patents
注入时序数据的方法、查询时序数据的方法及数据库系统 Download PDFInfo
- Publication number
- CN113868267A CN113868267A CN202010617592.7A CN202010617592A CN113868267A CN 113868267 A CN113868267 A CN 113868267A CN 202010617592 A CN202010617592 A CN 202010617592A CN 113868267 A CN113868267 A CN 113868267A
- Authority
- CN
- China
- Prior art keywords
- data
- time
- row
- parameter
- cus
- 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
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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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
-
- 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/2453—Query optimisation
-
- 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/2474—Sequence data queries, e.g. querying versioned data
-
- 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/2477—Temporal data 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Abstract
本申请公开了一种注入时序数据的方法,包括:接收时序数据,该时序数据包括用于标识产生时序数据的数据源的至少一个参数,以及表示数据源的至少一个属性的指标和时间戳,时间戳指示指标产生的时间;将第一参数组以行存储格式存储,第一参数组包括用于标识产生时序数据的数据源的至少一个参数;将第二参数组以列存储格式存储,第二参数组包括表示数据源的至少一个属性的指标和时间戳。本申请实施例采用行列混合存储的方式注入时序数据,既提高了数据库的存储性能(如:存储量,吞吐量),又提高了时序数据查询的效率。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种注入时序数据的方法、查询时序数据的方法、装置及数据库系统。
背景技术
随着各种产业的发展,对数据库的需求越来越大。目前数据库的总类也比较多,如:关系型数据库和时序数据库,其中,对时序数据库的需求上升尤为明显。
时序数据库中存储的数据通常称为时序数据。时序数据通常是按行存储的,一个设备或一个事件在一个时间戳所指示时间的一系列性能指标会存储在一行中。在查询时序数据的一些性能指标时只需要按顺序从每条时序数据的起始位置逐个查询,直到找到用户需要的性能指标的值即可。
当前这种按行注入时序数据的方式的存储效率低,而且按行查询不仅查询效率低下,而且还浪费数据库的性能。
发明内容
本申请实施例提供一种注入时序数据的方法以及查询时序数据的方法,用于提高数据库系统的存储性能(如:存储量,吞吐量)和查询效率。本申请实施例还提供了相应的装置及数据库系统。
本申请第一方面提供一种注入时序数据的方法,包括:接收时序数据,时序数据包括用于标识产生时序数据的数据源的至少一个参数,以及表示数据源的至少一个属性的指标和时间戳,时间戳指示指标产生的时间;将第一参数组以行存储格式存储,第一参数组包括用于标识产生时序数据的数据源的至少一个参数;将第二参数组以列存储格式存储,第二参数组包括表示数据源的至少一个属性的指标和时间戳。
该第一方面中所提供的方法应用于数据库系统,具体应用于时序数据库。时序数据库存储时序数据,时序数据都带有时间标签。通常一条时序数据由数据源(tags),指标(field)和时间戳(timestamp)组成。本申请中,指标指的是数据源的属性在该时间戳所指示时间的取值。因为指标会随着时间发生变化,但数据源不会随时间发生变化,所以针对一个数据源会随着时间的变化得到很多条时序数据,该数据源也可以称为一条“时间线(timeseries)”。数据源指的是产生时序数据的源头,第一参数组中的参数可以包括设备的名称、设备的标识、以及设备的互联网协议(Internet protocol,IP)地址等。本申请中,“至少一个”包括“一个”或“多个”,“多个”包括“两个”。“多个”也可以描述为“至少两个”。指标所描述的数据源的属性可以是输出功率,风速、吞吐量、频率、输入/输出(input/output,I/O)以及空闲率等,具体指标所描述的数据源的属性与设备的类型相关。指标与时间戳是相互关联的,不同时间戳所对应的指标通常不同。该第一方面中,将不随时间变化的用于标识产生时序数据的数据源的至少一个参数以行存储的格式存储,将会时间变化的属性的指标和对应的时间戳以列存储的格式存储。因为用于标识产生时序数据的数据源的至少一个参数不随时间变化,所以针对同一数据源的时序数据不需要反复存储至少一个参数,将至少一个参数进行行存储,不仅有利于节省存储空间,还能提高数据库系统的存储性能,另外,因为在查询时至少一个参数都是需要读取的,通过行存储的方式存储至少一个参数,不仅不浪费查询资源,还有利于在查询时快速定位到至少一个参数,列存储有利于快速查找到要查询的相应属性的指标,所以本申请方案采用行列混合存储的方式注入时序数据,既提高了数据库的存储性能,又提高了时序数据查询的效率。
在第一方面的一种可能的实现方式中,上述步骤:从时序数据中确定出第一参数组和第二参数组,包括:根据第一参数组确定行标识,并根据行标识、至少一个指标和时间戳生成数据行;对应地,上述步骤:将第二参数组以列存储格式存储,包括:将数据行包含的至少一个指标存储到至少一个列存储单元CU中,至少一个指标与至少一个CU一一对应,且至少一个CU中的每个CU都包含行标识;将时间戳存储到一个CU中,存储时间戳的CU包含行标识。
该种可能的实现方式中,因为第一参数组以行存储格式存储,第二参数组以列存储格式存储,一个时序数据的两个参数组会存储到不同的位置,为了实现两个参数组的对应查询,需要通过行标识(tagID)来关联这两个参数组。行标识是通过第一参数组来确定的,针对同一数据源的所有时序数据的第一参数组都是相同的,所以同一数据源的所有时序数据的行标识也是相同的。行标识确定后,针对要列存储的至少一个指标和时间戳,可以加入行标识形成新的数据行(data row)。针对数据行,在列存储时,一个指标会存储到一个列存储单元(compression unit,CU)中,时间戳会放在一个独立的CU中,存储指标的每个CU和存储时间戳的CU中都包含该行标识。一个CU中只存储一个属性的指标或者只存储时间戳,但一个CU中可以存储多个数据行中同一属性的在不同时间戳所指示时间的指标。如:一个CU中存储了风力发电机1的60行风速的值,每行风速的值对应一个时间戳。由此可知,通过行标识可以确保时序数据行列混合存储后,也可以查找到行存储中的第一参数组在列存储中所对应的数据,确保了数据查询的准确度。
在第一方面的一种可能的实现方式中,上述步骤:将第一参数组以行存储格式存储,包括:将第一参数组和行标识以行存储格式存储。
该种可能的时序方式中,在行存储中也会存储行标识,这样可以建立行存储和列存储的关联,这样在查询时序数据时,可以根据第一参数组确定出对应的行标识。
在第一方面的一种可能的实现方式中,上述步骤:根据第一参数组确定行标识,包括:确定第一参数组中的至少一个参数对应的索引值;查询全局缓存以得到索引值对应的行标识,全局缓存存储有索引值与行标识的对应关系。
该种可能的实现方式中,索引值是通过至少一个参数得到的,得到索引值的方式有多种,如:第一参数组中有一个参数时,可以将该参数作为索引值,也可以在该参数基础上做变换,如再添加一些数值或符号等得到索引值。第一参数组中有多个参数时,可以将这些参数拼接在一起,从而得到该索引值,如:包括设备的名称和设备的IP地址,那么可以将设备的名称和设备的IP地址拼接在一起,形成索引值(key)。当然,不限于这种方式,也可以时根据第一参数组中的部分参数来得到索引值,只要该索引值在全局中能唯一标识一个数据源即可,本申请中不限定具体得到方式。全局缓存指的是数据库系统的缓存。若全局缓存中包括该索引值,则表示之前已存储过该数据源的时序数据,对应该数据源的行标识已经生成,直接根据索引值与行标识的对应关系就可以确定该行标识,进而对该时序数据执行行列混合存储即可。该种可能的实现方式,通过全局缓存来维护行标识与索引值的对应关系,有利于提高注入时序数据的效率。
在第一方面的一种可能的实现方式中,上述步骤:根据第一参数组确定行标识,包括:确定第一参数组中的多个参数对应的索引值;为索引值分配行标识,在全局缓存中存储索引值和行标识的对应关系。
该种可能的实现方式中,若全局缓存中未存储该索引值,则表示之前未存储过该数据源的数据,需要分配行标识,并存储该索引值与行标识的对应关系,以便于后续再有来自该数据源的时序数据时使用。该种可能的实现方式,通过全局缓存来维护行标识与索引值的对应关系,有利于提高注入时序数据的效率。
在第一方面的一种可能的实现方式中,存储至少一个指标的至少一个CU,以及存储时间戳的CU位于第一时间范围对应的分区,时间戳指示的时间位于第一时间范围内。
该种可能的实现方式中,第一时间范围可以是一个月、一周、一天、多天、几个小时或者几十分钟,该第一时间范围可以预先配置好的。对于第一时间范围的具体取值本申请中不作限定。分区(partition)指的是该第一时间范围内的数据集合。通过数据行中的时间戳可以确定出该时序数据适合存储的具体分区,这样方便后续查询时可以通过查询时间快速的锁定分区,进而提高查询的效率。
在第一方面的一种可能的实现方式中,分区包括多个数据集,其中,每个数据集对应不完全重叠的时间范围,至少一个CU以及存储时间戳的CU位于同一个数据集中,时间戳指示的时间位于同一个数据集对应的时间范围内。
该种可能的实现方式中,在同一个分区中,还可以包括多个数据集(part),每个数据集都对应一个时间范围,该时间范围可以通过该数据集中的最小时间和最大时间来表示。数据集的时间范围小于分区的第一时间范围。这样,有利于更进一步提高查询行标识所对应的数据的查找效率。
在第一方面的一种可能的实现方式中,该方法还包括:合并多个数据集中的至少两个数据集,以得到一个合并数据集,合并数据集对应的第二时间范围包含至少两个数据集对应的时间范围,第二时间范围包含于第一时间范围;将合并数据集写入数据存储器中。
该种可能的实现方式中,数据存储器不同于缓存,通常指的是磁盘。数据集可以用小part表示,合并(merge)至少两个数据集可以理解为将小part合并成大part,这样,在写入数据存储器时,只需要一次性写入较大的合并数据集,不需要将小数据频繁写入,这样可以降低时序数据的注入开销,提高时序数据的注入性能。另外,第二时间范围通常小于第一时间范围,通过时间范围缩小的方式来缩小查找范围,还可以进一步提高查询速度。
在第一方面的一种可能的实现方式中,该方法还包括:对合并数据集中的多个CU中的数据进行压缩,以及对多个CU进行压缩,以得到压缩后的合并数据集;上述步骤:将合并数据集写入数据存储器中,包括:将压缩后的合并数据集写入数据存储器中。
该种可能的实现方式中,将合并数据集写入数据存储器也可以称为“落盘”。在数据落盘前,不仅对CU中的数据进行压缩,对CU也进行压缩,通过两重压缩的方式,可以提升压缩比率,进一步提高数据库系统的吞吐量。
本申请第二方面提供一种查询时序数据的方法,包括:接收针对时序数据的查询,查询包括标识产生时序数据的数据源的至少一个参数,以及至少一个列标识,至少一个列标识指示至少一个目标列,至少一个目标列中包含表示数据源的至少一个属性的指标;确定至少一个参数对应的行标识;根据行标识确定多个CU,多个CU中的每个CU都包含行标识;根据至少一个列标识,从多个CU中确定至少一个目标CU,每个目标CU对应一个目标列;根据至少一个目标CU生成查询结果。
该第二方面所提供的方法应用于数据库系统,具体应用于时序数据库。该第二方面所涉及到的一些特征可以参阅第一方面的相应介绍进行理解,此处不再重复赘述。需要说明的是,至少一个列标识、至少一个目标列、至少一个属性的指标以及至少一个目标CU都是一一对应的。该第二方面中,通过标识产生时序数据的数据源的至少一个参数可以确定对应的行标识,进而在列存储中查找到与该行标识对应的多个CU,再根据列标识,从多个CU中确定出目标CU。由此可见,通过标识产生时序数据的数据源的至少一个参数和列标识就可以快速的查询到列标识所对应列的目标CU,生成查询结果返回给客户端,提高了时序数据查询的效率。
在第二方面的一种可能的实现方式中,上述步骤:根据至少一个目标CU生成查询结果,包括:根据至少一个目标CU中的至少一个属性的指标和至少一个参数生成查询结果。
该种可能的实现方式中,可以将至少目标CU中的至少一个属性的指标和至少一个参数按照时序数据注入时结构组成相应的时序数据,然后返回给客户端。
在第二方面的一种可能的实现方式中,查询还包括查询时间,该方法还包括:
确定包含查询时间的第一时间范围对应的目标分区,目标分区包括多个合并数据集;从多个合并数据集中确定第一合并数据集,第一合并数据集对应的第二时间范围包含查询时间,第一合并数据集包括多个CU;从第一合并数据集包括的多个CU中确定多个第一CU,第一CU对应的第三时间范围包含查询时间,第一时间范围包含第二时间范围,第二时间范围包含第三时间范围;对应地,上述步骤:根据行标识确定多个CU,包括:从多个第一CU中确定与行标识对应的多个CU。
该种可能的实现方式中,第一时间范围可以是预先配置好的,第二时间范围和第三时间范围都可以通过对应合并数据集或CU中的时间最小值和时间最大值来表示。通过查询时间确定对应的partition,进一步再将查询范围缩小到合并数据集,再进一步将查询范围缩小到CU,通过三个层级缩小查询范围,不需要从大量的数据中查找目标CU,提高了数据查询的效率。
在第二方面的一种可能的实现方式中,上述步骤:确定至少一个参数对应的行标识,包括:确定至少一个参数对应的索引值;查询全局缓存以得到索引值对应的行标识,全局缓存存储有索引值与行标识的对应关系。
一种可能的实现方式中,也可以根据行存表中至少一个参数与行标识的对应关系来确定行标识。
该种可能的实现方式中,可以通过索引值与行标识的对应关系来确定行标识,进而进行数据查询,可以提高数据查询的效率。
本申请第三方面提供一种数据库系统,包括:协调节点和与协调节点通信连接的数据节点,协调节点用于接收来自于客户端的时序数据;数据节点用于:从协调节点获取时序数据(例如:从协调节点接收时序数据),时序数据包括时序数据,时序数据包括用于标识产生时序数据的数据源的至少一个参数,以及表示数据源的至少一个属性的指标和时间戳,时间戳指示指标产生的时间;将第一参数组以行存储格式存储,第一参数组包括用于标识产生时序数据的数据源的至少一个参数;将第二参数组以列存储格式存储,第二参数组包括表示数据源的至少一个属性的指标和时间戳。
在第三方面的一种可能的实现方式中,数据节点还用于:根据第一参数组确定行标识,并根据行标识、至少一个指标和时间戳生成数据行;将数据行包含的至少一个指标存储到至少一个列存储单元CU中,至少一个指标与至少一个CU一一对应,且至少一个CU中的每个CU都包含行标识;将时间戳存储到一个CU中,存储时间戳的CU包含行标识。
在第三方面的一种可能的实现方式中,数据节点用于:将第一参数组和行标识以行存储格式存储。
在第三方面的一种可能的实现方式中,数据节点用于:确定第一参数组中的至少一个参数对应的索引值;查询全局缓存以得到索引值对应的行标识,全局缓存存储有索引值与行标识的对应关系。
在第三方面的一种可能的实现方式中,数据节点用于:确定第一参数组中的多个参数对应的索引值;为索引值分配行标识,在全局缓存中存储索引值和行标识的对应关系。
在第三方面的一种可能的实现方式中,存储至少一个指标的至少一个CU,以及存储时间戳的CU位于第一时间范围对应的分区,时间戳指示的时间位于第一时间范围内。
在第三方面的一种可能的实现方式中,分区包括多个数据集,其中,每个数据集对应不完全重叠的时间范围,至少一个CU以及存储时间戳的CU位于同一个数据集中,时间戳指示的时间位于同一个数据集对应的时间范围内。
在第三方面的一种可能的实现方式中,数据节点还用于:合并多个数据集中的至少两个数据集,以得到一个合并数据集,合并数据集对应的第二时间范围包含至少两个数据集对应的时间范围,第二时间范围包含于第一时间范围;将合并数据集写入数据存储器中。
在第三方面的一种可能的实现方式中,数据节点还用于:对合并数据集中的多个CU中的数据进行压缩,以及对多个CU进行压缩,以得到压缩后的合并数据集;将压缩后的合并数据集写入数据存储器中。
该第三方面以及第三方面任一种可能的实现方式都可以参阅第一方面以及第一方面的相应可能实现方式进行理解。
本申请第四方面提供一种数据库系统,包括:协调节点和与协调节点通信连接的数据节点,协调节点用于接收来自于客户端的针对时序数据的查询;数据节点用于:从协调节点获取针对时序数据的查询,该查询包括标识产生时序数据的数据源的至少一个参数,以及至少一个列标识,至少一个列标识指示至少一个目标列,至少一个目标列中包含表示数据源的至少一个属性的指标;确定至少一个参数对应的行标识;根据行标识确定多个CU,多个CU中的每个CU都包含行标识;根据至少一个列标识,从多个CU中确定至少一个目标CU,每个目标CU对应一个目标列;根据至少一个目标CU生成查询结果。
在第四方面的一种可能的实现方式中,数据节点用于:根据至少一个目标CU中的至少一个属性的指标和至少一个参数生成查询结果。
在第四方面的一种可能的实现方式中,数据节点还用于:确定包含查询时间的第一时间范围对应的目标分区,目标分区包括多个合并数据集;从多个合并数据集中确定第一合并数据集,第一合并数据集对应的第二时间范围包含查询时间,第一合并数据集包括多个CU;从第一合并数据集包括的多个CU中确定多个第一CU,第一CU对应的第三时间范围包含查询时间,第一时间范围包含第二时间范围,第二时间范围包含第三时间范围;从多个第一CU中确定与行标识对应的多个CU。
在第四方面的一种可能的实现方式中,数据节点用于:确定至少一个参数对应的索引值;查询全局缓存以得到索引值对应的行标识,全局缓存存储有索引值与行标识的对应关系。
该第四方面以及第四方面任一种可能的实现方式都可以参阅第二方面以及第二方面的相应可能实现方式进行理解。
本申请第五方面,提供了一种注入时序数据的装置,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块或单元,如:接收单元、确定单元和处理单元,需要说明的是,确定单元和处理单元可以通过一个处理单元来实现。
本申请第六方面,提供了一种查询时序数据的装置,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块或单元,如:接收单元、第一处理单元、第二处理单元和第三处理单元,需要说明的是,这三个处理单元所执行的功能也可以通过一个或两个处理单元来实现。
本申请第七方面,提供了一种注入时序数据的装置。该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
本申请第八方面,提供了一种查询时序数据的装置。该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
本申请第九方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第一方面,及其各种实现方式中的任一种注入时序数据的方法。
本申请第十方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第二方面,及其各种实现方式中的任一种查询时序数据的方法。
本申请第十一方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第一方面或者第一方面的任一种可能的实现方式所提供的一种注入时序数据的方法。
本申请第十二方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第二方面或者第二方面的任一种可能的实现方式所提供的一种查询时序数据的方法。
本申请第十三方面提供了一种芯片系统,该芯片系统包括处理器,用于支持注入时序数据的装置实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于保存注入时序数据的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请第十四方面提供了一种芯片系统,该芯片系统包括处理器,用于支持查询时序数据的装置实现上述第二方面或第二方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于保存查询时序数据的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
可以理解地,上述提供的任一种注入时序数据的装置、查询时序数据的装置、计算机存储介质或者计算机程序产品均用于执行上文所提供的对应的注入时序数据的方法、查询时序数据的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1A是数据库系统的一架构示意图;
图1B是本申请实施例提供的分布式数据库系统的一架构示意图;
图1C是本申请实施例提供的分布式数据库系统的另一架构示意图;
图2是本申请实施例提供的分布式数据库系统的另一架构示意图;
图3是本申请实施例提供的注入时序数据的方法的一实施例示意图;
图4是本申请实施例提供的注入时序数据的方法的另一实施例示意图;
图5A是本申请实施例提供的注入时序数据的方法的另一实施例示意图;
图5B是本申请实施例提供的列存储单元的一示例示意图;
图5C是本申请实施例提供的一场景示例示意图;
图5D是本申请实施例提供的另一场景示例示意图;
图5E是本申请实施例提供的另一场景示例示意图;
图5F是本申请实施例提供的另一场景示例示意图;
图6是本申请实施例提供的另一场景示例示意图;
图7A是本申请实施例提供的一效果对比图;
图7B是本申请实施例提供的另一效果对比图;
图8是本申请实施例提供的查询时序数据的方法的一实施例示意图;
图9A是本申请实施例提供的另一场景示意图;
图9B是本申请实施例提供的另一场景示意图;
图9C是本申请实施例提供的另一效果示意图;
图10是本申请实施例提供的注入时序数据的装置的一实施例示意图;
图11是本申请实施例提供的查询时序数据的装置的一实施例示意图;
图12是本申请实施例提供的计算机设备的一结构示意图;
图13是本申请实施例提供的数据库系统的另一结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种注入时序数据的方法以及查询时序数据的方法,用于提高数据库系统的存储性能(如:存储量,吞吐量)和查询效率。本申请实施例还提供了相应的装置及数据库系统。以下分别进行详细说明。
本申请实施例提供的方法可应用于数据库系统(database system)中。图1A示出了数据库系统的一种典型的逻辑架构,根据图1A,数据库系统100包括数据库110和数据库管理系统(database management system,DBMS)130。
其中,数据库110是存储在数据存储器(data storage)120中的有组织的数据集合,即按照特定的数据模型组织、存储和使用的相关联的数据集合。根据组织数据所使用的数据模型的不同,数据可分为多种类型,比如关系型数据(relational data)、图(graph)数据、时序(time series)数据等。关系型数据是使用关系模型建模的数据,通常表示为表,表中的行表示一个对象或实体的相关值的集合。图数据,简称为“图”,用于表示对象或实体之间的关系,比如社交关系。时间序列数据,简称时序数据,是按时间顺序记录和索引的数据列,用于描述一个对象在时间维度上的状态变化信息。
数据库管理系统130是数据库系统的核心,是用于组织、存储以及维护数据的系统软件。客户端200可以通过数据库管理系统130访问数据库110,数据库管理员也通过数据库管理系统进行数据库的维护工作。数据库管理系统130提供多种功能,供客户端200建立,修改和查询数据库,其中,客户端200可以为应用程序,或者用户设备。数据库管理系统130所提供的功能可以包括但不限于以下几项:(1)数据定义功能,数据库管理系统130提供数据定义语言(data definition language,DDL)来定义数据库110的结构,DDL用于刻画数据库框架,并可以被保存在数据字典中;(2)数据存取功能,数据库管理系统130提供数据操纵语言(data manipulation language,DML),实现对数据库110的基本存取操作,比如检索、插入、修改和删除;(3)数据库运行管理功能,数据库管理系统130提供数据控制功能对数据库110运行进行有效地控制和管理,以确保数据正确有效;(4)数据库的建立和维护功能,包括数据库初始数据的载入,数据库的转储、恢复、重组织,系统性能监视、分析等功能;(5)数据库的传输,数据库管理系统提供处理数据的传输,以实现客户端与数据库管理系统之间的通信,通常与操作系统协调完成。
数据存储器120包括但不限于固态硬盘(solid state drives,SSD)、磁盘阵列、云存储或其他类型的非瞬态计算机可读存储介质。所属领域的技术人员可以理解一个数据库系统可能包括比图1A中所示的部件更少或更多的组件,或者包括与图1A所示组件不同的组件,图1A仅仅示出了与本发明实施例所公开的实现方式更加相关的组件。
本申请实施例提供的数据库系统可以为分布式数据库系统(distributeddatabasesystem,DDBS)。可以是大规模并行处理(massively parallel processor,MPP)架构的数据库系统。该MPP结构的数据库系统也是DDBS。下面结合图1B和图1C介绍DDBS。
图1B为采用共享磁盘(shared-storage)架构的分布式数据库系统示意图,包括一个或多个协调节点(coordinator node,CN),多个数据节点(datanode,DN),当然,该DDBS还可以包括其他设备,如:全局事务管理器(global transaction mangement,GTM),CN和DN之间通过网络通道来通信。DN中可以包括时序引擎,该时序引擎可以实现时序数据的注入、时序数据的查询等与时序数据相关的功能。CN中可以包括计算引擎,该计算引擎可以为查询确定执行计划,进而将该查询分发给相应的DN去执行。在一个实施例中,该网络通道可以由交换机、路由器和网关等网络设备组成的。CN和DN共同实现数据库管理系统的功能,为客户端提供数据库的检索、插入、修改和删除等服务。在一个实施例中,每个CN和DN上部署有数据库管理系统。共享数据存储器中存储有可供多个DN共享的数据,DN可以通过网络通道对数据存储器中的数据执行读写操作。共享数据存储器可以为共享磁盘阵列。分布式数据库系统中的CN和DN可以为物理机,比如数据库服务器,也可以为运行在抽象硬件资源上的虚拟机(virtual machine,VM)或容器(container)。在一个实施例中,CN和DN为虚拟机或容器,网络通道为虚拟交换网络,该虚拟交换网络包括虚拟交换机。CN和DN中部署的数据库管理系统为DBMS实例(instance),该DBMS实例可以是进程或线程,这些DBMS配合完成数据库关系系统的功能。在另一个实施例中,CN和DN为物理机,网络通道包括一个或多个交换机,交换机为存储区网络(storage area network,SAN)交换机、以太网交换机,光纤交换机或其它物理交换设备。
图1C为采用无共享(shared-nothing)架构的分布式数据库系统示意图,每个DN具有各自独享的硬件资源(如数据存储器)、操作系统和数据库,CN和DN之间通过网络通道来通信,该网络通道可以参阅上述图1B部分的相应介绍进行理解。该体系下,数据将根据数据库模型和应用特点被分配到各个DN上,查询任务将被CN分割成若干部分,在所有DN上并行执行,彼此协同计算,作为整体提供数据库服务,所有通信功能都在一个高宽带网络互联体系上实现。如同图1B所描述的shared-storage架构的分布式数据库系统一样,这里的CN和DN既可以是物理机,也可以是虚拟机。
在本申请所有实施例中,数据库系统的数据存储器(data storage)包括但不限于固态硬盘(solid state drives,SSD)、磁盘阵列或其他类型的非瞬态计算机可读介质。图1B-图1C中虽未示出数据库,应理解,数据库存储在数据存储器中。所属领域的技术人员可以理解一个数据库系统可能包括比图1A-图1C中所示的部件更少或更多的组件,或者包括与图1A-图1C中所示组件不同的组件,图1A-图1C仅仅示出了与本申请实施例所公开的实现方式更加相关的组件。但所属领域的技术人员可理解成一个分布式数据库系统可包含任何数量的CN和DN。各CN和DN的数据库管理系统功能可分别由运行在各CN和DN上的软件、硬件和/或固件的适当组合来实现。
上述图1B和图1C中的数据库系统示出了计算引擎和时序引擎,在本申请的方案中,计算引擎和时序引擎的作用可以参阅图2进行理解。如图2所示的数据库系统中的DBMS130包括:存储引擎170和计算引擎132。
计算引擎132支持至少一种类型的查询语言,比如结构化查询语言(structuredquerylanguage,SQL),以及其他支持时序数据的查询。计算引擎130的主要功能是根据客户端200提交的查询(Query),生成对应的执行计划,并依照执行计划进行数据操作,以产生查询结果。对于时序数据库的数据库系统来说,计算引擎主要包括查询引擎和执行引擎。其中,查询引擎主要完成查询的解析,查询的重写以及执行计划的生成;执行引擎由操作算子及其相关的执行环境组成。常用的操作算子包括scan,hash join,aggregate等,执行环境主要由执行框架和资源管理器组成。
存储引擎170负责在文件系统之上,向计算引擎提供访问数据的接口,同时提供索引管理,运行时的缓存、事务、日志等数据的管理。例如存储引擎170可以将计算引擎132的执行结果通过物理I/O写入数据存储器120。
该存储引擎170包括时序引擎171、适配器172、行存引擎173和列存引擎174。时序引擎171用于管理时序数据。适配器172为时序引擎171和行存引擎173,以及列存引擎174之间提供接口,根据时序数据中不同部分的参数类型适配行存引擎173或者列存引擎174。行存引擎173用于对时序数据以行存储格式存储,列存引擎174用于对时序数据以列存储格式存储。
在查询时序数据的过程中会使用到计算引擎132和存储引擎170,在注入时序数据的过程中,会使用到存储引擎170。
在注入时序数据时,时序引擎171会对时序数据进行切分,然后使用行存引擎173将时序数据中需要行存储的部分以行存储格式存储,使用列存储引擎174将时序数据中需要列存储的部分以列存储格式存储。
在查询时序数据时,计算引擎132接收来自客户端200的查询(该查询在一些场景下也称为“查询语句”或“语句”),对查询进行分析后,建立时序扫描算子。时序引擎171接收计算引擎132分析结果后开始进行数据扫描。时序引擎171以行列混合扫描的方式完成时序数据查询。计算引擎132接收时序引擎171返回的时序数据,也就是查询结果,返回查询结果给客户端200。
数据存储器120中包括行存文件、列存文件,以及倒排索引文件。其中,行存文件包含以行存储格式存储的时序数据,列存文件包含以列存储格式存储的时序数据,倒排索引文件包含索引值与行标识的对应关系。可以通过索引值来查找行标识,该索引值可以理解为是倒排索引,包含倒排索引的文件称为倒排索引文件。
基于上述所介绍的分布式数据库系统,下面分别对注入时序数据的方法和查询时序数据的方法分别进行介绍。
为了便于理解,预先说明,本申请实施例中的本申请中,“至少一个”包括“一个”或“多个”,“多个”包括“两个”。“多个”也可以描述为“至少两个”
图3为本申请实施例提供的注入时序数据的方法的一实施例示意图。
如图3所示,本申请实施例提供的注入时序数据的方法的一实施例包括:
201、接收时序数据。
时序数据包括用于标识产生时序数据的数据源的至少一个参数,以及表示数据源的至少一个属性的指标和时间戳,时间戳指示指标产生的时间。
可以理解的是第一参数组和第二参数组可以是对时序数据所包含的参数、指标和时间戳在逻辑上做的划分。
时序数据库存储时序数据,时序数据都带有时间标签。通常一条时序数据由数据源(tags),指标(field)和时间戳(timestamp)组成。本申请中,指标指的是数据源的属性在该时间戳所指示时间的取值。因为指标会随着时间发生变化,但数据源不会随时间发生变化,所以针对一个数据源会随着时间的变化得到很多条时序数据,该数据源也可以称为一条“时间线(timeseries)”。数据源指的是产生时序数据的源头,第一参数组中的参数可以包括设备的名称、设备的标识、以及设备的互联网协议(Internet protocol,IP)地址等。指标所描述的数据源的属性可以是输出功率,风速、吞吐量、频率、输入/输出(input/output,I/O)以及空闲率等,具体指标所描述的数据源的属性与设备的类型相关。指标与时间戳是相互关联的,不同时间戳所对应的指标通常不同。
关于时序数据可以参与表1进行理解。
表1:时序数据
设备的名称 | 设备的IP地址 | I/O | 空闲率 | 时间戳 |
ombi | 10.73.73.3 | 21.15% | 94.5% | 2020-03-07 12:01:01 |
sds | 10.93.19.141 | 1% | 99% | 2020-03-07 12:01:01 |
sds | 10.93.20.138 | 5% | 98.9% | 2020-03-07 12:01:01 |
nsp | 10.1.142.176 | 0.8% | 91% | 2020-03-07 12:01:01 |
如上表1所示,表1中包括4条时序数据,每一行为一个时序数据。可以将表1中前两列理解为时序数据的数据源(tags),也可以将tags称为时间线。I/O和空闲率(idle)为数据源的两个属性,I/O所在列的数值,以及空闲率所在列的数值为指标。第五列时间戳为获取所在行的指标时的时间。
另外,需要说明的是,一个设备可以是多个数据源,如设备的名称相同,但IP地址不同,也代表两个不同的数据源。如表1中的第二行和第三行,设备的名称相同,都是sds,但设备的IP地址不同,则第二行的时序数据和第三行的时序数据来自不同的数据源。只有第一参数组中的所有参数都相同,才代表不同的时序数据来自同一个数据源。
202、将第一参数组以行存储格式存储。
第一参数组包括用于标识产生时序数据的数据源的至少一个参数。如上表1所示,其中,设备的名称和设备的IP地址可以划分到第一参数组。
203、将第二参数组以列存储格式存储。
第二参数组包括表示数据源的至少一个属性的指标和时间戳。如上表1中,I/O量、空闲率和时间戳可以划分到第二参数组。
一种可能的实施例中,在存储时序数据之前,还可以对时序数据进行切分,将用于标识产生时序数据的数据源的至少一个参数与表示数据源的至少一个属性的指标和时间戳分开。
本申请实施例,将不随时间变化的用于标识产生时序数据的数据源的至少一个参数以行存储的格式存储,将会时间变化的属性的指标和对应的时间戳以列存储的格式存储。因为用于标识产生时序数据的数据源的至少一个参数不随时间变化,所以针对同一数据源的时序数据不需要反复存储至少一个参数,将至少一个参数进行行存储,不仅有利于节省存储空间,还能提高数据库系统的存储性能,另外,因为在查询时至少一个参数都是需要读取的,通过行存储的方式存储至少一个参数,不仅不浪费查询资源,还有利于在查询时快速定位到至少一个参数,列存储有利于快速查找到要查询的相应属性的指标,所以本申请方案采用行列混合存储的方式注入时序数据,既提高了数据库的存储性能,又提高了时序数据查询的效率。
本申请提供的注入时序数据的方案可以包括如下两部分方案:一、行列混合存储的切分;二、列存储部分的两层缓存。
一、行列混合存储的切分。
该过程可以参阅图4进行理解。如图4所示,对时序数据进行行列混合存储的切分包括:
301、根据用于标识产生时序数据的数据源的至少一个参数确定索引值。
索引值是通过至少一个参数得到的,得到索引值的方式有多种,如:当有一个参数时,可以将该参数作为索引值,也可以在该参数基础上做变换,如再添加一些数值或符号等得到索引值。当有多个参数时,可以将这些参数拼接在一起,从而得到该索引值,如:多个参数包括设备的名称和设备的IP地址,那么可以将设备的名称和设备的IP地址拼接在一起,形成索引值(key)。当然,不限于这种方式,也可以时根据多个参数部分参数来得到索引值,只要该索引值在全局中能唯一标识一个数据源即可,本申请中不限定具体得到方式。
302、根据索引值查询全局缓存,若存在,则执行步骤303,若不存在,则执行步骤304。
全局缓存指的是数据库系统的缓存。
303、若全局缓存中存在索引值,确定索引值所对应的行标识,全局缓存存储有索引值与行标识的对应关系。
行标识(tagID)可以用1、2、3等数值表示,也可以用a、b、c、d等字符表示,当然,行标识不限于这两种表示方式,还可以用其他形式表示,只要每个行标识能唯一的标识一个数据源即可。
索引值和行标识的对应关系可以通过表格的方式来维护,也可以通过其他的映射方式来维护。
304、若全局缓存中不存在索引值,则为索引值分配行标识,并在全局缓存中存储索引值和行标识的对应关系。
305、将行标识、至少一个指标的值和时间戳组成数据行。
确定出行标识后,可以建立第一参数组和行标识的对应关系,再建立第二参数组和行标识的对应关系。
第一参数组和行标识的对应关系,结合上述表1中的时序数据可以表示为表2的形式:
表2:行存储部分的数据
设备的名称 | 设备的IP地址 | 行标识 |
ombi | 10.73.73.3 | 1 |
sds | 10.93.19.141 | 2 |
sds | 10.93.20.138 | 3 |
nsp | 10.1.142.176 | 4 |
第二参数组和行标识的对应关系,结合上述表1中的时序数据可以表示为表3的形式:
表3:列存储部分的数据
I/O | 空闲率 | 时间戳 | 行标识 |
21.15% | 94.5% | 2020-03-07 12:01:01 | 1 |
1% | 99% | 2020-03-07 12:01:01 | 2 |
5% | 98.9% | 2020-03-07 12:01:01 | 3 |
0.8% | 91% | 2020-03-07 12:01:01 | 4 |
该表3中的每一行都可以称为一个数据行(data row)。
以上过程完成了对时序数据的行列混合存储的切分,例如:将表1中的四个时序数据按照上述介绍的原理可以切分为上述表2和表3中的形式,其中,例如表2的部分将设备的名称和设备的IP地址和行标识以行存储格式存储。对于列存储的部分可以通过两层缓存进行落盘,落盘指的是写入数据存储器,下面介绍两层缓存的过程。
本申请实施例提供的方案,通过全局缓存来维护行标识与索引值的对应关系,有利于提高注入时序数据的效率。
二、列存储部分的两层缓存。
列存储部分的两层缓存的过程可以参阅图5A进行理解。
如图5A所示,该过程包括:
401、将数据行存入第一层缓存。
如果第一层缓存没满,而且定时器刷新时间没到,可以结束流程。如果第一层缓存已满,或者到达定时器刷新时间,则可以执行步骤402。当然,也可以不用等到第一层缓存存满,或者达到定时器刷新直接,直接执行步骤402,只是等待的方式有利于减少I/O开销。
第一层缓存可以是全局缓存。
402、根据数据行中的时间戳,将数据行划分到第一时间范围对应的分区。
存储至少一个指标的至少一个CU,以及存储时间戳的CU位于第一时间范围对应的分区,时间戳指示的时间位于第一时间范围内。
第一时间范围可以是一个月、一周、一天、多天、几个小时或者几十分钟,第一时间范围可以是预先配置好的。对于第一时间范围的具体取值本申请中不作限定。分区(partition)指的是该第一时间范围所对应的数据集合。通过数据行中的时间戳可以确定出该时序数据适合存储的具体分区,这样方便后续查询时可以通过查询时间快速的锁定分区,进而提高查询的效率。
分区包括多个列存储单元(compression unit,CU)。在列存储时,同一个属性在不同时间的指标可以存储到一个CU中,时间戳会放在一个独立的CU中,然后通过行标识来建立同一个数据源的多个CU之间的关联。该关联可以是每个存储该数据行中指标的CU,以及存储时间戳的CU都包含该行标识。一个CU中只存储一列数据,但可以存储多个数据行中同一个属性的指标,如:一个CU中存储了上述表3中I/O在不同时间的指标。
一个CU中存储的数据可以参阅图5B进行理解。如图5B所示,该CU中存储的是tagID=1的I/O列的指标。
同一个tagID的各CU之间的关联可以参阅图5C进行理解。如图5C所示,CU1中存储的是tagID=1的I/O的指标。CU2中存储的是tagID=1的空闲率的指标,CU3中存储的是tagID=1的时间戳的数据。
通过数据行中的时间戳可以确定出该时序数据适合存储的具体分区,这样方便后续查询时可以通过查询时间快速的锁定分区,进而提高查询的效率。
403、根据行标识,从多个CU中查找包含该行标识的CU。
若行标识=1,则可以查找到CU1、CU2和CU3。
404、将数据行中每个指标分别存储到不同的CU中。
若该数据行的I/O=35%,空闲率=92%,时间戳=2020-03-07 14:15:23,则将这个数据行的每列的数值分别存储到CU1、CU2和CU3上,添加后CU1、CU2和CU3中的数据可以参与图5D进行理解。
405、将行标识所关联的多个CU划分到同一个数据集中,该数据集(小part)也可以理解为是第二层缓存。
分区包括多个数据集,其中,每个数据集对应不完全重叠的时间范围,至少一个CU以及存储时间戳的CU位于同一个数据集中,时间戳指示的时间位于同一个数据集对应的时间范围内。该时间范围可以通过该数据集中的最小时间和最大时间来表示。
数据集是分区的下一层级的CU的集合。小part与CU的关系可以参阅图5E进行理解。图5E中示出的每个小part中包括CU描述信息,该CU描述信息中记录有各CU的时间范围,以及所对应的tagID的信息。
在同一个分区中,还可以将包含同一个行标识的CU划分到同一个数据集(part)中,这样,有利于更进一步提高查询行标识所对应的CU的查找效率。
406、合并多个数据集中的至少两个数据集,以得到一个合并数据集,将合并数据集写入数据存储器中。
该数据存储器是不同于全局缓存的另一个存储介质,例如:磁盘。
合并数据集对应的第二时间范围包含至少两个数据集对应的时间范围,第二时间范围包含于第一时间范围;
该过程也可以理解为将小part合并成大part,如图5F所示,将小part1和小part2组合成大part1。这样,在写入数据存储器时,只需要一次性写入较大的合并数据集,不需要将小数据频繁写入,这样可以降低时序数据的注入开销,提高时序数据的注入性能。另外,第二时间范围通常小于第一时间范围,通过时间范围缩小的方式来缩小查找范围,还可以进一步提高查询速度。
上述将数据行进行两层缓存的可以参阅图6所示的场景进行理解。如图6所示,该过程包括:将数据行存入全局缓存。全局缓存下包括多个分区,例如:分区1和分区2。根据数据行中的时间戳确定该数据行应划分到分区1。分区1下包括多个小part,如:小part1、小part2和小part3,小part属于第二层缓存,每个小part中包括多个CU以及CU描述文件,关于小part与CU的关系,可以参阅图5E进行理解,此次不再重复赘述。根据时间范围,再将小part组合成大part,例如:将小part1、小part2和小part3组合成一个大part,该过程可以参阅图5F进行理解。然后将大part落盘,也就是存入数据存储器。
另外,本申请实施例中,对合并数据集中的多个CU中的数据进行压缩,再对多个CU进行压缩,以得到压缩后的合并数据集;将压缩后的合并数据集写入数据存储器中。通过两重压缩的方式,可以提升压缩比率,进一步提高数据库系统的吞吐量。
本申请实施例提供的方案,在数据库的存储性能,如吞吐量,以及数据压缩性能方面都远好于现有技术的时序数据库。图7A和图7B是通过工程人员记录的实验数据生成的柱状图。从图7A所示的吞吐量对比图可见,针对第一参数组中有两个参数(Tags数量为2)、第二参数组中有一个指标(Field数量为1),一批注入10000条(Batch大小为10K时序数据)时,在基数分别为1、10、100、1000和10000时的对照可见,本申请所提供的注入时序数据的方案,使得数据库系统的吞吐量相比于现有的influxdb的吞吐量至少提高30%。从图7B所示的压缩性能对比图可见,在数量为100万(w)、1000w、10000w和100000w时,本申请所提供的注入时序数据的方案,在数据压缩性能方面比Influxdb至少提升了50%。
以上介绍了注入时序数据的过程,下面结合附图介绍本申请实施例提供的查询时序数据的方法。
如图8所示,本申请实施例提供的查询时序数据的方法的一实施例包括:
501、接收针对时序数据的查询。
查询包括标识产生时序数据的数据源的至少一个参数,以及至少一个列标识,至少一个列标识指示至少一个目标列,至少一个目标列中包含表示数据源的至少一个属性的指标。
关于标识产生时序数据的数据源的至少一个参数、属性、指标等的含义和关系可以参阅上述注入时序数据的实施例部分的相关内容进行理解,此处不再重复赘述。
502、确定至少一个参数对应的行标识。
该步骤可以为根据至少一个参数确定索引值;根据索引值,以及索引值与行标识的对应关系,确定索引值对应的行标识。
该过程可以参阅上述图4对应的实施例部分的步骤301和303进行理解。
503、根据行标识确定多个CU,多个CU中的每个CU都包含行标识。
关于行标识与多个CU的关系可以参阅图5C和图5D进行理解。数据行所包括的内容可以参阅表3进行理解。
504、根据至少一个列标识,从多个CU中确定至少一个目标CU;根据至少一个目标CU生成查询结果。
列标识可以用数字表示,如:以表3为例,若列标识=1,则对应的是I/O列,若列标识=2,则对应的是空闲率的一列。当然,列标识还可以通过其他方式来表示,对此,本申请中不做限定。
需要说明的是,至少一个列标识、至少一个目标列、至少一个属性的指标以及至少一个目标CU都是一一对应的。
一种可能的实施例中,根据至少一个目标CU生成查询结果,包括:根据至少一个目标CU中的至少一个属性的指标和至少一个参数生成查询结果。
可以将至少目标CU中的至少一个属性的指标和至少一个参数按照时序数据注入时结构组成相应的时序数据,然后返回给客户端。
本申请实施例提供的方案,通过标识产生时序数据的数据源的至少一个参数可以确定对应的行标识,进而在列存储中查找到与该行标识对应的多个CU,再根据列标识,从多个CU中确定出目标CU。由此可见,通过标识产生时序数据的数据源的至少一个参数和列标识就可以快速的查询到列标识所对应列的目标CU,生成查询结果返回给客户端,提高了时序数据查询的效率。
一种实施例中,查询还包括查询时间,该方法还包括:该方法还包括:确定包含查询时间的第一时间范围对应的目标分区,目标分区包括多个合并数据集;从多个合并数据集中确定第一合并数据集,第一合并数据集对应的第二时间范围包含查询时间,第一合并数据集包括多个CU;从第一合并数据集包括的多个CU中确定多个第一CU,第一CU对应的第三时间范围包含查询时间,第一时间范围包含第二时间范围,第二时间范围包含第三时间范围;对应地,从多个第一CU中确定与行标识对应的多个CU。
该过程也可以理解为是一个三层剪裁的过程,如图9A所示,通过查询时间确定对应的partition,进一步再将查询范围缩小到part,再进一步将查询范围缩小到CU,通过三个层级缩小查询范围,不需要从大量的数据中查找,提高了数据查询的效率。
本申请实施例提供的数据库系统,在查询时序数据的过程中会先根据查询生成查询计划,然后将该执行计划提交给扫描算子,再由扫描算子调用存储接口,进而查询到相应的时序数据。整个查询过程可以参阅图9B进行理解,如图9B所示的过程包括:
1、时序扫描算子初始化
在时序扫描算子初始化时,创建扫描状态(TsStoreScanState)对象,该对象实现执行层和存储层交互,对象存储上下文信息,包括用于标识产生所述时序数据的数据源的至少一个参数、列标识以及查询时间等。在初始化时,使用用于标识产生所述时序数据的数据源的至少一个参数查询tagId,并且保存在扫描状态对象中。
2、时序扫描算子执行
时序扫描算子执行由上层分区算子驱动,存储层提供接口,通过全局搜索(TsStoreSearch)->分区搜索(PartitionSearch)->数据集搜索(PartSearch)这一搜索链实现数据扫描,PartSearch作为最小的搜索单元,完成具体的数据扫描,具体流程包括:根据TsStoreScanState对象中的tagId集合扫描CU描述文件(cudesc),找到对应列标识(columnId),通过columnId获取对应的目标CU中的数据并且返回,得到CU后拼接成向量行(VectorBatch)给到时序扫描算子。
3、时序扫描算子重置
当上层分区算子对当前分区数据扫描完毕后会调用下层算子的重置接口通知切换分区,时序扫描算子重装主要对PartitionSearch、PartSearch进行重置,实现切换分区的功能。
4、TsStoreScan算子执行结束
当时序所有数据扫描完毕后,调用TsStoreScan的算子结束接口完成对相关资源释放。
本申请实施例提供的方案,在数据库的查询性能方面都远好于现有技术的时序数据库。图9C是通过工程人员记录的实验数据生成的柱状图。从图9C所示的在消费者云的基础资源监控场景下,Influxdb和GuassDB TSDB归一化的查询延迟对比图中可见,如在弹性负载均衡(elastic load balance,ELB)场景,以及单分组I/O等高散列度和大数据量下,本申请实施例提供的数据库系统(GaussDB TSDB)比Influxdb在查询延迟性能方面提升2倍。
以上多个实施例描述了注入时序数据的方法和查询时序数据的方法,下面结合附图介绍本申请实施例提供的注入时序数据的装置和查询时序数据的装置。
如图10所示,本申请实施例提供的注入时序数据的装置60的一实施例包括:
接收单元601,用于接收时序数据,时序数据包括用于标识产生时序数据的数据源的至少一个参数,以及表示数据源的至少一个属性的指标和时间戳,时间戳指示指标产生的时间。
处理单元602,用于将第一参数组以行存储格式存储,第一参数组包括用于标识产生时序数据的数据源的至少一个参数;将第二参数组以列存储格式存储,第二参数组包括表示数据源的至少一个属性的指标和时间戳。
本申请实施例,将不随时间变化的用于标识产生时序数据的数据源的至少一个参数以行存储的格式存储,将会时间变化的属性的指标和对应的时间戳以列存储的格式存储。因为用于标识产生时序数据的数据源的至少一个参数不随时间变化,所以针对同一数据源的时序数据不需要反复存储至少一个参数,将至少一个参数进行行存储,不仅有利于节省存储空间,还能提高数据库系统的存储性能,另外,因为在查询时至少一个参数都是需要读取的,通过行存储的方式存储至少一个参数,不仅不浪费查询资源,还有利于在查询时快速定位到至少一个参数,列存储有利于快速查找到要查询的相应属性的指标,所以本申请方案采用行列混合存储的方式注入时序数据,既提高了数据库的存储性能,又提高了时序数据查询的效率。
可选地,该装置60还包括:确定单元603,用于根据第一参数组确定行标识,并根据行标识、至少一个指标和时间戳生成数据行。
处理单元602,用于将数据行包含的至少一个指标存储到至少一个列存储单元CU中,至少一个指标与至少一个CU一一对应,且至少一个CU中的每个CU都包含行标识;将时间戳存储到一个CU中,存储时间戳的CU包含行标识。
可选地,处理单元602,用于将第一参数组和行标识以行存储格式存储。
可选地,确定单元603用于:确定第一参数组中的至少一个参数对应的索引值;查询全局缓存以得到索引值对应的行标识,全局缓存存储有索引值与行标识的对应关系。
可选地,确定单元603用于:确定第一参数组中的多个参数对应的索引值;为索引值分配行标识,在全局缓存中存储索引值和行标识的对应关系。
可选地,存储至少一个指标的至少一个CU,以及存储时间戳的CU位于第一时间范围对应的分区,时间戳指示的时间位于第一时间范围内。
可选地,分区包括多个数据集,其中,每个数据集对应不完全重叠的时间范围,至少一个CU以及存储时间戳的CU位于同一个数据集中,时间戳指示的时间位于同一个数据集对应的时间范围内。
可选地,处理单元602,还用于合并多个数据集中的至少两个数据集,以得到一个合并数据集,合并数据集对应的第二时间范围包含至少两个数据集对应的时间范围,第二时间范围包含于第一时间范围;将合并数据集写入数据存储器中。
可选地,处理单元602,还用于对合并数据集中的多个CU中的数据进行压缩,以及对多个CU进行压缩,以得到压缩后的合并数据集;将压缩后的合并数据集写入数据存储器中。
以上,注入时序数据的装置60的相关内容可以参阅前述注入时序数据的方法实施例部分的相关内容进行理解,此处不再重复赘述。
如图11所示,本申请实施例提供的查询时序数据的装置的70的一实施例包括:
接收单元701,用于接收针对时序数据的查询,查询包括标识产生时序数据的数据源的至少一个参数,以及至少一个列标识,至少一个列标识指示至少一个目标列,至少一个目标列中包含表示数据源的至少一个属性的指标。
第一处理单元702,用于确定接收单元701接收的至少一个参数对应的行标识。
第二处理单元703,用于根据第一处理单元702确定的行标识确定多个CU,多个CU中的每个CU都包含行标识。
第三处理单元704,用于根据至少一个列标识,从第二处理单元703确定的多个CU中确定至少一个目标CU,每个目标CU对应一个目标列;根据至少一个目标CU生成查询结果。
本申请实施例提供的方案,通过标识产生时序数据的数据源的至少一个参数,可以确定对应的行标识,进而在列存储中查找到与该行标识对应的多个CU,再根据列标识,从多个CU中确定出目标CU。由此可见,通过标识产生时序数据的数据源的至少一个参数,和列标识就可以快速的查询到所要查找的列,提高了时序数据查询的效率。
可选地,第三处理单元704,用于根据至少一个目标CU中的至少一个属性的指标和至少一个参数生成查询结果。
可选地,查询还包括查询时间,第一处理单元702还用于:确定包含查询时间的第一时间范围对应的目标分区,目标分区包括多个合并数据集;从多个合并数据集中确定第一合并数据集,第一合并数据集对应的第二时间范围包含查询时间,第一合并数据集包括多个CU;从第一合并数据集包括的多个CU中确定多个第一CU,第一CU对应的第三时间范围包含查询时间,第一时间范围包含第二时间范围,第二时间范围包含第三时间范围。
第二处理单元703,用于从多个第一CU中确定与行标识对应的多个CU。
可选地,第一处理单元702,用于确定至少一个参数对应的索引值;查询全局缓存以得到索引值对应的行标识,全局缓存存储有索引值与行标识的对应关系。
以上,查询时序数据的装置70的相关内容可以参阅前述查询时序数据的方法实施例部分的相关内容进行理解,此处不再重复赘述。
图12所示,为本申请的实施例提供的上述实施例中所涉及的计算机设备80的一种可能的逻辑结构示意图,该计算机设备80可以为注入时序数据的装置或查询时序数据的装置。计算机设备80包括:处理器801、通信接口802、存储器803以及总线804。处理器801、通信接口802以及存储器803通过总线804相互连接。在本申请的实施例中,处理器801用于对注入时序数据的装置或查询时序数据的装置80的动作进行控制管理,例如,处理器801用于执行图3至图9C中与确定相关的步骤,例如:步骤202至203,步骤301至305,步骤401至406,步骤502至504。通信接口802用于支持计算机设备80进行通信,例如:通信接口802可以执行上述方法实施例中接与接收或发送相关的步骤。存储器803,用于存储数据库服务器的程序代码和数据。
其中,处理器801可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线804可以是外设部件互连标准(PeripheralComponentInterconnect,PCI)总线或扩展工业标准结构(Extended IndustryStandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
参见图13,本申请实施例还提供一种分布式数据库系统,包括:包括硬件层1007和运行在硬件层1007之上的虚拟机监控器(VMM)1001,以及多个虚拟机1002。一个虚拟机可以作为分布式数据库系统的一个数据节点。可选第,还可以指定一个虚拟机作为协调节点。
具体的,虚拟机1002是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层1007:虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如包括处理器1004(例如CPU)和存储器1005,还可以包括网卡1003(例如RDMA网卡)、高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。
虚拟机1002基于VMM,以及硬件层1007提供的硬件资源,运行可执行程序,以实现上述图3至图9C相关的实施例中注入时序数据的装置或查询时序数据的装置的部分或全部功能。为了简洁,在此不再赘述。
进一步地,该分布式数据库系统还可以包括宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);也有可能是由VMM和1个特权虚拟机的结合。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(如VCPU)、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。虚拟机1002的VCPU通过执行存储在其对应的虚拟内存中的可执行程序,以实现或者执行本发明上述各方法实施例中所描述的方法步骤。例如,实现上述图3至图9C相关的实施例中注入时序数据的装置或查询时序数据的装置的部分或全部功能。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图3至图9C部分实施例所描述的注入时序数据的方法或查询时序数据的方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图3至图9C部分实施例所描述的注入时序数据的方法或查询时序数据的方法。
在本申请的另一实施例中,还提供一种芯片系统,该芯片系统包括处理器,用于支持注入时序数据的装置或查询时序数据的装置实现上述图3至图9C部分实施例所描述的管理事务的方法。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于注入时序数据的装置或查询时序数据的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以权利要求的保护范围为准。
Claims (30)
1.一种注入时序数据的方法,其特征在于,包括:
接收时序数据,所述时序数据包括用于标识产生所述时序数据的数据源的至少一个参数,以及表示所述数据源的至少一个属性的指标和时间戳,所述时间戳指示所述指标产生的时间;
将第一参数组以行存储格式存储,所述第一参数组包括所述用于标识产生所述时序数据的数据源的至少一个参数;
将第二参数组以列存储格式存储,所述第二参数组包括表示所述数据源的至少一个属性的指标和所述时间戳。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第一参数组确定行标识,并根据所述行标识、所述至少一个指标和所述时间戳生成数据行;
所述将所述第二参数组以列存储格式存储,包括:
将所述数据行包含的所述至少一个指标存储到至少一个列存储单元CU中,所述至少一个指标与所述至少一个CU一一对应,且所述至少一个CU中的每个CU都包含所述行标识;
将所述时间戳存储到一个CU中,存储所述时间戳的CU包含所述行标识。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一参数组以行存储格式存储,包括:
将所述第一参数组和所述行标识以行存储格式存储。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述第一参数组确定行标识,包括:
确定所述第一参数组中的所述至少一个参数对应的索引值;
查询全局缓存以得到所述索引值对应的行标识,所述全局缓存存储有所述索引值与所述行标识的对应关系。
5.根据权利要求2或3所述的方法,其特征在于,所述根据所述第一参数组确定行标识,包括:
确定所述第一参数组中的所述多个参数对应的索引值;
为所述索引值分配所述行标识,在全局缓存中存储所述索引值和所述行标识的对应关系。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述方法还包括:
存储所述至少一个指标的所述至少一个CU,以及存储所述时间戳的所述CU位于第一时间范围对应的分区,所述时间戳指示的时间位于所述第一时间范围内。
7.根据权利要求6所述的方法,其特征在于,
所述分区包括多个数据集,其中,每个数据集对应不完全重叠的时间范围,所述至少一个CU以及存储所述时间戳的所述CU位于同一个数据集中,所述时间戳指示的时间位于所述同一个数据集对应的时间范围内。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
合并所述多个数据集中的至少两个数据集,以得到一个合并数据集,所述合并数据集对应的第二时间范围包含所述至少两个数据集对应的时间范围,所述第二时间范围包含于所述第一时间范围;
将所述合并数据集写入数据存储器中。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
对所述合并数据集中的多个CU中的数据进行压缩,以及对所述多个CU进行压缩,以得到压缩后的合并数据集;
所述将所述合并数据集写入数据存储器中,包括:将压缩后的合并数据集写入所述数据存储器中。
10.一种查询时序数据的方法,其特征在于,包括:
接收针对时序数据的查询,所述查询包括标识产生所述时序数据的数据源的至少一个参数,以及至少一个列标识,所述至少一个列标识指示至少一个目标列,所述至少一个目标列中包含表示所述数据源的至少一个属性的指标;
确定所述至少一个参数对应的行标识;
根据所述行标识确定多个CU,所述多个CU中的每个CU都包含所述行标识;
根据所述至少一个列标识,从所述多个CU中确定至少一个目标CU,每个目标CU对应一个目标列;
根据所述至少一个目标CU生成查询结果。
11.根据权利要求10所述的方法,其特征在于,所述根据所述至少一个目标CU生成查询结果,包括:
根据所述至少一个目标CU中的所述至少一个属性的指标和所述至少一个参数生成所述查询结果。
12.根据权利要求10或11所述的方法,其特征在于,所述查询还包括查询时间,所述方法还包括:
确定包含所述查询时间的第一时间范围对应的目标分区,所述目标分区包括多个合并数据集;
从所述多个合并数据集中确定第一合并数据集,所述第一合并数据集对应的第二时间范围包含所述查询时间,所述第一合并数据集包括多个CU;
从所述第一合并数据集包括的所述多个CU中确定多个第一CU,所述第一CU对应的第三时间范围包含所述查询时间,所述第一时间范围包含所述第二时间范围,所述第二时间范围包含所述第三时间范围;
所述根据所述行标识确定多个CU,包括:从所述多个第一CU中确定与所述行标识对应的所述多个CU。
13.根据权利要求10-12任一项所述的方法,其特征在于,所述确定所述至少一个参数对应的行标识,包括:
确定所述至少一个参数对应的索引值;
查询全局缓存以得到所述索引值对应的行标识,所述全局缓存存储有所述索引值与所述行标识的对应关系。
14.一种数据库系统,其特征在于,包括:协调节点和与所述协调节点通信连接的数据节点,
所述协调节点用于接收来自于客户端的时序数据;
所述数据节点用于:
从所述协调节点获取所述时序数据,所述时序数据包括用于标识产生所述时序数据的数据源的至少一个参数,以及表示所述数据源的至少一个属性的指标和时间戳,所述时间戳指示所述指标产生的时间;
将第一参数组以行存储格式存储,所述第一参数组包括所述用于标识产生所述时序数据的数据源的至少一个参数;
将第二参数组以列存储格式存储,所述第二参数组包括表示所述数据源的至少一个属性的指标和所述时间戳。
15.根据权利要求14所述的数据库系统,其特征在于,
所述数据节点还用于:
根据所述第一参数组确定行标识,并根据所述行标识、所述至少一个指标和所述时间戳生成数据行;
将所述数据行包含的所述至少一个指标存储到至少一个列存储单元CU中,所述至少一个指标与所述至少一个CU一一对应,且所述至少一个CU中的每个CU都包含所述行标识;
将所述时间戳存储到一个CU中,存储所述时间戳的CU包含所述行标识。
16.根据权利要求15所述的数据库系统,其特征在于,
所述数据节点用于:将所述第一参数组和所述行标识以行存储格式存储。
17.根据权利要求15或16所述的数据库系统,其特征在于,
所述数据节点用于:
确定所述第一参数组中的所述至少一个参数对应的索引值;
查询全局缓存以得到所述索引值对应的行标识,所述全局缓存存储有所述索引值与所述行标识的对应关系。
18.根据权利要求15或16所述的数据库系统,其特征在于,
所述数据节点用于:
确定所述第一参数组中的所述多个参数对应的索引值;
为所述索引值分配所述行标识,在全局缓存中存储所述索引值和所述行标识的对应关系。
19.根据权利要求15-18任一项所述的数据库系统,其特征在于,
存储所述至少一个指标的所述至少一个CU,以及存储所述时间戳的所述CU位于第一时间范围对应的分区,所述时间戳指示的时间位于所述第一时间范围内。
20.根据权利要求19所述的数据库系统,其特征在于,
所述分区包括多个数据集,其中,每个数据集对应不完全重叠的时间范围,所述至少一个CU以及存储所述时间戳的所述CU位于同一个数据集中,所述时间戳指示的时间位于所述同一个数据集对应的时间范围内。
21.根据权利要求20所述的数据库系统,其特征在于,
所述数据节点还用于:
合并所述多个数据集中的至少两个数据集,以得到一个合并数据集,所述合并数据集对应的第二时间范围包含所述至少两个数据集对应的时间范围,所述第二时间范围包含于所述第一时间范围;
将所述合并数据集写入数据存储器中。
22.根据权利要求21所述的数据库系统,其特征在于,
所述数据节点还用于:
对所述合并数据集中的多个CU中的数据进行压缩,以及对所述多个CU进行压缩,以得到压缩后的合并数据集;
将压缩后的合并数据集写入所述数据存储器中。
23.一种数据库系统,其特征在于,包括:协调节点和与所述协调节点通信连接的数据节点,
所述协调节点用于接收来自于客户端的针对时序数据的查询;
所述数据节点用于:
从所述协调节点获取所述针对时序数据的查询,所述查询包括标识产生所述时序数据的数据源的至少一个参数,以及至少一个列标识,所述至少一个列标识指示至少一个目标列,所述至少一个目标列中包含表示所述数据源的至少一个属性的指标;
确定所述至少一个参数对应的行标识;
根据所述行标识确定多个CU,所述多个CU中的每个CU都包含所述行标识;
根据所述至少一个列标识,从所述多个CU中确定至少一个目标CU,每个目标CU对应一个目标列;
根据所述至少一个目标CU生成查询结果。
24.根据权利要求23所述的数据库系统,其特征在于,
所述数据节点用于:根据所述至少一个目标CU中的所述至少一个属性的指标和所述至少一个参数生成所述查询结果。
25.根据权利要求23或24所述的数据库系统,其特征在于,所述查询还包括查询时间,
所述数据节点还用于:
确定包含所述查询时间的第一时间范围对应的目标分区,所述目标分区包括多个合并数据集;
从所述多个合并数据集中确定第一合并数据集,所述第一合并数据集对应的第二时间范围包含所述查询时间,所述第一合并数据集包括多个CU;
从所述第一合并数据集包括的所述多个CU中确定多个第一CU,所述第一CU对应的第三时间范围包含所述查询时间,所述第一时间范围包含所述第二时间范围,所述第二时间范围包含所述第三时间范围;
从所述多个第一CU中确定与所述行标识对应的所述多个CU。
26.根据权利要求23-25任一项所述的数据库系统,其特征在于,
所述数据节点用于:
确定所述至少一个参数对应的索引值;
查询全局缓存以得到所述索引值对应的行标识,所述全局缓存存储有所述索引值与所述行标识的对应关系。
27.一种注入时序数据的装置,其特征在于,所述装置包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求1至9中任一项所述的方法的步骤。
28.一种查询时序数据的装置,其特征在于,所述装置包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求10至13中任一项所述的方法的步骤。
29.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至9中任一项所述的方法。
30.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求10至13中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617592.7A CN113868267A (zh) | 2020-06-30 | 2020-06-30 | 注入时序数据的方法、查询时序数据的方法及数据库系统 |
PCT/CN2021/099672 WO2022001626A1 (zh) | 2020-06-30 | 2021-06-11 | 注入时序数据的方法、查询时序数据的方法及数据库系统 |
EP21832235.2A EP4170512A4 (en) | 2020-06-30 | 2021-06-11 | TIME SERIES DATA INJECTION METHOD, TIME SERIES DATA QUERY METHOD AND DATABASE SYSTEM |
US18/147,904 US20230134030A1 (en) | 2020-06-30 | 2022-12-29 | Time series data injection method, time series data query method, and database system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617592.7A CN113868267A (zh) | 2020-06-30 | 2020-06-30 | 注入时序数据的方法、查询时序数据的方法及数据库系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113868267A true CN113868267A (zh) | 2021-12-31 |
Family
ID=78981821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617592.7A Pending CN113868267A (zh) | 2020-06-30 | 2020-06-30 | 注入时序数据的方法、查询时序数据的方法及数据库系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230134030A1 (zh) |
EP (1) | EP4170512A4 (zh) |
CN (1) | CN113868267A (zh) |
WO (1) | WO2022001626A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116304390A (zh) * | 2023-04-13 | 2023-06-23 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672257B2 (en) * | 2015-06-05 | 2017-06-06 | Palantir Technologies Inc. | Time-series data storage and processing database system |
CN106326220B (zh) * | 2015-06-16 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 数据存储方法及装置 |
CN108984542A (zh) * | 2017-05-31 | 2018-12-11 | 北京京东尚科信息技术有限公司 | 分布式数据采集方法和系统 |
CN108062378B (zh) * | 2017-12-12 | 2018-12-11 | 清华大学 | 一种列式存储下多时间序列的连接查询方法及系统 |
US20190334698A1 (en) * | 2018-04-30 | 2019-10-31 | General Electric Company | Incentivized decentralized augmented reality |
CN110908587B (zh) * | 2018-09-14 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 一种用于存储时序数据的方法及其装置 |
CN109871362A (zh) * | 2019-02-13 | 2019-06-11 | 北京航空航天大学 | 一种面向流式时序数据的数据压缩方法 |
-
2020
- 2020-06-30 CN CN202010617592.7A patent/CN113868267A/zh active Pending
-
2021
- 2021-06-11 EP EP21832235.2A patent/EP4170512A4/en active Pending
- 2021-06-11 WO PCT/CN2021/099672 patent/WO2022001626A1/zh unknown
-
2022
- 2022-12-29 US US18/147,904 patent/US20230134030A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116304390A (zh) * | 2023-04-13 | 2023-06-23 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
CN116304390B (zh) * | 2023-04-13 | 2024-02-13 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
EP4170512A1 (en) | 2023-04-26 |
WO2022001626A1 (zh) | 2022-01-06 |
US20230134030A1 (en) | 2023-05-04 |
EP4170512A4 (en) | 2023-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111046034B (zh) | 管理内存数据及在内存中维护数据的方法和系统 | |
US10552393B2 (en) | System and method for use of a dynamic flow in a multidimensional database environment | |
EP2738665A1 (en) | Similarity analysis method, apparatus, and system | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US11030196B2 (en) | Method and apparatus for processing join query | |
CN109241159B (zh) | 一种数据立方体的分区查询方法、系统及终端设备 | |
US20180260439A1 (en) | Grouping in analytical databases | |
US10496645B1 (en) | System and method for analysis of a database proxy | |
US10685031B2 (en) | Dynamic hash partitioning for large-scale database management systems | |
CN105556474A (zh) | 管理数据操作的存储器和存储空间 | |
US20190163795A1 (en) | Data allocating system and data allocating method | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN113901279B (zh) | 一种图数据库的检索方法和装置 | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
US20230134030A1 (en) | Time series data injection method, time series data query method, and database system | |
CN109726219A (zh) | 数据查询的方法及终端设备 | |
CN107451154B (zh) | 一种数据表的处理方法、装置及系统 | |
CN111522918A (zh) | 数据汇聚方法、装置、电子设备及计算机可读存储介质 | |
CN110851437A (zh) | 一种存储方法、装置及设备 | |
CN106776704B (zh) | 统计信息收集方法和装置 | |
JP6393193B2 (ja) | データ仮想化装置及び大規模データ処理プログラム | |
CN112527776A (zh) | 数据稽核方法、装置及存储介质 | |
CN113268483A (zh) | 请求处理方法和装置、电子设备和存储介质 | |
US10671587B2 (en) | Reduced fixed length sort of variable length columns | |
CN108932258B (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 |