InfluxDB是目前比较流行的时间序列数据库
何谓时间序列数据库?
什么是时间序列数据库,最简单的定义就是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等。但是,有什么数据不包含Timestamp呢?几乎所有的数据其实都可以打上一个Timestamp字段。时间序列数据的更重要的一个属性是如何去查询它,包括数据的过滤,计算等等。
Influxdb
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。
它有三大特性:
(1) 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等)。
(2) 度量(Metrics):对实时大量数据进行计算。
(3) 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
同时,它有以下几大特点:
(1) schemaless(无结构),可以是任意数量的列;
(2) min, max, sum, count, mean, median 一系列函数,方便统计;
(3) Native HTTP API, 内置http支持,使用http读写;
(4) Powerful Query Language 类似sql;
(5) Built-in Explorer 自带管理工具。
设计理念:
- 同一时间点多次写入同样的数据被认为是重复写入
- 极少出现删除数据的情况,删除数据基本都是清理过期数据
- 极少更新已有数据且不会出现有争议的更新,时间序列数据总是新数据
- 绝大多数写入是针对最新时间戳的数据,并且数据按时间升序添加
- 数据的规模会非常大,必须能够处理大量的读写操作
- 能够写入和查询数据会比强一致性更重要
- 很多time series非常短暂的存在,所以time series 数量比较大
- 没有哪个point是过于重要的
influxdb的points数据说明:
1、time,默认存储数据会有时间,时间无需关心,会帮助我们自动插入
2、tags:用来存储数据标识,各种有索引的属性
3、fields:用于存储数据,没有索引