1.时序数据库的定义
时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据。时序数据库 (time series database,tsdb) 是优化用于摄取、处理和存储时间戳数据的数据库。此类数据可能包括来自服务器和应用程序的指标、来自物联网传感器的读数、网站或应用程序上的用户交互或金融市场上的交易活动。
时序数据的主要数据属性如下:
- 每个数据点都包含用于索引、聚合和采样的时间戳。该数据也可以是多维的和相关的;
- 写多读少,需要支持秒级和毫秒级甚至纳秒级高频写入;查询通常是多维聚合查询,对查询的延迟要求比较高
- 数据的汇总视图(例如,下采样或聚合视图、趋势线)可能比单个数据点提供更多的洞察力。例如,考虑到网络不可靠性或传感器读数异常,我们可能会在一段时间内的某个平均值超过阈值时设置警报,而不是在单个数据点上这样做;
- 分析数据通常需要在一段时间内访问它(例如,给我过去一周的点击率数据);
虽然其他数据库也可以在数据规模较小时一定程度上处理时间序列数据,但 tsdb可以更有效地处理随时间推移的数据摄取、压缩和聚合。以车联网场景为例,20000辆车,每个车60个指标,假设每秒采集一次,那么每秒将上报20000 * 60 = 1200000指标值,即120w数据指标值每秒,每个指标值为16字节(假设仅包括8字节时间戳和8字节的浮点数),则每小时将产生64g左右的数据。而实际上每个指标值还会附带标签等额外数据,实际需要存储空间会更大。
简而言之,时序数据库是专门用于存储和处理时间序列数据的数据库,支持时序数据高效读写、高压缩存储、插值和聚合等功能。
2.时序数据库相关概念
时序数据库是专门处理时序数据的数据库,因此其相关概念是和时序数据紧密联系的,下面是时序数据库的一些基本概念。
* 度量 metric:metric 类似关系型数据库里的表(table),代表一系列同类时序数据的集合,例如为空气质量传感器建立一个 table,存储所有传感器的监测数据。
* 标签 tag:tag 描述数据源的特征,通常不随时间变化,例如传感器设备,包含设备 deviceid、设备所在的 region 等 tag 信息,数据库内部会自动为 tag 建立索引,支持根据 tag 来进行多维检索查询;tag 由 tag key、tag value 组成,两者均为 string 类型。
* 时间戳 timestamp:timestamp代表数据产生的时间点,可以写入时指定,也可由系统自动生成;
* 量测值 field:field描述数据源的量测指标,通常随着时间不断变化,例如传感器设备包含温度、湿度等field;
* 数据点data point: 数据源在某个时间产生的某个量测指标值(field value)称为一个数据点,数据库查询、写入时按数据点数来作为统计指标;
* 时间线 time series :数据源的某一个指标随时间变化,形成时间线,metric tags field 组合确定一条时间线;针对时序数据的计算包括降采样、聚合(sum、count、max、min等)、插值等都基于时间线维度进行;
3.时序数据库的发展趋势
时序数据库的发展趋势,可以从db-engines()获取获取到,下图是db-engines收录的数据库近24个月的发展趋势,其中时序数据库的活跃度最高,且随时间呈现越来越活跃的趋势。
下图是db-engines收录的时序数据库的排名,其中排名最高的时序数据库是2013年开源的influxdb。
时序数据库应用场景
时序数据库的应用场景在物联网和互联网apm等场景应用比较多,下面是列举了一些时序数据库的应用场景,但不是全部:
* 公共安全:上网记录、通话记录、个体追踪、区间筛选;
* 电力行业:智能电表、电网、发电设备的集中监测;
* 互联网:服务器/应用监测、用户访问日志、广告点击日志;
* 物联网:电梯、锅炉、机械、水表等各种联网设备;
* 交通行业:实时路况、路口流量监测、卡口数据;
* 金融行业:交易记录、存取记录、atm、pos机监测;
感谢分享~~
感谢分享
感谢分享
感谢分享
感谢分享
想找个项目亲自测一下
感谢分享
感谢精彩分享
-- 高级云网管
感谢分享