无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

經驗分享 | TDengine 在智能船舶領域的實踐手冊

上(shang)海宇佑(you)船舶架構(gou)師(shi) 楊新(xin)霞

2022-01-21 /

小T導讀:上海宇(yu)佑船(chuan)(chuan)(chuan)舶(bo)(bo)科技有(you)限公(gong)(gong)司(si)(si)是(shi)專(zhuan)注于船(chuan)(chuan)(chuan)舶(bo)(bo)及海洋信息(xi)化(hua)一體解決(jue)方案的高科技公(gong)(gong)司(si)(si)。公(gong)(gong)司(si)(si)主要專(zhuan)注于智(zhi)慧(hui)船(chuan)(chuan)(chuan)舶(bo)(bo)以及船(chuan)(chuan)(chuan)舶(bo)(bo)新材料(liao)相關產品(pin)的研發(fa)、設計(ji)、生(sheng)產、銷售及國際貿易,為船(chuan)(chuan)(chuan)舶(bo)(bo)行(xing)業提(ti)供新材料(liao)和智(zhi)能化(hua)信息(xi)化(hua)解決(jue)方案。公(gong)(gong)司(si)(si)目前提(ti)供的產品(pin)和解決(jue)方案,將(jiang)會填補船(chuan)(chuan)(chuan)舶(bo)(bo)行(xing)業特(te)別(bie)是(shi)郵(you)輪游艇行(xing)業缺乏信息(xi)化(hua)和智(zhi)能化(hua)解決(jue)方案和最新船(chuan)(chuan)(chuan)舶(bo)(bo)新材料(liao)的空白。

在大數據時代背景下,船舶(bo)智(zhi)能化(hua)已經成為(wei)船舶(bo)制造與航(hang)運領域發(fa)展(zhan)的必然趨勢(shi)。同時,智(zhi)能船舶(bo)也是《中國制造 2025》中明確(que)重點發(fa)展(zhan)的領域,代表了船舶(bo)未來的方向,關(guan)乎航(hang)運業(ye)的轉型升級。

2021 年 4 月初公司接到一個國家級船舶試驗基地的智能化改造方案,在制定技術協議的過程中,業主指定要求數據采集使用 TDengine 時序數據庫(Time-Series Database)。選擇 TDengine 的核心原因(yin)如下:

  • 國產化要求:國產開源,對于國家信息安全有保障,符合國家大趨勢發展。
  • 物聯網場景:團隊之前正好開發過一個小型的物聯網項目,當時用的是 MySQL Database,針對數據窗口統計以及返回最新數據查詢紛繁復雜。在研究 TDengine 時發現這些問題都能夠被解決。
  • 學習成本低:我們的技術團隊對關系型數據庫(MySQL、Oracle)的 SQL 語法都比較熟悉,而 TDengine 采用的也是標準 SQL 語句,團隊成員上手都比較快。

值(zhi)得一提的是(shi),TDengine 學(xue)習(xi)成(cheng)(cheng)本低(di)這一優勢使得我(wo)們的團(tuan)隊成(cheng)(cheng)員,僅(jin)用(yong)了很短的時間就掌握(wo)了其使用(yong)技能(neng),技術(shu)風險大(da)大(da)降(jiang)低(di)。也因此,我(wo)們沒有(you)再(zai)進行(xing)其他(ta)更多的技術(shu)選(xuan)型對(dui)比,將 TDengine 作為我(wo)們的底層(ceng)時序數據(ju)存儲引(yin)擎開始投入使用(yong)。

一、技術選型

我(wo)們對(dui) TDengine 的(de)(de)選型依據,不(bu)是(shi)憑借著測(ce)試數字的(de)(de)論證,而是(shi)業(ye)務實現的(de)(de)實踐檢(jian)驗(yan)。

1. 與MySQL相比

團(tuan)隊之(zhi)前正好開發過一(yi)個小型的(de)物聯網(wang)項目(mu),當時用的(de)是(shi) MySQL Database,一(yi)些數據(ju)窗(chuang)口(kou)的(de)統計(ji)以及返回(hui)最(zui)新數據(ju)的(de)查詢略顯復雜(za),但又沒(mei)有(you)更(geng)好的(de)解決方(fang)案,在研究 TDengine Database 時發現這些問(wen)題(ti)(ti)不攻自(zi)破。考慮到(dao)我們之(zhi)后要(yao)啟(qi)動(dong)的(de)物聯網(wang)項目(mu)都比較大,上述這一(yi)問(wen)題(ti)(ti)存在共(gong)性(xing),若是(shi)能夠利用 TDengine 簡化代碼邏輯(ji)甚至節省物理存儲空(kong)間(jian),那公司和業(ye)主都將受益匪(fei)淺。

2. 通用大數據對比

這一(yi)(yi)點主(zhu)要是查詢效(xiao)率和開(kai)發成本的(de)優(you)勢(shi)。事實上,在項(xiang)目啟動(dong)后(hou),我(wo)們團隊對 TDengine 的(de)研究已經比較深入了。后(hou)續公司的(de)大(da)項(xiang)目都(dou)是船(chuan)舶行(xing)業(ye)(ye)的(de)物(wu)聯網項(xiang)目,其中(zhong)一(yi)(yi)個比較大(da)型的(de)項(xiang)目的(de)一(yi)(yi)期是由其他公司開(kai)發的(de),我(wo)們接手(shou)維護(hu)。項(xiang)目接手(shou)初期,對于(yu)(yu)此項(xiang)目中(zhong)使用通用大(da)數據方(fang)案(an)實現數據采(cai)集(ji)可能(neng)會產生的(de)效(xiao)率問題,業(ye)(ye)主(zhu)方(fang)表示很擔(dan)憂,希望(wang)我(wo)們可以早(zao)點優(you)化這一(yi)(yi)塊。于(yu)(yu)是團隊開(kai)始著(zhu)手(shou)研究 TDengine 數據庫在船(chuan)舶行(xing)業(ye)(ye)的(de)應用,發現 TDengine 的(de)方(fang)案(an)比通用大(da)數據方(fang)案(an)更適(shi)合(he)這一(yi)(yi)場景。

二、數據模型

1. 建模方式分析

在我們項目中,是用的 TDengine 推薦的“一個設備一張表”的(de)建模(mo)方(fang)(fang)法。這一建模(mo)方(fang)(fang)式的(de)優勢(shi),除了 TDengine 官網(wang)介紹的(de)通用(yong)性的(de)內容(rong),還在我(wo)們項目中展現(xian)了如下幾個優點(dian):

  • TDengine 中超級表和子表的設計很好地解決了單個設備寫入的時間戳不會重復的問題
  • 一個設備一張表解決了同一類設備聚合查詢的問題
  • 標簽的設計可以減少大量的數據冗余,由此節省了大量物理存儲空間

2. 數據類型分析

由于我(wo)們(men)存儲的(de)數(shu)(shu)據(ju)是(shi)來自(zi)船上(shang) PLC 采集數(shu)(shu)據(ju),因此(ci),我(wo)們(men)首先需要論證的(de)是(shi) PLC 可能的(de)數(shu)(shu)據(ju)類型(xing)在 TDengine 中能否實(shi)現很好的(de)存儲。在我(wo)們(men)對數(shu)(shu)據(ju)類型(xing)進行匹配對比后,發(fa)現 TDengine 沒(mei)有(you)這(zhe)類障礙。對比如下:

數據類型分析 TDengine Database

3. PLC 工控數據分析

以我們業(ye)務(wu)中(zhong)的船舶電站(zhan)監控 PLC 的 I/O 點(dian)為例,至少(shao)具(ju)備如下(xia)數據量:

  • 86個數字量輸入
  • 80個數字量輸出
  • 13路模擬量輸入
  • 10路模擬量輸出

這里我們定的策(ce)略是,按照(zhao)工業(ye)自動化(hua)控制(zhi)的分類(lei)選擇(ze)不同的 TDengine 數據類(lei)型進行存儲:

  • 數字量:TINYINT類型
  • 開關量:INT或者FlOAT類型
  • 模擬量和脈沖量:FLOAT類型

4. 業務數據分析

同時(shi),我們(men)針對性地分析(xi)了能夠用于 TDengine 存儲的數據(ju),包(bao)括不限于如下內容:

  • 柴油機信號:與柴油機相關的轉速、油溫、滑油相關的壓力、冷卻水相關的溫度、啟動空氣壓力、排煙總管溫度等
  • 發電機信號:發電機的繞組溫度、發電電壓、電流、有功功率、電壓頻率、電壓與電網電壓的相位差
  • 電網的信號:電網相關電壓、電網功率、電路電流及電流頻率

三、特殊場景需求

1. 場景描述

船(chuan)舶(bo)(bo)行業有一(yi)種特(te)殊(shu)情況,即船(chuan)舶(bo)(bo)在海上的(de)(de)時候很有可能沒有網絡信號(hao),而這個時間可能會持續一(yi)個月之久,也(ye)就(jiu)是船(chuan)舶(bo)(bo)上的(de)(de)數(shu)據庫最(zui)長有可能一(yi)個月內無法與岸上的(de)(de)數(shu)據中心同(tong)步,這就(jiu)要(yao)求船(chuan)舶(bo)(bo)在靠(kao)港的(de)(de)時候能夠在短時間內完成大量的(de)(de)數(shu)據同(tong)步工作。 我們應用 TDengine 打造的(de)(de)技術解決方案如(ru)下所示:

解決方案 TDengine Database

2. 重點實現

  • 船端實現:在船端增加應用程序,用于自動連接 Kafka,并向 Kafka 寫入數據
  • Kafka 實現:直接將船端和服務端的傳輸的內容,寫入同一個 Topic
  • 岸端實現:對岸端服務端數據進行寫入

3. 主要設計

  • 技術復用設計:考慮到宇佑船舶之前使用 Kafka 進行同步,這個方案相對可以復用之前的技術經驗
  • 數據結構設計:在船端和集群端建庫時,使用 DB +船 ID 的方式作為庫名,這樣一來,在船端和集群端數據結構一致時,兩側的查詢和高效寫入 SQL 都比較容易處理
  • 自動傳輸設計:本方案使用船端程序完成自動傳輸,使用 Kafka+TDengine 的更新機制保證數據斷點續傳(只要寫入 Kafka 數據就會寫入,而且重新寫入數據會覆蓋原有數據)
  • 開發工作量:藍色為需要開發的程序

四、落地效果

1. 寫入性能表現

關于(yu)寫入性能(neng)的(de)(de)確(que)(que)認,我(wo)(wo)們(men)有(you)個小的(de)(de)經驗(yan):在前期(qi)論證寫入速(su)度時,我(wo)(wo)們(men)參考了 TDengine 官網(wang)的(de)(de)測(ce)試報告,并進行了部分功(gong)能(neng)的(de)(de)復現確(que)(que)認。基于(yu)此我(wo)(wo)們(men)團(tuan)隊(dui)用較(jiao)短的(de)(de)時間和較(jiao)少的(de)(de)投入就對 TDengine 的(de)(de)性能(neng)有(you)了大概(gai)的(de)(de)了解。

我們的 PLC 數據往 TDengine 中寫入的時(shi)間間隔最小到 100 ms/點(dian),寫入性能完全能夠(gou)勝任。

2. 查詢性能表現

因為(wei)我們(men)的智慧船舶系統剛(gang)開(kai)始使用 TDengine,這方面的積(ji)累(lei)還比較少(shao)。除(chu)了官網介(jie)紹或者(zhe)參考其他案例的一(yi)些比較普(pu)遍的查(cha)詢(xun)外(wai),TDengine 毫秒級的時間(jian)窗(chuang)(chuang)口(kou)查(cha)詢(xun)也讓我們(men)很驚喜(xi),在數月(yue)的時間(jian)跨度上進行時間(jian)窗(chuang)(chuang)口(kou)查(cha)詢(xun)也能在秒級完(wan)成。

我們原本計劃使用(yong)通用(yong)大數(shu)據解決方(fang)案(an)來進行此類查詢,現在依(yi)托 TDengine 時間窗(chuang)口統計功能的高(gao)效性,開發人員就可(ke)以舍棄紛繁復雜的 SQL 語(yu)句,極大地縮減了項目周(zhou)期(qi)。

五、經驗總結

我(wo)們團隊在使用 TDengine 的落地(di)過程中,覺得有三個經驗比較重要,在此(ci)進行下分享:

  • 官網學習:我們從項目開始就仔細研究官網上的技術文檔,確實印證了那句話——學習新技術最省力的辦法就是看官網
  • 技術提問:除了從官網獲取內容,我們團隊也長期混跡于 TDengine 的官方群,只要把技術細節和問題細節描述清晰,在群里提問都能快速得到解答
  • 代碼示例:在項目支持過程中,TDengine 的支持人員建議我們參考 TDengine 在 GitHub 上的測試代碼,這部分代碼有大量的函數示例,更加方便進行相關研究

在(zai)最近的溝通中(zhong),TDengine 技術(shu)人(ren)(ren)員向我們反(fan)饋 TDengine 后續版本(ben)會上線 TDLite 功能(neng),這(zhe)(zhe)個功能(neng)能(neng)夠很好地解決我們系統(tong)里面(mian)[船舶(bo)離岸]這(zhe)(zhe)種業(ye)務場景的“端到端”數據(ju)同步問題。TDengine 技術(shu)人(ren)(ren)員對我們業(ye)務需求的關(guan)注和及時反(fan)饋讓我們也對這(zhe)(zhe)個功能(neng)充滿了期待。

我(wo)們(men)相信(xin),憑借著 TDengine Database 在(zai)內(nei)部已有項(xiang)目的(de)投產,團隊積累下寶貴的(de)實踐經(jing)驗,這(zhe)對公司探索開發船舶行業物聯網產品會大有助益,未來也希望我(wo)們(men)能夠和 TDengine 持續合(he)作(zuo),形成(cheng)直接面向客戶的(de)智能船舶解決方(fang)案。