什么是時間序列數(shù)據(jù)什么是時間序列(Time Series,以下簡稱時序)數(shù)據(jù),?從定義上來說,,就是一串按時間維度索引的數(shù)據(jù)。用描述性的語言來解釋什么是時序數(shù)據(jù),,簡單的說,,就是這類數(shù)據(jù)描述了某個被測量的主體在一個時間范圍內(nèi)的每個時間點上的測量值。 時序數(shù)據(jù)用于描述一個物體在歷史的時間維度上的狀態(tài)變化信息,,而對于時序數(shù)據(jù)的分析,,就是嘗試掌握并把控其變化的規(guī)律的過程。隨著物聯(lián)網(wǎng),、大數(shù)據(jù)和人工智能技術(shù)的發(fā)展,,時序數(shù)據(jù)也呈一個爆發(fā)式的增長。而為了更好的支持這類數(shù)據(jù)的存儲和分析,,在市場上衍生出了多種多樣的新興的數(shù)據(jù)庫產(chǎn)品,。這類數(shù)據(jù)庫產(chǎn)品的發(fā)明都是為了解決傳統(tǒng)關(guān)系型數(shù)據(jù)庫在時序數(shù)據(jù)存儲和分析上的不足和缺陷,這類產(chǎn)品被統(tǒng)一歸類為時序數(shù)據(jù)庫,。 時序數(shù)據(jù)庫本身是一個比較新的概念,,直到5年前,DB-Engine才將時序數(shù)據(jù)庫列為一個獨立的分類,。雖然時序數(shù)據(jù)庫的概念比較新,,但是時序數(shù)據(jù)卻由來已久。從古至今,,在我們的日常生活中,,時序數(shù)據(jù)從未缺席。在十幾年前,,時序數(shù)據(jù)只能選擇存放在關(guān)系型數(shù)據(jù)庫中,,但是隨著通信技術(shù)的發(fā)展,特別是互聯(lián)網(wǎng)技術(shù)的發(fā)展,,時序數(shù)據(jù)的增長速度呈現(xiàn)指數(shù)級別,使用關(guān)系型數(shù)據(jù)庫來存儲時序數(shù)據(jù)顯然跟不上時代的節(jié)奏了,,所以時序數(shù)據(jù)庫應(yīng)運而生,。時序數(shù)據(jù)庫就是一類專門為處理時間序列數(shù)據(jù)而設(shè)計并優(yōu)化的數(shù)據(jù)庫管理系統(tǒng),。 主要用例時間序列數(shù)據(jù)的應(yīng)用非常廣泛,包括: - IT運維
各種IT的軟硬件無時無刻不在產(chǎn)生大量的時間序列,,主要表現(xiàn)為各種日志數(shù)據(jù),。 - 物聯(lián)網(wǎng) IOT
工業(yè)機器和設(shè)備上的傳感器,可穿戴設(shè)備,,車輛,,物理容器,托盤,,智能家居的消費設(shè)備等的數(shù)據(jù),。 例如通過可穿戴設(shè)備對個人健康的管理,就是通過設(shè)備不斷采集你的個人健康數(shù)據(jù),,例如心跳,、體溫等等,收集完數(shù)據(jù)后套用模型計算來評估你的健康度,。 - 股市和其它經(jīng)濟運行數(shù)據(jù)
經(jīng)典證券,,較新的加密貨幣,支付,,交易事件,。 - 應(yīng)用程序事件
用戶/客戶交互數(shù)據(jù),如點擊流,,綜合瀏覽量,,登錄,注冊等,。 - 商業(yè)智能
跟蹤關(guān)鍵業(yè)務(wù)指標(biāo)和業(yè)務(wù)的整體健康狀況,。 - 環(huán)境監(jiān)測
例如溫度,濕度,,壓力,,pH值,花粉計數(shù),,空氣流量,一氧化碳(CO),,二氧化氮(NO2),,顆粒物質(zhì)(PM10)。
時序數(shù)據(jù)的特點時間序列數(shù)據(jù)具有以下的主要特點 - 時間戳可以是事件產(chǎn)生的時間(event time),,時間攝取的時間(ingestion time)和事件處理的時間(processing time)。通常事件產(chǎn)生的時間是時間序列最重要的時間。
- 寫入平穩(wěn),、持續(xù),、高并發(fā)高吞吐:時序數(shù)據(jù)的寫入是比較平穩(wěn)的,這點與應(yīng)用數(shù)據(jù)不同,,應(yīng)用數(shù)據(jù)通常與應(yīng)用的訪問量成正比,,而應(yīng)用的訪問量通常存在波峰波谷。時序數(shù)據(jù)的產(chǎn)生通常是以一個固定的時間頻率產(chǎn)生,,不會受其他因素的制約,,其數(shù)據(jù)生成的速度是相對比較平穩(wěn)的。時序數(shù)據(jù)是由每個個體獨立生成,,所以當(dāng)個體數(shù)量眾多時,通常寫入的并發(fā)和吞吐量都是比較高的,,特別是在物聯(lián)網(wǎng)場景下,。寫入并發(fā)和吞吐量,可以簡單的通過個體數(shù)量和數(shù)據(jù)生成頻率來計算,,例如若你有1000個個體以10秒的頻率產(chǎn)生數(shù)據(jù),則你平均每秒產(chǎn)生的并發(fā)和寫入量就是100,。
- 寫多讀少:時序數(shù)據(jù)上95%-99%的操作都是寫操作,是典型的寫多讀少的數(shù)據(jù),。這與其數(shù)據(jù)特性相關(guān),例如監(jiān)控數(shù)據(jù),,你的監(jiān)控項可能很多,但是你真正去讀的可能比較少,,通常只會關(guān)心幾個特定的關(guān)鍵指標(biāo)或者在特定的場景下才會去讀數(shù)據(jù),。
- 實時寫入最近生成的數(shù)據(jù),,無更新,,只添加:時序數(shù)據(jù)的寫入是實時的,且每次寫入都是最近生成的數(shù)據(jù),,這與其數(shù)據(jù)生成的特點相關(guān),,因為其數(shù)據(jù)生成是隨著時間推進的,而新生成的數(shù)據(jù)會實時的進行寫入,。數(shù)據(jù)寫入無更新,,在時間這個維度上,,隨著時間的推進,每次數(shù)據(jù)都是新數(shù)據(jù),,不會存在舊數(shù)據(jù)的更新,,不過不排除人為的對數(shù)據(jù)做訂正,。
- 按時間范圍讀取:通常來說,,你不會去關(guān)心某個特定點的數(shù)據(jù),,而是一段時間的數(shù)據(jù)。所以時序數(shù)據(jù)的讀取,,基本都是按時間范圍的讀取,。
- 最近的數(shù)據(jù)被讀取的概率高:最近的數(shù)據(jù)越有可能被讀取,以監(jiān)控數(shù)據(jù)為例,,你通常只會關(guān)心最近幾個小時或最近幾天的監(jiān)控數(shù)據(jù),,而極少關(guān)心一個月或一年前的數(shù)據(jù)。
- 多精度查詢:按數(shù)據(jù)點的不同密集度來區(qū)分不同的精度,,例如若相鄰數(shù)據(jù)點的間隔周期是10秒,,則該時序數(shù)據(jù)的精度就是10秒,若相鄰數(shù)據(jù)點的時間間隔周期是30秒,,則該時序數(shù)據(jù)的精度就是30秒,。時間間隔越短,精度越高,。精度越高的數(shù)據(jù),,能夠還原的歷史狀態(tài)更細(xì)致更準(zhǔn)確,但其保存的數(shù)據(jù)點會越多,。這個就好比相機的像素,,像素越高,照片越清晰但是相片大小越大,。時序數(shù)據(jù)的查詢,,不需要都是高精度的,這是實際的需求,,也是一種取舍,,同樣也是成本的考慮。還是拿監(jiān)控數(shù)據(jù)舉例,,通常監(jiān)控數(shù)據(jù)會以曲線圖的方式展現(xiàn),,由人的肉眼去識別。在這種情況下,,單位長度下若展示的數(shù)據(jù)點過于密集,,反而不利于觀察,,這是實際的需求。而另外一種取舍是,,若你查詢一個比較長的時間范圍,,比如是一個月,若查詢10秒精度的數(shù)據(jù)需要返回259200個點,,而若查詢60秒精度的數(shù)據(jù)則只要返回43200個點,,這是查詢效率上的一種取舍。而成本方面的考慮,,主要在存儲的數(shù)據(jù)量上,,存儲高精度的數(shù)據(jù)需要的成本越高,通常對于歷史數(shù)據(jù),,可以不需要存儲很高精度的數(shù)據(jù),。總的來說,,在查詢和處理方面,,會根據(jù)不同長度的時間范圍,來獲取不同精度的數(shù)據(jù),,而在存儲方面,,對于歷史的數(shù)據(jù),會選擇降精度的數(shù)據(jù)存儲,。
- 多維分析:時序數(shù)據(jù)產(chǎn)生自不同的個體,,這些個體擁有不同的屬性,可能是同一維度的,,也可能是不同維度的,。還是舉個監(jiān)控的例子,我有個對某個集群上每臺機器的網(wǎng)絡(luò)流量的監(jiān)控,,此時可以查詢這個集群下某臺機器的網(wǎng)絡(luò)流量,,這是一個維度的查詢,而同時還需要查詢這個集群總的網(wǎng)絡(luò)流量,,這是另外一個維度的查詢,。
- 數(shù)據(jù)挖掘:隨著大數(shù)據(jù)和人工智能技術(shù)的發(fā)展,在存儲,、計算能力以及云計算發(fā)展的今天,,數(shù)據(jù)的高附加值的挖掘已經(jīng)不再有一個很高門檻。而時序數(shù)據(jù)蘊含著很高的價值,,非常值得挖掘,。
- 數(shù)據(jù)量大:拿監(jiān)控數(shù)據(jù)來舉例,如果我們采集的監(jiān)控數(shù)據(jù)的時間間隔是1s,,那一個監(jiān)控項每天會產(chǎn)生86400個數(shù)據(jù)點,,若有10000個監(jiān)控項,,則一天就會產(chǎn)生864000000個數(shù)據(jù)點。在物聯(lián)網(wǎng)場景下,,這個數(shù)字會更大,。整個數(shù)據(jù)的規(guī)模,是TB甚至是PB級的,。
- 冷熱分明:時序數(shù)據(jù)有非常典型的冷熱特征,,越是歷史的數(shù)據(jù),被查詢和分析的概率越低,。
- 具有時效性:時序數(shù)據(jù)具有時效性,,數(shù)據(jù)通常會有一個保存周期,超過這個保存周期的數(shù)據(jù)可以認(rèn)為是失效的,,可以被回收。一方面是因為越是歷史的數(shù)據(jù),,可利用的價值越低,;另一方面是為了節(jié)省存儲成本,低價值的數(shù)據(jù)可以被清理,。
- 多精度數(shù)據(jù)存儲:在查詢的特點里提到時序數(shù)據(jù)出于存儲成本和查詢效率的考慮,,會需要一個多精度的查詢,同樣也需要一個多精度數(shù)據(jù)的存儲,。
時間序列模型許多應(yīng)用程序或數(shù)據(jù)庫實際上采用的是過于狹窄的視圖,,并將時間序列數(shù)據(jù)與特定形式的服務(wù)器度量值等同起來。 但事實上,,在許多監(jiān)控應(yīng)用中,,不同的度量經(jīng)常被收集在一起(例如CPU、內(nèi)存,、網(wǎng)絡(luò)統(tǒng)計,、電池壽命)。因此,,單獨考慮每個度量并不總是有意義的,。考慮這種可替代的“更廣泛”的數(shù)據(jù)模型,,它保持了同時收集的度量之間的相關(guān)性,。 時序數(shù)據(jù)的數(shù)據(jù)模型主要有這么幾個主要的部分組成: - 主體 (Metrics): 被測量的主體,一個主體會擁有多個維度的屬性(Label/Tag/Dimension),。以服務(wù)器狀態(tài)監(jiān)控場景舉例,,測量的主體是服務(wù)器,其擁有的屬性可能包括集群名,、Hostname等,。
- 測量值(Measure/Value): 一個主體可能有一個或多個測量值,,每個測量值對應(yīng)一個具體的指標(biāo)。還是拿服務(wù)器狀態(tài)監(jiān)控場景舉例,,測量的指標(biāo)可能會有CPU使用率,,IOPS等,CPU使用率對應(yīng)的值可能是一個百分比,,而IOPS對應(yīng)的值是測量周期內(nèi)發(fā)生的IO次數(shù),。
- 時間戳(TimeStamp): 每次測量值的匯報,都會有一個時間戳屬性來表示其時間,。
上圖是兩種時序數(shù)據(jù)的模型,,一種每一條包含多個測量值,另一種每一條只包含一個測量值,。 產(chǎn)品和公司主要數(shù)據(jù)庫自2013年以來的趨勢(dbengine) 通過上圖我們可以看出,,圖數(shù)據(jù)庫和時序數(shù)據(jù)庫在最近幾年上升趨勢明顯,而搜索引擎和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫發(fā)展緩慢,。 時間序列數(shù)據(jù)庫dbengine的排名 時間序列數(shù)據(jù)庫dbengine的趨勢 對于時序數(shù)據(jù)庫,,我們主要從領(lǐng)導(dǎo)者,大廠,,開源,,多模型和新興產(chǎn)品來分析以下。 領(lǐng)導(dǎo)者 InfluxDB是時序數(shù)據(jù)庫的領(lǐng)導(dǎo)者,,它背后的公司是influxdata,,他的產(chǎn)品采用了開源和商業(yè)產(chǎn)品混合的模式,基本功能開源,,對于擴展的多實例部署進行收費,。 Influxdata主要提供產(chǎn)品包括: - 開源的influxdb
- influxDB企業(yè)版
- InfluxDB 云
- 開源指標(biāo)采集工具telegraph
KDB+是由Kx Systems開發(fā)的基于列的關(guān)系時間序列數(shù)據(jù)庫。 Kdb +數(shù)據(jù)庫設(shè)計用于財務(wù)領(lǐng)域,,以存儲時間序列數(shù)據(jù)并在數(shù)據(jù)增加時進行擴展/擴展,。Kdb +是基于有序列表的概念的面向列的內(nèi)存數(shù)據(jù)庫。內(nèi)存中意味著它主要將數(shù)據(jù)存儲在RAM中,。使用簡化的數(shù)據(jù)庫引擎,,它可以非常快速地運行,,但是它需要大量的RAM(這不再是一個問題,,因為具有大量RAM的服務(wù)器現(xiàn)在很便宜)。 kdb+時間序列數(shù)據(jù)庫是世界上最?。ㄖ挥袔资甅B)和最快的,。它的單一集成平臺使其非常有效地分析超大型數(shù)據(jù)集,并加快了基于我們的高性能核心技術(shù)構(gòu)建的Kx解決方案的開發(fā)和部署(官方描述),。 kdb+(基于q或者k語言的db, 增強版,,也簡稱kdb)被官方稱為世界上最快的時間序列數(shù)據(jù)庫,,它有非常高的性能和豐富高效的時間序列函數(shù)。列式存儲的特性,,使得對于某個列的統(tǒng)計分析操作異常方便,。全球頂尖的投行、高盛,、摩根,、國內(nèi)許多證券公司和私募基金也開始使用,在延遲性上有著苛刻要求的金融領(lǐng)域,,kdb+有著獨特的優(yōu)勢,。 特點: 1、內(nèi)存數(shù)據(jù)庫(In Memory Database),,將數(shù)據(jù)放置在內(nèi)存中 2,、解釋型語言(Interpreted) 3、有序列表(Ordered Lists),, 實現(xiàn)高速處理數(shù)據(jù)的關(guān)鍵,,區(qū)別于傳統(tǒng)數(shù)據(jù)庫。 4,、賦值順序(Evaluation Order) 5、面向表編程(Table Oriented) 6,、面向列編程(Column Oriented) 7,、強類型(Types) 開源時序數(shù)據(jù)庫 除了之前提到的influx,還有以下的一些開源的時序數(shù)據(jù)庫 - Prometheus
https:/// Prometheus 是一個完整的監(jiān)控和趨勢系統(tǒng),,包括內(nèi)置和活動的抓取,、存儲、查詢,、繪圖和基于時間序列數(shù)據(jù)的報警,。它知道監(jiān)控應(yīng)該是什么樣子(監(jiān)控點應(yīng)該存在,時間序列模式意味著什么問題,,等等),,并積極地尋找錯誤。Prometheus有一個監(jiān)控系統(tǒng)和自帶的時序數(shù)據(jù)庫組成,。
- 1.Prometheus獲取數(shù)據(jù)的方式只有一種,,就是scrape,也稱作pull,,意為拉取,。Prometheus每隔一段時間會從目標(biāo)(target)這里以Http協(xié)議拉取指標(biāo)(metrics),這些目標(biāo)可以是應(yīng)用,,也可以是代理,,緩存中間件,,數(shù)據(jù)庫等等一些中間件。
- 2.拉取出來的數(shù)據(jù)Prometheus會存到自己的TSDB數(shù)據(jù)庫,。自己的WebUI控制臺以及Grafana可以對其數(shù)據(jù)進行時間范圍內(nèi)的不斷查詢,,繪制成實時圖表工展現(xiàn)。
- 3.Prometheus 支持例如zookeeper,consul之類的服務(wù)發(fā)現(xiàn)中間件,,用以對目標(biāo)(target)的自動發(fā)現(xiàn),。而不用一個個去配置target了。
- 4.AlertManager組件支持自定義告警規(guī)則,,告警渠道也支持很多種
thanos 是常見的Prometheus的開源存儲引擎 https://github.com/thanos-io/thanos - Graphite
https:/// Graphite 專注于成為一個具有查詢語言和繪圖功能的被動時間序列數(shù)據(jù)庫,。任何其他問題都由外部組件處理。 Graphite主要由三個部分組成:
- Carbon 高性能時序數(shù)據(jù)監(jiān)聽服務(wù)
- Gaphite-web Web查詢服務(wù)
- Whisper 高性能時序數(shù)據(jù)庫引擎
- Apache Druid
https://github.com/apache/druid https://druid./ Druid是一個高性能實時分析數(shù)據(jù)庫,。Druid專為真正需要快速查詢和攝取的工作流而設(shè)計,。 Druid擅長于為UI提供動力,運行可操作(臨時)查詢或處理高并發(fā)性,。在各種使用案例中,,將Druid視為數(shù)據(jù)倉庫的開源替代方案。 Druid主要由主服務(wù),,查詢服務(wù),,數(shù)據(jù)服務(wù)組成。存儲系統(tǒng)由外部系統(tǒng)提供,。 - TimeScaleDB
https://github.com/timescale/timescaledb 類似于Influx,,TimescaleDB也同時提供開源和商業(yè)化版本的時序數(shù)據(jù)庫,同時也提供云的部署,。 TimescaleDB 是基于PostgresSQL來構(gòu)建和擴展,,這意味著它在整個PostgreSQL實例中運行。擴展模型使數(shù)和據(jù)庫可以利用PostgreSQL的許多屬性,,例如可靠性,,安全性以及與各種第三方工具的連接性。同時,,TimescaleDB通過在PostgreSQL的查詢計劃程序,,數(shù)據(jù)模型和執(zhí)行引擎中添加鉤子,從而充分利用了擴展可利用的高度定制,。從用戶的角度來看,,TimescaleDB公開了看起來像單表的表,稱為超表,,實際上是包含數(shù)據(jù)的許多單個表(稱為塊)的抽象或虛擬視圖,。 塊是通過將超表的數(shù)據(jù)劃分為一個或多個維度來創(chuàng)建的:所有超表均按一個時間間隔進行分區(qū),并且可以另外通過鍵(例如設(shè)備ID,位置,,用戶ID等)進行分區(qū),。我們有時將其稱為分區(qū)跨越“時間-空間”。 - Open TSDB
http:/// OpenTSDB是老牌的開源時序數(shù)據(jù)庫,,最近已經(jīng)不是很活躍,,上一個release是2018年了。
大廠的時序數(shù)據(jù)庫 因為時序數(shù)據(jù)庫的迅速發(fā)展,,各個的大廠都推出了自己的時序數(shù)據(jù)庫的產(chǎn)品,,包括: - 亞馬遜 Timestream
https://aws.amazon.com/timestream/ Amazon Timestream 是一種快速、可擴展的無服務(wù)器時間序列數(shù)據(jù)庫服務(wù),,適用于物聯(lián)網(wǎng)和運營應(yīng)用程序,,使用該服務(wù)每天可以輕松存儲和分析數(shù)萬億個事件,速度提高了 1000 倍,,而成本僅為關(guān)系數(shù)據(jù)庫的十分之一,。通過將近期數(shù)據(jù)保留在內(nèi)存中,并根據(jù)用戶定義的策略將歷史數(shù)據(jù)移至成本優(yōu)化的存儲層,,Amazon Timestream 為客戶節(jié)省了管理時間序列數(shù)據(jù)生命周期的時間和成本,。Amazon Timestream 專門構(gòu)建的查詢引擎可用于訪問和分析近期數(shù)據(jù)和歷史數(shù)據(jù),而無需在查詢中顯式指定數(shù)據(jù)是保存在內(nèi)存中還是成本優(yōu)化層中,。Amazon Timestream 內(nèi)置了時間序列分析函數(shù),,可幫助您近乎實時地識別數(shù)據(jù)的趨勢和模式。Amazon Timestream 是無服務(wù)器服務(wù),,可自動縮放以調(diào)整容量和性能,,因此您無需管理底層基礎(chǔ)設(shè)施,讓您可以專注于構(gòu)建應(yīng)用程序,。 - 阿里 Cloud TSDB
阿里提供時序數(shù)據(jù)庫TSDB,,提供百萬級時序數(shù)據(jù)秒級寫入,、高性能,、低成本、穩(wěn)定可靠的在線時序數(shù)據(jù)庫服務(wù),。同時阿里也提供了InfluxDB的云部署,。 - IBM DB2 event store
https://www.ibm.com/products/db2-event-store IBMDb2?Event Store是一個內(nèi)存優(yōu)化的數(shù)據(jù)庫,旨在為事件驅(qū)動的應(yīng)用程序快速攝取和分析流數(shù)據(jù),。 IBM Watson Studio內(nèi)置在IBM Db2 Event Store中,,以提供集成的協(xié)作開發(fā)體驗,并支持創(chuàng)建機器學(xué)習(xí)模型,。 - 騰訊 CTSDB
https://cloud.tencent.com/product/ctsdb 時序數(shù)據(jù)庫 CTSDB(TencentDB for CTSDB)是騰訊云推出的一款分布式,、可擴展、支持近實時數(shù)據(jù)搜索與分析的時序數(shù)據(jù)庫。該數(shù)據(jù)庫為非關(guān)系型數(shù)據(jù)庫,,提供高效讀寫,、低成本存儲、強大的聚合分析能力,、實例監(jiān)控以及數(shù)據(jù)查詢結(jié)果可視化等功能,。整個系統(tǒng)采用多節(jié)點多副本的部署方式,有效保證了數(shù)據(jù)的高可用性和安全性,。 根據(jù)騰訊自己發(fā)布的測試數(shù)據(jù),,性能優(yōu)于InfluxDB
除了上述產(chǎn)品,華為,,百度也都有自己的時序數(shù)據(jù)庫產(chǎn)品,。 新興時序數(shù)據(jù)庫產(chǎn)品 - 濤思數(shù)據(jù)的TDengine
https://www./cn/ https://github.com/taosdata/TDengine TDengine是濤思數(shù)據(jù)專為物聯(lián)網(wǎng)、車聯(lián)網(wǎng),、工業(yè)互聯(lián)網(wǎng),、IT運維等設(shè)計和優(yōu)化的大數(shù)據(jù)平臺。除核心的快10倍以上的時序數(shù)據(jù)庫功能外,,還提供緩存,、數(shù)據(jù)訂閱、流式計算等功能,,最大程度減少研發(fā)和運維的復(fù)雜度,,且核心代碼,包括集群功能全部開源,。TDengine的模塊之一是時序數(shù)據(jù)庫,。但除此之外,為減少研發(fā)的復(fù)雜度,、系統(tǒng)維護的難度,,TDengine還提供緩存、消息隊列,、訂閱,、流式計算等功能,為物聯(lián)網(wǎng),、工業(yè)互聯(lián)網(wǎng)大數(shù)據(jù)的處理提供全棧的技術(shù)方案,,是一個高效易用的物聯(lián)網(wǎng)大數(shù)據(jù)平臺。 根據(jù)濤思數(shù)據(jù)自己發(fā)布的數(shù)據(jù),,其寫入和查詢性能皆優(yōu)于Clickhouse和InfluxDB - VictoriaMetrics
https:/// https://github.com/VictoriaMetrics/VictoriaMetrics VictoriaMetrics是快速,,經(jīng)濟高效且可擴展的監(jiān)視解決方案和時間序列數(shù)據(jù)庫,它也提供開源和商業(yè)化的時序數(shù)據(jù)庫解決方案,。 - Apache IoTDB
https://iotdb./ https://github.com/apache/iotdb IoTDB(物聯(lián)網(wǎng)數(shù)據(jù)庫)是用于時間序列數(shù)據(jù)的數(shù)據(jù)管理系統(tǒng),,可以為用戶提供特定的服務(wù),例如數(shù)據(jù)收集,存儲和分析,。憑借其輕巧的結(jié)構(gòu),,高性能和可用功能以及與Hadoop和Spark生態(tài)的無縫集成,IoTDB滿足了工業(yè)IoT領(lǐng)域中海量數(shù)據(jù)集存儲,,高吞吐量數(shù)據(jù)輸入和復(fù)雜數(shù)據(jù)分析的要求,。
另外在某些場合,我么也可以把Splunk和ES作為時序數(shù)據(jù)庫來使用,,用作時序數(shù)據(jù)的分析,。 功能和架構(gòu)設(shè)計從架構(gòu)上來看,為了支持時序數(shù)據(jù)的使用特點,,主要需要考慮以下的架構(gòu)設(shè)計: 數(shù)據(jù)的存儲和索引 根據(jù)時序數(shù)據(jù)的訪問特點,,主要的數(shù)據(jù)存儲的設(shè)計有: - 列存儲,支持分析和聚合的場景,,也同時支持?jǐn)?shù)據(jù)壓縮
- LSM tree,, 利用順序?qū)懸h(yuǎn)比隨機寫性能高出很多的特點,可以有效的支持Append only的用例
- 基于已有的關(guān)系數(shù)據(jù)庫或者KV數(shù)據(jù)庫構(gòu)建
- 基于特定的數(shù)據(jù)文件構(gòu)建
一般對針對時間對數(shù)據(jù)進行分片,,提高數(shù)據(jù)寫入和訪問的效率,,并可以有效的按照時間范圍管理數(shù)據(jù)。 分布式的水平擴展 大部分的時序數(shù)據(jù)庫都支持水平擴展的集群部署,,Influx和TimeScaleDB都把集群部署作為商業(yè)版特有的功能 基于SQL的訪問 大部分的的時序數(shù)據(jù)庫都提供SQL或者類似SQL的查詢語言,,提高訪問的易用性?;跁r間緯度的上卷和下鉆,, AVG、SUM,、MAX,、MIN等聚合函數(shù)是時序分析的標(biāo)配。 數(shù)據(jù)壓縮,,降采樣和聚合 因為時序數(shù)據(jù)的產(chǎn)生量巨大,,對于數(shù)據(jù)的壓縮要求比較高。降采樣可以有效的降低查詢時間和存儲的占用,,有很多的時序數(shù)據(jù)庫內(nèi)置了降采樣的功能,,另一些時序庫采用預(yù)聚合的功能來實現(xiàn)類似功能,。 注: Downsampling就是將一個高精度的時序數(shù)據(jù)轉(zhuǎn)換為一個低精度的時序數(shù)據(jù)的過程,,這個過程被稱作Rollup。它與GroupBy的過程比較類似,,核心區(qū)別是GroupBy是基于相同的時間粒度,把同一時間層面上的不同維度的數(shù)據(jù)做聚合,轉(zhuǎn)換后的結(jié)果還是相同時間粒度的數(shù)據(jù),,只不過是更高的一個維度,。而Downsampling是不同時間層面上把相同維度的數(shù)據(jù)做聚合,,轉(zhuǎn)換為更粗時間粒度的數(shù)據(jù),但是還是擁有相同的維度,。 數(shù)據(jù)生命周期和時效管理 基于時序數(shù)據(jù)的特點,,我們希望對數(shù)據(jù)按照時間的新舊進行生命周期的管理,,分冷,溫,,熱數(shù)據(jù),。 權(quán)限和安全管理 基于表級別的權(quán)限管理 智能化和機器學(xué)習(xí) 提供對時間序列預(yù)測的能力只出現(xiàn)在少數(shù)時序數(shù)據(jù)庫的商業(yè)化版本中
|