“时间序列数据库”版本间的差异
(以“=时间序列数据库= 时间序列数据库(Time Series Database, TSDB)是针对时间戳或时间序列数据优化的数据库。时间序列就是跟踪、监...”为内容创建页面) |
|||
第1行: | 第1行: | ||
=时间序列数据库= | =时间序列数据库= | ||
− | 时间序列数据库(Time Series Database, TSDB) | + | |
+ | ==时间序列== | ||
+ | |||
+ | 时间序列数据库(Time Series Database, TSDB)是针对时间戳或时间序列数据优化的数据库。 | ||
+ | |||
+ | 时间序列就是跟踪、监视、缩减采样和随时间聚合的测量或事件,可能是服务器指标,应用程序性能监控,网络数据,传感器数据,事件,点击,市场交易以及许多其他类型的分析数据。 | ||
+ | |||
+ | 与来自常规数据不同,时间序列数据总是会和时间绑定在一起。 | ||
+ | |||
时间序列数据更重要的一个属性是如何去查询它。在查询的时候,对于时间序列我们总是会带上一个时间范围去过滤数据。同时查询的结果里也总是会包含timestamp字段。 | 时间序列数据更重要的一个属性是如何去查询它。在查询的时候,对于时间序列我们总是会带上一个时间范围去过滤数据。同时查询的结果里也总是会包含timestamp字段。 | ||
+ | |||
时间序列数据库分为两类,第一类的数据库按照关系型数据库的说法,其表结构是这样的: | 时间序列数据库分为两类,第一类的数据库按照关系型数据库的说法,其表结构是这样的: | ||
第10行: | 第19行: | ||
SELECT value FROM metric WHERE metric_name=”A” AND timestamp >= B AND timestamp < C | SELECT value FROM metric WHERE metric_name=”A” AND timestamp >= B AND timestamp < C | ||
− | + | 另一类数据库其表结构是: | |
[timestamp] [d1] [d2] .. [dn] [v1] [v2] .. [vn] | [timestamp] [d1] [d2] .. [dn] [v1] [v2] .. [vn] | ||
第18行: | 第27行: | ||
SELECT d2, sum(v1) / sum(v2) FROM metric WHERE d1 = “A” AND timestamp >= B AND timestamp < C GROUP BY d2 | SELECT d2, sum(v1) / sum(v2) FROM metric WHERE d1 = “A” AND timestamp >= B AND timestamp < C GROUP BY d2 | ||
+ | ==时间序列的运算== | ||
在时间序列里常见的需求就是插值、降精度(降频降维)和数据聚合。 | 在时间序列里常见的需求就是插值、降精度(降频降维)和数据聚合。 | ||
2021年9月27日 (一) 11:34的最后版本
时间序列数据库
时间序列
时间序列数据库(Time Series Database, TSDB)是针对时间戳或时间序列数据优化的数据库。
时间序列就是跟踪、监视、缩减采样和随时间聚合的测量或事件,可能是服务器指标,应用程序性能监控,网络数据,传感器数据,事件,点击,市场交易以及许多其他类型的分析数据。
与来自常规数据不同,时间序列数据总是会和时间绑定在一起。
时间序列数据更重要的一个属性是如何去查询它。在查询的时候,对于时间序列我们总是会带上一个时间范围去过滤数据。同时查询的结果里也总是会包含timestamp字段。
时间序列数据库分为两类,第一类的数据库按照关系型数据库的说法,其表结构是这样的:
[metric_name] [timestamp] [value]
其优化的查询方式是:
SELECT value FROM metric WHERE metric_name=”A” AND timestamp >= B AND timestamp < C
另一类数据库其表结构是:
[timestamp] [d1] [d2] .. [dn] [v1] [v2] .. [vn]
其优化的查询方式不限于查询原始数据,而是可以组合查询条件并且做聚合计算,比如:
SELECT d2, sum(v1) / sum(v2) FROM metric WHERE d1 = “A” AND timestamp >= B AND timestamp < C GROUP BY d2
时间序列的运算
在时间序列里常见的需求就是插值、降精度(降频降维)和数据聚合。
举个例子, 智慧园区的业务系统需要查看一个楼宇的某盏灯的耗电量情况,那么就需要把这盏灯的耗电量数据从数据库中查询并展示出来,如果由于采集的故障导致某个时刻用电量数据缺失,那么需要通过特定算法来近似的估算出这个数据,这个计算补全数据的过程就是“插值”。
而当需要查看这盏灯一年的耗电趋势情况时,通常只需要计算出每一天的耗电量,进行查看,而不需要把每一个时刻采集的数据全部输出出来,这个将原始精度转化为业务需求精度的过程就是“降精度”。
而如果要统计某一个楼层或者楼宇的用耗电量整体趋势数据时,就需要将所有统计范围内的灯具的耗电量数据做“合并统计”,这个类似的统计过程就是数据聚合(Aggregation)。
常用的时序数据库
常用的时序数据库包括:
(1)InfluxDB由 Golang 语言编写,进行了用户和角色方面实现的,提供了 Cluster Admin、Database Admin 和 Database User 三种角色。
(2)Graphite主要有两个功能:存储数值型时序列数据、根据请求对数据进行可视化(画图)。分布式时序列数据存储,容易扩展,功能强大的画图Web API,提供了大量的函数和输出方式,Graphite本身不带数据采集功能。
(3)OpenTSDB 是一个分布式、可伸缩的时间序列数据库。它支持豪秒级数据采集所有 metrics,支持永久存储(不需要 downsampling),和 InfluxDB 类似,它也是无模式,以 tag 来实现维度的概念。
(4)Druid 是一个快速、近实时的海量数据开源的 OLAP 系统,并且是。Druid 诞生于 Metamarkets,Druid 会按时间来进行分区(segment),并且是面向列存储的。