溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

云棲深度干貨 | 打造“云邊一體化”,時(shí)序時(shí)空數(shù)據(jù)庫(kù)TSDB技術(shù)原理深度解密

發(fā)布時(shí)間:2020-08-16 05:28:04 來(lái)源:ITPUB博客 閱讀:112 作者:大濤學(xué)長(zhǎng) 欄目:關(guān)系型數(shù)據(jù)庫(kù)
本文選自云棲大會(huì)下一代云數(shù)據(jù)庫(kù)分析專場(chǎng)講師 自修的演講——《TSDB云邊一體化時(shí)序時(shí)空數(shù)據(jù)庫(kù)技術(shù)揭秘》 自修 —— 阿里云智能數(shù)據(jù)庫(kù)產(chǎn)品事業(yè)部高級(jí)專家



認(rèn)識(shí)TSDB

第一代時(shí)序時(shí)空數(shù)據(jù)處理工具 雖然通用關(guān)系數(shù)據(jù)庫(kù)可以存儲(chǔ)時(shí)序數(shù)據(jù),但是由于缺乏針對(duì)時(shí)間的特殊優(yōu)化,比如按時(shí)間間隔存儲(chǔ)和檢索數(shù)據(jù)等等,因此在處理這些數(shù)據(jù)時(shí)效率相對(duì)不高。 第一代時(shí)序數(shù)據(jù)典型來(lái)源于監(jiān)控領(lǐng)域,直接基于平板文件的簡(jiǎn)單存儲(chǔ)工具成為這類數(shù)據(jù)的首先存儲(chǔ)方式。 以RRDTool,Wishper為代表,通常這類系統(tǒng)處理的數(shù)據(jù)模型比較單一,單機(jī)容量受限,并且內(nèi)嵌于監(jiān)控告警方案。
第二代面向時(shí)序時(shí)空領(lǐng)域的數(shù)據(jù)庫(kù)伴隨著大數(shù)據(jù)和Hadoop的發(fā)展,時(shí)序數(shù)據(jù)量開始迅速增長(zhǎng),系統(tǒng)業(yè)務(wù)對(duì)于處理時(shí)序數(shù)據(jù)的擴(kuò)展性等方面提出更多的要求。 基于通用存儲(chǔ)而專門構(gòu)建的時(shí)間序列數(shù)據(jù)庫(kù)開始出現(xiàn),它可以按時(shí)間間隔高效地存儲(chǔ)和處理這些數(shù)據(jù)。像OpenTSDB,KairosDB等等。
這類時(shí)序數(shù)據(jù)庫(kù)在繼承通用存儲(chǔ)優(yōu)勢(shì)的基礎(chǔ)上,利用時(shí)序的特性規(guī)避部分通用存儲(chǔ)的劣勢(shì),并且在數(shù)據(jù)模型,聚合分析方面做了貼合時(shí)序的大量創(chuàng)新。 比如OpenTSDB繼承了HBase的寬表屬性結(jié)合時(shí)序設(shè)計(jì)了偏移量的存儲(chǔ)模型,利用salt緩解熱點(diǎn)問(wèn)題等等。 然而它也有諸多不足之處,比如低效的全局UID機(jī)制,聚合數(shù)據(jù)的加載不可控,無(wú)法處理高基數(shù)標(biāo)簽查詢等等。 隨著docker,kubernetes, 微服務(wù)等技術(shù)的發(fā)展,以及對(duì)于IoT的發(fā)展預(yù)期越來(lái)越強(qiáng)烈。
在數(shù)據(jù)隨著時(shí)間而增長(zhǎng)的過(guò)程中,時(shí)間序列數(shù)據(jù)成為增長(zhǎng)最快的數(shù)據(jù)類型之一。 高性能,低成本的垂直型時(shí)序數(shù)據(jù)庫(kù)開始誕生,以InfluxDB為代表的具有時(shí)序特征的數(shù)據(jù)存儲(chǔ)引擎逐步引領(lǐng)市場(chǎng)。 它們通常具備更加高級(jí)的數(shù)據(jù)處理能力,高效的壓縮算法和符合時(shí)序特征的存儲(chǔ)引擎。 比如InfluxDB的基于時(shí)間的TSMT存儲(chǔ),Gorilla壓縮,面向時(shí)序的窗口計(jì)算函數(shù)p99,rate,自動(dòng)rollup等等。 同時(shí)由于索引分離的架構(gòu),在膨脹型時(shí)間線,亂序等場(chǎng)景下依然面臨著很大的挑戰(zhàn)。
第三代云時(shí)序時(shí)空數(shù)據(jù)庫(kù) 從2016年開始,各大云廠商紛紛布局TSDB,2017.4 Microsoft發(fā)布時(shí)序見解預(yù)覽版,提供的完全托管、端到端的存儲(chǔ)和查詢高度情景化loT時(shí)序數(shù)據(jù)解決方案。強(qiáng)大的可視化效果用于基于資產(chǎn)的數(shù)據(jù)見解和豐富的交互式臨時(shí)數(shù)據(jù)分析。 針對(duì)數(shù)據(jù)類型分為暖數(shù)據(jù)分析和原始數(shù)據(jù)分析,按照存儲(chǔ)空間和查詢量分別計(jì)費(fèi)。2018.11 Amazon在AWS re Invent大會(huì)發(fā)布Timestream預(yù)覽版。適用于 IoT 和運(yùn)營(yíng)應(yīng)用程序等場(chǎng)景。 提供自適應(yīng)查詢處理引擎快速地分析數(shù)據(jù),自動(dòng)對(duì)數(shù)據(jù)進(jìn)行匯總、保留、分層和壓縮處理。 按照寫入流量,存儲(chǔ)空間,查詢數(shù)據(jù)量的方式計(jì)費(fèi),以serverless的形式做到最低成本管理。
阿里云智能TSDB團(tuán)隊(duì)自2016年第一版時(shí)序數(shù)據(jù)庫(kù)落地后,逐步服務(wù)于DBPaaS,Sunfire等集團(tuán)業(yè)務(wù),在2017年中旬公測(cè)后,于2018年3月底正式商業(yè)化。 在此過(guò)程中,TSDB在技術(shù)方面不斷吸納時(shí)序領(lǐng)域各家之長(zhǎng),逐步形成了高性能低成本,免運(yùn)維,易用性逐步提升,邊云一體化,生態(tài)豐富等產(chǎn)品優(yōu)勢(shì)。

技術(shù)揭秘




1. 分布式流式聚合器

時(shí)序聚合運(yùn)算是時(shí)序數(shù)據(jù)庫(kù)區(qū)別于通用數(shù)據(jù)庫(kù)的特色。TSDB的聚合器主要算子涵蓋了插值,降采樣,降維等等OpenTSDB協(xié)議中的計(jì)算函數(shù)。借鑒傳統(tǒng)數(shù)據(jù)庫(kù)執(zhí)行模式,引入pipeline的執(zhí)行模式(aka Volcano / Iterator 執(zhí)行模式)。
Pipeline包含不同的執(zhí)行計(jì)算算子(operator), 一個(gè)查詢被物理計(jì)劃生成器解析分解成一個(gè)DAG或者operator tree, 由不同的執(zhí)行算子組成,DAG上的root operator負(fù)責(zé)驅(qū)動(dòng)查詢的執(zhí)行,并將查詢結(jié)果返回調(diào)用者。在執(zhí)行層面,采用的是top-down需求驅(qū)動(dòng) (demand-driven)的方式,從root operator驅(qū)動(dòng)下面operator的執(zhí)行。這樣的執(zhí)行引擎架構(gòu)具有優(yōu)點(diǎn):
  • 這種架構(gòu)方式被很多數(shù)據(jù)庫(kù)系統(tǒng)采用并證明是有效;
  • 接口定義清晰,不同的執(zhí)行計(jì)算算子可以獨(dú)立優(yōu)化,而不影響其他算子;
  • 易于擴(kuò)展:通過(guò)增加新的計(jì)算算子,很容易實(shí)現(xiàn)擴(kuò)展功能。比如目前查詢協(xié)議里只定義了tag上的查詢條件。如果要支持指標(biāo)值上的查詢條件(cpu.usage <= 70% and cpu.usage <=90%),可以通過(guò)增加一個(gè)新的FieldFilterOp來(lái)實(shí)現(xiàn)
  • 從查詢優(yōu)化器到生成執(zhí)行計(jì)劃,把查詢語(yǔ)句重寫成子查詢后構(gòu)建Operator Tree, 執(zhí)行器驅(qū)動(dòng)Operators完成聚合邏輯,執(zhí)行Fragment順序:Filtering -> Grouping -> Downsampling -> Interpolation -> Aggregation -> Rate Conversion -> Functions
  • 區(qū)分不同查詢場(chǎng)景,采用不同聚合算子分別優(yōu)化,支持結(jié)果集的流式讀取和物化, Operator的結(jié)果在包含None,dsOp等情況下采用流式聚合,而一些時(shí)間線之間的聚合仍然是物化運(yùn)算。

2.時(shí)空數(shù)據(jù)的查詢和分析

在介紹時(shí)空數(shù)據(jù)的查詢分析之前,簡(jiǎn)單介紹下什么是時(shí)空數(shù)據(jù)以及時(shí)空數(shù)據(jù)的特點(diǎn)。
大數(shù)據(jù)時(shí)代產(chǎn)生了大量的有時(shí)間和空間、標(biāo)記對(duì)象個(gè)體行為的時(shí)空數(shù)據(jù)。
比如個(gè)人手機(jī)產(chǎn)生的信令數(shù)據(jù)、共享出行的司乘位置和訂單數(shù)據(jù)、車聯(lián)網(wǎng)和無(wú)人駕駛行業(yè)的實(shí)時(shí)車輛數(shù)據(jù)、物流的位置流數(shù)據(jù),以及外賣小哥的送餐軌跡等,都是這類數(shù)據(jù)。
時(shí)空數(shù)據(jù)的特點(diǎn)之一是復(fù)雜性和目標(biāo)的多樣性,存在許多時(shí)空分析方法,比如聚類,預(yù)測(cè),變化檢測(cè),頻繁模式挖掘,異常檢測(cè)和關(guān)系挖掘。
時(shí)空數(shù)據(jù)另外一個(gè)特點(diǎn)是數(shù)據(jù)量級(jí)呈指數(shù)型增長(zhǎng),也是時(shí)序數(shù)據(jù)的在高維空間的展開。傳統(tǒng)數(shù)據(jù)庫(kù)可伸縮性差,難以管理海量時(shí)空數(shù)據(jù)。高并發(fā)情況下,由于存儲(chǔ)和計(jì)算沒(méi)有分離,時(shí)空數(shù)據(jù)的檢索會(huì)是很大瓶頸,可能造成檢索性能急劇下降,響應(yīng)時(shí)間超過(guò)數(shù)分鐘。
面對(duì)這樣的數(shù)據(jù)量、計(jì)算量和對(duì)分析延時(shí)要求的挑戰(zhàn),時(shí)空數(shù)據(jù)庫(kù)TSDB從多個(gè)技術(shù)維度進(jìn)行了突破。如存儲(chǔ)計(jì)算分離、高性能時(shí)空索引、時(shí)空SQL優(yōu)化器、時(shí)空計(jì)算引擎、時(shí)空數(shù)據(jù)壓縮算法。
**時(shí)空過(guò)濾條件的識(shí)別與下推 ** 有別于通用數(shù)據(jù)的<,>和=關(guān)系,時(shí)空數(shù)據(jù)的查詢過(guò)濾條件通常是一些類似于st_contains(), st_intersects() 的空間分析函數(shù)。因此SQL優(yōu)化器會(huì)解析識(shí)別過(guò)濾條件之中的時(shí)空過(guò)濾條件,根據(jù)存儲(chǔ)引擎的特性,決定哪些過(guò)濾條件可以下推,如果有無(wú)法下推的條件,則會(huì)將這些條件留在Filter算子之中,由計(jì)算引擎來(lái)進(jìn)行過(guò)濾。而如果過(guò)濾條件可以被下推,則優(yōu)化器會(huì)生成新的Filter算子。優(yōu)化前后的關(guān)系算子如下圖所示:


時(shí)空計(jì)算引擎
在通用數(shù)據(jù)庫(kù)中,JOIN是兩張表之中某兩個(gè)列相等,對(duì)應(yīng)的有NestedLoopJOIN、HashJOIN,SortMergeJOIN等算法。
對(duì)于時(shí)空數(shù)據(jù)而言,找到兩個(gè)相等的幾何對(duì)象幾乎不可能,多是基于st_contains()等空間位置關(guān)系或是st_distance()距離關(guān)系,來(lái)做JOIN。
比如找出云棲小鎮(zhèn)附近1公里的所有出租車,JOIN條件就是出租車位置要包含在云棲小鎮(zhèn)為圓心,半徑1公里的圓形空間范圍之內(nèi);比如找出離我最近的出租車,這就要用到KNN JOIN。而這些JOIN就超出了通用數(shù)據(jù)庫(kù)JOIN算法可以優(yōu)化的范疇。
在時(shí)空數(shù)據(jù)庫(kù)TSDB之中,采用了專門的Scalable Sweeping-Based Spatial Join算法、時(shí)空索引、存儲(chǔ)層+計(jì)算層的Two level index進(jìn)行優(yōu)化。當(dāng)SQL優(yōu)化器識(shí)別到兩表JOIN的條件為時(shí)空分析函數(shù)時(shí),如果參數(shù)等條件都符合要求,則SQL優(yōu)化器會(huì)生成專門的時(shí)空J(rèn)OIN算子,采用專門的JOIN算法來(lái)實(shí)現(xiàn),這樣的算法比樸素的JOIN算子性能要高出很多。
開源生態(tài)
TSDB 提供開源influxDB 和 開源Prometheus 兩大生態(tài)的支持。 influxDB是DBengines上排名第一的時(shí)序數(shù)據(jù)庫(kù),阿里云influxDB?在開源influxDB基礎(chǔ)之上提供一下功能:
1.水平可擴(kuò)展集群方案 2.全局內(nèi)存管理 3.全面兼容TICK生態(tài)
水平可擴(kuò)展集群方案
  1. 使用raft實(shí)現(xiàn)influxDB數(shù)據(jù)節(jié)點(diǎn)的高可用,同時(shí)提供多個(gè)高可用方案,讓用戶可以在可用性和成本中選擇最適合自己的方案。
  2. 阿里云influxDB?支持根據(jù)數(shù)據(jù)量大小,動(dòng)態(tài)增加influxDB數(shù)據(jù)節(jié)點(diǎn)的高可用組。



全局內(nèi)存管理
  1. 阿里云influxDB?通過(guò)對(duì)influxDB代碼的優(yōu)化,實(shí)現(xiàn)了全局內(nèi)存管理,可以通過(guò)動(dòng)態(tài)調(diào)整內(nèi)存使用
  2. 全局內(nèi)存管理支持阿里云influxDB創(chuàng)建任意多個(gè)database
  3. 全局內(nèi)存管理實(shí)現(xiàn)了數(shù)據(jù)寫入以及數(shù)據(jù)查詢的內(nèi)存管理,可以非常顯著的防止由于OOM引發(fā)的穩(wěn)定性問(wèn)題,提高整個(gè)系統(tǒng)的可用性
TICK生態(tài)兼容
  1. 阿里云influxDB全面兼容TICK生態(tài),支持對(duì)接telegraf,chronograf以及kapacitor
  2. 除此之外,阿里云influxDB支持對(duì)接grafana,用戶能夠使用更加豐富的圖形化工具展示influxDB中的數(shù)據(jù)
  3. 阿里云influxDB提供“一鍵式”的數(shù)據(jù)采集工具,用戶可以非常方便的安裝、啟動(dòng)數(shù)據(jù)采集工具,并且在阿里云管理平臺(tái)上管理數(shù)據(jù)采集工具


阿里云influxDB不但提供高可用、集群方案,更加穩(wěn)定性的服務(wù)以及擁抱開源生態(tài),也積極集成數(shù)據(jù)采集,可視化以及告警等功能,同時(shí)提供全自動(dòng)監(jiān)控,全托管“無(wú)運(yùn)維”的服務(wù)。
Prometheus是K8S開源監(jiān)控報(bào)警系統(tǒng)和時(shí)序列數(shù)據(jù)庫(kù),阿里云也提供Prometheus服務(wù)。相對(duì)于開源Prometheus,阿里云Prometheus有以下特性:



原生態(tài)對(duì)接Prometheus
  1. 無(wú)縫對(duì)接InfluxDB
  2. 無(wú)需代碼修改、僅需修改配置
長(zhǎng)期數(shù)據(jù)存儲(chǔ)
  1. InfluxDB通過(guò)Remote Storage長(zhǎng)期存儲(chǔ)Prometheus數(shù)據(jù)
  2. InfluxDB遠(yuǎn)程存儲(chǔ)可以實(shí)現(xiàn)“多寫一讀”的查詢模式,多個(gè)prometheus對(duì)接同一個(gè)influxDB,允許聯(lián)合查詢多個(gè)Prometheus,實(shí)現(xiàn)數(shù)據(jù)“全局化”查詢
高可用與高可靠
  1. InfluxDB高可用為Prometheus提供高可用存儲(chǔ)功能
  2. InfluxDB使用的云盤實(shí)現(xiàn)Prometheus數(shù)據(jù)高可靠,有效防止數(shù)據(jù)丟失
阿里云Prometheus充分使用阿里云InfluxDB的能力,增強(qiáng)阿里云Prometheus的能力,實(shí)現(xiàn)數(shù)據(jù)的長(zhǎng)期存儲(chǔ),高可用,高可靠,同時(shí)實(shí)現(xiàn)數(shù)據(jù)的“全局化”查詢。
總結(jié)
阿里云時(shí)序時(shí)空數(shù)據(jù)庫(kù)TSDB系列產(chǎn)品,聚焦于物聯(lián)網(wǎng)、監(jiān)控APM、交通出行、車聯(lián)網(wǎng)、物流等行業(yè),致力于打造云邊一體化的時(shí)序時(shí)空數(shù)據(jù)庫(kù),歡迎各位開發(fā)者和企業(yè)客戶使用,給我們提出寶貴意見。
本文作者:Roin123
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI