這兩年互聯(lián)網(wǎng)行業(yè)掀著一股新風(fēng),總是聽著各種高大上的新名詞。大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)、機(jī)器學(xué)習(xí)、商業(yè)智能、智能預(yù)警啊等等。
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的南京網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!以前的系統(tǒng),做數(shù)據(jù)可視化,信息管理,流程控制?,F(xiàn)在業(yè)務(wù)已經(jīng)不僅僅滿足于這種簡單的管理和控制了。數(shù)據(jù)可視化分析,大數(shù)據(jù)信息挖掘,統(tǒng)計預(yù)測,建模仿真,智能控制成了各種業(yè)務(wù)的追求。
“所有一切如淚水般消失在時間之中,時間正在死去“,以前我們利用互聯(lián)網(wǎng)解決現(xiàn)實的問題?,F(xiàn)在我們已經(jīng)不滿足于現(xiàn)實,數(shù)據(jù)將連接成時間序列,可以往前可以觀其歷史,揭示其規(guī)律性,往后可以把握其趨勢性,預(yù)測其走勢。
于是,我們開始存儲大量時間相關(guān)的數(shù)據(jù)(如日志,用戶行為等),并總結(jié)出這些數(shù)據(jù)的結(jié)構(gòu)特點和常見使用場景,不斷改進(jìn)和優(yōu)化,創(chuàng)造了一種新型的數(shù)據(jù)庫分類——時間序列數(shù)據(jù)庫(Time Series Database).
時間序列數(shù)據(jù)庫主要用于指處理帶時間標(biāo)簽(按照時間的順序變化,即時間序列化)的數(shù)據(jù),帶時間標(biāo)簽的數(shù)據(jù)也稱為時間序列數(shù)據(jù)。
每個時序點結(jié)構(gòu)如下:
比如我想記錄一系列傳感器的時間序列數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)如下:
* 標(biāo)識符:device_id,時間戳
* 元數(shù)據(jù):location_id,dev_type,firmware_version,customer_id
* 設(shè)備指標(biāo):cpu_1m_avg,free_mem,used_mem,net_rssi,net_loss,電池
* 傳感器指標(biāo):溫度,濕度,壓力,CO,NO2,PM10
如果使用傳統(tǒng)RDBMS存儲,建一張如下結(jié)構(gòu)的表即可:
如此便是一個最簡單的時間序列庫了。但這只是滿足了數(shù)據(jù)模型的需要。我們還需要在性能,高效存儲,高可用,分布式和易用性上做更多的事情。
大家可以思考思考,如果讓你自己來實現(xiàn)一個時間序列數(shù)據(jù)庫,你會怎么設(shè)計,你會考慮哪些性能上的優(yōu)化,又如何做到高可用,怎樣做到簡單易用。
這個數(shù)據(jù)庫其實就是一個基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫postgresql改造的時間序列數(shù)據(jù)庫。了解postgresql的同學(xué)都知道,postgresql是一個強(qiáng)大的,開源的,可擴(kuò)展性特別強(qiáng)的一個數(shù)據(jù)庫系統(tǒng)。
于是timescale.inc開發(fā)了Timescale,一款兼容sql的時序數(shù)據(jù)庫, 底層存儲架構(gòu)在postgresql上。 作為一個postgresql的擴(kuò)展提供服務(wù)。其特點如下:
基礎(chǔ):
擴(kuò)展:
劣勢:
其實大家都可以去深入了解一下這個數(shù)據(jù)庫。對RDBMS我們都很熟悉,了解這個可以讓我們對RDBMS有更深入的了解,了解其實現(xiàn)機(jī)制,存儲機(jī)制。在對時間序列的特殊化處理之中,我們又可以學(xué)到時間序列數(shù)據(jù)的特點,并學(xué)習(xí)到如何針對時間序列模型去優(yōu)化RDBMS。
之后我們也可以寫一篇文章來深入的了解一下這個數(shù)據(jù)庫的特點和實現(xiàn)。
Influxdb是業(yè)界比較流行的一個時間序列數(shù)據(jù)庫,特別是在IOT和監(jiān)控領(lǐng)域十分常見。其使用go語言開發(fā),突出特點是性能。
特性:
Influxdb已經(jīng)將分布式版本轉(zhuǎn)為閉源。所以在分布式集群這塊是一個弱點,需要自己實現(xiàn)。
The Scalable Time Series Database. 打開OpenTSDB官網(wǎng),第一眼看到的就是這句話。其將Scalable作為其重要的特點。OpenTSDB運行在Hadoop和HBase上,其充分利用HBase的特性。通過獨立的Time Series Demon(TSD)提供服務(wù),所以它可以通過增減服務(wù)節(jié)點來輕松擴(kuò)縮容。
Opentsdb是一個基于Hbase的時間序列數(shù)據(jù)庫(新版也支持Cassandra)。
其基于Hbase的分布式列存儲特性實現(xiàn)了數(shù)據(jù)高可用,高性能寫的特性。受限于Hbase,存儲空間較大,壓縮不足。依賴整套HBase, ZooKeeper
采用無模式的tagset數(shù)據(jù)結(jié)構(gòu)(sys.cpu.user 1436333416 23 host=web01 user=10001)
結(jié)構(gòu)簡單,多value查詢不友好
OpenTSDB在HBase上針對TSDB的表設(shè)計和RowKey設(shè)計是值得我們深入學(xué)習(xí)的一個特點。有興趣的同學(xué)可以找一些詳細(xì)的資料學(xué)習(xí)學(xué)習(xí)。
Druid是一個實時在線分析系統(tǒng)(LOAP)。其架構(gòu)融合了實時在線數(shù)據(jù)分析,全文檢索系統(tǒng)和時間序列系統(tǒng)的特點,使其可以滿足不同使用場景的數(shù)據(jù)存儲需求。
Druid架構(gòu)蠻復(fù)雜的。其按功能將整個系統(tǒng)細(xì)分為多種服務(wù),query、data、master不同職責(zé)的系統(tǒng)獨立部署,對外提供統(tǒng)一的存儲和查詢服務(wù)。其以分布式集群服務(wù)的方式提供了一個底層數(shù)據(jù)存儲的服務(wù)。
Druid在架構(gòu)上的設(shè)計很值得我們學(xué)習(xí)。如果你不僅僅對時間序列存儲感興趣,對分布式集群架構(gòu)也有興趣,不妨看看Druid的架構(gòu)。另外Druid在segment(Druid的數(shù)據(jù)存儲結(jié)構(gòu))的設(shè)計也是一大亮點,既實現(xiàn)了列式存儲,又實現(xiàn)了反向索引。
Elasticsearch 是一個分布式的開源搜索和分析引擎,適用于所有類型的數(shù)據(jù),包括文本、數(shù)字、地理空間、結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。Elasticsearch 在 Apache Lucene 的基礎(chǔ)上開發(fā)而成,由 Elasticsearch N.V.(即現(xiàn)在的 Elastic)于 2010 年首次發(fā)布。Elasticsearch 以其簡單的 REST 風(fēng)格 API、分布式特性、速度和可擴(kuò)展性而聞名。
Elasticsearch以ELK stack被人所熟知。許多公司基于ELK搭建日志分析系統(tǒng)和實時搜索系統(tǒng)。之前我們在ELK的基礎(chǔ)上開始開發(fā)metric監(jiān)控系統(tǒng)。即想到了使用Elasticsearch來存儲時間序列數(shù)據(jù)庫。對Elasticserach的mapping做相應(yīng)的優(yōu)化,使其更適合存儲時間序列數(shù)據(jù)模型,收獲了不錯的效果,完全滿足了業(yè)務(wù)的需求。后期發(fā)現(xiàn)Elasticsearch新版本竟然也開始發(fā)布Metrics組件和APM組件,并大量的推廣其全文檢索外,對時間序列的存儲能力。真是和我們當(dāng)時的想法不謀而合。
Elasticsearch的時序優(yōu)化可以參考一下這篇文章:《elasticsearch-as-a-time-series-data-store》
也可以去了解一下Elasticsearch的Metric組件:Elastic Metrics
Beringei是Facebook在2017年最新開源的一個高性能內(nèi)存時序數(shù)據(jù)存儲引擎。其具有快速讀寫和高壓縮比等特性。
2015年Facebook發(fā)表了一篇論文《Gorilla: A Fast, Scalable, In-Memory Time Series Database 》,Beringei正是基于此想法實現(xiàn)的一個時間序列數(shù)據(jù)庫。
Beringei使用Delta-of-Delta算法存儲數(shù)據(jù),使用XOR編碼壓縮數(shù)值。使其可以用很少的內(nèi)存即可存儲下大量的數(shù)據(jù)。
Data model
時間序列數(shù)據(jù)模型一般有兩種,一種無schema,具有多tag的模型,還有一種name、timestamp、value型。前者適合多值模式,對復(fù)雜業(yè)務(wù)模型更適合。后者更適合單維數(shù)據(jù)模型。
Query language
目前大部分TSDB都支持基于HTTP的SQL-like查詢。
Reliability
可用性主要體現(xiàn)在系統(tǒng)的穩(wěn)定高可用上,以及數(shù)據(jù)的高可用存儲上。一個優(yōu)秀的系統(tǒng),應(yīng)該有一個優(yōu)雅而高可用的架構(gòu)設(shè)計。簡約而穩(wěn)定。
Performance
性能是我們必須考慮的因素。當(dāng)我們開始考慮更細(xì)分領(lǐng)域的數(shù)據(jù)存儲時,除了數(shù)據(jù)模型的需求之外,很大的原因都是通用的數(shù)據(jù)庫系統(tǒng)在性能上無法滿足我們的需求。大部分時間序列庫傾向?qū)懚嘧x少場景,用戶需要平衡自身的需求。下面會有一份各庫的性能對比,大家可以做一個參考。
Ecosystem
我一直認(rèn)為生態(tài)是我們選擇一個開源組件必須認(rèn)真考慮的問題。一個生態(tài)優(yōu)秀的系統(tǒng),使用的人多了,未被發(fā)現(xiàn)的坑也將少了。另外在使用中遇到問題,求助于社區(qū),往往可以得到一些比較好的解決方案。另外好的生態(tài),其周邊邊界系統(tǒng)將十分成熟,這讓我們在對接其他系統(tǒng)時會有更多成熟的方案。
Operational management
易于運維,易于操作。
Company and support
一個系統(tǒng)其背后的支持公司也是比較重要的。背后有一個強(qiáng)大的公司或組織,這在項目可用性保證和后期維護(hù)更新上都會有較大的體驗。
Timescale | InfluxDB | OpenTSDB | Druid | Elasticsearch | Beringei | |
---|---|---|---|---|---|---|
write(single node) | 15K/sec | 470k/sec | 32k/sec | 25k/sec | 30k/sec | 10m/sec |
write(5 node) | 128k/sec | 100k/sec | 120k/sec |
可以按照以下需求自行選擇合適的存儲:
之后我們可以來深入了解一兩個TSDB,比如Influxdb,OpenTSDB,Druid,Elasticsearch等。并可以基于此學(xué)習(xí)一下行存儲與列存儲的不同,LSM的實現(xiàn)原理,數(shù)值數(shù)據(jù)的壓縮,MMap提升讀寫性能的知識等。
看完上訴內(nèi)容,你們對時間序列數(shù)據(jù)庫是什么?應(yīng)該如何選擇大概了解了嗎?如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道哦!另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:時間序列數(shù)據(jù)庫是什么?應(yīng)該如何選擇-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article48/cshjep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、建站公司、品牌網(wǎng)站設(shè)計、微信公眾號、網(wǎng)站排名、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容