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

TDengine在智慧城市大數(shù)據(jù)管理系統(tǒng)中的應用實踐

廣聯(lián)達 王碧波

2020-03-12 / ,

小T導讀:廣聯(lián)達立足建筑產(chǎn)業(yè),圍繞工程項目的全生命周期,是提供以建設(shè)工程領(lǐng)域?qū)I(yè)應用為核心基礎(chǔ)支撐,以產(chǎn)業(yè)大數(shù)據(jù)、產(chǎn)業(yè)新金融等為增值服務(wù)的平臺服務(wù)商。廣聯(lián)達科技股份有限公司數(shù)字城市BU在TDengine Database推出1.0版本時就開始試用TDengine系統(tǒng)。

?TDengine應用場景

1.1 業(yè)務(wù)場景

廣聯(lián)達科技股份有限公司數(shù)字城市BU在TDengine Database推出1.0版本時就開始試用TDengine系統(tǒng),主要用于建設(shè)工程項目的工地物聯(lián)網(wǎng)數(shù)據(jù)和城市運營管理過程中的設(shè)備監(jiān)測物聯(lián)網(wǎng)數(shù)據(jù)的存儲和管理,應用于智慧城市、智慧工地的系統(tǒng)中,具體包含城市交通、照明、環(huán)境監(jiān)測、給排水、燃氣監(jiān)測、停車場以及工地環(huán)境質(zhì)量監(jiān)測,在智慧城市的交通、城管、能源監(jiān)測管理、生命線安全監(jiān)控、施工環(huán)境等領(lǐng)域提供智能化管理依據(jù)。

系統(tǒng)整體的架構(gòu)如下圖所示,通過廣聯(lián)達自研的IoT平臺接入物聯(lián)網(wǎng)設(shè)備采集的時序數(shù)據(jù),數(shù)據(jù)上報后放入TDengine物聯(lián)網(wǎng)大數(shù)據(jù)平臺,在此平臺上再進一步做各種業(yè)務(wù)相關(guān)的應用層開發(fā)。

TDengine在智慧城市大數(shù)據(jù)管理系統(tǒng)中的應用實踐 - TDengine Database 時序數(shù)據(jù)庫

1.2  時序數(shù)據(jù)類型及規(guī)模

在某新區(qū)智慧城市大數(shù)據(jù)管理系統(tǒng)中,使用TDengine Database來存儲各類終端設(shè)備的采集數(shù)據(jù),比如智能燈桿上照明情況、用電情況,供水壓力流量數(shù)據(jù)、燃氣壓力、可燃氣體泄露、污水排污成分數(shù)據(jù)、環(huán)境監(jiān)測設(shè)備上的PM2.5、 PM10等信息,停車場通行數(shù)據(jù)等結(jié)構(gòu)化時序數(shù)據(jù)等。

目前系統(tǒng)上存在3000+的監(jiān)測設(shè)備,每日新增的監(jiān)測數(shù)據(jù)量約在2620MB。如果按照此類設(shè)備的增量,后面會達到十萬個監(jiān)測設(shè)備,每日數(shù)據(jù)增量應該在80GB左右。

?1.3 數(shù)據(jù)模型的設(shè)計

在流數(shù)據(jù)的時序數(shù)據(jù)模型中,主要包括兩部分模型:運行狀態(tài)監(jiān)測值與運行狀態(tài)錯誤/報警值,兩者都是設(shè)備運行時按照時間順序產(chǎn)生的數(shù)據(jù)。在設(shè)計過程中,考慮到運行狀態(tài)中的監(jiān)測值本身的數(shù)據(jù)和類型都取決于設(shè)備模型本身能夠提供的監(jiān)測數(shù)據(jù)類型和數(shù)量;而報警信息是通過規(guī)則引擎計算觸發(fā)之后,生成的具有一定業(yè)務(wù)標識信息的數(shù)據(jù)?;趦煞N數(shù)據(jù)的來源和產(chǎn)生原理,對兩種時序數(shù)據(jù)的存儲進行了分別處理。具體處理方式如下。

1)運行狀態(tài)監(jiān)測值–時序數(shù)據(jù)

環(huán)境監(jiān)測的狀態(tài)監(jiān)測數(shù)據(jù)樣例如下:

{"uuid":"012126","pm25":14.3,"pm10":18.9,"pa":100740.0,"temp":28.0,"rshi":86.4,"wind_speed":1.7,"wind_direction":157.5,"noise":77.2,"time":20190702180330}
{"uuid":"018181","pm25":20.2,"pm10":21.3,"pa":100740.0,"temp":28.1,"rshi":86.2,"wind_speed":1.62,"wind_direction":157.5,"noise":75.9,"time":20190702180330}

監(jiān)測點的運行狀態(tài)數(shù)據(jù)取決于監(jiān)測點模型的設(shè)置,因此我們在建立模型的過程中,解析模型信息,在TDengine Database中建立了與設(shè)備模型監(jiān)測數(shù)據(jù)匹配的超級表(STable),并且根據(jù)相關(guān)業(yè)務(wù)需求,建立了常用查詢維度的Tag信息,為該類型下設(shè)備監(jiān)測信息傳入存儲做好準備。

TDengine在智慧城市大數(shù)據(jù)管理系統(tǒng)中的應用實踐 - TDengine Database 時序數(shù)據(jù)庫

2)運行狀態(tài)錯誤/報警值–時序數(shù)據(jù)

環(huán)境監(jiān)測的狀態(tài)報警數(shù)據(jù)樣例如下:

{"uuid":"018181","item":"noise","value":75.9,"alarm":"true","level":"2","time":20190702180330}
{"uuid":"012126","item":"noise","value":77.2,"alarm":"true","level":"2","time":20190702180330}

監(jiān)測設(shè)備的報警信息,按照相關(guān)業(yè)務(wù)需求,統(tǒng)一處理為一類報警信息數(shù)據(jù),因此在系統(tǒng)中設(shè)計了一套針對報警信息存儲的超級表,所有設(shè)備的報警信息都依照該超級表的模型結(jié)構(gòu),進行保存。同樣建立了常用查詢維度的Tag信息。

TDengine在智慧城市大數(shù)據(jù)管理系統(tǒng)中的應用實踐 - TDengine Database 時序數(shù)據(jù)庫

選擇TDengine的理由

2.1 TDengine對業(yè)務(wù)性能需求的滿足和提升

物聯(lián)網(wǎng)應用系統(tǒng)中對數(shù)據(jù)的查詢需求多樣且復雜,此前的實現(xiàn)方案都是借助于如HBase生態(tài)中的各種組件進行數(shù)據(jù)的存儲和查詢。在流處理過程中,更多采用Spark Streaming,或者Storm來進行實時處理查詢等,由于TDengine相對于前者使用的各種重型組件來說,在部署維護、入門、數(shù)據(jù)遷移、學習使用上都有先天性的優(yōu)勢,因此在部署物聯(lián)網(wǎng)數(shù)據(jù)存儲平臺過程中,結(jié)合實際業(yè)務(wù)中的數(shù)據(jù)查詢需要,我們首選了TDngine實現(xiàn)。

1)窗口查詢       

物聯(lián)網(wǎng)時序數(shù)據(jù)的一個典型查詢應用就是窗口查詢,而在傳統(tǒng)解決方案中,不是實現(xiàn)窗口查詢的方式難以落地,就是數(shù)據(jù)查詢效率不能接受。在HBase中是通過各種匯聚來實現(xiàn)查詢,效率難以保證;Spark Streaming的查詢處理雖然可以通過SQL來實現(xiàn),但是對于窗口函數(shù)的定義和讀取晦澀冗長。在TDengine中,可以通過一個SQL語句直接實現(xiàn),也可以通過API直接獲取。在Spark Streaming中四五十行的邏輯,在TDengine的API中,調(diào)用五行即可達到目的。

2)連續(xù)查詢       

連續(xù)查詢,通過interval()函數(shù)在TDengine中周期性進行聚合計算,并可直接獲取最新數(shù)據(jù),對實際業(yè)務(wù)中的定時查詢實現(xiàn)很有幫助,避免了進行起止時間查詢的方式,對功能實現(xiàn)來說,降低不少編碼工作。

3)支持標準SQL

TDengine支持標準的SQL操作,同時也提供了完備的JDBC驅(qū)動包,對傳統(tǒng)的DBMS工具組件提供了標準支持,因此,原有基于Java的業(yè)務(wù)系統(tǒng)在開發(fā)效率上完全可以無縫遷移到TDengine中。對于大屏查詢、報表工作等業(yè)務(wù)操作,無需進行特定的開發(fā)工作。

4)標簽維度查詢       

按照業(yè)務(wù)常用的查詢維度,在超級表上做不同的Tag,比如基于設(shè)備ID、位置描述、型號等信息,契合常用查詢維度,結(jié)合Tag查詢,直接可以對一類設(shè)備進行數(shù)據(jù)篩選查詢,避免了之前系統(tǒng),先查業(yè)務(wù)關(guān)系再去join實際數(shù)據(jù)的過程,邏輯上清晰,實現(xiàn)上簡單,業(yè)務(wù)上便捷。

2.2 大幅提升時序數(shù)據(jù)讀寫及流處理性能

對于省市級規(guī)模的智慧城市管理系統(tǒng),涉及的智能監(jiān)測設(shè)備數(shù)量非常大,對監(jiān)測點產(chǎn)生的時序數(shù)據(jù)的讀寫性能要求比較高,并且針對一些城市生命線或危險源相關(guān)的設(shè)備監(jiān)測數(shù)據(jù)的實時流數(shù)據(jù)處理性能要求也很高,比如設(shè)備報警需要基于不同設(shè)備的閥值規(guī)則通過流處理生成報警信息,其實時性要求比較高。采用普通關(guān)系型數(shù)據(jù)庫存儲的解決方案很難滿足業(yè)務(wù)上的性能要求,而采用TDengine的技術(shù)方案,不僅在時序數(shù)據(jù)讀寫的性能上有大幅提升,而且利用其針對時序數(shù)據(jù)高性能的插入、查詢、聚合統(tǒng)計以及大規(guī)模的實時流式計算等功能,可大大提升基于業(yè)務(wù)規(guī)則的流數(shù)據(jù)處理性能。

2.3 節(jié)約計算資源和存儲成本

由于TDengine采用獨特的列式存儲以及領(lǐng)先的壓縮算法,其存儲空間比一般數(shù)據(jù)庫大大減少,從而節(jié)約了大量的計算資源和存儲成本,并且從系統(tǒng)安裝到數(shù)據(jù)備份、數(shù)據(jù)恢復幾乎都能自動完成;擴容、升級等運維操作也能輕松完成 ,系統(tǒng)的運維成本也能降低不少。

TDengine應用技巧和經(jīng)驗

3.1 善用超級表

超級表(STable)作為TDengine的特色,具備了模板和索引的雙重特性功能,結(jié)合Tag查詢以及自動生成子表功能,對數(shù)據(jù)操作存儲完全自動化、智能化,以及在簡單業(yè)務(wù)上更加靈活。

3.2 善用JDBC工具

由于對SQL的支持,TDengine很容易支持JDBC規(guī)范的接口。我們在實際開發(fā)過程中,基于Java調(diào)用JDBC驅(qū)動來操作TDengine,得益于TDengine的SQL支持能力和完備JDBC驅(qū)動,我們用來開發(fā)的JDBC框架和DBClient工具直接可以進行工作,Mybatis和DataGrip工具繼續(xù)在數(shù)據(jù)實現(xiàn)轉(zhuǎn)型中發(fā)揮來巨大的輔助作用。

3.3 強大的訂閱機制

在部分實時性要求比較高的場景下,我們嘗試使用到了TDengine的訂閱機制,對流處理中回調(diào)功能進行補全加強,訂閱了一個SQL的查詢結(jié)果集。目前,對于流處理業(yè)務(wù)來說,對符合固定邏輯的數(shù)據(jù)獲取,非常好用,因此最適合采用訂閱的方式來進行邏輯驅(qū)動。目前TDengine中的訂閱功能只有C和Java語言端的實現(xiàn)(在用1.5.2版本)。

TDengine應用中遇到的問題

4.1  JDBC驅(qū)動并非完美

雖然目前JDBC驅(qū)動已經(jīng)非常完備,但是偶爾幾個標準實現(xiàn)上會有不同的結(jié)果,當然這些功能都是非數(shù)據(jù)接口上的,不影響正常數(shù)據(jù)操作。目前發(fā)現(xiàn)的有:在DataGrip上的確認數(shù)據(jù)庫是否存在的返回值,有不同結(jié)果;有些特定的SQL并不是標準類型,被IDE回報說不支持的類型,實際上能夠執(zhí)行成功。

4.2 文檔有待完善,大家多多實踐

目前的文檔一些地方其實不夠明確,大家需要多動手實踐摸索,很多隱藏的內(nèi)容,在文檔中并未體現(xiàn),多操作多嘗試會有更多收獲和體會。

作者簡介:王碧波,廣聯(lián)達科技股份有限公司數(shù)字城市數(shù)據(jù)平臺部架構(gòu)師,從事IT技術(shù)十余年,參與過H2Database、Mybatis、TDengine等開源項目;先后在百度、易到用車、樹根互聯(lián)工作,參與過應用云、PaaS、SaaS平臺的設(shè)計和研發(fā)工作,對分布式和高性能計算有深入研究,近年來專注于微服務(wù)、DevOps、物聯(lián)網(wǎng)領(lǐng)域的技術(shù)架構(gòu)設(shè)計和具體實踐。

本文首發(fā)于公眾號:廣聯(lián)達研究院