




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
時序數據庫
內容什么是時序數據、時序數據庫時序數據庫的分類時序數據庫應用場景時序數據庫的特點時序數據庫InfluxDB、Prometheus、OpenTSDB存儲引擎介紹
為什么時序數據庫插入快為什么時序數據庫查詢比較快InfluxDB安裝使用什么是時序數據數據格式里包含timestamp字段的數據。比如股票市場的價格,環境中的溫度,主機的CPU使用率等。如何去查詢它。在查詢的時候,對于時間序列我們總是會帶上一個時間范圍去過濾數據。同時查詢的結果里也總是會包含timestamp字段。有什么數據是不包含timestamp的呢?幾乎所有的數據都可以打上一個timestamp字段對比傳統數據庫僅僅記錄了數據的當前值,時序數據庫則記錄了所有的歷史數據。同時時序數據的查詢也總是會帶上時間作為過濾條件。什么是時序數據庫時序時空數據庫(TimeSeries&SpatialTemporalDatabase,簡稱TSDB)是一種高性能、低成本、穩定可靠的在線時序時空數據庫服務,提供高效讀寫、高壓縮比存儲、時序數據插值及聚合計算等服務,廣泛應用于物聯網(IoT)設備監控系統、企業能源管理系統(EMS)、生產安全監控系統和電力檢測系統等行業場景;除此以外,還提供時空場景的查詢和分析的能力。TSDB具備秒級寫入百萬級時序數據的性能,提供高壓縮比低成本存儲、預降采樣、插值、多維聚合計算、可視化查詢結果等功能,解決由設備采集點數量巨大、數據采集頻率高造成的存儲成本高、寫入和查詢分析效率低的問題。。按照底層技術分類
一般數據量:1、直接基于文件的簡單存儲:RRDTool,GraphiteWhisper。這類工具附屬于監控告警工具,底層沒有一個正規的數據庫引擎。只是簡單的有一個二進制的文件結構。2、基于K/V數據庫構建:opentsdb(基于hbase),blueflood,kairosDB(基于cassandra),influxdb,prometheus(基于leveldb)3、基于關系型數據庫構建:mysql,postgresql都可以用來保存時間序列數據超大數據量(從十億條里取百萬記錄出來上面的數據庫是無法完成的):(要完成實時聚合就不是一個產品可以完成的)檢索:基于Lucene構建的“搜索引擎”:Elasticsearch,Crate.io(雖然是基于Elasticsearch,但是聚合邏輯是自己實現的),Solr;加載:列式存儲數據庫:Vertica(C-store的后裔)Actian(Monetdb的后裔)等;Druid.io。分布式計算Hadoop和spark。一般數據量的的查詢特點類型一:其表結構是這樣的:[metric_name][timestamp][value]其優化的查詢方式是:
SELECTvalueFROMmetricWHEREmetric_name=”A”ANDtimestamp>=BANDtimestamp<C
超大數據量的的查詢特點另外一類數據庫其表結構是:[timestamp][d1][d2]..[dn][v1][v2]..[vn]其優化的查詢方式不限于查詢原始數據,而是可以組合查詢條件并且做聚合計算,比如:SELECTd2,sum(v1)/sum(v2)FROMmetricWHEREd1=“A”ANDtimestamp>=BANDtimestamp<CGROUPBYd2實時聚合需要的能力想要在在查詢階段做數據的聚合和轉換,需要能夠支持以下三點。1、用索引檢索出行號:能夠從上億條數據中快速過濾出幾百萬的數據。2、從主存儲按行號加載:能夠快速加載這過濾出的幾百萬條數據到內存里。3、分布式計算:能夠把這些數據按照GROUPBY和SELECT的要求計算出最終的結果集。
時序數據高效讀寫
TSDB提供時序數據的高效讀寫。對于百萬數據點的讀取,響應時間小于5秒,且最高可以支撐每秒千萬數據點的寫入。
數據寫入
TSDB支持通過HTTP協議和TSDBJavaClient兩種方式進行數據寫入。
數據查詢
TSDB支持通過HTTP協議、TSDBJavaClient以及TSDB控制臺三種方式進行數據的查詢操作。用戶也可以通過TSDB產品控制臺的數據查詢功能進行數據分組、降采樣、空間聚合的可視化數據查詢展現。
數據管理
數據時效設置
您可以通過控制臺或者API設置數據的有效期。數據時效開啟并設置完成后,系統對于定義的過期數據將立即標記失效,并在特定時間進行自動化清理。
數據清理
您可以在控制臺上根據度量(Metric)進行數據清理,或者通過API進行更靈活的數據清理。
高效壓縮存儲
TSDB使用高效的數據壓縮技術,將單個數據點的平均使用存儲空間降為1~2個字節,可以降低90%存儲使用空間,同時加快數據寫入的速度。
時序數據計算能力
TSDB提供專業全面的時序數據計算函數,支持降采樣、數據插值和空間聚合計算,能滿足各種復雜的業務數據查詢場景。
監控運維
TSDB提供實例運維系統,讓您可以實時的掌握實例的運行情況、性能指標和存儲空間使用情況,并通過設置報警通道,實時發現資源瓶頸。時序數據庫的特點應用場景物聯網設備監控分析電力化工及工業制造監控分析物聯網設備無時無刻不在產生海量的設備狀態數據和業務消息數據,這些數據有助于進行設備監控、業務分析預測和故障診斷。設備將原始數據通過MQTT協議發送到物聯網套件,經由物聯網套件將數據轉發到消息服務系統,繼而通過流計算系統對這些數據進行實時計算處理后寫入到TSDB中存儲,或者經由物聯網套件直接將原始數據寫入TSDB中存儲。前端的監控系統和大數據處理系統會利用TSDB的數據查詢和計算分析能力進行業務監控和分析結果的實時展現。系統運維和業務實時監控
通過對大規模應用集群和機房設備的監控,實時關注設備運行狀態、資源利用率和業務趨勢,實現數據化運營和自動化開發運維。
通過日志或者其他方式對原始指標數據進行采集和實時計算,最后將實時計算的結果數據存儲到TSDB,實現監控和分析的展現。應用場景InfluxDBInfluxDB?是一款專門處理高寫入和查詢負載的時序數據庫,用于存儲大規模的時序數據并進行實時分析,包括來自DevOps監控、應用指標和IoT傳感器上的數據。主要特點InfluxDB?是幫助您處理時序數據的一個絕佳選擇,目前有以下特點:專為時間序列數據量身訂造高性能數據存儲。TSM引擎提供數據高速讀寫和壓縮等功能。簡單高效的HTTPAPI寫入和查詢接口。針對時序數據,量身訂造類似SQL的查詢語言,輕松查詢聚合數據。允許對tag建索引,實現快速有效的查詢。數據保留策略(Retentionpolicies)能夠有效地使舊數據自動失效。InfluxDB?isatrademarkregisteredbyInfluxDataInc.whichisnotaffiliatedwith,anddoesnotendorse,TSDBforInfluxDB?.OpenTSDB數據模型hbase表結構hbase寫入系統如何找到某個rowkey(或者某個rowkeyrange)所在的regionbigtable使用三層類似B+樹的結構來保存region位置。第一層是保存zookeeper里面的文件,它持有rootregion的位置。第二層rootregion是.META.表的第一個region其中保存了.META.z表其它region的位置。通過rootregion,我們就可以訪問.META.表的數據。.META.是第三層,它是一個特殊的表,保存了hbase中所有數據表的region位置信息。hbase尋址Prometheus
Prometheus是一套開源的系統監控報警框架。它啟發于Google的borgmon監控系統,由工作在SoundCloud的Google前員工在2012年創建,作為社區開源項目進行開發,并于2015年正式發布。2016年,Prometheus正式加入CloudNativeComputingFoundation,成為受歡迎度僅次于Kubernetes的項目。作為新一代的監控框架,Prometheus具有以下特點:強大的多維度數據模型:i.時間序列數據通過指標(metric)名和鍵值對(key/valuepairs)來識別。ii.所有的指標(metric)都可以設置任意的多維標簽(label)。iii.數據模型更隨意,不需要刻意設置為以點分隔的字符串。iv.可以對數據模型進行聚合,切割和切片操作。v.支持雙精度浮點類型,標簽可以設為全unicode。靈活而強大的查詢語言PromQL,在同一個查詢語句,可以對多個指標(metrics)進行乘法、加法、連接、取分數位等操作。使用拉取(pull)模式采集時間序列數據,避免有問題的服務器推送有問題的指標(metrics)。可以兼容采用推送(push)模式,利用Pushgateway把時間序列數據推送至Prometheus服務。可以通過服務發現或者靜態配置去獲取監控的目標(targets)。有多種可視化圖形界面。Prometheus
metric名字:該名字應該具有語義,一般用于表示metric的功能,例如:http_requests_total,表示http請求的總數。其中,metric名字由ASCII字符,數字,下劃線,以及冒號組成,且必須滿足正則表達式[a-zA-Z_:][a-zA-Z0-9_:]*。標簽:使同一個時間序列有了不同維度的識別。例如http_requests_total{method="Get"}表示所有http請求中的Get請求。當method="post"時,則為新的一個metric。標簽中的鍵由ASCII字符,數字,以及下劃線組成,且必須滿足正則表達式[a-zA-Z_:][a-zA-Z0-9_:]*。樣本:實際的時間序列,每個序列包括一個float64的值和一個毫秒級的時間戳。格式:<metricname>{<labelname>=<labelvalue>,…},例如:http_requests_total{method="POST",endpoint="/api/tracks"}。Prometheus
OpenTSDB的數據模型幾乎與普羅米修斯相同:時間序列由一組任意鍵值對(OpenTSDB標簽是Prometheus標簽)標識。度量標準的所有數據都存儲在一起,從而限制了度量標準的基數。但是有一些細微差別:Prometheus允許標簽值中的任意字符,而OpenTSDB則更具限制性。OpenTSDB還缺少完整的查詢語言,只允許通過其API進行簡單的聚合和數學運算。存儲OpenTSDB的存儲是在Hadoop和HBase之上實現的。這意味著可以輕松地水平擴展OpenTSDB,但您必須接受從一開始就運行Hadoop/HBase集群的整體復雜性。Prometheus最初可以更簡單地運行,但是一旦超過單個節點的容量就需要顯式分片。與Prometheus一樣,InfluxDB數據模型將鍵值對作為標簽,稱為標簽。此外,InfluxDB還有第二級標簽稱為字段,其使用范圍更為有限。InfluxDB支持高達納秒分辨率的時間戳,以及float64,int64,bool和字符串數據類型。相比之下,Prometheus支持float64數據類型,對字符串和毫秒分辨率時間戳的支持有限。InfluxDB使用日志結構合并樹的變體進行存儲,其中包含按時間分片的預寫日志。這比事件記錄更適合于每個時間序列方法的Prometheus附加文件。幾種時序數據庫的對比
時序數據庫為什么插入快
LSMtree包括內存里的數據結構和磁盤上的文件兩部分。分別對應Hbase里的MemStore和HLog;對應Cassandra里的MemTable和sstable。LSMtree操作流程如下:1.數據寫入和更新時首先寫入位于內存里的數據結構。為了避免數據丟失也會先寫到WAL文件中。2.內存里的數據結構會定時或者達到固定大小會刷到磁盤。這些磁盤上的文件不會被修改。3.隨著磁盤上積累的文件越來越多,會定時的進行合并操作,消除冗余數據,減少文件數量。可以看到LSMtree核心思想就是通過內存寫和后續磁盤的順序寫入獲得更高的寫入性能,避免了隨機寫入。但同時也犧牲了讀取性能,因為同一個key的值可能存在于多個HFile中。為了獲取更好的讀取性能,可以通過bloomfilter和compaction得到,這里限于篇幅就不詳細展開。時序數據庫面向的是海量數據的寫入存儲讀取,單機是無法解決問題的。所以需要采用多機存儲,也就是分布式存儲。用多機存儲,也就是分布式存儲。時序數據庫為什么查詢快關系型數據庫的查詢策略
Btreebittreescanindex
數據超過了一定量就不使用索引掃描了,因為大量的隨機讀會把磁盤搞死的opentsdbinfluxdb后臺分布式比關系型數據庫處理更多的數據
b+Tree索引,。lucence
反向索引二級索引(btree+bittree)跳躍表讓主存儲的隨機讀操作變得很快,從而可以充分利用索引,而不用懼怕從主存儲里隨機讀加載幾百萬行帶來的代價關鍵詞文章號[出現頻率]出現位置guangzhou1[2]3,6he2[1]1i1[1]4live1[2]2,5,2[1]2shanghai2[1]3tom1[1]1Lucene的invertedindex可以比mysql的b-tree檢索更快。
在Mysql中給兩個字段獨立建立的索引無法聯合起來使用,必須對聯合查詢的場景建立復合索引。而lucene可以任何AND或者OR組合使用索引進行檢索。
Elasticsearch支持nesteddocument,可以把一批數據點嵌套存儲為一個documentblock,減少需要索引的文檔數。
Opentsdb不支持二級索引,只有一個基于hbaserowkey的主索引,可以按行的排序順序scan。這使得Opentsdb的tag實現從檢索效率上來說很慢。
Mysql如果經過索引過濾之后仍然要加載很多行的話,出于效率考慮queryplanner經常會選擇進行全表掃描。所以Mysql的存儲時間序列的最佳實踐是不使用二級索引,只使用clusteredindex掃描主表。類似于Opentsdb。
influxdb的部署模式獨立模式:獨立的服務器,可以通過REST
API、或基于語言的驅動等訪問分布式模式:企業版下載和安裝linux版本傳統數據庫Infuxdb數據庫database表measurement記錄pointPoint屬性傳統數據庫中的概念time每個數據記錄時間,是數據庫中的主索引(會自動生成)fields各種記錄值(沒有索引的屬性)也就是記錄的值:溫度,濕度tags各種有索引的屬性:地區,海拔可以將度量看作SQL表,其中主索引總是time。
標簽和字段實際上是表中的列。
標簽是索引的,而字段不是。
不同之處在于,使用fuluxdb數據庫,您可以有數百萬個度量,您不必預先定義模式,并且不存儲空值。<measurement>[,<tag-key>=<tag-value>...]<field-key>=<field-value>[,<field2-key>=<field2-value>...][unix-nano-timestamp]CREATERETENTIONPOLICY<retention_policy_name>ON<database_name>DURATION<duration>REPLICATION<n>[SHARDDURATION<duration>][DEFAULT]DURATION保存時間REPLICATION復制數量(集群)SHARDDURATION每個分片持續的時間(時間段內所有Point保存在該分片中),SHARD為InfuxDB存儲單元如果未指定該值,將按照如下規則創建:從單機版本中可以一窺其存儲方案:在單機上InfluxDB采取類似于LSMtree的存儲結構TSM;而分片的方案InfluxDB先通過<database>+<timestamp>(事實上還要加上retentionPolicy)確定ShardGroup,再通過<metric>+<tags>的hashcode確定到具體的Shard。這里timestamp默認情況下是7天對齊,也就是說7天的時序數據會在一個Shard中。RetentionPolicy’sDURATIONShardGroupDuration<2days1hour>=2daysand<=6months1day>6months7days安裝啟動[root@smdw~]#influx-precisionrfc3339Connectedtohttp://localhost:8086version1.7.7InfluxDBshellversion:1.7.7>usemydbUsingdatabasemydb>INSERTcpu,host=serverA,region=us_westvalue=0.64>select*fromcpuname:cputimehostregionvalue-------------------2019-07-20T02:57:30.901438336ZserverAus_west0.64>INSERTtemperature,machine=unit42,type=assemblyexternal=25,internal=37>select*fromtemperature;name:temperaturetimeexternalinternalmachinetype-------------------------------2019-07-20T02:58:01.623299345Z2537unit42assembly客戶端訪問方式>SELECT"passengers","complaints"FROMbus_data
name:bus_data
--------------
timepassengerscomplaints
2016-08-28T07:00:00Z59
2016-08-28T07:15:00Z89
2016-08-28T07:30:00Z89
2016-08-28T07:45:00Z79
2016-08-28T08:00:00Z89
2016-08-28T08:15:00Z157
2016-08-28T08:30:00Z157
2016-08-28T08:45:00Z177
2016-08-28T09:00:00Z207
##執行按每1小時保存
>CREATECONTINUOUSQUERY"cq_basic"ON"transportation"\
BEGIN\
SELECT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版八年級道德與法治上冊教學設計:1.1 我與社會
- 公正無私(教學設計)-中華傳統文化五年級上冊
- 一年級數學上冊 八 10以內的加法和減法練習八(一)教學設計 蘇教版
- 建筑材料報審表(完整版)
- 九年級化學下冊 第11單元 鹽 化肥 實驗活動8 粗鹽中難溶性雜質的去除教學設計 (新版)新人教版
- 2024四川九洲投資控股集團有限公司招聘數字化轉型(法務)崗等崗位8人筆試參考題庫附帶答案詳解
- 三年級數學下冊 第九單元 探索樂園9.2 簡單的邏輯推理教學設計 冀教版
- 電氣二次回路培訓
- 畜牧醫學在線培訓課件
- 大學生學生干部培訓心得體會
- 《肺性腦病護理查房》課件
- 藥店醫保自查報告范文
- IPC-4101C剛性及多層印制板用基材規范
- 急診常見疾病護理常規
- 大學生勞動教育通論(大連海洋大學)知到智慧樹章節答案
- 2023-2024學年廣東省深圳市深中共同體聯考八年級(下)期中歷史試卷
- 小區雨污水管道施工方案實施細則
- 中考英語復習閱讀理解(C篇)課件
- DB12T 715-2016 籠車 裝卸操作規范
- 2015-2024北京中考真題英語匯編:閱讀單選CD篇
- 酒店客房6S管理服務標準
評論
0/150
提交評論