InfluxDB從原理到實戰 – 什麼是InfluxDB
- 2019 年 10 月 11 日
- 筆記
0x00 什麼是InfluxDB
InfluxDB是一個由InfluxData開發的開源時序型數據庫,專註于海量時序數據的高性能讀、高性能寫、高效存儲與實時分析等,在DB-Engines Ranking時序型數據庫排行榜上排名第一,廣泛應用於DevOps監控、IoT監控、實時分析等場景。
InfluxDB部署簡單、使用方便,在技術實現上充分利用了Go語言的特性,無需任何外部依賴即可獨立部署。提供類似於SQL的查詢語言,接口友好,使用方便。豐富的聚合運算和採樣能力,提供靈活的數據保存策略(Retention Policy)來設置數據的保留時間和副本數,在保障數據可靠性的同時,及時刪除過期數據,釋放存儲空間,提供靈活的連續查詢(Continues Query)來實現對海量數據的採樣。支持協議種類多,除了HTTP、UDP等原生協議,還兼容CollectD、Graphite、OpenTSDB、Prometheus等組件的通訊協議。
強大完整的生態,TICK是一個集成了採集、存儲、分析、可視化等能力的開源時序中台,由Telegraf、 InfluxDB、Chronograf、Kapacitor 4個組件以一種靈活鬆散組合、但緊密配合互為補充的方式構成,各個模塊項目配合、互為補充,專註於DevOps監控、IoT監控、實時分析等場景。
Telegraf是一個用於採集和上報指標的服務器程序,採集當前運行主機的指定指標,如,CPU負載等,通過標準的InfluxDB API上報InfluxDB。
InfluxDB是專註於時序數據場景(如,DevOps監控、IoT監控、實時分析等)的高性能時序型數據庫,支持靈活的自定義保留策略(Retention Policy)和類SQL的操作接口等。
Chronograf是可視化的UI界面層,通過圖形界面暫時InfluxDB中的數據,並支持Kapacitor告警等。
Kapacitor是一個事件處理和告警引擎,支持靈活強大的自定義功能,也支持集成對接第三系統,如,HipChat等。
0x01 InfluxDB的優勢
InfluxDB專註於DevOps監控、IoT監控等場景,針對時序存儲、高性能讀寫、實時操作、高可用性而設計的一套軟件,從零設計架構和開發,InfluxDB通過實現高度可擴展的數據接收和存儲引擎,可以高效地實時收集、存儲、查詢、可視化顯示和執行預定義操作。它通過採樣和數據保留策略,以支持將高價值、高精度數據保存在內存中,將低價值數據保存到磁盤。作為一套精心設計、架構卓越的專用系統,相比OpenTSDB、MongoDB、Graphite、Cassandra等,InfluxDB的性能優勢和成本優勢明顯。
InfluxDB的寫性能是OpenTSDB的5倍,存儲效率是OpenTSDB的16.5倍,查詢效率是OpenTSDB的3.65倍。
InfluxDB的寫性能是MongoDB的2.4倍,存儲效率是MongoDB的20倍,查詢效率是MongoDB的5.7倍。
InfluxDB的寫性能是Graphite的12倍,存儲效率是Graphite的6.3倍,查詢效率是Graphite的9倍。
InfluxDB的寫性能是Cassandra的4.5倍,存儲效率是Cassandra的2.1倍,查詢效率是Cassandra的45倍。
0x03 InfluxDB的特性
InfluxDB是一種時序數據高效讀寫、壓縮存儲、實時計算能力為一體的數據庫服務,除了具有成本優勢的高性能讀、高性能寫、高存儲率,InfluxDB還具有如下特點:
無系統環境依賴,部署方便。無結構化(SchemaLess)的數據模型,靈活強大。原生HTTP管理接口,免插件配置和免第三方依賴。強大的類SQL查詢語句的操作接口,學習成本低,上手快。豐富的權限管理功能,精細到“表”級別。豐富的時效管理功能,自動刪除過期數據,自定義刪除指標數據。低成本存儲,採樣時序數據,壓縮存儲。豐富的聚合函數,支持AVG、SUM、MAX、MIN等聚合函數。
後記:
歡迎交流討論:
微信公眾號:influxdb-dev。
InfluxDB技術交流群(QQ):663274123。