六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

解決海量時(shí)序數(shù)據(jù)的存儲(chǔ)和計(jì)算,TDengine在智慧環(huán)保上的應(yīng)用

中科惠軟 陳繼宇

2020-07-30 / ,

小 T 導(dǎo)讀:中科惠軟的“智慧環(huán)?!蔽锫?lián)網(wǎng)應(yīng)用項(xiàng)目采用了自研的WisoftETL中間件,引入了TDengine Database解決了大量時(shí)序類數(shù)據(jù)的讀寫問題,已完全滿足其智慧環(huán)保項(xiàng)目海量時(shí)間序列監(jiān)測數(shù)據(jù)存儲(chǔ)和計(jì)算。

場景介紹

中科惠軟承建的A城市“智慧環(huán)?!蔽锫?lián)網(wǎng)應(yīng)用項(xiàng)目需要采集各類感知設(shè)備產(chǎn)生的監(jiān)測數(shù)據(jù)和監(jiān)控設(shè)備各種運(yùn)行狀態(tài),監(jiān)測數(shù)據(jù)包括空氣質(zhì)量、水環(huán)境質(zhì)量、渣土場和渣土車監(jiān)測、施工工地?fù)P塵監(jiān)測等實(shí)時(shí)監(jiān)測數(shù)據(jù)。并且需要把每時(shí)每刻監(jiān)控的數(shù)據(jù)記錄存儲(chǔ)下來,用于生態(tài)環(huán)境大數(shù)據(jù)分析和城市環(huán)境質(zhì)量預(yù)測預(yù)報(bào)分析計(jì)算。

項(xiàng)目每天采集各類監(jiān)測數(shù)據(jù)2億余條,如果使用公司原架構(gòu),可以勉強(qiáng)將每天的數(shù)據(jù)存儲(chǔ)下來,但如果需要快速查詢“某天下午兩點(diǎn),A路段有多少輛渣土車通過”這樣條件的多緯度分組聚合查詢,那么采用傳統(tǒng)的數(shù)據(jù)庫就無法實(shí)現(xiàn)快速查詢需求。

考慮到各類感知監(jiān)測設(shè)備會(huì)時(shí)刻產(chǎn)生大量秒級(jí)和分鐘級(jí)監(jiān)測數(shù)據(jù)存儲(chǔ)和實(shí)時(shí)計(jì)算,關(guān)于海量時(shí)間序列數(shù)據(jù)存儲(chǔ),經(jīng)過多個(gè)產(chǎn)品之間的性能和穩(wěn)定性方面對比,最終,采用了TDengine產(chǎn)品實(shí)現(xiàn)海量的生態(tài)環(huán)境監(jiān)測數(shù)據(jù)進(jìn)行實(shí)時(shí)存儲(chǔ)、計(jì)算和大數(shù)據(jù)分析。

時(shí)序數(shù)據(jù)庫(Time-Series Database)選型

現(xiàn)今智慧環(huán)保領(lǐng)域使用海量的監(jiān)測數(shù)據(jù)進(jìn)行大數(shù)據(jù)分析,發(fā)現(xiàn)深層次的環(huán)境問題,從而幫助污染源企業(yè)節(jié)能減排,增加效益。我公司選擇了InfluxDB和TDengine進(jìn)行對比。

由于InfluxDB和TDengine集群版本都需要收費(fèi),最終選擇了單實(shí)例進(jìn)行對比測試,開始準(zhǔn)備兩臺(tái)配置參數(shù)一致的測試服務(wù)器進(jìn)行多方面的應(yīng)用場景、穩(wěn)定性以及性能測試。

測試項(xiàng)TDengineInfluxDB
數(shù)據(jù)寫入性能1232729 條/秒294591條/秒
100萬條記錄讀取時(shí)間0.26秒6.1秒
1億條記錄按時(shí)間分組取均值時(shí)間2.671秒29.77秒

以上性能測試結(jié)果為測試環(huán)境結(jié)果,若與官方測試數(shù)據(jù)有偏差,敬請諒解。上述性能測試結(jié)果僅供參考。

InfluxDB需要借助kafka、MQTT等消息隊(duì)列中間件實(shí)現(xiàn)批量寫入,從而提升數(shù)據(jù)的寫入性能。綜合智能環(huán)保項(xiàng)目多方面應(yīng)用場景測試,結(jié)合我公司一段時(shí)間的穩(wěn)定性和性能方面測試,TDengine時(shí)序數(shù)據(jù)庫相對比較適合我公司智慧環(huán)保領(lǐng)域產(chǎn)品發(fā)展戰(zhàn)略,也考慮到后期智慧環(huán)保領(lǐng)域系統(tǒng)國產(chǎn)化需要,最終選型了TDengine產(chǎn)品。

TDengine業(yè)務(wù)應(yīng)用

數(shù)據(jù)流設(shè)計(jì)

整個(gè)數(shù)據(jù)采集延續(xù)了我公司之前的架構(gòu)設(shè)計(jì),從外部系統(tǒng)或終端監(jiān)測設(shè)備采集數(shù)據(jù)沿用了我公司自研WisoftETL中間件產(chǎn)品。WisoftETL主要負(fù)責(zé)接收數(shù)據(jù)包和主動(dòng)請求獲取數(shù)據(jù)包兩種方式,接收到原始數(shù)據(jù)后,根據(jù)定義的數(shù)據(jù)融合規(guī)則進(jìn)行數(shù)據(jù)整合,將數(shù)據(jù)進(jìn)行分類存儲(chǔ)至數(shù)據(jù)中心各類數(shù)據(jù)。在存儲(chǔ)時(shí)間序列數(shù)據(jù)時(shí),充分利用TDengine中Avg、Count、Max、Min等聚合函數(shù)對一個(gè)或多個(gè)數(shù)據(jù)流進(jìn)行實(shí)時(shí)聚合、統(tǒng)計(jì)以及計(jì)算等,并將計(jì)算出的衍生數(shù)據(jù)保存進(jìn) Tdengine新的數(shù)據(jù)表中,以便后續(xù)的操作。

部署及應(yīng)用

生產(chǎn)環(huán)境中我們選擇了三臺(tái)服務(wù)進(jìn)行分布式部署,如官方所說一致,TDengine部署特別的簡單,在安裝過程中,會(huì)提示當(dāng)前安裝的節(jié)點(diǎn)是否要加入已經(jīng)存在的集群節(jié)點(diǎn),輸入集群節(jié)點(diǎn)IP地址即可加入該集群節(jié)點(diǎn)。

項(xiàng)目初期規(guī)劃了2000多個(gè)空氣監(jiān)測站點(diǎn)、500個(gè)移動(dòng)監(jiān)測點(diǎn)以及4000多輛渣土車,充分利用TDengine的Stable多表聚合為每類監(jiān)測設(shè)備創(chuàng)建超級(jí)表,為每個(gè)設(shè)備創(chuàng)建了子表。

–創(chuàng)建超級(jí)表

create table t_realtime_gps_partcar_his (gpstimestamp timestamp, devphone nchar(20), platenum nchar(20), longitude nchar(20), latitude nchar(20), senddatetime timestamp, carspeed nchar(20), isonline nchar(20), ) tags (tag1 nchar(20))

–創(chuàng)建子表

create table t_realtime_gps_40155712660 using t_realtime_gps_partcar_his tags ('40155712660'); 
create table t_realtime_gps_40155712661 using t_realtime_gps_partcar_his tags ('40155712661');

為了滿足少部分監(jiān)測設(shè)備會(huì)定期的增加或者更換設(shè)備,由于部分設(shè)備會(huì)存在定期更換或增加監(jiān)測設(shè)備數(shù)據(jù),我們在架構(gòu)設(shè)計(jì)時(shí)還引用了TDengine根據(jù)數(shù)據(jù)自動(dòng)創(chuàng)建子表。

–超級(jí)表寫入數(shù)據(jù)時(shí),如果子表不存在,則自動(dòng)根據(jù)超級(jí)表自動(dòng)創(chuàng)建子表

insert into zyml.t_realtime_gps_40155712669 using zyml.t_realtime_gps_partcar_his tags ('40155712669') values (gpstimestamp, devphone, platenum, longitude, latitude, senddatetime, carspeed , isonline) ('2019-07-25 04:55:05.457752', '40155712669', '23477', '117.04634', '36.72716', '2019-07-25 04:54:57.0', '0', '0');

數(shù)據(jù)流式計(jì)算

1. 數(shù)據(jù)資產(chǎn)實(shí)時(shí)分析

以往智慧環(huán)保項(xiàng)目我們采用傳統(tǒng)數(shù)據(jù)庫架構(gòu)設(shè)計(jì),對在海量秒級(jí)監(jiān)測數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)和分析耗時(shí)長、CPU和內(nèi)存利用率低、磁盤IO超負(fù)荷。在a市智慧環(huán)保物聯(lián)網(wǎng)應(yīng)用項(xiàng)目我們創(chuàng)新使用了TDengine時(shí)序數(shù)據(jù)庫,利用了實(shí)時(shí)流式計(jì)算相關(guān)函數(shù),解決了大數(shù)據(jù)存儲(chǔ)和計(jì)算,降低了代碼開發(fā)復(fù)雜度,讓運(yùn)維工作變得極為簡單,從而大大的降低了運(yùn)營成本。

解決海量時(shí)序數(shù)據(jù)的存儲(chǔ)和計(jì)算,TDengine在智慧環(huán)保上的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫

2. 實(shí)時(shí)報(bào)警流式計(jì)算

通過采集污染源企業(yè)廢氣、廢水和能耗監(jiān)測數(shù)據(jù),對每分鐘的監(jiān)測數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算每個(gè)污染物每個(gè)小時(shí)的平均值、最大值、最小值、排放量累計(jì)值。我們主要使用TDengine定義自動(dòng)滑動(dòng)計(jì)算實(shí)現(xiàn)小時(shí)監(jiān)測數(shù)據(jù)計(jì)算,并將實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù)存儲(chǔ)新的pmcaemhourdata表中,可供其他業(yè)務(wù)平臺(tái)重復(fù)利用。

create table pmcaemhourdata as select avg (codcraudit),max (codcraudit),min (codcraudit),sum(codcrpfl),avg(codcrstand) from pmcaemminuteata interval (60m) sliding(60m)

利用實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù),結(jié)合預(yù)先設(shè)定的預(yù)警規(guī)則(如超標(biāo)預(yù)警、監(jiān)測數(shù)值邏輯錯(cuò)誤預(yù)警、在線率過低預(yù)警等)對污染源監(jiān)測數(shù)據(jù)進(jìn)行實(shí)時(shí)預(yù)警,并且將實(shí)時(shí)預(yù)警數(shù)據(jù)分發(fā)給相關(guān)業(yè)務(wù)負(fù)責(zé)人(APP終端),方便業(yè)務(wù)負(fù)責(zé)人及時(shí)發(fā)現(xiàn)環(huán)境問題,提升環(huán)境治理能力。

解決海量時(shí)序數(shù)據(jù)的存儲(chǔ)和計(jì)算,TDengine在智慧環(huán)保上的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫
解決海量時(shí)序數(shù)據(jù)的存儲(chǔ)和計(jì)算,TDengine在智慧環(huán)保上的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫

數(shù)據(jù)存儲(chǔ)

A市智慧環(huán)保物聯(lián)網(wǎng)應(yīng)用項(xiàng)目由于資源緊張,信息中心在項(xiàng)目前期只能提供廉價(jià)的機(jī)械硬盤形式的物理存儲(chǔ)服務(wù)器,后期將采購高性能的SSD固態(tài)硬盤用于擴(kuò)展數(shù)據(jù)存儲(chǔ)。項(xiàng)目團(tuán)隊(duì)鑒于實(shí)際情況,在項(xiàng)目建設(shè)過程中充分利用TDengine存儲(chǔ)結(jié)構(gòu)的優(yōu)勢,對每張生態(tài)環(huán)境數(shù)據(jù)表(如站點(diǎn)監(jiān)測秒級(jí)數(shù)據(jù)表、廢水廢氣監(jiān)測秒級(jí)數(shù)據(jù)表)維護(hù)索引,保存每個(gè)數(shù)據(jù)塊在文件中的偏移量,起始時(shí)間、數(shù)據(jù)點(diǎn)數(shù)、壓縮算法等信息。

每個(gè)數(shù)據(jù)文件設(shè)置為保存一周時(shí)間的數(shù)據(jù)。這樣一來一個(gè)表的數(shù)據(jù)會(huì)分布在多個(gè)數(shù)據(jù)文件中。查詢時(shí),根據(jù)給定的時(shí)間段,TDengine將計(jì)算出查找的數(shù)據(jù)會(huì)在哪個(gè)數(shù)據(jù)文件,然后進(jìn)行讀取,這樣大幅減少了硬盤操作次數(shù)。多個(gè)數(shù)據(jù)文件的設(shè)計(jì)還有利于數(shù)據(jù)同步、數(shù)據(jù)恢復(fù)、數(shù)據(jù)自動(dòng)刪除操作,更有利于數(shù)據(jù)按照新舊程度在不同物理介質(zhì)上存儲(chǔ)。

例如:歷史的生態(tài)環(huán)境數(shù)據(jù)存放在大容量但慢速的機(jī)械硬盤上,而最新的數(shù)據(jù)則存儲(chǔ)在高性能的SSD固態(tài)硬盤上。通過TDengine這樣的存儲(chǔ)設(shè)計(jì),TDengine能夠?qū)⒂脖P的隨機(jī)讀取幾乎降為零,從而大幅提升環(huán)境監(jiān)測數(shù)據(jù)的寫入和查詢效率,讓TDengine即便在很廉價(jià)的存儲(chǔ)設(shè)備上也能有著超強(qiáng)的性能。

總結(jié)

經(jīng)過了一段時(shí)間的生產(chǎn)環(huán)境應(yīng)用,對TDengine Database各項(xiàng)指標(biāo)的表現(xiàn)非常滿意,現(xiàn)已完全滿足我公司智慧環(huán)保項(xiàng)目海量時(shí)間序列監(jiān)測數(shù)據(jù)存儲(chǔ)和計(jì)算。但希望后期版本可以支持對歷史數(shù)據(jù)修改(實(shí)際用戶會(huì)對分鐘級(jí)、小時(shí)級(jí)監(jiān)測數(shù)據(jù)進(jìn)行修正),以及支持Schema動(dòng)態(tài)調(diào)整或無需定義的支持。

作者簡介陳繼宇,智慧應(yīng)用部項(xiàng)目經(jīng)理,大數(shù)據(jù)分布式中間件開源軟件愛好者,2012年加入江蘇中科惠軟信息技術(shù)有限公司,主要從事環(huán)保大數(shù)據(jù)產(chǎn)品設(shè)計(jì)及應(yīng)用,通過采用大數(shù)據(jù)處理、計(jì)算和分析等技術(shù),構(gòu)建智慧環(huán)保大數(shù)據(jù)資源中心,以及環(huán)境監(jiān)測和生態(tài)環(huán)境管理等數(shù)據(jù)業(yè)務(wù)場景應(yīng)用。曾擔(dān)任過多個(gè)地市智慧環(huán)保大數(shù)據(jù)平臺(tái)項(xiàng)目整體設(shè)計(jì)及交付。

本文首發(fā)于:https://mp.weixin.qq.com/s/06hsc5fXNrISyTxXmNEgNA