InfluxDB 簡(jiǎn)介
InfluxDB 是一款開(kāi)源時(shí)序數(shù)據(jù)庫(kù),支持納秒級(jí)時(shí)間戳和高頻數(shù)據(jù)寫(xiě)入,并集成數(shù)據(jù)采集工具與可視化工具,廣泛應(yīng)用于物聯(lián)網(wǎng)、監(jiān)控系統(tǒng)和實(shí)時(shí)分析場(chǎng)景。
TimescaleDB 簡(jiǎn)介
TimescaleDB 是一款由 Timescale 公司(于 2025 年 6 月 17 日更名為“TigerData”)開(kāi)發(fā)的開(kāi)源時(shí)序數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)基于 PostgreSQL 擴(kuò)展,通過(guò)額外的 SQL 函數(shù)和表結(jié)構(gòu),專門為大規(guī)模時(shí)序數(shù)據(jù)提供了存儲(chǔ)優(yōu)化、性能提升及分析功能支持。
綜合對(duì)比
InfluxDB 功能
1. 寫(xiě)入與存儲(chǔ)
寫(xiě)入優(yōu)化:通過(guò) TSM 引擎優(yōu)化,每秒可處理數(shù)百萬(wàn)數(shù)據(jù)點(diǎn),適用于物聯(lián)網(wǎng)、工業(yè)傳感器等高頻寫(xiě)入場(chǎng)景
壓縮存儲(chǔ):采用 TSM 格式實(shí)現(xiàn)高效數(shù)據(jù)壓縮,降低存儲(chǔ)空間占用。
2. 查詢與分析
多語(yǔ)言查詢支持:支持 InfluxQL 語(yǔ)法,兼容傳統(tǒng) SQL 習(xí)慣,同時(shí)提供腳本式語(yǔ)言 Flux,支持復(fù)雜分析
查詢擴(kuò)展功能:支持滑動(dòng)窗口計(jì)算、窗口函數(shù)等功能,適用于實(shí)時(shí)指標(biāo)監(jiān)控場(chǎng)景
3. 可視化與監(jiān)控
Grafana 集成:原生支持,快速創(chuàng)建儀表盤(pán)。
內(nèi)置 UI:InfluxDB 2.x 提供數(shù)據(jù)探索和可視化界面
告警功能:通過(guò) Flux 或 API 設(shè)置閾值告警
4. 生態(tài)集成
開(kāi)發(fā)者友好接口:內(nèi)置 HTTP API,提供便捷的 SDK 集成方案
Telegraf:輕量級(jí)數(shù)據(jù)采集代理
Chronograf:官方可視化工具,2.x 中整合到 Web UI
Kapacitor:流式處理與告警引擎,2.x 由 Flux 替代
5. 運(yùn)維管理
數(shù)據(jù)保留策略:支持自定義數(shù)據(jù)生命周期策略,自動(dòng)清理過(guò)期數(shù)據(jù)
權(quán)限控制:提供用戶分級(jí)授權(quán)機(jī)制,支持?jǐn)?shù)據(jù)庫(kù)訪問(wèn)權(quán)限的精細(xì)化控制
6. 分布式架構(gòu)
分布式集群:多節(jié)點(diǎn)部署,保障分布式架構(gòu)高擴(kuò)展、高可用
數(shù)據(jù)分片、復(fù)制:支持?jǐn)?shù)據(jù)分片和復(fù)制,保障系統(tǒng)穩(wěn)定性,提升系統(tǒng)容錯(cuò)
7. 安全和管理
用戶管理:支持多用戶、多權(quán)限管理
HTTPS 支持:HTTPS 保障數(shù)據(jù)傳輸安全
數(shù)據(jù)加密:支持?jǐn)?shù)據(jù)加密存儲(chǔ)和傳輸
TimescaleDB 功能
1. 時(shí)序存儲(chǔ)管理
超表(Hypertable):自動(dòng)按時(shí)間維度分區(qū),支持跨維度分區(qū)(如設(shè)備 ID+時(shí)間)
混合行列式存儲(chǔ)引擎(Hypercore):行式存儲(chǔ)用于存儲(chǔ)最新數(shù)據(jù),列式存儲(chǔ)用于提高分析性能
分布式架構(gòu):如果主實(shí)例不可用,將自動(dòng)故障轉(zhuǎn)移到高可用性 (HA) 副本
2. 時(shí)序數(shù)據(jù)寫(xiě)入
寫(xiě)入數(shù)據(jù):可以使用 INSERT、UPDATE 和 DELETE 語(yǔ)句在常規(guī)表和超表中添加和修改數(shù)據(jù)
3. 持續(xù)聚合引擎
增量刷新機(jī)制:基于 Postgres 物化視圖的持續(xù)聚合,僅計(jì)算變更數(shù)據(jù)而非全量更新
近實(shí)時(shí)聚合:支持低延遲的聚合數(shù)據(jù)查詢,降低資源消耗
4. 高性能時(shí)序處理
時(shí)段函數(shù)(Time Bucket):提供靈活的時(shí)間粒度聚合
超函數(shù)(Hyperfunction):旨在高效處理、聚合和分析海量數(shù)據(jù),同時(shí)保持高性能
5. 全生命周期數(shù)據(jù)管理
分層存儲(chǔ)策略(Tiered Storage):高性能存儲(chǔ)層存儲(chǔ)最新且最常查詢的數(shù)據(jù),對(duì)象存儲(chǔ)層存儲(chǔ)很少訪問(wèn)且性能要求較低的數(shù)據(jù)
數(shù)據(jù)保留策略(Data Retention):自動(dòng)清理過(guò)期數(shù)據(jù),支持與持續(xù)聚合聯(lián)動(dòng)實(shí)現(xiàn)數(shù)據(jù)降采樣
生態(tài)支持:支持寫(xiě)入、查詢、流處理、可視化、系統(tǒng)管理等維度軟件生態(tài)集成
6. 無(wú)縫兼容性
完整 SQL 支持:100% 兼容 PostgreSQL 生態(tài),支持所有 PG 工具鏈
InfluxDB 數(shù)據(jù)建模概念
Database: 數(shù)據(jù)庫(kù)名,在 InfluxDB 中可以創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)
時(shí)間戳 Time:每條數(shù)據(jù)記錄的時(shí)間,也是數(shù)據(jù)庫(kù)自動(dòng)生成的主索引,默認(rèn)為當(dāng)前系統(tǒng)的時(shí)間戳(納秒)
字段 Field:包含數(shù)據(jù)的實(shí)際值,可以是各種數(shù)據(jù)類型,字段在查詢時(shí)可以進(jìn)行數(shù)學(xué)運(yùn)算
標(biāo)簽 Tag:用于索引和過(guò)濾數(shù)據(jù)
Point:表里面的一行數(shù)據(jù),由時(shí)間戳(timestamp)、標(biāo)簽(tag)、字段(field)和組成
Measurement: 存儲(chǔ)具有相似特征或?qū)儆谕活悇e的數(shù)據(jù)點(diǎn)集合,包含了列 Timestamp 時(shí)間戳,F(xiàn)ield 字段和Tag 標(biāo)簽
Field Set:每組 field key 和 field value 的集合
Tag Set: 不同的每組 tag key 和 tag value 的集合
Retention Policy:定義了數(shù)據(jù)在數(shù)據(jù)庫(kù)中的保存期限。當(dāng)數(shù)據(jù)超過(guò)了指定的時(shí)間限制,它們將自動(dòng)被刪除
Series:共同 Retention Policy,Measurement 和 Tag set 的集合
TimescaleDB 數(shù)據(jù)建模及部分功能概念
超表(Hypertable):基于普通的 PostgreSQL 表創(chuàng)建,可以使用標(biāo)準(zhǔn) SQL 語(yǔ)法對(duì)超表進(jìn)行插入和查詢等操作,并在普通表的基礎(chǔ)上超表添加了自動(dòng)分區(qū)、壓縮和連續(xù)聚合的功能,以更高效地存儲(chǔ)和查詢時(shí)間序列數(shù)據(jù)。
塊(Chunk):Hypertable 按照時(shí)間范圍分割成的多個(gè)連續(xù)的數(shù)據(jù)塊,以存儲(chǔ)時(shí)序數(shù)據(jù)。
時(shí)段(Time Buckets):實(shí)現(xiàn)實(shí)時(shí)分析的核心功能,可以將 Hypertable 中的數(shù)據(jù)按時(shí)間粒度聚合為不同的時(shí)段單元。
InfluxDB 數(shù)據(jù)模型
數(shù)據(jù)庫(kù)服務(wù)器包含邏輯數(shù)據(jù)庫(kù),邏輯數(shù)據(jù)庫(kù)包含表,表包含列。V3 與之前的 InfluxDB 版本相比,在 V2 版本中,用戶可以將數(shù)據(jù)庫(kù)視為存儲(chǔ)桶(bucket),在 V1 版本中,則可以將其視為 db/retention_policy。
表相當(dāng)于一個(gè)測(cè)量值(measurement),其列可以是 tag(字符串字典)、int64、float64、uint64、bool 或 string 類型,最后,每個(gè)表都有一個(gè)時(shí)間列,該列的精度為納秒級(jí)時(shí)間戳。
在 InfluxDB 3 中,每個(gè)表都有一個(gè)主鍵(標(biāo)簽和時(shí)間的有序集合),用于存儲(chǔ)其數(shù)據(jù)。所有創(chuàng)建的 Parquet 文件都使用主鍵進(jìn)行排序。當(dāng)創(chuàng)建表時(shí)(無(wú)論是通過(guò)顯式調(diào)用還是首次將數(shù)據(jù)寫(xiě)入表),系統(tǒng)都會(huì)按照標(biāo)簽到達(dá)的順序?qū)⒅麈I設(shè)置為標(biāo)簽的主鍵。這是不可變的。表的標(biāo)簽列定義也是不可變的。
標(biāo)簽應(yīng)包含唯一的標(biāo)識(shí)信息,例如 sensor_id、building_id 或 trace_id。所有其他數(shù)據(jù)應(yīng)保存在字段中。用戶將能夠?yàn)槿魏瘟校o(wú)論是字段還是標(biāo)簽)添加后 N 個(gè)值和不同值查找功能。
TimescaleDB 數(shù)據(jù)模型
TimescaleDB 的底層數(shù)據(jù)結(jié)構(gòu)為 Hypertable(超表),是一種邏輯上的時(shí)間分區(qū)表。每個(gè) Hypertable 可以自動(dòng)將數(shù)據(jù)按時(shí)間分割成多個(gè)塊(Chunk),以實(shí)現(xiàn)對(duì)時(shí)序數(shù)據(jù)的高效管理。
時(shí)間分區(qū)方面,每個(gè) Hypertable 塊都會(huì)被分配一個(gè)時(shí)間范圍,并且僅包含該范圍內(nèi)的數(shù)據(jù)。當(dāng)運(yùn)行查詢時(shí),TimescaleDB 會(huì)識(shí)別正確的塊并對(duì)其運(yùn)行查詢,而無(wú)需遍歷整個(gè)表。默認(rèn)情況下,每個(gè) Hypertable 塊會(huì)保存 7 天的數(shù)據(jù),用戶可以根據(jù)自己的需求進(jìn)行更改。
空間分區(qū)方面,TimescaleDB 支持在創(chuàng)建超表時(shí)(即表為空時(shí)),在非時(shí)間列(如位置或設(shè)備 UUID)上添加分區(qū)維度,并指定分區(qū)數(shù)量,以適配特定條件查詢。隨著數(shù)據(jù)增長(zhǎng),用戶也可以調(diào)整分區(qū)數(shù)量以提升查詢性能。
InfluxDB 應(yīng)用場(chǎng)景
監(jiān)控運(yùn)維:在企業(yè)服務(wù)器集群中,InfluxDB 能快速采集 CPU 負(fù)載、內(nèi)存占用等性能指標(biāo),記錄網(wǎng)絡(luò)流量變化情況,保存應(yīng)用程序響應(yīng)時(shí)間等數(shù)據(jù)。這些數(shù)據(jù)為管理員和開(kāi)發(fā)人員提供了實(shí)時(shí)系統(tǒng)狀態(tài)視圖,便于及時(shí)發(fā)現(xiàn)異常波動(dòng),快速定位故障點(diǎn),提升系統(tǒng)運(yùn)維效率
實(shí)時(shí)數(shù)據(jù)分析:對(duì)于海量實(shí)時(shí)數(shù)據(jù)的分析處理需求,InfluxDB 支持?jǐn)?shù)據(jù)持續(xù)高速寫(xiě)入,配合查詢機(jī)制可快速完成時(shí)序數(shù)據(jù)可視化圖表生成、異常數(shù)據(jù)自動(dòng)檢測(cè)、實(shí)時(shí)閾值報(bào)警等操作
日志數(shù)據(jù)管理:InfluxDB 將日志數(shù)據(jù)按照時(shí)間序列有序存儲(chǔ),尤其適用于分布式系統(tǒng)和微服務(wù)架構(gòu)下海量日志的管理。通過(guò)時(shí)間維度的有序組織,開(kāi)發(fā)人員能更便捷地回溯、查詢和分析日志信息,實(shí)現(xiàn)系統(tǒng)運(yùn)行問(wèn)題診斷與優(yōu)化
TimescaleDB 應(yīng)用場(chǎng)景
能源消耗分析:利用能源消耗數(shù)據(jù)制定數(shù)據(jù)驅(qū)動(dòng)型決策。
交通與地理空間數(shù)據(jù)分析:通過(guò)地理空間交通數(shù)據(jù)優(yōu)化收益。
比特幣區(qū)塊鏈分析:基于比特幣區(qū)塊鏈開(kāi)展自主研究,挖掘交易、區(qū)塊、費(fèi)用與收益之間的關(guān)聯(lián)。
金融交易數(shù)據(jù)解析:繪制關(guān)注股票的交易高低點(diǎn)走勢(shì)圖。
物聯(lián)網(wǎng)傳感器數(shù)據(jù)分析:生成模擬物聯(lián)網(wǎng)傳感器數(shù)據(jù)集并執(zhí)行基礎(chǔ)查詢。