InfluxDB原理与实战
上QQ阅读APP看书,第一时间看更新

1.3 InfluxDB的特性

作为一个开源系统,InfluxDB究竟有什么魅力吸引了如此多的用户,从而在时序型数据库DB-Engines Ranking上排名第一呢?

1.3.1 InfluxDB的特点

InfluxDB是支持时序数据高效读写、压缩存储、实时计算能力的数据库服务,除了具有成本优势的高性能读、高性能写、高存储率,InfluxDB还具有如下特点:

❑无系统环境依赖,部署方便。

❑无模式(schema-less)的数据模型,灵活强大。

❑原生HTTP管理接口,免插件配置和免第三方依赖。

❑强大的类SQL查询语句,学习成本低,上手快。

❑丰富的权限管理功能:精细到“表”级别。

❑丰富的时效管理功能:自动删除过期数据,自定义删除指标数据。

❑低成本存储,采样时序数据,压缩存储。

❑丰富的聚合函数,支持AVG、SUM、MAX、MIN等聚合函数。

1.3.2 核心概念

InfluxDB实现了类SQL的接口,尽管与传统关系型数据库(如MySQL)语法相似,但InfluxDB在语义体系上有些差别,接下来将以一条CPU利用率的时序数据为例介绍相关的核心概念,如代码清单1-3所示。

代码清单1-3 一条CPU利率的时序数据

        > insert cpu_usage, host=server01, location=cn-sz user=23.0, system=57.0
        > select * from cpu_usage
        name: cpu_usage
        time                host      location system user
        ----                ----      -------- ------ ----
        1557834774258860710 server01 cn-sz     55      25
        >

❑时间(Time):如代码清单1-3中的“1557834774258860710”,表示数据生成时的时间戳,与MySQL不同的是,在InfluxDB中,时间几乎可以看作主键的代名词。

❑表(Measurement):如代码清单1-3中的“cpu_usage”,表示一组有关联的时序数据,类似于MySQL中表(Table)的概念。

❑标签(Tag):如代码清单1-3中的“host=server01”和“location=cn-sz”,用于创建索引,提升查询性能,一般存放的是标示数据点来源的属性信息,在代码清单1-3中,host和location分别是表中的两个标签键,对应的标签值分别为server01和cn-sz。

❑指标(Field):如代码清单1-3中的“user=23.0”和“system=57.0”,一般存放的是具体的时序数据,即随着时间戳的变化而变化的数据,与标签不同的是,未对指标数据创建索引,在代码清单1-3中,user和system分别是表中的两个指标键,对应的指标值分别为23.0和57.0。

❑时序数据记录(Point):如代码清单1-3中的“1557834774258860710 server01 cn-sz 55 25”,表示一条具体的时序数据记录,由时序(Series)和时间戳(Timestamp)唯一标识,类似于MySQL中的一行记录。

❑保留策略(Retention Policy):定义InfluxDB的数据保留时长和数据存储的副本数,通过设置合理的保存时间(Duration)和副本数(Replication),在提升数据存储可用性的同时,避免数据爆炸。

❑时间序列线(Series):表示表名、保留策略、标签集都相同的一组数据。