您当前的位置:首页 > 互联网教程

时序数据库 -- InlfuxDB

发布时间:2025-05-24 06:43:45    发布人:远客网络

时序数据库 -- InlfuxDB

一、时序数据库 -- InlfuxDB

InlfuxDB是一种高性能查询和存储的时序性数据库。

时间序列数据如同历史烙印,具有不变性、唯一性和时间排序性。

时间序列数据是基于时间的一系列数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。

时序数据库就是存放事件序列数据的数据库,需要支持时序数据的快速写入、持久化、多维度的聚合查询等基本功能。

InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。

InfluxDB主要有以下图中的几个概念:Point,Measurement,Tags,Fields,Timestamp,Series,下面依次简单介绍下每个概念的含义。

InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。此外它还有如下特性:

TICK是由InfluxData开发的一套运维工具栈,由Telegraf, InfluxDB, Chronograf, Kapacitor四个工具的首字母组成。

这一套组件将收集数据和入库、数据库、绘图、告警四者囊括了。

Telegraf是一个数据收集和入库的工具。提供了很多input和output插件,比如收集本地的cpu、load、网络流量等数据,然后写入InfluxDB或者Kafka等。

Chronograf绘图工具,有点是绑定了Kapacitor,目前大多数选择了成熟很多的Grafana。

Kapacitor是InfluxData家的告警工具,通过读取InfluxDB中的数据,根据DLS类型配置TickScript来进行告警。

InfluxDB本身是支持集群化的,但是开源的不支持。InfluxDB在0.12版本开始不再开源cluster源码,而是被用作提供商业服务。

目前官方开源的InfluxDB-Relay采用的是双写模式,仅仅解决数据备份的问题,并为解决influxdb的读写性能问题。

即使是单机版,其性能也足以支撑大部分业务。

InfluxDB目前推出了2.0版本,由于改动较大,所以和1.x版本并存。目前官方推荐的稳定版本依旧是1.x版本。2.0主要的更改包括以下内容:

二、时序数据库技术体系 – InfluxDB TSM存储引擎之数据写入

1、关于时序数据库InfluxDB的TSM存储引擎,其数据写入过程涉及多个步骤。首先,用户可以使用多种接口协议如collected、opentsdb或http、udp批量写入数据,这些数据会经过批处理,按照InfluxDB的Sharding策略进行分组,即按照时间范围和SeriesKey的哈希值分配到不同的shard。单机InfluxDB主要基于时间范围进行分片,而分布式版本会包括哈希分片。

2、写入过程中,数据首先经过倒排索引引擎,构建LSM(Log-Structured Merge)结构。LSM引擎因其对写入性能的优化,适合写多读少的场景,如时序数据库。数据写入WAL(Write Ahead Log)后,会被缓存并返回给用户确认写入成功。当满足特定条件,数据会被从缓存flush到磁盘,形成文件并通过合并优化存储效率。

3、对于时序数据的写入,数据点会先按照SeriesKey进行处理,确认其是否已存在于倒排索引中。如果不存在,就将其写入内存的倒排索引中,这个索引包含了测量值与维度值的映射关系。写入过程会触发flush操作,将内存中的数据写入TSM文件,并在内存中构建Index Entry。

4、在删除操作上,InfluxDB采取了特殊的策略,通常不会删除单个记录,而是删除指定范围或维度的数据。删除操作在TSM Engine和倒排索引Engine中各有不同的处理方式,TSM Engine执行同步删除,而倒排索引Engine则标记删除。

5、总的来说,InfluxDB的写入流程复杂但设计巧妙,理解其内部结构对于深入掌握其工作原理至关重要。尽管写入过程可能显得繁琐,但理解了文件内部组织和倒排索引的结构,就能更好地掌握其工作原理。而新一代的WRITE-BUG平台提供了优秀的创作和协作体验,是理解时序数据库技术的好帮手。

三、再不懂时序就OUT啦!阿里云数据库InfluxDB正式商业化

阿里云数据库 InfluxDB®版已于近日正式启动商业化。云数据库 InfluxDB®是基于当前最流行的开源数据库 InfluxDB提供的在线数据库服务,相比较开源具有免运维,稳定可靠,可弹性伸缩的优势,广泛应用于互联网基础资源监控,容器监控,业务运营监控分析,物联网设备远程实时监控,工业安全生产监控,生产质量评估和故障回溯。提供时序数据自动化采集,压缩存储,类SQL查询,多维聚合计算和数据可视化分析能力。点击关注,InfluxDB商业化活动

时序数据和企业业务密切相关,不可或缺。任何一家企业都需要一套高效的运维系统保证实时发现应用和业务问题,通过监控,故障告警的手段,进行故障定位,保证在线业务的稳定,减少不可用时常。业务运营人员依赖运营系统,保证有充足的数据进行业务分析判断,便于更准确的做出业务决策。物联网企业和工业企业都需要能够实时掌握设备的运行状态,对生产过程进行监控,实时判故障预警,故障定位,故障回溯以及业务。以上业务场景都需要时序数据作为“数据证据”来表示指标“变化”过程,进而达到告警,诊断,修复和预测的业务目的。

时序数据很简单,构成具有三个要素,主体,时间戳,和指标数据。比如: xxx公司(主体)2019年8月26日上午10时,11时, 12时(时间戳)的股价分别是:160 USD,165 USD,180 USD(指标值)。概括来说,区别于关系数据库关心的是“最终结果”。时序数据表示的是资产或者过程是如何随着时间变化的,体现的是“变化”的过程价值。

时序数据主要应用在:运维监控,运营分析,设备监控,BI分析,工业安全生产监控场景。这些场景上,产生的核心数据是时序数据,业务特征表现在写多读少,无事务性要求,数据分析强关联时间维度,且实时性要求高。

时序数据库针对时序数据业务特征进行针对性的数据存储结构设计,以及存储方式的优化,在监控等时序业务场景下数据的写入,读取,分析能力相比较传统的关系型数据库如 MySQL,具有百倍的性能提升。

从数据存储架构上看,关系数据库通常按照行来记录一条时间记录数据,且顺序记录之间无主体关联性,单个主体的记录数据随机分散在多行,如果是分布式数据库甚至分布在多个分分库上,记录之间也没有时间顺序组织数据,连续时间戳的数据,分散在不连续的存储上,这样就造成按照主体和时间维度的数据写入和存储的效率大大降低。

而时序数据库按照主体为维度进行数据存储和索引,完全按照业务使用场景组织数据,相同主体指标数据组织在一起,并且按照时间为度进行分片存储,只需要获取主体信息和时间分片信息就可以顺序进行写入和读取操作。单次IO请求磁盘寻道的时间和获取数据量比关系数据库寻道的效率和获取数据量都要高,查询的时间区间越大,查询主体越多,数据越多,效率差异越大,整体性能比关系数据库要高出十倍甚至百倍。

云InfluxDB®相比较开源InfluxDB优势明显。云InfluxDB提供云服务的方式,有行业顶级的专家支持服务,具有免安装,免运维,稳定性高,数据高可靠的优势。使用云存储的方案,数据多副本存储,数据可靠性达到99.9999%。

云 InfluxDB提供了快速迁云的工具,只需动动鼠标就可以完成自建InfluxDB到云 InfluxDB的迁移。

阿里云 InfluxDB完全兼容开源 InfluxDB,面向开发友好,为了方便传统关系数据库开发者能够快速适应Influx DB开发,提供给了类 SQL的查询语言 InfluxQL,在提供强大的时序分析能力的基础上,最大程度的沿用了SQL的开发模式,使得学习成本大大降低。

阿里云数据库 InfluxDB继承了 Influx DB良好的开源生态,具有完整的数据采集,存储和数据可视化监控告警体系 TICK Stack支撑。同时相比较开源产品,提供了产品化的数据采集服务,只需在控制台进行几步简单操作,“0”代码完成各类监控源的监控数据自动采集。

云InfluxDB®金融高可用版即将推出

服务的高可靠和数据一致性对金融类企业至关重要,开源的InfluxDB没有提供高可靠的HA版本,阿里云InfluxDB针对金融,保险,银行,涉及数据和服务高可靠的研发了 HA高可用版本,目前正在商业化上线的过程中,不久就可上线提供服务。

云InfluxDB®商业化限时优惠