標籤:sha close 監聽 targe 實現 模式 start 時間序列資料 日誌
背景 目前對於時序大資料的儲存和處理往往採用關係型資料庫的方式進行處理,但由於關係型資料庫天生的劣勢導致其無法進行高效的儲存和資料的查詢。時序大資料解決方案通過使用特殊的儲存方式,使得時序大資料可以高效儲存和快速處理海量時序大資料,是解決海量資料處理的一項重要技術。該技術採用特殊資料存放區方式,極大提高了時間相關資料的處理能力,相對於關係型資料庫它的儲存空間減半,查詢速度極大的提高。時間序列函數優越的查詢效能遠超過關係型資料庫,Informix TimeSeries非常適合在物聯網分析應用。定義
時間序列資料庫主要用於指處理帶時間標籤(按照時間的順序變化,即時間序列化)的資料,帶時間標籤的資料也稱為時間序列資料。
最新時序資料庫排名:
特點& 分類:
- 該類資料以時間排序
- 由於該類資料通常量級大(因此Sharding和Scale非常重要)或邏輯複雜(大量彙總,上取,下鑽),關聯式資料庫通常難以處理
- 高頻率低保留期(資料擷取,即時展示)
- 低頻率高保留期(資料展現、分析)
- 規則間隔(資料擷取)
- 不規則間隔(事件驅動)
- 單條資料並不重要
- 資料幾乎不被更新,或者刪除(只有刪除到期資料時),新增資料是按時間來說最近的資料
- 同樣的資料出現多次,則認為是同一條資料
時間序列資料庫關鍵比對
InfluxDB |
Elasticsearch |
流行(TSDB排行第一) |
流行(搜尋引擎排行第一) |
高可用需要收費 |
叢集高可用容易實現,免費 |
單點寫入效能高 |
單點寫入效能低 |
查詢文法簡單,功能強 |
查詢文法簡單,功能強(弱於Influxdb) |
後端時序資料庫設計,寫入快 |
設計並不是時序資料庫,後端儲存採用文檔結構,寫入慢 |
由此可見:高頻度低保留期用Influxdb,低頻度高保留期用ES。
其他時序資料庫介紹:
如何使用資料的查詢與寫入:
- Influxdb與ES都是REST API風格介面
- 通過HTTP Post寫入資料,通過HTTP Get擷取資料,ES還有HTTP Put和Delete等
- 寫入資料可以是JSON格式,Influxdb支援Line Protocol
- JSON格式徒增解析成本,錄入資料格式越簡單越好
- 通常ES搭配Logstash使用,Influxdb搭配telegraf使用
以Influxdb為例,看一些如何插入和查詢資料:
Influxdb的HTTP API
建立DB
[[email protected] ~]# curl -i -XPOST http://192.168.32.31:8086/query --data-urlencode "q=CREATE DATABASE mydb"HTTP/1.1 200 OKConnection: closeContent-Type: application/jsonRequest-Id: 42a1f30c-5900-11e6-8003-000000000000X-Influxdb-Version: 0.13.0Date: Tue, 02 Aug 2016 22:27:13 GMTContent-Length: 16{"results":[{}]}[[email protected] ~]#寫入資料
[[email protected] ~]# curl -i -XPOST http://192.168.32.31:8086/query --data-urlencode "q=CREATE DATABASE mydb"HTTP/1.1 200 OKConnection: closeContent-Type: application/jsonRequest-Id: 42a1f30c-5900-11e6-8003-000000000000X-Influxdb-Version: 0.13.0Date: Tue, 02 Aug 2016 22:27:13 GMTContent-Length: 16{"results":[{}]}[[email protected] ~]#查詢寫入的資料
[[email protected] ~]# curl -GET ‘http://192.168.32.31:8086/query?pretty=true‘ --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"=‘us-west‘"{ "results": [ { "series": [ { "name": "cpu_load_short", "columns": [ "time", "value" ], "values": [ [ "2015-06-11T20:46:02Z", 0.64 ] ] } ] } ]}[[email protected] ~]#
介紹Telegraf&Logstash:
- 都是資料收集和中轉的工具,架構都是外掛程式式配置
- Telegraf相比Logstash更加輕量
- 都支援大量源,包括關聯式資料庫、NOSQL、直接收集作業系統資訊(Linux、Win)、APP、服務(Docker)
執行模式分為兩種
- 主動:根據配置一次性讀取被收集的資料,收集完成後關閉進程
- 被動:作為進程駐留記憶體,監聽特定連接埠,等待訊息發送
介紹兩種時序資料庫使用的架構:
1.日誌採集,然後存入influxdb,最後在grafana 中進行可視化查詢。
2.資料庫監控,主要通過採集關係型資料庫的效能指標分析資料庫的運行狀態便於監控和管理,如所示
資料視覺效果展示
資料的可視化展示有很多種選擇,比如ELK中推薦使用kibana,配合es更方便,而搭配influxdb可以使用grafana。
目前grafana支援資料來源
– ES
– Influxdb
– Prometheus
– Graphite
– OpenTSDB
– CloudWatch
安裝Grafana
Grafana的安裝很簡單,以Debian安裝為例:
執行命令:$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb$ sudo apt-get install -y adduser libfontconfig$ sudo dpkg -i grafana_2.6.0_amd64.deb啟動伺服器:$ sudo service grafana-server start
然後即可進行配置使用資料視覺效果了。這裡就不展開講了。下面會有獨立文章介紹grafana和kibana。
總結
本篇簡要概述了時序資料庫的內容,介紹了特點並以influxdb為執行個體對比了與傳統資料庫的區別,以及如何使用Influxdb。最後講解了使用時序資料庫的架構,日誌和監控等,通過grafana進行可視化的資料查詢分析監控等。文章地址https://www.cnblogs.com/wenBlog/p/8297100.html
時間序列資料庫概覽