據(jù)IDC預測,全球數(shù)據(jù)將從2018年的33ZB(澤字節(jié))增長到2025年的175ZB,年均復合增長率為23%。到2025年,全球聯(lián)網設備會有1500億臺,其中大多數(shù)設備將產生實時數(shù)據(jù)。屆時,實時數(shù)據(jù)將超過其他類型的數(shù)據(jù),成為全球第一大數(shù)據(jù)。
智能制造2025、工業(yè)互聯(lián)網、工業(yè)4.0等政策推動了時序數(shù)據(jù)庫的發(fā)展,全球對工業(yè)品的需求逐年上升。中國作為工業(yè)大國,2020年開始大力發(fā)展新基建,時序數(shù)據(jù)庫作為智能制造的基礎軟件,其發(fā)展也同步受到關注。
和操作系統(tǒng)一樣,數(shù)據(jù)庫屬于基礎軟件,更新迭代慢,一旦使用,可以在生產環(huán)境運行十幾年,替換成本高,且企業(yè)替換意愿不強。企業(yè)初期選擇數(shù)據(jù)庫會非常慎重,使用后無論是管理層、執(zhí)行層,還是技術人員都很難主動提出替換建議。
替換成本高、周期長、風險高造成了企業(yè)只相信頭部數(shù)據(jù)庫產品。毫無疑問,目前使用最多、技術生態(tài)最完善的時序數(shù)據(jù)庫之一就是InfluxDB。InfluxDB是一個開源的、高性能的時序數(shù)據(jù)庫,在時序數(shù)據(jù)庫榜單DB-Engines Ranking上排名第一。正因為如此,熟練掌握InfluxDB已成為相關開發(fā)者非常重要的一項技能。本書將帶領大家從InfluxDB的基礎開始,一步一步理解InfluxDB,相信這些內容會對大家有幫助。
如何閱讀本書
本書既是教程,又是參考指南,同時也適合作為高校相關專業(yè)教材。如果讀者剛剛接觸時序數(shù)據(jù)庫開發(fā),按照本書的章節(jié)順序學習定會有所收獲。
本書共14章,每章的內容簡單介紹如下:
第1章主要介紹了什么是時序數(shù)據(jù)、InfluxDB是什么,以及InfluxDB的發(fā)展歷史。
第2章主要介紹了InfluxDB的安裝及配置。
第3章主要介紹了InfluxDB的可視化UI工具。
第4章主要介紹了InfluxDB的基本寫入、查詢操作。
第5章主要介紹了InfluxDB的常用函數(shù)和運算。
第6章主要介紹了InfluxDB的連續(xù)查詢。
第7章主要介紹了InfluxDB的數(shù)據(jù)保留策略。
第8章主要介紹了InfluxDB的數(shù)據(jù)安全策略。
第9章主要介紹了InfluxDB的性能評估。
第10章主要介紹了InfluxDB集群相關內容。
第11章主要介紹了InfluxDB的數(shù)據(jù)備份與恢復。
第12章主要介紹了InfluxDB與程序設計。
第13章主要介紹了InfluxDB數(shù)據(jù)處理語言FLux。
第14章主要介紹了InfluxDB存儲引擎知識。
讀者對象
在本書的編寫過程中,盡可能做到通俗易懂、由淺入深,不僅適用于初學者學習,也適用于專業(yè)人員學習。
本書可作為高校相關專業(yè)教材,也適合軟件工程師、軟件架構師、數(shù)據(jù)庫工程師等從業(yè)人員閱讀。
讀者交流與圖書反饋
本書的讀者還可以訪問InfluxDB專欄補充學習。該專欄搭建了一個供開發(fā)者交流學習的在線平臺,閱讀過程中如有疑問,也可以在網站上向作者提問,期待能夠得到你們的真摯反饋。
由于作者水平有限,編寫時間倉促,書中難免會出現(xiàn)一些錯誤或表達不準確的地方,懇請讀者批評指正。我們也會將書中的勘誤發(fā)布在專欄中,供大家參考。
編寫說明
本書編寫團隊由業(yè)界一線研發(fā)人員組成,其中鄭強負責全書的框架搭建及第1~9章的撰寫,字數(shù)約28萬字;張偉負責第10~13章的撰寫,字數(shù)約6萬字;劉爽負責第14章的撰寫,字數(shù)約2萬字。
致謝
感謝清華大學出版社的編輯,因為你們的幫助,這本書才得以問世。最后要感謝的就是你,我親愛的讀者,感謝你拿起這本書,你的認可是我們最大的快樂。
作者
第1章 時序數(shù)據(jù)庫InfluxDB簡介
1.1 數(shù)據(jù)簡史 2
1.1.1 什么是時序數(shù)據(jù) 3
1.1.2 時序數(shù)據(jù)庫的歷史 3
1.2 InfluxDB簡介 4
1.2.1 什么是InfluxDB 4
1.2.2 InfluxDB的歷史 5
1.2.3 InfluxDB現(xiàn)狀及未來 6
1.3 InfluxDB的基本概念 7
1.4 InfluxDB的設計理念 7
1.5 InfluxDB的核心特性 8
1.5.1 內置REST接口 8
1.5.2 數(shù)據(jù)Tag標記 8
1.5.3 類SQL的查詢語句 9
1.5.4 高性能 9
1.5.5 開源 10
1.6 時序數(shù)據(jù)庫的應用場景 10
1.6.1 在工業(yè)環(huán)境監(jiān)控中的應用 10
1.6.2 在物聯(lián)網IoT設備采集存儲中的應用 11
1.6.3 互聯(lián)網業(yè)務性能監(jiān)控服務 11
1.6.4 在智能汽車中的應用 12
1.7 小結 12
第2章 InfluxDB的安裝、配置、啟動
2.1 在不同操作系統(tǒng)上安裝InfluxDB14
2.1.1 硬件要求 14
2.1.2 在Ubuntu和Debian系統(tǒng)中安裝InfluxDB 15
2.1.3 在RedHat和CentOS系統(tǒng)中安裝InfluxDB 20
2.1.4 在Windows系統(tǒng)中安裝InfluxDB21
2.1.5 在macOS系統(tǒng)中安裝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數(shù)據(jù)可視化
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 數(shù)據(jù)樣本 62
4.2.1 空氣傳感器樣本數(shù)據(jù) 63
4.2.2 鳥類遷徙樣本數(shù)據(jù) 64
4.2.3 NOAA樣本數(shù)據(jù) 64
4.2.4 美國地質勘探局地震數(shù)據(jù) 64
4.3 行協(xié)議 65
4.3.1 行協(xié)議案例 65
4.3.2 行協(xié)議語法 66
4.3.3 行協(xié)議要素分析 66
4.3.4 數(shù)據(jù)類型 67
4.3.5 引號68
4.3.6 特殊字符 68
4.3.7 注釋69
4.3.8 重復數(shù)據(jù) 69
4.4 桶操作 70
目 錄
VII
4.5 寫入操作 71
4.5.1 寫入數(shù)據(jù) 71
4.5.2 文件數(shù)據(jù)導入 72
4.6 查詢操作 73
4.6.1 select語句 74
4.6.2 類型轉換 77
4.6.3 where子句 78
4.6.4 函數(shù) 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的函數(shù)與運算
5.1 樣本數(shù)據(jù)導入 90
5.2 InfluxDB函數(shù) 91
5.2.1 函數(shù)說明 91
5.2.2 聚合類函數(shù) 92
5.2.3 選擇類函數(shù) 94
5.2.4 轉換類函數(shù) 95
5.2.5 預測類函數(shù) 98
5.3 數(shù)學運算 99
5.3.1 常用運算符 99
5.3.2 數(shù)學運算符的常見問題 101
5.4 小結 102
第6章 InfluxDB連續(xù)查詢
6.1 連續(xù)查詢 104
6.2 樣本數(shù)據(jù)導入 104
6.3 創(chuàng)建連續(xù)查詢 106
6.3.1 語句 106
6.3.2 連續(xù)查詢運行時刻及查詢的時間范圍 107
6.3.3 連續(xù)查詢舉例 107
6.4 復雜連續(xù)查詢 109
6.4.1 創(chuàng)建高級連續(xù)查詢 109
6.4.2 高級連續(xù)查詢的時間設置 109
6.4.3 GROUP BY time()、EVERY、FOR三者關系 111
6.4.4 高級連續(xù)查詢舉例 112
6.5 連續(xù)查詢的管理 113
6.5.1 查詢所有連續(xù)查詢 113
6.5.2 刪除連續(xù)查詢 114
6.5.3 修改連續(xù)查詢 114
6.6 連續(xù)查詢案例分析 114
6.6.1 數(shù)據(jù)預處理 115
6.6.2 降低數(shù)據(jù)采樣率 115
6.6.3 HAVING功能 116
6.6.4 替換嵌套函數(shù) 116
6.7 小結 117
第7章InfluxDB數(shù)據(jù)保留策略
7.1 保留策略 119
7.2 創(chuàng)建保留策略 119
7.2.1 使用CREATE RETENTION POLICY創(chuàng)建保留策略 119
7.2.2 創(chuàng)建保留策略舉例 121
7.3 查詢保留策略 121
7.4 修改保留策略 122
7.5 刪除保留策略 123
7.6 綜合實例 123
7.6.1 樣本數(shù)據(jù) 123
7.6.2 實驗目標 124
7.6.3 實驗過程 124
7.6.4 結論126
7.7 小結 126
第8章InfluxDB數(shù)據(jù)安全策略
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 權限控制實戰(zhàn) 146
8.4.1 創(chuàng)建與授權 146
8.4.2 測試效果 147
8.5 小結 149
第9章 InfluxDB性能評估
9.1 性能測試工具 151
9.1.1 安裝Go語言運行環(huán)境 151
9.1.2 測試工具安裝 153
9.2 基準性能測試 154
9.2.1 測試環(huán)境 154
9.2.2 寫入性能測試 154
9.3 性能優(yōu)化 157
9.3.1 數(shù)據(jù)寫入優(yōu)化方案 157
9.3.2 數(shù)據(jù)查詢優(yōu)化方案 157
9.4 性能報警 159
9.4.1 創(chuàng)建檢查 159
9.4.2 添加通知端點 162
9.4.3 創(chuàng)建通知規(guī)則 163
9.5 小結 164
第10章 InfluxDB集群
10.1 集群簡介 166
10.1.1 集群架構概述 166
10.1.2 數(shù)據(jù)所在的地方 166
10.1.3 節(jié)點數(shù)量 167
10.2 集群安裝配置 167
10.2.1 申請試用 167
10.2.2 環(huán)境準備 169
10.2.3 添加DNS條目 170
10.2.4 Meta節(jié)點的安裝配置 171
10.2.5 Data節(jié)點的安裝配置 173
10.3 小結 176
第11章 備份管理
11.1 單機版?zhèn)浞莨芾?178
11.1.1 備份數(shù)據(jù) 178
11.1.2 恢復數(shù)據(jù) 179
11.2 集群版?zhèn)浞莨芾?180
11.2.1 備份數(shù)據(jù) 181
11.2.2 恢復數(shù)據(jù) 182
11.2.3 導出數(shù)據(jù) 184
11.2.4 導入數(shù)據(jù) 185
11.3 小結 185
第12章 InfluxDB與程序設計
12.1 Java SDK使用 187
12.1.1 使用Java在InfluxDB中寫入數(shù)據(jù) 188
12.1.2 WriteApiBlocking 192
12.1.3 使用Java查詢InfluxDB中的數(shù)據(jù) 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中寫入數(shù)據(jù) 201
12.2.2 使用Python查詢InfluxDB中的數(shù)據(jù) 202
12.3 小結 203
第13章 InfluxDB數(shù)據(jù)處理語言Flux
13.1 Flux概述 205
13.2 基本數(shù)據(jù)類型 205
13.2.1 Boolean(布爾值) 206
13.2.2 Bytes(字節(jié)) 206
13.2.3 Duration(持續(xù)時間) 206
13.2.4 String(字符串類型) 207
13.2.5 Time(時間類型) 207
13.2.6 Float(浮點類型) 208
13.2.7 Integer(整數(shù)類型) 208
13.2.8 Null(空值) 209
13.3 查詢數(shù)據(jù)源 209
13.3.1 from()函數(shù) 210
13.3.2 range()函數(shù) 210
13.3.3 查詢InfluxDB 1.x 211
13.3.4 遠程查詢InfluxDB Cloud 或InfluxDB 2.x 211
13.4 寫入數(shù)據(jù)源 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 優(yōu)勢和問題 220
14.3 InfluxDB數(shù)據(jù)格式 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數(shù)據(jù)寫入 227
14.6.1 寫入總體框架 227
14.6.2 Shard路由 228
14.6.3 倒排索引引擎構建倒排索引 228
14.6.4 寫入流程 229
14.7 小結 230