基础概念
前言
在深入了解 CnosDB 之前,我们需要先熟悉一下 CnosDB 中的一些基本概念,这将有助于我们后续的学习以及更好的使用 CnosDB 。为了帮助大家更好的理解这些概念,本篇文章将借助一个示例向大家介绍各个元素是如何在 CnosDB 中协同工作的,并在文中最后章节处罗列了各个概念的含义。
示例数据:
test ❯ select * from air limit 5;
+---------------------+-------------+----------+-------------+------------+
| time | station | pressure | temperature | visibility |
+---------------------+-------------+----------+-------------+------------+
| 2023-01-14T16:00:00 | XiaoMaiDao | 63.0 | 80.0 | 79.0 |
| 2023-01-14T16:03:00 | XiaoMaiDao | 58.0 | 64.0 | 78.0 |
| 2023-01-14T16:06:00 | XiaoMaiDao | 65.0 | 79.0 | 67.0 |
| 2023-01-14T16:09:00 | LianYunGang | 51.0 | 75.0 | 64.0 |
| 2023-01-14T16:12:00 | LianYunGang | 60.0 | 50.0 | 67.0 |
+---------------------+-------------+----------+-------------+------------+
Query took 0.027 seconds.
该数据是从 oceanic_stations
开放数据集中的 air
表中获取的5条数据作为示例讲解,可以看到该表共由5列组成:分别为 time
列、station
列、pressure
列、tempreture
列和 visibility
列,我们将详细分析一下这些数据。
首先我们能够明确,在该示例中,库就是
oceanic_stations
,表则是air
。CnosDB 是一个时序数据库,所以对于 CnosDB 来说,它开始的一切根源就是-时间。在上面数据中,第一列的列名为
time
,在 CnosDB 中所有的数据库都有这一列。time
存着时间戳,这个时间戳遵循 RFC3339 标准。接下来的
station
列为标签列,它表示是一个实体,即代表着数据源的id
。在该例表明我们采集的数据是从XiaoMaiDao
这个station
采集到的。标签是由key
和value
组成的,key
和value
都作为字符串存储,并记录在元数据中。示例中:key
为station
,value
为XiaoMaiDao
和LianYunGang
。
在上述示例中,标签组是不同的每组 key
和 value
的集合,示例数据中一共有两个标签组:
station = XiaoMaiDao
station = LianYunGang
- 最后
pressure
、temperature
、visibility
这三列是字段列,它也是由 key 和 value列组成的,该例中key
为pressure
、temperature
、visibility
,都是字符串,他们存储元数据。value 就是表示数据,可以是字符串类型或其它类型。在该例中value如下:
63.0 80.0 79.0
58.0 64.0 78.0
65.0 79.0 67.0
51.0 75.0 64.0
60.0 50.0 67.0
在上述示例中,字段组就是每组的 key
和 value
的集合,示例数据中一共有五个字段组:
pressure = 63.0 temperature = 80.0 visibility = 79.0
pressure = 58.0 temperature = 64.0 visibility = 78.0
pressure = 65.0 temperature = 79.0 visibility = 67.0
pressure = 51.0 temperature = 75.0 visibility = 64.0
pressure = 60.0 temperature = 50.0 visibility = 67.0
注意:标签列不同于字段列,标签是索引起来的,这意味着对标签的查询更快,而字段是没有索引的。如果使用字段值作为过滤条件来查询,则必须扫描其他条件匹配后的所有值。故标签是存储常用数据的最佳选择。
关键概念
时间序列
在时序数据库中,时间序列是指按照时间顺序排列的数据点序列。它包含了时间戳和相应的数值或事件,用于记录和分析随时间变化的数据。
库
数据库是由多张表组成的,这与关系型数据库类似。每张表存储不同结构的数据。用户可以使用SQL操纵数据库中的不同表,也可以进行表的连接查询。
表
表组织着有相同标签,字段的数据行。这十分类似关系型数据库中表的概念。时间戳,标签,字段就相当于关系型数据库中表的列。
时间戳
时序数据库要求写入的每一条数据都带有时间戳,表示采集到该条数据的时刻。CnosDB 支持设置时间的精度。
标签列
在时序数据库的应用场景中,有些数据是不随时间变化而变化的,比如物联网采集设备的所在地,设备的名字,设备的所有者。这些数据我们称之为标签,使用字符串(STRING)来存储Tag。
标签值
标签所对应的值。
标签组
标签组通常由一个或多个标签组成,每个标签都是一个键值对,用于描述数据的特征或属性。
字段列
在时序数据库的应用场景中,有些数据是随时间变化而变化的,比如物联网采集设备所收集的数据。对检测环境的设备来说,它采集的室温,湿度等信息就是随时间变化而变化,这些数据我们称之为字段。
字段值
字段所对应的值。
字段组
字段组通常由一个或多个字段组成,每个字段存储一个特定的数据值。
行
CnosDB 中的行是时间戳,标签,字段组成的数据行。一个时间戳,一组标签,一组字段,就组成了一个数据行,也可以将其称之为点。一个数据行必须包含一个时间戳,至少一个标签和一个字段。
存储策略
CnosDB 支持设置一个数据库的不同存储策略,数据保留时间,数据分片数目,分片设置策略,时间精度等。