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

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)選型?

?小 T 導(dǎo)讀:伴隨工業(yè)物聯(lián)網(wǎng)的熱度,涉足云組態(tài)的企業(yè)越來(lái)越多。云組態(tài)是工業(yè)物聯(lián)網(wǎng)平臺(tái)的數(shù)據(jù)展示終端形式之一,是可以一站式完成終端設(shè)備數(shù)據(jù)采集、實(shí)時(shí)控制、報(bào)警推送、分組管理、組態(tài)設(shè)計(jì)等功能的物聯(lián)網(wǎng)系統(tǒng)。一個(gè)強(qiáng)大的云組態(tài)平臺(tái),必須具備強(qiáng)大的數(shù)據(jù)處理能力,上海繁易是一家設(shè)備智能化產(chǎn)品及服務(wù)提供商,在其工業(yè)物聯(lián)網(wǎng)云組態(tài)的數(shù)據(jù)庫(kù)選型中,先后對(duì)比測(cè)試了4種方案,最終選擇了TDengine Database。

繁易云組態(tài)是基于B\S架構(gòu)的數(shù)據(jù)采集與監(jiān)視控制系統(tǒng),為客戶提供了如下方便的功能:隨時(shí)隨地查看設(shè)備運(yùn)行數(shù)據(jù)和狀態(tài),遠(yuǎn)程設(shè)置重要參數(shù);及時(shí)收到設(shè)備報(bào)警信息,查看設(shè)備歷史數(shù)據(jù);對(duì)設(shè)備進(jìn)行遠(yuǎn)程管理,記錄并查詢?cè)O(shè)備檔案和維護(hù)信息;終端客戶提供手機(jī)APP,實(shí)現(xiàn)遠(yuǎn)程設(shè)備監(jiān)控。

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)選型? - TDengine Database 時(shí)序數(shù)據(jù)庫(kù)

業(yè)務(wù)場(chǎng)景

云組態(tài)需要做到按照時(shí)間段對(duì)采集到的指標(biāo)(云組態(tài)稱作變量,下文全部用變量替代)進(jìn)行降采樣展示變量的值曲線圖。不同的云組態(tài)用戶會(huì)有不同的變量需要監(jiān)測(cè),比如電力行業(yè)用戶的場(chǎng)景中,C相、B相電壓就是一個(gè)十分重要的變量。云組態(tài)要保證用戶能夠快速查詢出任意時(shí)間段內(nèi)的電壓變化曲線,如下圖所示:

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)選型? - TDengine Database 時(shí)序數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)方案選型

方案一:Apache Imapla + Kudu

Kudu是一個(gè)分布式列式存儲(chǔ)庫(kù),Impala負(fù)責(zé)通過(guò)sql的方式查詢Kudu 的數(shù)據(jù)做匯總。Impala和kudu都是集群部署,至少需要4臺(tái)服務(wù)器,這個(gè)方案的缺陷如下。

1)比較耗費(fèi)服務(wù)器資源,Kudu數(shù)據(jù)落盤(pán)后也存在Compaction策略,導(dǎo)致cpu會(huì)比較高。

2)寫(xiě)入速度比較慢(3節(jié)點(diǎn)2C8G配置目前每秒寫(xiě)入條目不到2萬(wàn))。

3)數(shù)據(jù)要先從kudu讀取到impala中再做計(jì)算,一旦數(shù)據(jù)過(guò)多,查詢緩慢,用戶無(wú)法忍受。

方案二:OpenTSDB + HBase

這個(gè)方案目前已經(jīng)使用的人比較多。但此方案仍有缺陷:

1)HBase集群配置要求高,需要很好的調(diào)優(yōu)。

2)OpenTSDB默認(rèn)的compaction策略每到整點(diǎn)都會(huì)對(duì)上一小時(shí)的數(shù)據(jù)查詢出來(lái)compact成一行,寫(xiě)入到HBase,刪除原始數(shù)據(jù),這個(gè)相當(dāng)耗費(fèi)cpu。即使關(guān)閉compaction,修改tsd.storage.enable_appends = true 啟用append的方式低配機(jī)器 cpu也是相當(dāng)高。

方案三:Cassandra

Cassandra是一套開(kāi)源分布式NoSQL數(shù)據(jù)庫(kù)系統(tǒng)。從其他團(tuán)隊(duì)使用的情況來(lái)看,cassandra比較適合查詢小部分連續(xù)原始數(shù)據(jù),不太適合做分析,沒(méi)有降采樣等功能,要出統(tǒng)計(jì)表只能取一部分少量數(shù)據(jù)數(shù)據(jù)查詢出來(lái)后再在內(nèi)存處理出結(jié)果。這樣用戶只能看短時(shí)間內(nèi)的數(shù)據(jù)曲線,實(shí)用性不高。

方案四:TDengine

TDengine是一個(gè)簡(jiǎn)單快捷高性能的時(shí)序數(shù)據(jù)庫(kù)(Time-Series Database),提供高性能的同時(shí)大大降低了安裝、部署、維護(hù)的成本,是當(dāng)前繁易云組態(tài)底層采用的變量數(shù)據(jù)存儲(chǔ)引擎。TDengine解決了我們幾個(gè)之前較為頭疼的問(wèn)題。

1)安裝簡(jiǎn)單。下載rpm包,一個(gè)命令安裝完畢即可運(yùn)行。2)性能強(qiáng)勁。測(cè)試場(chǎng)景:十萬(wàn)張點(diǎn)表,每個(gè)點(diǎn)表1s需要存儲(chǔ)1條記錄。在實(shí)際測(cè)試過(guò)程中,使用http接口,采用單機(jī)4C16G的配置,8線程每次寫(xiě)500條記錄,10萬(wàn)條記錄寫(xiě)入只需要300ms(如果使用java客戶端更快);單變量采樣查詢基本在2ms內(nèi)完成。整個(gè)測(cè)試持續(xù)了48小時(shí),測(cè)試期間cpu在20%-30%之間,內(nèi)存維持在6G左右,寫(xiě)入相當(dāng)穩(wěn)定,沒(méi)有出現(xiàn)超時(shí)。

綜合考慮,使用TDengine硬件成本和開(kāi)發(fā)維護(hù)成本大大降低,寫(xiě)入和查詢速度還比opentsdb等高一個(gè)級(jí)別。

下圖是TDengine Database官方性能對(duì)比圖,優(yōu)勢(shì)還是很明顯的:

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)選型? - TDengine Database 時(shí)序數(shù)據(jù)庫(kù)

數(shù)據(jù)采集和查詢方案設(shè)計(jì)

物聯(lián)網(wǎng)設(shè)備采集的數(shù)據(jù)會(huì)經(jīng)過(guò)好幾道服務(wù)處理放入消息隊(duì)列,之后經(jīng)過(guò)過(guò)濾變量等業(yè)務(wù)邏輯處理后,數(shù)據(jù)寫(xiě)入TDengine Database。數(shù)據(jù)采集到存儲(chǔ)的流程圖如下。

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫(kù)選型? - TDengine Database 時(shí)序數(shù)據(jù)庫(kù)

遵循TDengine Database一個(gè)數(shù)據(jù)源一張表的設(shè)計(jì)思路,我們認(rèn)為每個(gè)變量就是一個(gè)數(shù)據(jù)源,因此對(duì)每個(gè)變量會(huì)建立一張表。沒(méi)有采用一個(gè)設(shè)備一張表的原因是由于工控行業(yè)中同一個(gè)采集設(shè)備內(nèi)的變量采集周期不一定會(huì)一致,另外一個(gè)設(shè)備的變量也很多,超過(guò)100個(gè)是很普遍的現(xiàn)象,列過(guò)多,有些列又沒(méi)有數(shù)據(jù),會(huì)浪費(fèi)空間。因此這里考慮使用一個(gè)變量一張表,會(huì)靈活得多。由于TDengine表名不能包含中文,需要在寫(xiě)入前的預(yù)處理環(huán)節(jié)中,將變量名稱映射成TDengine表名。具體做法是使用雪花算法,每個(gè)設(shè)備id+變量名稱(云組態(tài)中這樣才能唯一確定變量)換一個(gè)雪花算法id,緩存在內(nèi)存中,持久化存儲(chǔ)到mongodb。這樣做就確保了變量id唯一、TDengine表名唯一,映射關(guān)系簡(jiǎn)單。

我們使用TDengine時(shí),需求暫時(shí)沒(méi)有涉及到過(guò)多的標(biāo)簽查詢,因此表的設(shè)計(jì)比較簡(jiǎn)單,1張超級(jí)表和多張子表即可滿足。建立超級(jí)表的原因是方便后續(xù)多變量組合查詢。具體建表思路是:

1. 首選創(chuàng)建超級(jí)表:

CREATE TABLE IF NOT EXISTS {_tsdbSettings.DbName}.variables (ts timestamp, val float) TAGS (vkey binary(200));

2. 創(chuàng)建子表:

CREATE TABLE IF NOT EXISTS {tableName} USING {_tsdbSettings.DbName}.variables TAGS ('{tag}');

一個(gè)變量一張表,這樣做的優(yōu)勢(shì)是非常明顯的。每張表里面只存一個(gè)變量的數(shù)據(jù)即使每秒寫(xiě)入一次,1個(gè)月也只有260萬(wàn)條,對(duì)其作指定時(shí)間范圍的查詢,不用考慮其他變量的數(shù)據(jù),直接從時(shí)間戳索引得到想要時(shí)間范圍的數(shù)據(jù),效率很高。云組態(tài)的需求正是短時(shí)間內(nèi)有很多變量按秒存儲(chǔ),保存半年左右,并且在此情況下,用戶想查詢?nèi)我庖粋€(gè)變量的歷史情況都能夠快速得到響應(yīng)。比如一開(kāi)始截圖中展示的電壓變化曲線就是一個(gè)很好的例子,這在之前的解決方案中是沒(méi)有實(shí)現(xiàn)的。由于有超級(jí)表,變量名映射出來(lái)的表名也無(wú)需特意維護(hù),只需從超級(jí)表中查詢時(shí),通過(guò)標(biāo)簽列對(duì)所感興趣的變量進(jìn)行篩選過(guò)濾即可。

總結(jié)

繁易云組態(tài)采用了TDengine Database后,節(jié)省了其他方案搭建集群的費(fèi)用,并且在寫(xiě)入速度和查詢性能方面完全滿足了業(yè)務(wù)的需求,運(yùn)維也是相當(dāng)簡(jiǎn)單,沒(méi)有像HBase之類(lèi)相當(dāng)多的調(diào)優(yōu)參數(shù),cpu內(nèi)存相當(dāng)穩(wěn)定。對(duì)比市面上其他開(kāi)源方案,我們認(rèn)為T(mén)Dengine雖然開(kāi)源不到一年,但是在同類(lèi)產(chǎn)品中名列前茅。希望在今后還能看到RESTful接口寫(xiě)入速度進(jìn)一步提高,文檔進(jìn)一步豐富。

作者簡(jiǎn)介:徐杰,八年.NET開(kāi)發(fā)工程師,在物聯(lián)網(wǎng)數(shù)據(jù)處理、時(shí)序數(shù)據(jù)庫(kù)使用有深入研究。目前任職于上海繁易信息科技股份有限公司,擔(dān)任軟件研發(fā)部云組態(tài)團(tuán)隊(duì)技術(shù)負(fù)責(zé)人。

公司介紹:上海繁易信息科技股份有限公司是一家設(shè)備智能化產(chǎn)品及服務(wù)提供商。面向工業(yè)自動(dòng)化、環(huán)保、電力、新能源等領(lǐng)域,提供智能化產(chǎn)品及工業(yè)物聯(lián)網(wǎng)軟硬件一體化解決方案,為設(shè)備制造商和終端用戶挖掘更多設(shè)備價(jià)值,提升效率、降低成本、優(yōu)化管理,推動(dòng)設(shè)備制造商服務(wù)轉(zhuǎn)型。

原文首發(fā)于 https://mp.weixin.qq.com/s/QIvnn9ah-yzpT-1pKgoG7w