推薦物聯(lián)網(wǎng)項(xiàng)目中采用時(shí)序數(shù)據(jù)庫
隨著制造業(yè)數(shù)字化的發(fā)展以及物聯(lián)網(wǎng)應(yīng)用的普及,越來越非互聯(lián)網(wǎng)、業(yè)務(wù)系統(tǒng)的數(shù)據(jù)被采集、記錄和存儲(chǔ)。
很多系統(tǒng)開發(fā)者熟悉的是 Oracle、MySQL等關(guān)系型數(shù)據(jù)庫,以及像 Redis 這樣的鍵值數(shù)據(jù)庫,于是在物聯(lián)網(wǎng)應(yīng)用、制造業(yè)數(shù)字化應(yīng)用中也延續(xù)了相似的數(shù)據(jù)庫選型。
這樣做的好處很直接,產(chǎn)品熟悉,技術(shù)難度可控,開發(fā)工期可控。但隨著系統(tǒng)運(yùn)行時(shí)間的推移,該方案面臨的性能挑戰(zhàn)越來越大,而且在業(yè)務(wù)開發(fā)中會(huì)面臨很多相似的查詢、統(tǒng)計(jì)需求需要實(shí)現(xiàn)。
為什么呢?我們?cè)賹徱曇幌挛锫?lián)網(wǎng)數(shù)據(jù)、制造業(yè)數(shù)據(jù)的特點(diǎn)。
首先,數(shù)據(jù)結(jié)構(gòu)相對(duì)簡單,主要包含三列,時(shí)間、標(biāo)簽、值;
第二,數(shù)據(jù)生成大多具有穩(wěn)定的節(jié)奏,不存在或者與一般互聯(lián)網(wǎng)應(yīng)用那樣的波峰波谷;
第三,數(shù)據(jù)很少更新,更多的是一次寫,多次查詢;
第四,數(shù)據(jù)量極其巨大,同時(shí)對(duì)于存儲(chǔ)成本又很敏感;
第五,數(shù)據(jù)分析統(tǒng)計(jì)中很重要的維度之一是時(shí)間;
……
以上這些特點(diǎn)和我們熟悉的交易類數(shù)據(jù)有很明顯不同。雖然用關(guān)系型數(shù)據(jù)庫可以存儲(chǔ)和管理,但沒有很好的利用對(duì)于數(shù)據(jù)的理解。
如果能選擇針對(duì)這類數(shù)據(jù)特點(diǎn)的專用數(shù)據(jù)庫,則會(huì)讓很多技術(shù)難點(diǎn)得到化解,而且會(huì)提高系統(tǒng)的穩(wěn)定性。在數(shù)據(jù)庫行業(yè)中,這類產(chǎn)品叫時(shí)序數(shù)據(jù)庫。
時(shí)間序列數(shù)據(jù)庫是廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)設(shè)備監(jiān)控系統(tǒng) ,企業(yè)能源管理系統(tǒng)(EMS),生產(chǎn)安全監(jiān)控系統(tǒng),電力檢測系統(tǒng)等行業(yè)場景的專業(yè)數(shù)據(jù)庫產(chǎn)品,提供百萬高效寫入,高壓縮比低成本存儲(chǔ)、預(yù)降采樣、插值、多維聚合計(jì)算,查詢結(jié)果可視化功能;解決由于設(shè)備采集點(diǎn)數(shù)量巨大,數(shù)據(jù)采集頻率高,造成的存儲(chǔ)成本高,寫入和查詢分析效率低的問題。
下面介紹幾款時(shí)間數(shù)據(jù)庫產(chǎn)品供大家選擇。
Informix TimeSeries
Informix TimeSeries在時(shí)間序列數(shù)據(jù)庫中的位置就像Oracle 在關(guān)系數(shù)據(jù)庫中一樣,屬于經(jīng)典的產(chǎn)品。
它給后續(xù)時(shí)間數(shù)據(jù)庫產(chǎn)品研發(fā)提供了很好的標(biāo)桿作用。其針對(duì)時(shí)間序列數(shù)據(jù)的特殊存儲(chǔ)結(jié)構(gòu)、索引設(shè)計(jì)以及專用計(jì)算函數(shù)都屬于創(chuàng)新性的設(shè)計(jì)。
它也是多模數(shù)據(jù)的早期實(shí)踐者,能與關(guān)系型數(shù)據(jù)庫引擎并存,簡化了應(yīng)用系統(tǒng)設(shè)計(jì)、部署的復(fù)雜度。
InfluxDB
時(shí)序數(shù)據(jù)庫 InfluxDB版是一款專門處理高寫入和查詢負(fù)載的時(shí)序數(shù)據(jù)庫,用于存儲(chǔ)大規(guī)模的時(shí)序數(shù)據(jù)并進(jìn)行實(shí)時(shí)分析,包括來自DevOps監(jiān)控、應(yīng)用指標(biāo)和IoT傳感器上的數(shù)據(jù)。目前有以下特點(diǎn):
專為時(shí)間序列數(shù)據(jù)量身打造的高性能數(shù)據(jù)存儲(chǔ)。TSM引擎提供數(shù)據(jù)高速讀寫和壓縮等功能。
簡單高效的HTTP API寫入和查詢接口。
針對(duì)時(shí)序數(shù)據(jù),量身打造類似SQL的查詢語言,輕松查詢聚合數(shù)據(jù)。
允許對(duì)tag建索引,實(shí)現(xiàn)快速有效的查詢。
數(shù)據(jù)保留策略(Retention policies)能夠有效地使舊數(shù)據(jù)自動(dòng)失效。
OpenTSDB
OpenTSDB是可擴(kuò)展的分布式時(shí)序數(shù)據(jù)庫,底層依賴HBase。作為基于通用存儲(chǔ)開發(fā)的時(shí)序數(shù)據(jù)庫典型代表,起步比較早,在時(shí)序市場的認(rèn)可度相對(duì)較高。
OpenTSDB的自我定位很清晰:The Scalable Time Series Database。
如果應(yīng)用場景很看重?cái)U(kuò)展性,可以選擇 OpenTSDB,否則就要考慮一下是否需要接受將 HBase 也納入到技術(shù)棧和系統(tǒng)中了。
阿里云智能TSDB
阿里云智能TSDB高度兼容OpenTSDB協(xié)議,采用自研的索引,數(shù)據(jù)模型,流式聚合等技術(shù)手段提供更強(qiáng)大的時(shí)序能力。它不是簡單地把OpenTSDB在云上部署了一份,而是基于云計(jì)算架構(gòu)重新設(shè)計(jì)了底層架構(gòu);同時(shí)由于阿里云TSDB底層技術(shù)架構(gòu)同OpenTSDB的實(shí)現(xiàn)區(qū)別巨大,對(duì)于OpenTSDB的一些運(yùn)維接口不會(huì)兼容。從運(yùn)維管控,功能,成本,性能等方面對(duì)比,阿里云智能TSDB相比OpenTSDB而言,優(yōu)勢還是很明顯的。
上述應(yīng)用架構(gòu)中,設(shè)備將原始數(shù)據(jù)通過 MQTT 協(xié)議發(fā)送到物聯(lián)網(wǎng)平臺(tái),經(jīng)由物聯(lián)網(wǎng)平臺(tái)將數(shù)據(jù)轉(zhuǎn)發(fā)到消息服務(wù)系統(tǒng),繼而通過流計(jì)算系統(tǒng)對(duì)這些數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算處理后寫入到 TSDB 中存儲(chǔ),或者經(jīng)由物聯(lián)網(wǎng)平臺(tái)直接將原始數(shù)據(jù)寫入 TSDB 中存儲(chǔ)。前端的監(jiān)控系統(tǒng)和大數(shù)據(jù)處理系統(tǒng)會(huì)利用 TSDB 的數(shù)據(jù)查詢和計(jì)算分析能力進(jìn)行業(yè)務(wù)監(jiān)控和分析結(jié)果的實(shí)時(shí)展現(xiàn)。
阿里云TSDB for InfluxDB
阿里云TSDB for InfluxDB則是云上的 InfluxDB 版,與InfluxDB 有很好的兼容性,可順利的將將線下是數(shù)據(jù)庫遷移至云上;同時(shí)省去了部署、運(yùn)維管理的復(fù)雜度。

作者:黃軍雷
數(shù)據(jù)驅(qū)動(dòng)價(jià)值 熱愛成就非凡