技術(shù)
導(dǎo)讀:HiTSDB 是一種高性能、低成本、穩(wěn)定可靠的在線時(shí)序數(shù)據(jù)庫(kù)服務(wù);提供高效讀寫(xiě),高壓縮比存儲(chǔ)、時(shí)序數(shù)據(jù)插值及聚合計(jì)算。
2017云棲大會(huì)·上海峰會(huì)上,阿里云發(fā)布了面向物聯(lián)網(wǎng)場(chǎng)景的高性能時(shí)間序列數(shù)據(jù)庫(kù) (High-Performance Time Series Database , 簡(jiǎn)稱 HiTSDB) 。HiTSDB 可支持每秒1000萬(wàn)時(shí)序數(shù)據(jù)點(diǎn)寫(xiě)入;具備PB級(jí)別的數(shù)據(jù)存儲(chǔ)能力,提供高效壓縮算法,整體存儲(chǔ)成本降低90%;提供時(shí)序數(shù)據(jù)插值計(jì)算,降精度計(jì)算,時(shí)間緯度聚合計(jì)算,空間緯度聚合計(jì)算的能力。
HiTSDB 是一種高性能、低成本、穩(wěn)定可靠的在線時(shí)序數(shù)據(jù)庫(kù)服務(wù);提供高效讀寫(xiě),高壓縮比存儲(chǔ)、時(shí)序數(shù)據(jù)插值及聚合計(jì)算。是物聯(lián)網(wǎng)(IoT)設(shè)備監(jiān)控系統(tǒng) ,企業(yè)能源管理系統(tǒng)(EMS),生產(chǎn)安全監(jiān)控系統(tǒng),電力檢測(cè)系統(tǒng)等行業(yè)領(lǐng)域的專(zhuān)業(yè)數(shù)據(jù)庫(kù)。
HiTSDB 打造物聯(lián)網(wǎng)智慧園區(qū)
HiTSDB 已經(jīng)在阿里巴巴內(nèi)部孵化多年,在阿里巴巴集團(tuán)已經(jīng)支持了20多個(gè)核心業(yè)務(wù)場(chǎng)景,比如阿里智慧園區(qū)的物聯(lián)網(wǎng)(IoT)建設(shè)。
智慧園區(qū)主要解決辦公園區(qū)的設(shè)備的管理和智能控制。設(shè)備管理主要是將設(shè)備接入到統(tǒng)一的設(shè)備管理平臺(tái),同時(shí)對(duì)所有設(shè)備的運(yùn)行情況進(jìn)行監(jiān)控,及時(shí)發(fā)現(xiàn)故障設(shè)備,了解整體的設(shè)備運(yùn)行情況以便于做出相應(yīng)的決策。
而智能控制就是系統(tǒng)能夠根據(jù)設(shè)備的運(yùn)行狀態(tài),通過(guò)某些規(guī)則的設(shè)定自動(dòng)的進(jìn)行各種調(diào)控,比如:當(dāng)某個(gè)辦公區(qū)域的人數(shù)大于20人時(shí),可以自動(dòng)開(kāi)啟亮燈,小于20人是可以自動(dòng)關(guān)燈,或者當(dāng)某一區(qū)域的一氧化碳的水平高于預(yù)警值,則自動(dòng)啟動(dòng)報(bào)警開(kāi)關(guān),對(duì)于園區(qū)的安全管理也非常必要。
對(duì)于技術(shù)而言,設(shè)備的監(jiān)控和智能控制的規(guī)則的匹配,本質(zhì)是數(shù)據(jù)的收集和監(jiān)控分析。
園區(qū)的設(shè)備種類(lèi)繁多,包括攝像頭、電燈、空調(diào)、空氣檢測(cè),這些設(shè)備上都有非常多的傳感器,這些傳感器每一時(shí)刻都在實(shí)時(shí)的產(chǎn)生數(shù)據(jù),這些數(shù)據(jù)隨著時(shí)間的推進(jìn),會(huì)在時(shí)間軸上產(chǎn)生一些列的數(shù)據(jù),就是我們說(shuō)的時(shí)序數(shù)據(jù),比如溫度、濕度、用電量等。要實(shí)現(xiàn)設(shè)備的監(jiān)控管理,其實(shí)就是將這時(shí)序數(shù)據(jù)進(jìn)行實(shí)時(shí)的采集存儲(chǔ)和分析展現(xiàn),而 HiTSDB 就是時(shí)序數(shù)據(jù)領(lǐng)域的專(zhuān)業(yè)數(shù)據(jù)庫(kù)。
HiTSDB 集群可支持每秒 1000 萬(wàn)的時(shí)序數(shù)據(jù)點(diǎn)寫(xiě)入
HiTSDB 具備關(guān)系數(shù)據(jù)庫(kù)及NoSQL 數(shù)據(jù)庫(kù)所不具備的寫(xiě)入能力。
智慧園區(qū)以及其他的IoT場(chǎng)景,設(shè)備的規(guī)模通常是萬(wàn)級(jí)別至百萬(wàn)級(jí)別,每個(gè)設(shè)備都實(shí)時(shí)產(chǎn)生數(shù)據(jù),需要將實(shí)時(shí)數(shù)據(jù)快速的寫(xiě)入到數(shù)據(jù)庫(kù)中,那么每秒就要寫(xiě)入上百萬(wàn)甚至上千萬(wàn)的實(shí)時(shí)數(shù)據(jù)。
百萬(wàn)甚至千萬(wàn)級(jí)別的實(shí)時(shí)數(shù)據(jù)寫(xiě)入對(duì)于數(shù)據(jù)庫(kù)并發(fā)寫(xiě)入的壓力非常巨大,使用關(guān)系型數(shù)據(jù)庫(kù)完全不可行。 因?yàn)?InnoDB 的寫(xiě)入性能是很有限的,實(shí)際測(cè)試在24臺(tái)機(jī)器上,存儲(chǔ)使用SSD硬盤(pán),一秒鐘只能持續(xù)寫(xiě)入只有兩萬(wàn)左右,主要原因在于B樹(shù)索引。InnoDB 的索引是一個(gè)B樹(shù),這個(gè)B樹(shù)的更新有很大的開(kāi)銷(xiāo)。雖然我們可以通過(guò)一些辦法優(yōu)化,但時(shí)序數(shù)通常是一個(gè)多維數(shù)據(jù),通常是 ADhoc 的查詢,為了優(yōu)化所有排列組合查詢,需要建很多多列的索引,這些索引每次在寫(xiě)的時(shí)候每個(gè)都需要更新,所以就會(huì)導(dǎo)致很多的IO。
而 HiTSDB 針對(duì)時(shí)序數(shù)據(jù)庫(kù)的進(jìn)行寫(xiě)入優(yōu)化,基于時(shí)間序列的時(shí)間線數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)寫(xiě)入,實(shí)際業(yè)務(wù)使用場(chǎng)景中最高支持到每秒 1000 萬(wàn)的時(shí)序數(shù)據(jù)點(diǎn)寫(xiě)入?;诎⒗镌?4C8G規(guī)格的 ECS,單臺(tái)平均達(dá)到10萬(wàn)/秒的數(shù)據(jù)寫(xiě)入,峰值達(dá)15萬(wàn)/秒。
HiTSDB 具備領(lǐng)先的時(shí)序數(shù)據(jù)分析技術(shù)優(yōu)勢(shì)
在數(shù)據(jù)查詢方面,HiTSDB 也具備領(lǐng)先的技術(shù)優(yōu)勢(shì)。在時(shí)序數(shù)據(jù)領(lǐng)域“插值(interpolation)”,“降精度(DownSimple)”以及“聚合計(jì)算(Aggregation)”是常見(jiàn)的業(yè)務(wù)需求。舉個(gè)例子, 智慧園區(qū)的業(yè)務(wù)系統(tǒng)需要查看一個(gè)樓宇的某盞燈的耗電量情況,那么就需要把這盞燈的耗電量數(shù)據(jù)從數(shù)據(jù)庫(kù)中查詢并展示出來(lái),如果由于采集的故障導(dǎo)致某個(gè)時(shí)刻用電量數(shù)據(jù)缺失,那么需要通過(guò)特定算法來(lái)近似的估算出這個(gè)數(shù)據(jù),這個(gè)計(jì)算補(bǔ)全數(shù)據(jù)的過(guò)程就是“插值”。而當(dāng)需要查看這盞燈一年的耗電趨勢(shì)情況時(shí),通常只需要計(jì)算出每一天的耗電量,進(jìn)行查看,而不需要把每一個(gè)時(shí)刻采集的數(shù)據(jù)全部輸出出來(lái),這個(gè)將原始精度轉(zhuǎn)化為業(yè)務(wù)需求精度的過(guò)程就是“降精度”。而如果要統(tǒng)計(jì)某一個(gè)樓層或者樓宇的用耗電量整體趨勢(shì)數(shù)據(jù)時(shí),就需要將所有統(tǒng)計(jì)范圍內(nèi)的燈具的耗電量數(shù)據(jù)做“合并統(tǒng)計(jì)”,這個(gè)類(lèi)似的統(tǒng)計(jì)過(guò)程就是Aggregation。
時(shí)序數(shù)據(jù)降精度是在時(shí)間序列維度上做的。對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),首先要把時(shí)間序列維度拿出來(lái),然后在中間插值,而實(shí)際上 SQL 是按點(diǎn)來(lái)操作的。所以如果要做降精度的話,需要用一個(gè)值查詢把整條時(shí)間序列上的數(shù)據(jù)查詢出來(lái),插好值之后才能做時(shí)間序列之間的聚合,那么服務(wù)和 SQL 服務(wù)器之間的吞吐量非常大,相當(dāng)于 SQL 只是一個(gè)數(shù)據(jù)通道需要把所有值都拉出來(lái)運(yùn)算一遍,這個(gè)查詢性能會(huì)非常慢,并且每一次計(jì)算都需要重新拉取數(shù)據(jù),相對(duì) HiTSDB,這個(gè)性就能差了幾百倍。
HiTSDB 支持線性插值,可以盡量彌補(bǔ)數(shù)據(jù)異常缺失造成的統(tǒng)計(jì)失敗。HiTSDB 支持 Max ,Min ,AVG 等各種降精度的計(jì)算函數(shù),同時(shí)也可以通過(guò)“預(yù)降精度”的方式,將業(yè)務(wù)精度的數(shù)據(jù)在入庫(kù)的過(guò)程中計(jì)算完成,提升查詢的效率。HiTSDB 在的空間聚合 Aggregator 支持也非常全面,支持 ADhoc 查詢,HiTSDB 通過(guò)引入倒排索引和數(shù)據(jù)分片提升檢索時(shí)間序列的效率,通過(guò)并行計(jì)算架構(gòu),整體計(jì)算性能提升非常明顯。
HiTSDB 兼容 OpenTSDB 協(xié)議,寫(xiě)入性能提升20倍,壓縮效率提升10倍。
HiTSDB 兼容 OpenTSDB 訪問(wèn)協(xié)議。OpenTSDB 是時(shí)序數(shù)據(jù)庫(kù)領(lǐng)域相對(duì)活躍的技術(shù)產(chǎn)品,HiTSDB 通過(guò)技術(shù)優(yōu)化后相對(duì)于 OpenTSDB 寫(xiě)入性能提升20倍以上。HiTSDB 壓縮效率相比較 OpenTSDB 提升10倍左右,通常原始時(shí)序數(shù)據(jù)的大小在 200-300 Byte,OpenTSDB 單數(shù)據(jù)點(diǎn)消耗約20 Byte,HiTSDB 單數(shù)據(jù)點(diǎn)消耗約 2Byte,通過(guò) HiTSDB 可以節(jié)約90%以上的數(shù)據(jù)庫(kù)存儲(chǔ)成本。
HiTSDB 所具備的高效數(shù)據(jù)寫(xiě)入和高壓縮比的特性,以及阿里長(zhǎng)期業(yè)務(wù)實(shí)踐的所提供的穩(wěn)定性保證,結(jié)合阿里云上豐富的產(chǎn)品生態(tài),可以幫助 IoT 企業(yè)快速構(gòu)建自己的智慧物聯(lián)網(wǎng)監(jiān)控分析系統(tǒng),也可以幫助傳統(tǒng)的石油化工及制造企業(yè)插上物聯(lián)網(wǎng)的翅膀,打造屬于企業(yè)自己的智慧系統(tǒng)。
現(xiàn)在,HiTSDB 在阿里云官網(wǎng)啟動(dòng)免費(fèi)公測(cè)。