目录

第1章 时序数据库InfluxDB简介

1.1 数据简史 ······························································································2

1.1.1 什么是时序数据 ··················································································3

1.1.2 时序数据库的历史 ···············································································3

1.2 InfluxDB简介 ························································································4

1.2.1 什么是InfluxDB ··················································································4

1.2.2 InfluxDB的历史 ··················································································5

1.2.3 InfluxDB现状及未来 ············································································6

1.3 InfluxDB的基本概念 ···············································································7

1.4 InfluxDB的设计理念 ···············································································7

1.5 InfluxDB的核心特性 ···············································································8

1.5.1 内置REST接口 ··················································································8

1.5.2 数据Tag标记 ·····················································································8

1.5.3 类SQL的查询语句 ··············································································9

1.5.4 高性能 ······························································································9

1.5.5 开源 ·······························································································10

1.6 时序数据库的应用场景 ··········································································10

1.6.1 在工业环境监控中的应用 ····································································10

1.6.2 在物联网IoT设备采集存储中的应用 ·····················································11

1.6.3 互联网业务性能监控服务 ····································································11

1.6.4 在智能汽车中的应用 ··········································································12

1.7 小结 ··································································································12

第2章 InfluxDB的安装、配置、启动

2.1 在不同操作系统上安装InfluxDB································································14

2.1.1 硬件要求 ·························································································14

2.1.2 在Ubuntu和Debian系统中安装InfluxDB ···············································15

2.1.3 在RedHat和CentOS系统中安装InfluxDB ··············································20



2.1.4 在Windows系统中安装InfluxDB··························································21

2.1.5 在macOS系统中安装InfluxDB ·····························································22

2.1.6 使用Docker安装InfluxDB ···································································24

2.1.7 InfluxDB的端口设置 ··········································································25

2.1.8 InfluxDB 程序的使用 ··········································································25

2.1.9 InfluxDB的配置详解 ··········································································31

2.2 小结 ··································································································37

第3章InfluxDB UI数据可视化

3.1 InfluxDB UI ·························································································39

3.1.1 安装配置 ·························································································39

3.1.2 常用功能介绍 ···················································································41

3.2 Chronograf ·························································································47

3.2.1 安装配置 ·························································································48

3.2.2 常用功能介绍 ···················································································50

3.3 小结 ··································································································57

第4章InfluxDB基本操作写入与查询

4.1 客户端命令行方式 ················································································59

4.1.1 简介·······························································································59

4.1.2 使用InfluxDB ···················································································59

4.1.3 Influx基本命令·················································································61

4.2 数据样本 ····························································································62

4.2.1 空气传感器样本数据 ··········································································63

4.2.2 鸟类迁徙样本数据 ·············································································64

4.2.3 NOAA样本数据 ················································································64

4.2.4 美国地质勘探局地震数据 ····································································64

4.3 行协议 ·······························································································65

4.3.1 行协议案例 ······················································································65

4.3.2 行协议语法 ······················································································66

4.3.3 行协议要素分析 ················································································66

4.3.4 数据类型 ·························································································67

4.3.5 引号·······························································································68

4.3.6 特殊字符 ·························································································68

4.3.7 注释·······························································································69

4.3.8 重复数据 ·························································································69

4.4 桶操作 ·······························································································70


目 录

VII

4.5 写入操作 ····························································································71

4.5.1 写入数据 ·························································································71

4.5.2 文件数据导入 ···················································································72

4.6 查询操作 ····························································································73

4.6.1 select语句 ·······················································································74

4.6.2 类型转换 ·························································································77

4.6.3 where子句 ·······················································································78

4.6.4 函数 ·······························································································80

4.6.5 group by子句 ···················································································82

4.6.6 into子句 ··························································································85

4.6.7 排序 ·······························································································86

4.6.8 limit和slimit子句 ·············································································86

4.6.9 offset和soffset子句 ···········································································86

4.6.10 Time Zone子句 ················································································87

4.6.11 时间语法 ························································································87

4.7 小结 ··································································································88

第5章 InfluxDB的函数与运算

5.1 样本数据导入 ······················································································90

5.2 InfluxDB函数 ······················································································91

5.2.1 函数说明 ·························································································91

5.2.2 聚合类函数 ······················································································92

5.2.3 选择类函数 ······················································································94

5.2.4 转换类函数 ······················································································95

5.2.5 预测类函数 ······················································································98

5.3 数学运算 ····························································································99

5.3.1 常用运算符 ······················································································99

5.3.2 数学运算符的常见问题 ······································································101

5.4 小结 ································································································102

第6章 InfluxDB连续查询

6.1 连续查询 ··························································································104

6.2 样本数据导入 ····················································································104

6.3 创建连续查询 ····················································································106

6.3.1 <cq_query>语句 ···············································································106

6.3.2 连续查询运行时刻及查询的时间范围 ····················································107

6.3.3 连续查询举例 ··················································································107



6.4 复杂连续查询 ····················································································109

6.4.1 创建高级连续查询 ············································································109

6.4.2 高级连续查询的时间设置 ···································································109

6.4.3 GROUP BY time()、EVERY、FOR三者关系 ···········································111

6.4.4 高级连续查询举例 ············································································112

6.5 连续查询的管理 ··················································································113

6.5.1 查询所有连续查询 ············································································113

6.5.2 删除连续查询 ··················································································114

6.5.3 修改连续查询 ··················································································114

6.6 连续查询案例分析 ···············································································114

6.6.1 数据预处理 ·····················································································115

6.6.2 降低数据采样率 ···············································································115

6.6.3 HAVING功能 ··················································································116

6.6.4 替换嵌套函数 ··················································································116

6.7 小结 ·································································································117

第7章InfluxDB数据保留策略

7.1 保留策略 ···························································································119

7.2 创建保留策略 ·····················································································119

7.2.1 使用CREATE RETENTION POLICY创建保留策略 ························119

7.2.2 创建保留策略举例 ············································································121

7.3 查询保留策略 ····················································································121

7.4 修改保留策略 ····················································································122

7.5 删除保留策略 ····················································································123

7.6 综合实例 ··························································································123

7.6.1 样本数据 ························································································123

7.6.2 实验目标 ························································································124

7.6.3 实验过程 ························································································124

7.6.4 结论······························································································126

7.7 小结 ································································································126

第8章InfluxDB数据安全策略

8.1 认证技术 ··························································································128

8.1.1 简介······························································································128

8.1.2 认证方式 ························································································128

8.1.3 Token认证 ······················································································128

8.1.4 1.x版本兼容授权认证 ·······································································131


目 录

8.1.5 授权使用 ························································································137

8.2 权限类型 ··························································································142

8.3 用户管理 ··························································································143

8.4 权限控制实战 ····················································································146

8.4.1 创建与授权 ·····················································································146

8.4.2 测试效果 ························································································147

8.5 小结 ································································································149

第9章 InfluxDB性能评估

9.1 性能测试工具 ····················································································151

9.1.1 安装Go语言运行环境 ·······································································151

9.1.2 测试工具安装 ··················································································153

9.2 基准性能测试 ····················································································154

9.2.1 测试环境 ························································································154

9.2.2 写入性能测试 ··················································································154

9.3 性能优化 ··························································································157

9.3.1 数据写入优化方案 ············································································157

9.3.2 数据查询优化方案 ············································································157

9.4 性能报警 ··························································································159

9.4.1 创建检查 ························································································159

9.4.2 添加通知端点 ··················································································162

9.4.3 创建通知规则 ··················································································163

9.5 小结 ································································································164

第10章 InfluxDB集群

10.1 集群简介 ·························································································166

10.1.1 集群架构概述 ················································································166

10.1.2 数据所在的地方 ·············································································166

10.1.3 节点数量 ······················································································167

10.2 集群安装配置 ···················································································167

10.2.1 申请试用 ······················································································167

10.2.2 环境准备 ······················································································169

10.2.3 添加DNS条目 ···············································································170

10.2.4 Meta节点的安装配置 ·······································································171

10.2.5 Data节点的安装配置 ·······································································173

10.3 小结 ·······························································································176



第11章 备份管理

11.1 单机版备份管理 ················································································178

11.1.1 备份数据 ·······················································································178

11.1.2 恢复数据 ·······················································································179

11.2 集群版备份管理 ················································································180

11.2.1 备份数据 ·······················································································181

11.2.2 恢复数据 ·······················································································182

11.2.3 导出数据 ·······················································································184

11.2.4 导入数据 ·······················································································185

11.3 小结 ·······························································································185

第12章 InfluxDB与程序设计

12.1 Java SDK使用 ·················································································187

12.1.1 使用Java在InfluxDB中写入数据 ·······················································188

12.1.2 WriteApiBlocking ············································································192

12.1.3 使用Java查询InfluxDB中的数据 ·······················································193

12.1.4 queryApi ·······················································································195

12.1.5 使用Java为bucket添加权限 ·····························································196

12.1.6 连接InfluxDB的另一种方式—用户名和密码 ······································198

12.2 Python SDK使用 ··············································································200

12.2.1 使用Python在InfluxDB中写入数据 ····················································201

12.2.2 使用Python查询InfluxDB中的数据 ····················································202

12.3 小结 ·······························································································203

第13章 InfluxDB数据处理语言Flux

13.1 Flux概述 ························································································205

13.2 基本数据类型 ···················································································205

13.2.1 Boolean(布尔值) ·········································································206

13.2.2 Bytes(字节) ················································································206

13.2.3 Duration(持续时间) ······································································206

13.2.4 String(字符串类型) ······································································207

13.2.5 Time(时间类型) ··········································································207

13.2.6 Float(浮点类型) ··········································································208

13.2.7 Integer(整数类型) ········································································208

13.2.8 Null(空值) ·················································································209



13.3 查询数据源 ······················································································209

13.3.1 from()函数 ····················································································210

13.3.2 range()函数 ···················································································210

13.3.3 查询InfluxDB 1.x ············································································211

13.3.4 远程查询InfluxDB Cloud 或InfluxDB 2.x ··············································211

13.4 写入数据源 ······················································································212

13.5 小结 ·······························································································213

第14章 InfluxDB存储引擎

14.1 InfluxDB存储引擎历史 ·······································································215

14.2 LSM-Tree(LSM树)概述··································································215

14.2.1 LSM-Tree存储原理 ·········································································216

14.2.2 优势和问题 ···················································································220

14.3 InfluxDB数据格式 ·············································································220

14.4 TSM存储组件 ··················································································221

14.5 TSM file详解 ··················································································222

14.5.1 SeriesKey(时间序列关键字) ···························································223

14.5.2 Series Data Block ·············································································224

14.5.3 Series Index Block ············································································225

14.6 TSM数据写入 ··················································································227

14.6.1 写入总体框架 ················································································227

14.6.2 Shard路由 ·····················································································228

14.6.3 倒排索引引擎构建倒排索引 ······························································228

14.6.4 写入流程 ······················································································229

14.7 小结 ·······························································································230