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