c时序数据库
- 行业动态
- 2025-02-21
- 2
时序数据库(Time Series Database,TSDB)是优化用于摄取、处理和存储时间戳数据的数据库,此类数据可能包括来自服务器和应用程序的指标、来自物联网传感器的读数、网站或应用程序上的用户交互或金融市场上的交易活动。
一、基本概念
1、度量(Metric):类似关系型数据库里的表(Table),代表一系列同类时序数据的集合,例如为空气质量传感器建立一个表,存储所有传感器的监测数据。
2、标签(Tag):描述数据源的特征,通常不随时间变化,例如传感器设备包含设备 DeviceId、设备所在的 Region 等 Tag 信息,数据库内部会自动为 Tag 建立索引,支持根据 Tag 来进行多维检索查询。
3、时间戳(Timestamp):代表数据产生的时间点,可以写入时指定,也可由系统自动生成。
4、量测值(Field):描述数据源的量测指标,通常随着时间不断变化,例如传感器设备包含温度、湿度等 Field。
5、数据点(Data Point):数据源在某个时间产生的某个量测指标值(Field Value)称为一个数据点,数据库查询、写入时按数据点数来作为统计指标。
6、时间线(Time Series):数据源的某一个指标随时间变化,形成时间线,Metric + Tags + Field 组合确定一条时间线,针对时序数据的计算包括降采样、聚合(sum、count、max、min 等)、插值等都基于时间线维度进行。
二、特点
1、写入模式:时序数据随时间增长,相同维度重复取值,指标平滑变化,面对的往往是百万甚至千万数量级终端设备的实时数据写入,但数据大多表征设备状态,写入后不会更新。
2、查询方式:按不同维度对指标进行统计分析,且存在明显的冷热数据,一般只会频繁查询近期数据。
3、存储原理:传统数据库存储采用的都是 B tree,而时序数据库通常都是采用 LSM Tree 的变种,顺序写磁盘来增强数据的写入能力。
三、应用场景
1、系统运维和业务实时监控:在业务服务器上部署各种脚本客户端,实时采集服务器指标数据(IO 指标、CPU 指标、带宽内存指标等等)、业务相关数据(方法调用异常次数、响应延迟、JVM GC 相关数据等等)、数据库相关数据(读取延迟、写入延迟等等),这些数据都是时间序列相关的。
2、物联网设备状态监控存储分析:可预知的未来 3~5 年,随着物联网以及工业 4.0 的到来,所有设备都会携带传感器并联网,传感器收集的时序数据将严重依赖 TSDB 的实时分析能力、存储能力以及查询统计能力。
四、发展趋势
从 DB-engines 的排名可以看出,时序数据库的活跃度最高,且随时间呈现越来越活跃的趋势,其中排名最高的时序数据库是 2013 年开源的 InfluxDB。
五、相关产品及工具
1、InfluxDB:是一个开源的时序数据库,具有高性能、可扩展性强等特点,广泛应用于各种时序数据的存储和分析场景。
2、TimescaleDB:基于 PostgreSQL 的时序数据库插件,提供了强大的时序数据处理功能,如自动分区、压缩和连续聚合等。
六、与传统关系型数据库的区别
1、数据结构:传统关系型数据库采用 B+树数据结构,在数据写入时,有可能会触发叶裂变,从而产生了对磁盘的随机读写,降低写入速度;而时序数据库通常采用 LSM Tree 的变种,顺序写磁盘来增强数据的写入能力。
2、适用场景:传统关系型数据库适用于事务处理等场景;而时序数据库则更专注于处理带有时间标签的数据,如物联网设备监控、互联网业务监控等场景。
七、FAQs
1、什么是时序数据库中的数据点?
数据点是数据源在某个时间产生的某个量测指标值(Field Value),数据库查询、写入时按数据点数来作为统计指标。
2、时序数据库与关系型数据库有何区别?
传统关系型数据库采用 B+树数据结构,在数据写入时可能会触发叶裂变,产生对磁盘的随机读写,降低写入速度;而时序数据库通常采用 LSM Tree 的变种,顺序写磁盘来增强数据的写入能力,两者在适用场景上也有所不同,传统关系型数据库适用于事务处理等场景,而时序数据库更专注于处理带有时间标签的数据。